Смотри, как бесплатно скачать роботов
Ищи нас в Telegram!
Ставь лайки и следи за новостями
Интересный скрипт?
Поставь на него ссылку - пусть другие тоже оценят
Понравился скрипт?
Оцени его работу в терминале MetaTrader 5
Библиотеки

Библиотека совместимости MQL4 с MQL5 - библиотека для MetaTrader 5

Просмотров:
6060
Рейтинг:
(49)
Опубликован:
2014.01.24 11:40
Обновлен:
2016.11.22 07:33
Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу

Эта библиотека позволяет запускать большинство скриптов и индикаторов из MetaTrader 4 в MetaTrader 5. Значительная часть всех функций уже поддерживается, но торговая логика экспертов не менялась. Причина тому - механизм торговли, он должен быть переписан.

В этой библиотеке реализовано большинство функций MQL4, за исключением торговых механизмов советника. Для функций, которые выдают ошибку в MetaTrader 5, написаны альтернативы. Они имеют практически идентичные имена, но оканчиваются на MQL4. Большинство альтернатив предназначены для конфликтующих функций с одноименными названиями в MQL5. Эта версия библиотеки содержит более полную базу функций языка MQL4, чем библиотека в исходной статье, где приведен только скелет. Для поиска же специфических функций в исходном коде рекомендуется использовать шаблон MQL4.

Сделать: Торговый механизм советника для передающих и контролирующих приказов. В некоторых функциях имеются универсальные заглушки, которые передают в логи соответствующие ошибки. Для таких заглушек код возврата всегда -1.

Установка:

Положите файл mql4compat.mqh в вашу папку Include (она находится в вашем профиле Windows).

В Вашем советнике/индикаторе/библиотеке/скрипте MQL4 после #property добавьте:

#include <mql4compat.mqh>

 Замените функции MQL4:

