MetaEditor5 видит функции из mql4. - страница 2

 
Slava:
Значит, в билд ещё не попало.

Слава, сиё звучит интригующе. Что это будет? Заглушки, быстрые "обёртки" для совместимости, или что-то новенькое? Или ... Много или на одну интрижку :) ...

У многих свои реализации написаны, много есть в КБ - что с этим? #ifdef ?

 
Artyom Trishkin:

Слава, сиё звучит интригующе. Что это будет? Заглушки, быстрые "обёртки" для совместимости, или что-то новенькое? Или ... Много или на одну интрижку :) ...

У многих свои реализации написаны, много есть в КБ - что с этим? #ifdef ?

Это - функции, совпадающие по синтаксису и семантике с четвёрочными iTime, iOpen, iHigh..., iHighest, iLowest, iBarShift

Они будут работать гораздо быстрее, чем обёртки-реализации

 
Slava:

Это - функции, совпадающие по синтаксису и семантике с четвёрочными iTime, iOpen, iHigh..., iHighest, iLowest, iBarShift

Они будут работать гораздо быстрее, чем обёртки-реализации

Интересная новость, благодарю.

 
Slava:

Это - функции, совпадающие по синтаксису и семантике с четвёрочными iTime, iOpen, iHigh..., iHighest, iLowest, iBarShift

Они будут работать гораздо быстрее, чем обёртки-реализации

Отлично. Код сократится.

 
Slava:

Это - функции, совпадающие по синтаксису и семантике с четвёрочными iTime, iOpen, iHigh..., iHighest, iLowest, iBarShift

Они будут работать гораздо быстрее, чем обёртки-реализации

Класс!
Эх, жаль вот только баг с подвисанием Bars так и не устранили :((

void OnStart()
  {
   Print("1");
   Print(Bars(_Symbol,PERIOD_D1,D'2018.05.02 01:58:03',D'2018.05.02 12:56:11'));
   Print("2");
  }


 

 
Yuriy Asaulenko:

Ну, да. Типа define перед телом программы и компилируем на указанном языке.

Так можно спокойно скомпилировать .mq4 под Metaeditor 5? просто запускается компилятор MQL4 иди 5, в зависимости от расширения.

Сейчас спецом проверил на запуск из редактора Т5 - кнопка запуска/отладки не активка. Только компиляция.

 
В последнее время всем предлагаю писать кроссплатформенный код. Согласны абсолютно все, причем некоторые аж впадают в состояние восторга ))
 
Slava:

Это - функции, совпадающие по синтаксису и семантике с четвёрочными iTime, iOpen, iHigh..., iHighest, iLowest, iBarShift

Они будут работать гораздо быстрее, чем обёртки-реализации

А что с проверкой доступности данных? Будет?

Или будет 4806 и возврат 0 при первом запросе, как при Copy***?

 

Обновился:

2018.06.09 06:15:30.531 MetaTrader 5 x64 build 1845 started (MetaQuotes Software Corp.)
2018.06.09 06:15:30.531 Windows 10 (build 17134) x64, IE 11, UAC, Intel Core i3-3120M  @ 2.50GHz, Memory: 3744 / 8077 Mb, Disk: 308 / 464 Gb, GMT+2
2018.06.09 06:15:30.531 C:\Users\barab\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075

Запускаю пример (предварительно скомпилировал его уже в новом, 1845 билде) - для проверки вставил замописную функцию "Close":

//+------------------------------------------------------------------+
//|                                                       Test_1.mq5 |
//|                                      Copyright 2012, CompanyName |
//|                                       http://www.companyname.net |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   Print("");
   ResetLastError();
   Print("iClose(Symbol(),Period(),Digits()): ",DoubleToString(iClose(Symbol(),Period(),Digits())));
   Print("GetLastError: ",GetLastError());
   Print("Custom iClose(0): ",DoubleToString(Close(0),Digits()));

   ResetLastError();
   Print("iBarShift(Symbol(),Period(),TimeCurrent(),false): ",iBarShift(Symbol(),Period(),TimeCurrent(),false));
   Print("GetLastError: ",GetLastError());

   ResetLastError();
   Print("iBarShift(Symbol(),Period(),TimeCurrent(),true): ",iBarShift(Symbol(),Period(),TimeCurrent(),true));
   Print("GetLastError: ",GetLastError());
  }
//+------------------------------------------------------------------+ 
//| Get Close for specified bar index                                | 
//+------------------------------------------------------------------+ 
double Close(const int index,string symbol=NULL,ENUM_TIMEFRAMES timeframe=PERIOD_CURRENT)
  {
   if(symbol==NULL)
      symbol=Symbol();
   if(timeframe==0)
      timeframe=Period();
   double Close[1];
   double close=0;
   int copied=CopyClose(symbol,timeframe,index,1,Close);
   if(copied>0)
      close=Close[0];
   return(close);
  }
//+------------------------------------------------------------------+

Получаю:

iClose(Symbol(),Period(),0): 0.00000000
GetLastError: 0
Custom iClose(0): 1.17693
iBarShift(Symbol(),Period(),TimeCurrent(),false): 0
GetLastError: 0
iBarShift(Symbol(),Period(),TimeCurrent(),true): -1
GetLastError: 0


Не работают однако iXXXX функции (хотя анонс уже был: Бета-версия платформы MetaTrader 5 build 1845: Функции для работы с барами в MQL5 и улучшения в тестере стратегий )

Файлы:
Test_1.mq5  4 kb
 
Vladimir Karputov:

Запускаю пример (предварительно скомпилировал его уже в новом, 1845 билде) 

 Print("iClose(Symbol(),Period(),Digits()): ",DoubleToString(iClose(Symbol(),Period(),Digits())));

А почему Digits() вместо номера бара?