MT5 стал доступен в Финам - страница 57

 
Pavel Nikiforov #:

Решение найти не удалось, проблема походу на их стороне. Но можно формировать отчет в HTML, там график адекватный.

Можно выгрузить данные склейки в синт инструмент, залогиниться например в демо Metaquotes и тестировать бота на синтетике с нормальной кривой в тестере. 
 
Dmi3 #:

и какая разница? :)

Для программы на MQL5 разница есть:

TRADE_ACTION_DEAL или TRADE_ACTION_PENDING

ORDER_TYPE_BUY/ORDER_TYPE_SELL или ORDER_TYPE_BUY_LIMIT/ORDER_TYPE_SELL_LIMIT

 
JRandomTrader #:
ORDER_TYPE_BUY

Используете рыночные ордера на срочном рынке?

 
Dmi3 #:

Используете рыночные ордера на срочном рынке?

Да. Почти только их и использую.

 
JRandomTrader #:

Да. Почти только их и использую.

И какую цену указываете при продаже? 0?

 
Dmi3 #:

И какую цену указываете при продаже? 0?

Да. Но только если bid не 0.0 ) , а то и такое бывает. Но я только самые ликвидные торгую.

 
JRandomTrader #:

Да. Но только если bid не 0.0 ) , а то и такое бывает. Но я только самые ликвидные торгую.

Погодите, так вы указываете цену Bid или 0?

Если указываете 0, то должны получать реджект с комментом (Цена сделки вне лимита). А если указываете цену Bid, то это не рыночная заявка.

Вообще на бирже есть документ, в котором прописаны все правила срочного рынка. Так вот в этом документе для фьючерсов срочного рынка вариант ордера только один и это не рыночный. Для опционов есть другой вариант  ;)

https://fs.moex.com/files/301/46187

 
Dmi3 #:

Так вот в этом документе для фьючерсов срочного рынка вариант ордера только один и это не рыночный. Для опционов есть другой вариант  ;)

https://fs.moex.com/files/301/46187

Ну, как бы, пункт 7.14 говорит об обратном:)

 
Dmi3 #:

Погодите, так вы указываете цену Bid или 0?

Если указываете 0, то должны получать реджект с комментом (Цена сделки вне лимита). А если указываете цену Bid, то это не рыночная заявка.

   if(Vol>0.0)
     {
      type=ORDER_TYPE_BUY;
      lVol=Vol;
     }
   else // if(Vol<0.0)
     {
      type=ORDER_TYPE_SELL;
      lVol=-Vol;
     }

   while(true)
     {
      ClearStructures();

      TrRq.action=TRADE_ACTION_DEAL;
      TrRq.type=type;
      TrRq.symbol=_Symbol;
      TrRq.volume=lVol;
      TrRq.type_filling=SYMBOL_FILLING_FOK;
      TrRq.magic=Magic;

      if(OrderSend(TrRq,TrRes) && 
        (TrRes.retcode==TRADE_RETCODE_PLACED ||
         TrRes.retcode==TRADE_RETCODE_DONE))
        {
         st.OrdTicket=TrRes.order;
         break;
        }

      if(TrRes.retcode==TRADE_RETCODE_TIMEOUT)
        {
         st.OrdTicket=ULONG_MAX;
         break;
        }

      str="Order send failed!\n"+OrdRqString()+OrdResString()+"\n";
      Log(str);

      if(TrRes.retcode!=TRADE_RETCODE_NO_MONEY)
        return false;
      if(--lVol<=0.0)
        {
         st.OrdTime=TimeCurrent();
         return false;
        }
     }

Это очень старый код, с 2015 года работает.

 
JRandomTrader #:

Это очень старый код, с 2015 года работает.

а этот с 2014

//--- Fill structure
  request.magic = main_mem_magic;
  request.symbol = aSymbol;
  request.volume = volume; 
  request.type_filling = ORDER_FILLING_IOC;
  request.type_time = ORDER_TIME_DAY;
  if(price == 0)
  {
    request.action = TRADE_ACTION_DEAL;
    request.comment = "Рыночный ордер...";
    if(buy_sell == true)
    {
      request.type = ORDER_TYPE_BUY;
    }
    else
    {
      request.type = ORDER_TYPE_SELL;
    }
  }
  else
  { 
    request.action = TRADE_ACTION_PENDING;
    request.price = price;
    request.comment = "Лимитный ордер...";
    if (buy_sell)
    {
      request.type = ORDER_TYPE_BUY_LIMIT;
    }
    else
    {
      request.type = ORDER_TYPE_SELL_LIMIT;
    }   
  }