int init() to int OnInit()
int deinit() to void OnDeinit(const int reason);
int start() in script to void OnStart();
int start() in  indicator to:
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {

Последняя строка, содержащая функцию return(), должна выглядеть следующим образом:

   return(rates_total);

 В названия конфликтующих функций (между языками MQL4 и MQL5) добавьте MQL4:

   int ArrayInitializeMQL4(double &array[], double value)
   int ArrayMaximumMQL4(double &array[], int count=WHOLE_ARRAY, int start=0)
   int ArrayMinimumMQL4(double &array[], int count=WHOLE_ARRAY, int start=0)
   int ArraySortMQL4(double &array[], int count=WHOLE_ARRAY, int start=0, int sort_dir=MODE_ASCEND)
   double CopyBufferMQL4(int handle,int index,int shift)
   double EnvelopesMQL4(string symbol, int tf, int ma_period, int method, int ma_shift, int price, double deviation, int mode, int shift)
   double FileReadDoubleMQL4(int handle, int size=DOUBLE_VALUE)
   bool FileSeekMQL4(long handle, int offset, ENUM_FILE_POSITION origin)
   int IndicatorCountedMQL4(int _prev_calculated=0)
   bool ObjectCreateMQL4(string name, ENUM_OBJECT type, int window, datetime time1, double price1, datetime time2=0, double price2=0, datetime time3=0, double price3=0)
   bool ObjectDeleteMQL4(string name)
   string ObjectDescriptionMQL4(string name)
   int ObjectFindMQL4(string name)
   bool ObjectMoveMQL4(string name, int point, datetime time1, double price1)
   string ObjectNameMQL4(int index)
   int ObjectsDeleteAllMQL4(int window=EMPTY, int type=EMPTY)
   int ObjectsTotalMQL4(int type=EMPTY, int window=-1)
   bool SetIndexBufferMQL4(int index, double &array[])
   string StringConcatenateMQL4(string _str1,string _str2, ... string _str64="")
   int StringGetCharMQL4(string text, int pos)
   string StringSetCharMQL4(string text, int pos, int value)
   double iACMQL4(string symbol, int tf, int shift)
   double iADMQL4(string symbol, int tf, int shift)
   double iADXMQL4(string symbol, int tf, int period, int price, int mode, int shift)
   double iAOMQL4(string symbol, int tf, int shift)
   double iATRMQL4(string symbol, int tf, int period, int shift)
   double iAlligatorMQL4(string symbol, int tf, int jaw_period, int jaw_shift, int teeth_period, int teeth_shift, int lips_period, int lips_shift, int method, int price, int mode, int shift)
   double iBWMFIMQL4(string symbol, int tf, int shift)
   double iBandsMQL4(string symbol, int tf, int period, double deviation, int bands_shift, int method, int mode, int shift)
   double iBearsPowerMQL4(string symbol, int tf, int period, int price, int shift)
   double iBullsPowerMQL4(string symbol, int tf, int period, int price, int shift)
   double iCCIMQL4(string symbol, int tf, int period, int price, int shift)
   double iDeMarkerMQL4(string symbol, int tf, int period, int shift)
   double iForceMQL4(string symbol, int tf, int period, int method, int price, int shift)
   double iFractalsMQL4(string symbol, int tf, int mode, int shift)
   double iGatorMQL4(string symbol, int tf, int jaw_period, int jaw_shift, int teeth_period, int teeth_shift, int lips_period, int lips_shift, int method, int price, int mode, int shift)
   double iIchimokuMQL4(string symbol, int tf, int tenkan_sen, int kijun_sen, int senkou_span_b, int mode, int shift)
   double iMACDMQL4(string symbol, int tf, int fast_ema_period, int slow_ema_period, int signal_period, int price, int mode, int shift)
   double iMAMQL4(string symbol, int tf, int period, int ma_shift, int method, int price, int shift)
   double iMFIMQL4(string symbol, int tf, int period, int shift)
   double iMomentumMQL4(string symbol, int tf, int period, int price, int shift)
   double iOBVMQL4(string symbol, int tf, int price, int shift)
   double iOsMAMQL4(string symbol, int tf, int fast_ema_period, int slow_ema_period, int signal_period, int price, int shift)
   double iRSIMQL4(string symbol, int tf, int period, int price, int shift)
   double iRVIMQL4(string symbol, int tf, int period, int mode, int shift)
   double iSARMQL4(string symbol, int tf, double step, double maximum, int shift)
   double iStdDevMQL4(string symbol, int tf, int ma_period, int ma_shift, int method, int price, int shift)
   double iStochasticMQL4(string symbol, int tf, int Kperiod, int Dperiod, int slowing, int method, int field, int mode, int shift)
   double iWPRMQL4(string symbol, int tf, int period, int shift)

Функцию OnInit() необходимо настроить вручную, как и заголовки #property. Также необходимо функцию IndicatorCounted() заменить одноименной переменной или переменной prev_calculated MQL5:

#define IndicatorCounted IndicatorCountedMQL4(prev_calculated)

В пользовательских индикаторах MQL5 просмотрите заголовки #property, а затем приведите определения параметров типа extern к типу input. Помимо всего, в MQL5 эти параметры являются константами и любая попытка изменить их значение приведет к ошибке. Эта проблема решается путем добавления временных переменных, в которые затем копируются значения входных параметров.

На первой линии Вашего основного кода добавьте переменные инициализирующей функции MQL4 (пользовательские индикаторы будут выдавать предупреждения о зарезервированных переменных OHLC/Time/Volume, если они использовались в функции OnCalculate(), просто игнорируйте их): 

// -- Init MQL4 compatible environment
   InitMQL4Env();

Перевод с английского произведен MetaQuotes Ltd.
Оригинальная публикация: https://www.mql5.com/en/code/1787

iFXAnalyser iFXAnalyser

Три индикатора из простейших линейных комбинаций разностей быстрой и медленной скользящих средних на одном графике.

i-GentorLSMAEMA_v02 i-GentorLSMAEMA_v02

Трендовый индикатор из двух линий, цвет которых определяется положением цены относительно скользящих средних SMA и LSMA.

Adaptive to TF SMA Adaptive to TF SMA

MA автоматически вычисляет период, если происходят какие-либо изменения таймфрейма.

NxBreakout NxBreakout

Индикатор рисует линии поддержки и сопротивления, которые определяются по максимуму и минимуму за последние N баров.