Pustaka Konektor MQL

Apa itu Pustaka Konektor MQL:

Pustaka MT2Trading memungkinkan Anda mengirim sinyal perdagangan langsung dari kode MQL (baik dari indikator teknis atau penasihat ahli).

Persyaratan:

Untuk menggunakan pustaka MT2Trading, pastikan pustaka (mt2trading_library untuk MT4 / 5) telah disalin ke folder pustaka terminal MetaTrader Anda (MQL4 / Libraries atau MQL5 / Libraries).

Nyatakan fungsi dalam indikator atau EA Anda di bagian atas kode Anda dengan #import

Definisikan Bagian

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

Bagian Impor Pustaka

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

Bagian Parameter Input

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() Bagian yang terdiri dari inisialisasi penting.

  1. sendOnce adalah variabel cap waktu untuk mencegah pengiriman lebih dari satu sinyal per candle.
  2. signalID adalah parameter identifikasi yang digunakan untuk menandai sinyal dan dapat digunakan
    nanti untuk menerima hasil perdagangan dengan fungsi pustaka traderesult(signalID). signalID juga digunakan untuk
    melacak
    urutan sinyal martingale Sementara sinyal OnNextExpiry dapat memiliki tanda pengenal yang unik, di sisi lain OnNextSignal harus memiliki
    tanda penenal yang unik, sehingga robot dapat mengenali sinyal tersebut sebagai satu urutan martingale
  3. aset merupakan pasangan mata uang di dalam grafik. Aset harus terdiri dari 6 huruf (Contoh: 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() – Section

Contoh saat menempatkan perdagangan Up/Down pada Up_Arrow_Condition dan 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);
}

Fungsi parameters MT2Trading:

  1. Aset: Pasangan mata uang (sepanjang 6 huruf, Contoh: EURUSD).
  2. Arah: “CALL” / “PUT”. Call berarti membeli (arah ke atas), Put berarti menjual (arah ke bawah).
  3. Jumlah Perdagangan: Jumlah dalam mata uang akun broker Anda.
  4. Masa Kadaluarsa: Masa kadaluarsa perdagangan dalam menit.
  5. Tipe Martingale: Tentukan jenis martingale yang harus diterapkan (diabaikan, jika martingale tidak digunakan).
  6. Langkah Martingale: Jumlah langkah martingale.
  7. Koefisien Martingale: Koefisien yang harus diterapkan untuk menghitung jumlah perdagangan untuk setiap
    langkah martingale (diabaikan, jika martingale tidak digunakan).
  8. Broker: Tentukan broker (opsional), atau semua broker.
  9. Nama Sinyal: Hanya nama dari sinyal yang akan ditampilkan di tabel perdagangan. (opsional)
  10. ID Sinyal: Setiap perdagangan memiliki tanda pengenal (ID) masing-masing yang dapat digunakan untuk mengambil hasil perdagangan nanti. ID tersebut juga
    digunakan untuk membangun urutan martingale. Semua perdagangan dari satu urutan martingale memiliki ID yang sama.