Assista a como baixar robôs de negociação gratuitos
Encontre-nos em Twitter!
Participe de nossa página de fãs
Script interessante?
Coloque um link para ele, e permita que outras pessoas também o avaliem
Você gostou do script?
Avalie seu funcionamento no terminal MetaTrader 5
Bibliotecas

Biblioteca de compatibilidade entre o MQL4 e MQL5 - biblioteca para MetaTrader 5

Visualizações:
1867
Avaliação:
(49)
Publicado:
2014.01.14 12:56
Atualizado:
2016.11.22 07:34
Precisa de um robô ou indicador baseado nesse código? Solicite-o no Freelance Ir para Freelance

Esta biblioteca permite executar a maioria dos scripts e indicadores do Metatrader4 no MetaTrader 5. A maioria das funções já são suportadas, apenas a lógica de negociação não foi adicionada para os Experts, pois o mecanismo de negociações precisa ser reescrito.

Autor real:

Créditos para Sergey Pavlov para o seu artigo em https://www.mql5.com/pt/articles/81

Esta biblioteca suporta a maioria das funções, exceto os mecanismos de negociações do EA. Há também as funções que dão erros em MT5 que existem em MQL4, porém, são funções alternativas apenas com o mesmo nome e terminadas em MQL4. A maioria deles são funções conflitantes que possuem os mesmos nomes em MQL5. O artigo original levou apenas a biblioteca esqueleto assim, esta versão de biblioteca é preenchida com funções, em sua maioria, em MQL4. Por favor, veja o código fonte Biblioteca com o padrão de busca "MQL4" para os nomes de funções específicas.

TODO:Mecanismo de negociação do EA para o envio e controle de ordens. Algumas funções têm stubs genéricos e ela será dada de acordo com as mensagens de erro no log. O retorno do código para estes sempre será -1.

Instalação:

Coloque o mql4compat.mqh em seu diretório de Include (ele reside em seu perfil de usuário "roaming" do Windows).

Em EA/indicator/library/script de MQL4 adicione logo após as definições #property:

#include <mql4compat.mqh>

Mude as funções MQL4:

int init() para int OnInit()
int deinit() por void OnDeinit(const int reason);
int start() em scripts por void OnStart();
int start() e  indicadores por:
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[])
  {

A última linha com a função return(), deve ser o seguinte:

   return(rates_total);

 Mude as funções conflitantes entre MQL4 e MQL5 devido a seus parâmetros alterados pela adição de MQL4 para seus nomes:

   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)

Em indicadores são necessários os ajustes manuais para função OnInit() e os cabeçalhos #property. A Função IndicatorCounted() também precisa ser alterada para a variável de mesmo nome, removendo cláusulas ou mudando para a variável prev_calculated em MQL5:

#define IndicatorCounted IndicatorCountedMQL4(prev_calculated)

Em indicadores personalizados veja como os cabeçalhos #property estão em MQL5 e troque os tipos definidos dos parâmetros de entrada extern por input. Além disso, em MQL5, eles são agora constantes e qualquer tentativa de alterar seus valores levará a erros. A correção é feita pela adição de variáveis ​​temporárias, copiando os valores dos parâmetros de entrada para eles.

Na primeira linha do seu código de base adicione as funções de inicialização das variáveis reservadas em MQL4 (os indicadores personalizados terão avisos sobre as variáveis de reservadas OHLC/Time/Volume, caso elas sejam usadas na função OnCalculate(), elas são seguras para se ignorar): 

// -- ambiente compatível com o Init MQL4 
   InitMQL4Env();

Traduzido do inglês pela MetaQuotes Ltd.
Publicação original: https://www.mql5.com/en/code/1787

Forecast Oscillator Forecast Oscillator

Oscilador normalizado que fornece uma linha de sinal e pontos coloridos para realizar negociações.

i-Fractals-sig i-Fractals-sig

Indicador que fornece sinais de entrada no mercado utilizando fractais.

JBrainTrend1Stop JBrainTrend1Stop

Indicador que constrói linhas de níveis de Stop Loss de acordo com os dados do sistema de negociação BrainTrend1 com suavização das séries de preço.

ATR channel ATR channel

Canal baseando nos desvios do indicador técnico ATR (Average True Range) do valor da média móvel.