Переход на MQL5. Не работают стопы и тейки.

 

Пытаюсь перевести советника с МТ4 на Мт5. Все работает уже вроде нормально. Даже ордера открываются... Кроме одной приятной мелочи - тейки и стопы не ставятся. Что бы я не вводил в .tp и .sl в структуре торгового запроса результат один - уровни не устанавливаются. Ошибок в логах нет.

MqlTradeRequest req;

MqlTradeResult rez;

MqlTick tick;

    req.action=TRADE_ACTION_DEAL;
    req.magic=1;
    req.symbol=Symbol();                
    req.volume=0.1;                     
    req.deviation=1;                    
    req.type_filling=ORDER_FILLING_IOC; 
    req.type_time=0;       
    req.comment="none";
    req.price=tick.ask;
    req.volume=0.1;                 
    req.sl=tick.ask-0.005;
        
      req.tp=tick.ask+0.005;           
      req.type=ORDER_TYPE_BUY;
       
       

       OrderSend(req,rez);         


Что не так?

Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура торгового запроса
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура торгового запроса
  • www.mql5.com
Стандартные константы, перечисления и структуры / Структуры данных / Структура торгового запроса - Документация по MQL5
 
Nickel:

Пытаюсь перевести советника с МТ4 на Мт5. Все работает уже вроде нормально. Даже ордера открываются... Кроме одной приятной мелочи - тейки и стопы не ставятся. Что бы я не вводил в .tp и .sl в структуре торгового запроса результат один - уровни не устанавливаются. Ошибок в логах нет.

MqlTradeRequest req;

MqlTradeResult rez;

MqlTick tick;

    req.action=TRADE_ACTION_DEAL;
    req.magic=1;
    req.symbol=Symbol();                
    req.volume=0.1;                     
    req.deviation=1;                    
    req.type_filling=ORDER_FILLING_IOC; 
    req.type_time=0;       
    req.comment="none";
    req.price=tick.ask;
    req.volume=0.1;                 
    req.sl=tick.ask-0.005;
        
      req.tp=tick.ask+0.005;           
      req.type=ORDER_TYPE_BUY;
       
       

       OrderSend(req,rez);         


Что не так?


Во первых сделайте в лог распечатку структуры ответа сервера

во вторых если счет типа ЕСN или NDD то на них нельзя в одном запросе отправлять установку стопов

 

сделайте проще так:

// в начале кода:
#include <Trade\Trade.mqh>
CTrade trade; 

//если нужно открыть ордер:
trade.Buy(LOT,SYMBOL,OPEN_PRICE,STOP_LOSS,TAKE_PROFIT);
trade.Sell(аналогично);

это без учета ошибок, не для реала, собственно как и у вас. 

 
Nickel:

Пытаюсь перевести советника с МТ4 на Мт5. Все работает уже вроде нормально. Даже ордера открываются... Кроме одной приятной мелочи - тейки и стопы не ставятся. Что бы я не вводил в .tp и .sl в структуре торгового запроса результат один - уровни не устанавливаются. Ошибок в логах нет.

Почитайте в статье Торговые операции на MQL5 - это просто раздел CTrade - удобный класс для торговых операций.