Я не знаком с MT3, но я предполагаю, что код, который работает на MT3, работает и на MT4 ... это проблема MT4 --> MT5 и именно поэтому ситуация отличается.
Большинство пользователей MT4 не умеют кодить, и если их любимые индикаторы на MT4 не существуют на MT5, то они не будут использовать MT5.
Насколько я знаю, код MT3 не работает на MT4, язык очень разный. Этот спор о MT4/MT5 бесконечен, есть много факторов, которые привели к выживанию MT4, я даже не уверен, что MT5 был предназначен для полной замены MT4.
В любом случае, по поводу новой версии, Metaquotes заявила, что она будет обратно совместима на уровне ex4, но не совсем на уровне mq4.
Насколько я знаю, код MT3 не работает на MT4, язык очень отличается. Эти дебаты о MT4/MT5 бесконечны, есть много факторов, которые привели к выживанию MT4, я даже не уверен, что MT5 был предназначен для полной замены MT4.
В любом случае, по поводу новой версии, Metaquotes заявила, что она будет обратно совместима на уровне ex4, но не совсем на уровне mq4.
Совместимость с текущими индикаторами, скриптами и советниками .ex4 - это не только язык, но и терминал и изменения в его работе. Например, изменения в тестере стратегий могут сломать советника, разработанного для использования в основном в тестере стратегий, в то время как тот же советник будет нормально работать на живом графике, он больше не будет выполнять свою основную функцию....
Насколько я знаю, код MT3 не работает на MT4, язык очень отличается. Эти дебаты о MT4/MT5 бесконечны, есть много факторов, которые привели к выживанию MT4, я даже не уверен, что MT5 был предназначен для полной замены MT4.
В любом случае, о новой версии, Metaquotes заявила, что она будет обратно совместима на уровне ex4, но не совсем на уровне mq4.
Для меня это выглядит так, как будто она должна быть обратно совместима на уровне mq4, включенные пользовательские индикаторы - это оригинальные версии mql4 с измененным названием функции init(), они компилируются в новом компиляторе и запускаются на новом терминале, это должно означать, что мы все еще можем кодировать индикаторы, используя IndicatorCounted(), если мы хотим ...
init() теперь называется int OnInit(void) и она действительно возвращает(INIT_SUCCEEDED);
Для меня это выглядит так, как будто он должен быть обратно совместим на уровне mq4, включенные пользовательские индикаторы являются оригинальными версиями mql4 с изменением названия функции init(), они компилируются в новом компиляторе и запускаются на новом терминале, это должно означать, что мы все еще можем кодировать индикаторы, используя IndicatorCounted(), если мы хотим ...
init() теперь называется int OnInit(void) и она действительно возвращает(INIT_SUCCEEDED);
Извините, но обратной совместимости на уровне mq4 не будет, см. анонс первой бета-версии.
Отличия от старой версии MQL4:
Изменен приоритет логических операций AND/OR. Теперь все аналогично стандартному C/C++.
Введена сокращенная оценка логических выражений. Теперь, когда логическое выражение оценивается, не дойдя до конца, остальные последующие выражения не оцениваются, как в C/C++.
В операторе switch теперь используются только целочисленные значения. Вещественные значения могли использоваться и раньше
Символ точки больше не может быть использован в именах переменных. Также в именах переменных нельзя использовать символы '@', '$' и '?
Ужесточены требования к функции start. Раньше в функции start можно было задавать параметры. Теперь все init, start, deinit, OnInit, OnStart, OnTick, OnTimer и другие точки входа должны точно соответствовать своим сигнатурам.
В связи с расширением ключевых слов, такие имена, как short, long, float, const, virtual, input, delete, new, do, char теперь не могут быть использованы.
Теперь импортируемые функции dll не могут принимать в качестве параметра строковые массивы MQL, как в MQL5
Введены предопределенные имена переменных _Period, _Symbol, _LastError, _CriticalError, _StopFlag, _Point, _Digits, _UninitReason, _RandomSeed, которые могут вступить в конфликт с простыми переменными, объявленными под теми же именами в существующих исходных файлах
тип datetime стал 8-байтовым, как в MQL5.
Различия не критичны и могут быть легко исправлены в коде. Взамен мы получаем доступ к многочисленным возможностям MQL5, улучшенную скорость выполнения и гораздо более строгий контроль качества.
Это не сильные изменения, но это означает отсутствие 100% обратной совместимости (mq4).
Я думаю, что когда выйдет новая версия, это вызовет много путаницы на форуме для новичков, потому что новая документация mql4 основана на кодировке mql5. Это означает, что многое из того, что описано на этом форуме и в кодовой базе, будет противоречить документации mql4.
Настройка индикаторного буфера из новой документации mql4: (На самом деле это содержит ошибки и не компилируется)
#property copyright "2009, MetaQuotes Software Corp."#property link "https://www.mql5.com"#property version "1.00"#property indicator_separate_window#property indicator_buffers 1#property indicator_plots 1//---- plot MA#property indicator_label1 "MA"#property indicator_type1 DRAW_LINE#property indicator_color1 clrRed#property indicator_style1 STYLE_SOLID#property indicator_width1 1//--- input parametersinputbool AsSeries=true;
inputint period=15;
inputENUM_MA_METHOD smootMode=MODE_EMA;
inputENUM_APPLIED_PRICE price=PRICE_CLOSE;
inputint shift=0;
//--- indicator buffersdouble MABuffer[];
int ma_handle;
//+------------------------------------------------------------------+//| Custom indicator initialization function |//+------------------------------------------------------------------+intOnInit()
{
//--- indicator buffers mappingif(AsSeries) ArraySetAsSeries(MABuffer,true);
Print("Indicator buffer is timeseries = ",ArrayGetAsSeries(MABuffer));
SetIndexBuffer(0,MABuffer,INDICATOR_DATA);
Print("Indicator buffer after SetIndexBuffer() is timeseries = ",
ArrayGetAsSeries(MABuffer));
//--- change the oredr of accessing elements of the indicator bufferArraySetAsSeries(MABuffer,AsSeries);
IndicatorSetString(INDICATOR_SHORTNAME,"MA("+period+")"+AsSeries);
//---
ma_handle=iMA(Symbol(),0,period,shift,smootMode,price);
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+//| Custom indicator iteration function |//+------------------------------------------------------------------+intOnCalculate(constint rates_total,
constint prev_calculated,
constdatetime &time[],
constdouble &open[],
constdouble &high[],
constdouble &low[],
constdouble &close[],
constlong &tick_volume[],
constlong &volume[],
constint &spread[])
{
//--- Copy the values of the moving average in the buffer MABufferint copied=CopyBuffer(ma_handle,0,0,rates_total,MABuffer);
Print("MABuffer[0] = ",MABuffer[0]);// Depending on the value AsSeries// Will receive a very old value// Or for the current unfinished bar//--- return value of prev_calculated for next callreturn(rates_total);
}
//+------------------------------------------------------------------+
Я думаю, что когда выйдет новая версия, это вызовет много путаницы на форуме для новичков, потому что новая документация mql4 основана на кодировке mql5. Это означает, что многое из того, что описано на этом форуме и в кодовой базе, будет противоречить документации mql4.
Настройка индикаторного буфера из новой документации mql4: (На самом деле это содержит ошибки и не компилируется)
Да, вы правы, это будет трудный переход. Однако, я думаю, он будет трудным не для новичков, а для опытных кодеров mql4, которые еще не знают mql5. В общем, новички не читают документацию.
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Я не знаком с MT3, но я предполагаю, что код, который работает на MT3, работает и на MT4 ... это проблема MT4 --> MT5 и именно поэтому ситуация отличается.
Большинство пользователей MT4 не умеют кодить, и если их любимые индикаторы на MT4 не существуют на MT5, то они не будут использовать MT5.
Насколько я знаю, код MT3 не работает на MT4, язык очень разный. Этот спор о MT4/MT5 бесконечен, есть много факторов, которые привели к выживанию MT4, я даже не уверен, что MT5 был предназначен для полной замены MT4.
В любом случае, по поводу новой версии, Metaquotes заявила, что она будет обратно совместима на уровне ex4, но не совсем на уровне mq4.
Я бегло просмотрел справку по новому метаэдитору, новая версия mql4 выглядит намного более отличной от старой версии, чем я думал.
Насколько я знаю, код MT3 не работает на MT4, язык очень отличается. Эти дебаты о MT4/MT5 бесконечны, есть много факторов, которые привели к выживанию MT4, я даже не уверен, что MT5 был предназначен для полной замены MT4.
В любом случае, по поводу новой версии, Metaquotes заявила, что она будет обратно совместима на уровне ex4, но не совсем на уровне mq4.
Насколько я знаю, код MT3 не работает на MT4, язык очень отличается. Эти дебаты о MT4/MT5 бесконечны, есть много факторов, которые привели к выживанию MT4, я даже не уверен, что MT5 был предназначен для полной замены MT4.
В любом случае, о новой версии, Metaquotes заявила, что она будет обратно совместима на уровне ex4, но не совсем на уровне mq4.
Для меня это выглядит так, как будто она должна быть обратно совместима на уровне mq4, включенные пользовательские индикаторы - это оригинальные версии mql4 с измененным названием функции init(), они компилируются в новом компиляторе и запускаются на новом терминале, это должно означать, что мы все еще можем кодировать индикаторы, используя IndicatorCounted(), если мы хотим ...
init() теперь называется int OnInit(void) и она действительно возвращает(INIT_SUCCEEDED);
Для меня это выглядит так, как будто он должен быть обратно совместим на уровне mq4, включенные пользовательские индикаторы являются оригинальными версиями mql4 с изменением названия функции init(), они компилируются в новом компиляторе и запускаются на новом терминале, это должно означать, что мы все еще можем кодировать индикаторы, используя IndicatorCounted(), если мы хотим ...
init() теперь называется int OnInit(void) и она действительно возвращает(INIT_SUCCEEDED);
Извините, но обратной совместимости на уровне mq4 не будет, см. анонс первой бета-версии.
Отличия от старой версии MQL4:
Изменен приоритет логических операций AND/OR. Теперь все аналогично стандартному C/C++.
Введена сокращенная оценка логических выражений. Теперь, когда логическое выражение оценивается, не дойдя до конца, остальные последующие выражения не оцениваются, как в C/C++.
В операторе switch теперь используются только целочисленные значения. Вещественные значения могли использоваться и раньше
Символ точки больше не может быть использован в именах переменных. Также в именах переменных нельзя использовать символы '@', '$' и '?
Ужесточены требования к функции start. Раньше в функции start можно было задавать параметры. Теперь все init, start, deinit, OnInit, OnStart, OnTick, OnTimer и другие точки входа должны точно соответствовать своим сигнатурам.
В связи с расширением ключевых слов, такие имена, как short, long, float, const, virtual, input, delete, new, do, char теперь не могут быть использованы.
Теперь импортируемые функции dll не могут принимать в качестве параметра строковые массивы MQL, как в MQL5
Различия не критичны и могут быть легко исправлены в коде. Взамен мы получаем доступ к многочисленным возможностям MQL5, улучшенную скорость выполнения и гораздо более строгий контроль качества.
...
init() теперь называется int OnInit(void) и возвращает(INIT_SUCCEEDED);
Мне нравятся новые функции в метаредакторе
Я думаю, что когда выйдет новая версия, это вызовет много путаницы на форуме для новичков, потому что новая документация mql4 основана на кодировке mql5. Это означает, что многое из того, что описано на этом форуме и в кодовой базе, будет противоречить документации mql4.
Настройка индикаторного буфера из новой документации mql4: (На самом деле это содержит ошибки и не компилируется)
Я думаю, что когда выйдет новая версия, это вызовет много путаницы на форуме для новичков, потому что новая документация mql4 основана на кодировке mql5. Это означает, что многое из того, что описано на этом форуме и в кодовой базе, будет противоречить документации mql4.
Настройка индикаторного буфера из новой документации mql4: (На самом деле это содержит ошибки и не компилируется)
Вы уже кодируете на MQL5 angevoyageur?