Новая версия платформы MetaTrader 4 build 1340 - страница 8

 
Denis Sartakov #:

хорошо.

может заодно исправите и это давнее недоразумение:

при добавление  папки внутрь  папки терминала Еxperts\,

начиная с определенного числа таких внутренних папок,

они перестают отображаться в навигаторе...

за это исправление плачу фирме MetaQuotes 48 баксов,

как кому, но мне это доставляет большие неудобства

 

Global initialization failed 
Это связано как то датой компиляции экспертов и заливкой в маркет от 16 сентября ? Все чаще и чаще получаю такие вопросы. 
 
fxsaber #:

В онлайн/оффлайн-документации неправильное определение MqlTick.

Не хватает двух полей: time_msc и flags.

Вы проверяли, что там?

Пишем пример

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   MqlTick last_tick;
   if(SymbolInfoTick(Symbol(),last_tick))
     {
      Print(last_tick.time,": Bid = ",last_tick.bid,
            " Ask = ",last_tick.ask,"  Volume = ",last_tick.volume);

      //--- выведем время первого тика в массиве
      datetime ticktime=last_tick.time;
      PrintFormat("Last tick time = %s.%03I64u",
                  TimeToString(ticktime,TIME_DATE|TIME_MINUTES|TIME_SECONDS),last_tick.time_msc%1000);

      PrintFormat("Description %s",GetTickDescription(last_tick));
     }
   else
      Print("SymbolInfoTick() failed, error = ",GetLastError());
  }
//+------------------------------------------------------------------+
//| возвращает строковое описание тика                               |
//+------------------------------------------------------------------+
string GetTickDescription(MqlTick &tick)
  {
   string desc=StringFormat("%s.%03d ",
                            TimeToString(tick.time),tick.time_msc%1000);
//--- проверим флаги
   bool buy_tick=((tick.flags&TICK_FLAG_BUY)==TICK_FLAG_BUY);
   bool sell_tick=((tick.flags&TICK_FLAG_SELL)==TICK_FLAG_SELL);
   bool ask_tick=((tick.flags&TICK_FLAG_ASK)==TICK_FLAG_ASK);
   bool bid_tick=((tick.flags&TICK_FLAG_BID)==TICK_FLAG_BID);
   bool last_tick=((tick.flags&TICK_FLAG_LAST)==TICK_FLAG_LAST);
   bool volume_tick=((tick.flags&TICK_FLAG_VOLUME)==TICK_FLAG_VOLUME);
//--- проверим сначала тик на торговые флаги
   if(buy_tick || sell_tick)
     {
      //--- сформируем вывод для торгового тика
      desc=desc+(buy_tick?StringFormat("Buy Tick: Last=%G Volume=%d ",tick.last,tick.volume):"");
      desc=desc+(sell_tick?StringFormat("Sell Tick: Last=%G Volume=%d ",tick.last,tick.volume):"");
      desc=desc+(ask_tick?StringFormat("Ask=%G ",tick.ask):"");
      desc=desc+(bid_tick?StringFormat("Bid=%G ",tick.ask):"");
      desc=desc+"(Trade tick)";
     }
   else
     {
      //--- для инфо тика сформируем вывод немного иначе
      desc=desc+(ask_tick?StringFormat("Ask=%G ",tick.ask):"");
      desc=desc+(bid_tick?StringFormat("Bid=%G ",tick.ask):"");
      desc=desc+(last_tick?StringFormat("Last=%G ",tick.last):"");
      desc=desc+(volume_tick?StringFormat("Volume=%d ",tick.volume):"");
      desc=desc+"(Info tick)";
     }
//--- вернем описание тика
   return desc;
  }
//+------------------------------------------------------------------+

и получаем константы

 
Rashid Umarov #:

Вы проверяли, что там?

Да, конечно. Речь шла о том, что документация показывает, что якобы этих полей нет в MT4. Однако, они есть. sizeof(MqlTick) = 52.

 
fxsaber # :

Да, конечно. Речь шла о том, что документация показывает, что якобы этих полей нет в MT4. Однако, они есть. sizeof(MqlTick) = 52.

Его недавно меняли?
 
fxsaber #:

Да, конечно. Речь шла о том, что документация показывает, что якобы этих полей нет в MT4. Однако, они есть. sizeof(MqlTick) = 52.

Как вы это будете использовать?

 
Rashid Umarov #:

Как вы это будете использовать?

Если там мусор, то стоит написать в доке: "зарезервировано".
 
Rashid Umarov #:

Как вы это будете использовать?

Использую в кроссплатформенных решениях. В частности, в кодобазе.

#ifndef __MQL5__
  // sizeof(MqlTick) в MT4/5 отличается
  struct MqlTickMT5 : public MqlTick
  {
    double volume_real; // https://www.mql5.com/ru/forum/373986/page7#comment_24982259
  };
#endif // #ifndef __MQL5__


Обратил только на несоответствие документации и реальности.

 
Sergey Gridnev #:
Если там мусор, то стоит написать в доке: "зарезервировано".

Там не мусор.

 

На домашней машине из одного терминала успешно подключаюсь к торговым счетам. При этом текущие и закрытые ордера не отображаются - пусто.

Пробую из других терминалов - все видно. Подскажите, какой файл битый, чтобы реанимировать терминал?