Libreria de conectores MQL

¿Qué es la biblioteca de conectores MQL?

La biblioteca MT2Trading le permite enviar señales directamente desde el código MQL (ya sea desde un indicador técnico o un asesor experto).

Requisitos:

Para utilizar la biblioteca MT2Trading, asegúrese de que la biblioteca (mt2trading_library for MT4 / 5) esté copiada en la carpeta de la biblioteca de su terminal MetaTrader (MQL4 / Libraries o MQL5 / Libraries).

Declare las funciones en su indicador o EA en la parte superior de su código con #import

Definiciones

enum broker {
	All = 0,
	IQOption = 1,
	Binary = 2,
	Spectre = 3,
	Alpari = 4,
	InstaBinary = 5,
	OptionField = 6,
	CLMForex = 7,
	DukasCopy = 8,
	GCOption = 9,
	StrategyTester = 10,
	CapitalCore = 11,
	PocketOption = 12,
	Bitness = 13
};

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
};

Importación de librerias

 

MQL4

#import "mt2trading_library.ex4" 
	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);
	double tradeprofit (string signalid);
#import

MQL5

#import "mt2trading_library.ex5" 
	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);
	double tradeprofit (string signalid);		
#import

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 () contiene importantes inicializaciones.

  1. sendOnce es una variable de marca de tiempo para evitar el envío de más de una señal por vela.
  2. signalID es el parámetro de identificación que se utiliza para firmar la señal
    y se puede usar más adelante para recibir el resultado comercial con la función de biblioteca traderesult (signalID) Además, la ID de señal se utiliza para
    mantener la pista de la
    secuencia de señales de martingala. Mientras que las señales OnNextExpiry pueden tener una identificación única
    las señales OnNextSignal deben tener una identificación única, para que el robot pueda reconocer las señales como una secuencia de martingala.
  3. asset es el par de divisas del gráfico. Debe constar de 6 caracteres (por ejemplo, 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() – Sección

Ejemplo para colocar operaciones Up/Down en Up_Arrow_Condition y 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 de la función MT2Trading:

  1. Asset: Par de divisas (6 caracteres de longitud, por ejemplo, EURUSD).
  2. Direction: «CALL» / «PUT». CALL significa comprar (dirección arriba), PUT significa vender (dirección abajo).
  3. Trade Amount: Monto en la moneda de su cuenta de corredor.
  4. Expiration time: Tiempo de caducidad en minutos.
  5. Martingale Type: Define el tipo de martingala que se debe aplicar.
  6. Martingale Steps: Número de pasos de martingala (Ignorado si no se usa Martingala).
  7. Martingale Coefficient: El coeficiente que se debe aplicar para calcular los montos para cada
    paso de martingala (Ignorado si no se usa Martingala).
  8. Broker: Defina broker (opcional), o utilice todos los brokers.
  9. Signal Name: Solo un nombre de la señal que se mostrará en la tabla de operaciones. (opcional)
  10. Signal ID: Cada operación tiene una identificación propia que se puede usar para recuperar el resultado de la operación más adelante. También la identificación se utiliza
    para construir las secuencias de martingala. Todas las operaciones de una secuencia de martingala tienen la misma identificación.