Помогите прописать стоп-лосс в советнике - страница 3

 
Alexander Ts:
Так,мне написали сделать два действия "extern int SL_POINTS = 50 ; // Стоп лосс в пунктах дальше нажимаете F3 и ищите вызов функции выставляющей ордера SendMarketOrder её третий параметр меняете с 0 на SL_POINTS" у вас я так понимаю это первое и четвертое действие в описании,а вот это "Еще стоит учесть StopLevel int stopLevel = (int)SymbolInfoInteger(_Symbol, SYMBOL_TRADE_STOPS_LEVEL)+1; И еще у нас есть стоимость пункта double point = SymbolInfoDouble(_Symbol, SYMBOL_POINT);" куда прописать ?

пока не заморачивайся :-) внутри функции MarketOrderOpen есть умножение на стоимость пункта.

сделай первые действия и посмотри что в тестере получается. А то запутаешься :-)

 

Maxim Kuznetsov ему сразу нужно понять основные значения, которыми придется оперировать в будущем по любому.

 
Maxim Kuznetsov:

пока не заморачивайся :-) внутри функции MarketOrderOpen есть умножение на стоимость пункта.

сделай первые действия и посмотри что в тестере получается. А то запутаешься :-)

где в этих строках нужно вместо 0 поставить SL_POINTS?

void SendFirstOrder(int Signal, double Lots)

{

  int Ticket,Error;

  if((Signal == OP_BUY) || (Signal == OP_SELL))

  {

    if(Signal == OP_BUY)

    {

      if(Debug)Print("Выполнено условие BUY");

      if(Debug) Print("Отправляем ордер");

      Ticket = SendMarketOrder(Signal, Lots, 0, 0, MagicBuy, ExpertName, Error);

      if(Ticket > 0)

      if(OrderSelect(Ticket,SELECT_BY_TICKET))

      ModifyOrder(OrderOpenPrice() + TakeProfit * Point);

    }

 
Maxim Kuznetsov:

пока не заморачивайся :-) внутри функции MarketOrderOpen есть умножение на стоимость пункта.

сделай первые действия и посмотри что в тестере получается. А то запутаешься :-)

Ticket = SendMarketOrder(Signal, Lots, 0, 0, MagicBuy, ExpertName, Error);       if(Ticket > 0) 
Нули только тут,что из них заменить 
 
Alexander Ts:
Ticket = SendMarketOrder(Signal, Lots, 0, 0, MagicBuy, ExpertName, Error);       if(Ticket > 0) 
Нули только тут,что из них заменить 


Ticket = SendMarketOrder(Signal, Lots, SL_POINTS, 0, MagicBuy, ExpertName, Error);

по памяти - в вашем советнике SendMarketOrder принимает(понимает) следующие параметры, по порядку:

Signal - направление сделки OP_BUY или OP_SELL

Lots - объём сделки в лотах

SL - стоп-лосс в пунктах (в оригинале был 0, а вы подставите значение из параметров советника SL_POINTS)

TP - тейк-профит в пунктах (по логике советника не используется )

Magic - маджик который будет задан тикету

ExpertName - имя эксперта, если память не изменяет это попадёт в комент ордера

Error - служит для возврата кода ошибки (если таковая возникнет)

 
Alexander Ts:
Ticket = SendMarketOrder(Signal, Lots, 0, 0, MagicBuy, ExpertName, Error);       if(Ticket > 0) 
Нули только тут,что из них заменить 

Да 4 параметр.


SendMarketOrder(int Type, double Lots, int TP, int SL, int Magic, string Cmnt, int& Error)
 
Maxim Kuznetsov:


Ticket = SendMarketOrder(Signal, Lots, SL_POINTS, 0, MagicBuy, ExpertName, Error);

по памяти - в вашем советнике SendMarketOrder принимает(понимает) следующие параметры, по порядку:

Signal - направление сделки OP_BUY или OP_SELL

Lots - объём сделки в лотах

SL - стоп-лосс в пунктах (в оригинале был 0, а вы подставите значение из параметров советника SL_POINTS)

TP - тейк-профит в пунктах (по логике советника не используется )

Magic - маджик который будет задан тикету

ExpertName - имя эксперта, если память не изменяет это попадёт в комент ордера

Error - служит для возврата кода ошибки (если таковая возникнет)

что советнику не нравится? на что он просит обратить внимание?

Файлы:
 
Alexander Ts:

что советнику не нравится? на что он просит обратить внимание?

Пока забей.

 
Alekseu Fedotov:

Пока забей.

Он всё равно не выставляет стоп-лосс и открывает сделки только на продажу
 
Alexander Ts:

что советнику не нравится? на что он просит обратить внимание?

код советника старый и выдаются предупреждения о том что потенциально может приводить к ошибкам:

- в какой-то функции нехватает return со значением.

- где-то локальные переменные имеют такие-же имена что и глобальные ( с какого-то рожна разрабы MQL считают что это плохо)

- коды возврата OrderSelect OrderClose надо проверять

это не критические ошибки - советник скомпилировался и работать будет, в тестере так тем более, но может в реальных условиях сглючить