| Как написать простейший советник, торгующий отложенными ордерами. |
// 1. В зависимости от цвета предыдущей свечи выставляем отложку на расстоянии Delta от цены в StartHour часов на пробой.
// 2. Время истечения ордера Expiration часов.
// 3. Ордер выставляется с установленными значениями стоплосс и тейкпрофит.
// 4. Торговля фиксированным лотом.
// 5. Торговля на открытии свечи на часовом графике.
extern double StopLoss = 1000; //Стоплосс ордера
extern double TakeProfit = 1000; //Тейкпрофит ордера
extern int StartHour = 7; //Час начала торговли(терминальное время)
extern int Delta = 100; //Расстояние от цены для установки ордера
extern int Expiration = 4; //Время истечения ордера
extern double Lot = 1; //Объём позиции
int b,s,p,res;
datetime expiration = TimeCurrent()+3600*Expiration;
double BuyPrice=Ask+Delta*Point;
double SellPrice=Bid-Delta*Point;
if(Volume[0]>1) return;
for (int i=0; i<OrdersTotal(); i++)
{
if (OrderSelect(i, SELECT_BY_POS)==true)
{
if (OrderSymbol()!=Symbol() || OrderMagicNumber()!=MAGIC) continue;
if (OrderType()==OP_BUY || OrderType()==OP_SELL) p++;
if (OrderType()==OP_BUYSTOP) b++;
if (OrderType()==OP_SELLSTOP) s++;
}
}
//---- buy stop
if(Close[1]-Open[1]>0 && Hour()==StartHour && p<1 && b<1)
{
res=OrderSend(Symbol(),OP_BUYSTOP,Lot,BuyPrice,0,BuyPrice-StopLoss*Point,BuyPrice+TakeProfit*Point,"",MAGIC,expiration,Blue);
}
//---- sell stop
if(Open[1]-Close[1]>0 && Hour()==StartHour && p<1 && s<1)
{
res=OrderSend(Symbol(),OP_SELLSTOP,Lot,SellPrice,0,SellPrice+StopLoss*Point,SellPrice-TakeProfit*Point,"",MAGIC,expiration,Red );
}
//+------------------------------------------------------------------+
//| OTL.mq4 |
//| Copyright © 2013, AM2 |
//| http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2011, AM2"
#property link "http://www.forexsystems.biz"
// 1. В зависимости от цвета предыдущей свечи выставляем отложку на расстоянии Delta от цены в StartHour часов на пробой.
// 2. Время истечения ордера Expiration часов.
// 3. Ордер выставляется с установленными значениями стоплосс и тейкпрофит.
// 4. Торговля фиксированным лотом.
// 5. Торговля на открытии свечи на часовом графике.
#define MAGIC 20130228
extern double StopLoss = 1000; //Стоплосс ордера
extern double TakeProfit = 1000; //Тейкпрофит ордера
extern int StartHour = 7; //Час начала торговли(терминальное время)
extern int Delta = 100; //Расстояние от цены для установки ордера
extern int Expiration = 4; //Время истечения ордера
extern double Lot = 1; //Объём позиции
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//----
int b,s,p,res;
datetime expiration = TimeCurrent()+3600*Expiration;
double BuyPrice=Ask+Delta*Point;
double SellPrice=Bid-Delta*Point;
if(Volume[0]>1) return;
for (int i=0; i<OrdersTotal(); i++)
{
if (OrderSelect(i, SELECT_BY_POS)==true)
{
if (OrderSymbol()!=Symbol() || OrderMagicNumber()!=MAGIC) continue;
if (OrderType()==OP_BUY || OrderType()==OP_SELL) p++;
if (OrderType()==OP_BUYSTOP) b++;
if (OrderType()==OP_SELLSTOP) s++;
}
}
//---- buy stop
if(Close[1]-Open[1]>0 && Hour()==StartHour && p<1 && b<1)
{
res=OrderSend(Symbol(),OP_BUYSTOP,Lot,BuyPrice,0,BuyPrice-StopLoss*Point,BuyPrice+TakeProfit*Point,"",MAGIC,expiration,Blue);
}
//---- sell stop
if(Open[1]-Close[1]>0 && Hour()==StartHour && p<1 && s<1)
{
res=OrderSend(Symbol(),OP_SELLSTOP,Lot,SellPrice,0,SellPrice+StopLoss*Point,SellPrice-TakeProfit*Point,"",MAGIC,expiration,Red );
}
//----
return(0);
}
//--------------------------------------------------------------------
02 мая 2012
|
15 марта 2013
|
Комментарии (50)
в закладки
8 Miha Сообщений: 485 - Михаил
20 Anatoly74 Сообщений: 3710 - Анатолий
11 kitajac Сообщений: 293
15 div15 Сообщений: 71 - div15
0 Strannik Сообщений: 685 - Алексей (деактивирован)
35 AM2 Автор Сообщений: 16665 - Андрей
0 Strannik Сообщений: 685 - Алексей (деактивирован)
1 liverpool Сообщений: 36 - viva la vida!
2 Kamar Сообщений: 37
1 liverpool Сообщений: 36 - viva la vida!
2 Kamar Сообщений: 37
1 MouseB Сообщений: 18
1 Albertovich Сообщений: 43 - Юрий Новиков
2 Kamar Сообщений: 37
4 shapi Сообщений: 52
1 koshchey Сообщений: 28
3 Rafaelka Сообщений: 121
1 koshchey Сообщений: 28
3 Rafaelka Сообщений: 121
1 koshchey Сообщений: 28
3 Rafaelka Сообщений: 121
2 Kamar Сообщений: 37
А вы уже какие-то философско-пустые беседы завели о совах в целом
46 Bishop Сообщений: 5825 - АЛЬФАХАМЕЦ-Машковод
15 div15 Сообщений: 71 - div15
P.S.
вызывается эта функция, примерно так:
Редактирован: 6 июня 2014, 07:39
0 guest111 Сообщений: 180
15 div15 Сообщений: 71 - div15
Поправилпеределал, но писал из головы — надо проверить в работе0 guest111 Сообщений: 180
И ВОПРОС В КОДЕ
15 div15 Сообщений: 71 - div15
Редактирован: 6 июня 2014, 09:03
15 div15 Сообщений: 71 - div15
А вообще, нужно перенести секции "//---- buy stop делете" и "//---- sell stop делете" в тело цикла, и не OrderDelete(OP_BUYSTOP) и OrderDelete(OP_SELLSTOP) а OrderDelete(OrderTicket()).
Примерно так:
Редактирован: 6 июня 2014, 11:25
0 guest111 Сообщений: 180
15 div15 Сообщений: 71 - div15
15 div15 Сообщений: 71 - div15
p<1 && s<1
p<1 && b<1
0 guest111 Сообщений: 180
15 div15 Сообщений: 71 - div15
Кроме того, как я и думал, отсутствует проверка на наличие уже имеющихся ордеров.
Вот код переделанной функции start():
P.S.
Ну и кривой же тут редактор! Редактирован: 10 июня 2014, 13:04
0 guest111 Сообщений: 180
ну даже с этими параметрами сов открывает кучу ордеров
15 div15 Сообщений: 71 - div15
2 Fedos Сообщений: 50
Вижу засаду в твоих сигналах: возможна ситуация, когда сигнал не сработает. Например, при резком рывке цены оба индюка сразу будут выше или ниже уровня 50.
P.S.
Подредактировал немного. Редактирован: 10 июня 2014, 18:22
0 guest111 Сообщений: 180
46 Bishop Сообщений: 5825 - АЛЬФАХАМЕЦ-Машковод
15 div15 Сообщений: 71 - div15
0 guest111 Сообщений: 180
15 div15 Сообщений: 71 - div15
0 lidya Сообщений: 4
35 AM2 Автор Сообщений: 16665 - Андрей
3 prostokot Сообщений: 63 - Сергей
35 AM2 Автор Сообщений: 16665 - Андрей
13 rz1zr Сообщений: 18
35 AM2 Автор Сообщений: 16665 - Андрей
1 Sel7 Сообщений: 3
2- этот советник написан вероятно в учебных целях!
3- заказать советник можно в группе «Стол заказов MQL», есть и другие группы.
20 Boris54 Сообщений: 827 - ПенSионер
Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий