Группа "Стол заказов MQL"

Рейтинг 2146



РЕКОМЕНДУЮ



Прошу Вас доработать советник на отложенных ордерах и вставить в его программу функцию StopLoss. Платформа MT4.

Прошу Вас доработать советник на отложенных ордерах и вставить в его программу работающую функцию StopLoss, указанную в техзадании. Платформа MT4.
Заранее благодарю, с уважением, Юрий.

extern double Lots = 0.1;
extern int Step = 70;
extern int slippage = 3;
extern int TakeProfit = 62;
extern int StopLoss = 20;
extern double TralingProfit = 15; // профит в центах, при котором ордер начинаем тралить
extern int TS = 30;// значение трала пп.

string com = «тр_М»;
int Magic = 75;
double LABUDABUY = 0;
double LABUDASELL = 10000;
datetime last_opened_buystop = 0;
datetime last_opened_sellstop = 0;

int start()
{

int i,buys = 0,sells = 0;
int buystop = 0,sellstop = 0;
double buystop_open, sellstop_open,takeprof;
double buys1,sells1;
double SL = 20;
for(i = 0; i < OrdersTotal(); i ++)
{
OrderSelect(i, SELECT_BY_POS);
if(OrderMagicNumber() != Magic) continue;
if(OrderType() == OP_BUYSTOP)
{
buystop = OrderTicket();
buystop_open = OrderOpenPrice();
}
if(OrderType() == OP_SELLSTOP)
{
sellstop = OrderTicket();
sellstop_open = OrderOpenPrice();
}
if(OrderType() == OP_BUY)
buys = OrderTicket();
if(OrderType() == OP_SELL)
sells = OrderTicket();
}
if(buystop == 0 && TimeCurrent() — last_opened_buystop > 60)
{
buystop_open = Ask+Step*Point;
if(!IsTradeAllowed())
return(-1);
buystop = OrderSend(Symbol(),OP_BUYSTOP,Lots,buystop_open,slippage,0,buystop_open+TakeProfit*Point,com,Magic,0,Blue);
last_opened_buystop = TimeCurrent();
}
if(sellstop == 0 && TimeCurrent() — last_opened_sellstop > 60)
{
sellstop_open = Bid-Step*Point;
if(!IsTradeAllowed())
return(-1);
sellstop = OrderSend(Symbol(),OP_SELLSTOP,Lots,sellstop_open,slippage,0,sellstop_open-TakeProfit*Point,com,Magic,0,Crimson);
last_opened_sellstop = TimeCurrent();
}
if(buys != 0 || sells != 0)
{
for(i = 0; i < OrdersTotal(); i ++)
{
OrderSelect(i, SELECT_BY_POS);
if(OrderMagicNumber() != Magic || OrderProfit() < TralingProfit) continue;
if(OrderType() == OP_BUY)
{
buys1 = TS*Point;
SL = Bid — buys1;
if(SL >= LABUDABUY)
{
LABUDABUY = SL;
if(!IsTradeAllowed())
return(-1);
OrderModify(OrderTicket(),OrderOpenPrice(),SL,OrderTakeProfit(),0,MediumSpringGreen);
}
}
if(OrderType() == OP_SELL )
{
sells1 = TS*Point;
SL = Ask + sells1;
if(SL <= LABUDASELL)
{
LABUDASELL = SL;
if(!IsTradeAllowed())
return(-1);
OrderModify(OrderTicket(),OrderOpenPrice(),SL,OrderTakeProfit(),0,Orange);
}
}
}
}
if(LABUDABUY != 0 && sellstop_open != LABUDABUY && LABUDABUY > sellstop_open)
{
takeprof = LABUDABUY-TakeProfit*Point;
if(!IsTradeAllowed())
return(-1);

OrderModify(sellstop,LABUDABUY,0,takeprof,0,Orange);
}
if(LABUDABUY == 0 && Bid-TS*Point > sellstop_open)
{
takeprof = Bid-TS*Point-TakeProfit*Point;
if(!IsTradeAllowed())
return(-1);
OrderModify(sellstop,Bid-TS*Point,0,takeprof,0,Orange);
}
if(LABUDASELL !=10000 && buystop_open != LABUDASELL && LABUDASELL < buystop_open)
{
takeprof = LABUDASELL+TakeProfit*Point;
if(!IsTradeAllowed())
{
return(-1);
}
OrderModify(buystop,LABUDASELL,0,takeprof,0,MediumSpringGreen);
}
if(LABUDASELL == 10000 && Ask+TS*Point < buystop_open && buystop!=0)
{
takeprof = Ask+TS*Point+TakeProfit*Point;
if(!IsTradeAllowed())
{
return(-1);
}
OrderModify(buystop,Ask+TS*Point,0,takeprof,0,MediumSpringGreen);
}
return(0);
}
  • 0
  • Просмотров: 3411
  • 23 декабря 2014, 07:10
  • Yuriy123
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

Вступите в группу "Стол заказов MQL", чтобы следить за обновлениями
ПРИСОЕДИНИТЬСЯ К ГРУППЕ
присоединиться
  Предыдущая запись в группе
Помогите создать простой сеточный советник
22 декабря 2014
23 декабря 2014

Брокер для ваших роботов, 15 лет на рынке

Комментарии (5)

+
0
Привел код в человеческий вид. Добавил стопы.



Файл в базе: www.opentraders.ru/downloads/535/
avatar

  35  AM2 Сообщений: 16266 - Андрей

  • 23 декабря 2014, 09:30
+
0
Спасибо за работу, буду тэстить и оптимизировать.
С наступающим!
avatar

  1  Yuriy123 Автор Сообщений: 6

  • 23 декабря 2014, 10:19
+
0
Ваши исправления и добавления почемуто работают не корректно. Стоплосс выставляется 52пп вместо 20 и не редактируется.
avatar

  1  Yuriy123 Автор Сообщений: 6

  • 23 декабря 2014, 16:56
+
0
Поставлю на демо, буду править.
avatar

  35  AM2 Сообщений: 16266 - Андрей

  • 23 декабря 2014, 22:19
+
0
Мартин в этот сов! Пожалуйста! И увеличение лота на начальный лот! АМ2 Пожалуйста добавьте Мартин 2 видов!)
avatar

  13  kipjatok001 Сообщений: 431 - Kipjatok001 Best Trader

  • 23 декабря 2014, 20:14

Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий