Biblioteca de conectores MQL

O que é a biblioteca de conectores MQL?

A biblioteca MT2Trading permite enviar sinais diretamente do código MQL (de um indicador técnico ou de um Expert Advisor).

Requisitos:

Para usar a biblioteca MT2Trading, certifique-se de que a biblioteca (mt2trading_library para MT4/5) seja copiada para a pasta da biblioteca do seu terminal MetaTrader (MQL4/Libraries ou MQL5/Libraries).

Declare as funções em seu indicador ou EA na parte superior do seu código com #import

Define a seção

enum broker {
		 All = 0,
		 IQOption = 1,
		 Binary = 2,
		 Spectre = 3,
		 Alpari = 4
	};
	enum martingale {
		 NoMartingale = 0,
		 OnNextExpiry = 1,
		 OnNextSignal = 2,
		 Anti_OnNextExpiry = 3,
		 Anti_OnNextSignal = 4,
		 OnNextSignal_Global= 5,
		 Anti_OnNextSignal_Global = 6
	};
	
	enum result {
		 TIE = 0,
		 WIN = 1,
		 LOSS = 2
	};

Seção de importação de biblioteca

 

MQL4

#import "mt2trading_library.ex4" // Please use only library version 12.4 or higher !!!

		bool mt2trading (string symbol, string direction, double amount, int expiryMinutes);
		bool mt2trading (string symbol, string direction, double amount, int expiryMinutes, string signalname);
		bool mt2trading (string symbol, string direction, double amount, int expiryMinutes,
						 martingale martingaleType, int martingaleSteps, double martingaleCoef, 
						 broker myBroker, string signalName, string signalid);
		int traderesult (string signalid);
		
		#import

MQL5

#import "mt2trading_library.ex5" // Please use only library version 12.4 or higher !!!

		bool mt2trading (string symbol, string direction, double amount, int expiryMinutes);
		bool mt2trading (string symbol, string direction, double amount, int expiryMinutes, string signalname);
		bool mt2trading (string symbol, string direction, double amount, int expiryMinutes,
							martingale martingaleType, int martingaleSteps, double martingaleCoef, 
							broker myBroker, string signalName, string signalid);
		int traderesult (string signalid);
		
		#import

Seção parâmetros de entrada

extern broker Broker = All;
			extern string SignalName = "My Signal";             // Signal Name (optional)
			extern double TradeAmount = 1;                      // Trade Amount
			extern int ExpiryMinutes = 5;                       // Expiry Time [minutes]
			extern martingale MartingaleType = NoMartingale;    // Martingale
			extern int MartingaleSteps = 2;                     // Martingale Steps
			extern double MartingaleCoef = 2.0;                 // Martingale Coefficient
			

OnInit () seção contém inicializações importantes.

  1. sendOnce é uma variável timestamp, a fim de evitar o envio de mais de um sinal por vela.
  2. signalID é o parâmetro de identificação que é usado para assinar o sinal
    e pode ser usado posteriormente para receber o resultado comercial com a função de biblioteca traderesult (signalid). Também o signalID é usado para
    manter a faixa de
    seqüência de sinal Martingale. Enquanto os sinais OnNextExpiry podem ter um ID exclusivo,
    os sinais OnNextSignal devem ter ID exclusivo, para que o bot possa reconhecer os sinais como uma sequência de Martingale.
  3. asset (ativo) é o par de moedas do gráfico. Ele deve consistir de 6 caracteres (por exemplo, EURUSD).
int OnInit()
			{
				 // Initialize the time flag
				 sendOnce = TimeCurrent();
				 // Generate a unique signal id for signals management (based on timestamp, chart id and some random number)
				 MathSrand(GetTickCount());
				 if (MartingaleType == OnNextSignal || MartingaleType == Anti_OnNextSignal)
					  signalID = IntegerToString(GetTickCount()) + IntegerToString(MathRand()); // indicator-wide id
				 else if (MartingaleType = OnNextSignal_Global || MartingaleType == Anti_OnNextSignal_Global)
					  signalID = IntegerToString(AccountInfoInteger(ACCOUNT_LOGIN))
								 + IntegerToString(TerminalInfoInteger(TERMINAL_BUILD))
								 + AccountInfoString(ACCOUNT_NAME);   // terminal-wide id
				 if (StringLen(Symbol()) >= 6)
					  asset = StringSubstr(Symbol(),0,6);
				 else
					  asset = Symbol();
			}
			

OnCalculate ()-seção

Exemplo para a colocação de trades up/down em Up_Arrow_Condition e Down_Arrow_Condition:

MQL4

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[])
{

// Reinitialization of signalID if no martingale is used or martingale type is OnNextExpiry

if (MartingaleType == NoMartingale || MartingaleType == OnNextExpiry || MartingaleType == Anti_OnNextExpiry)
signalID = IntegerToString(GetTickCount()) + IntegerToString(MathRand()); // candle-wide unique id

//...

bool Up_Arrow_Condition = ...
bool Down_Arrow_Condition = ...

if (UP_Arrow_Condition && signaltime != time[0])
{
mt2trading (asset, "CALL", TradeAmount, ExpiryMinutes, MartingaleType, MartingaleSteps,
	 MartingaleCoef, Broker, SignalName, signalID);
signaltime = time[0];
}

if (DOWN_Arrow_Condition && signaltime != time[0])
{
mt2trading (asset, "PUT", TradeAmount, ExpiryMinutes, MartingaleType, MartingaleSteps,
	 MartingaleCoef, Broker, SignalName, signalID);
signaltime = time[0];
}

//...
return(rates_total);
}

MQL5

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[])
{

// Reinitialization of signalID if no martingale is used or martingale type is OnNextExpiry

if (MartingaleType == NoMartingale || MartingaleType == OnNextExpiry || MartingaleType == Anti_OnNextExpiry)
signalID = IntegerToString(GetTickCount()) + IntegerToString(MathRand()); // candle-wide unique id

//...

ArraySetAsSeries(time,true); // ---> only in MQL5

bool Up_Arrow_Condition = ...
bool Down_Arrow_Condition = ...

if (UP_Arrow_Condition && signaltime != time[0])
{
mt2trading (asset, "CALL", TradeAmount, ExpiryMinutes, MartingaleType, MartingaleSteps,
	 MartingaleCoef, Broker, SignalName, signalID);
signaltime = time[0];
}

if (DOWN_Arrow_Condition && signaltime != time[0])
{
mt2trading (asset, "PUT", TradeAmount, ExpiryMinutes, MartingaleType, MartingaleSteps,
	 MartingaleCoef, Broker, SignalName, signalID);
signaltime = time[0];
}

//...
return(rates_total);
}

Parâmetros da função MT2Trading:

  1. Asset: Par de moedas (6 caracteres de comprimento, por exemplo, EURUSD).
  2. Direção: «CALL» / «PUT». Um comércio da chamada significa a compra (sentido acima), um comércio põr significa a venda (sentido para baixo).
  3. Trade Amount: Valor do operação na moeda da conta do corretor.
  4. Expiration time: Tempo de expiração em minutos.
  5. Defina o tipo Martingale que deve ser aplicado (ignorado, se Martingale não é usado).
  6. Martingale Steps: Número de passos Martingale.
  7. Martingale Coefficient: O coeficiente que deve ser aplicado para os montantes de comércio de cálculo para cada
    passo Martingale (ignorado, se Martingale não é usado).
  8. Broker: Defina o corretor (opcional), ou todos os corretores.
  9. Signal Name: Apenas um nome do sinal que será exibido na tabela de negociações. opcional (opcional)
  10. Cada comércio tem a própria identificação que pode ser usada a fim recuperar mais tarde o resultado de comércio. Também o ID é usado
    para construir uma seqüência Martingale. Todos os comércios de uma seqüência Martingale tem o mesmo ID.