ไลบรารีตัวเชื่อมต่อ MQL

ไลบรารีตัวเชื่อมต่อ MQL คืออะไร:

ไลบรารี MT2Trading ช่วยให้คุณสามารถส่งสัญญาณการเทรดได้โดยตรงจากโค้ด MQL (ทั้งจากตัวบ่งชี้ทางเทคนิคหรือที่ปรึกษาผู้เชี่ยวชาญ)

ข้อกำหนด

เพื่อใช้ไลบรารี MT2Trading ตรวจสอบให้แน่ใจว่าไลบรารี (mt2trading_library สำหรับ MT4/5) ถูกคัดลอกไปยังโฟลเดอร์ไลบรารีของเทอร์มินัล MetaTrader ของคุณ (MQL4/Libraries หรือ MQL5/Libraries)
Declare the functions in your indicator or EA at the top of your code with #import.

เซคชันการกำหนด

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

เซคชันการนำเข้าไลบรารี

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

ส่วนพารามิเตอร์อินพุต

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 () ส่วนที่ประกอบด้วยการเริ่มต้นที่สำคัญ

  1. SendOnceเป็นตัวแปร timestamp เพื่อป้องกันการส่งมากกว่าหนึ่งสัญญาณต่อแท่งเทียน
  2. signalID เป็นพารามิเตอร์การระบุตัวตนที่ใช้สำหรับการลงนามสัญญาณและสามารถถูกใช้ได้
    ในภายหลังเพื่อรับผลการเทรดด้วยฟังก์ชันไลบรารี traderesult (signalID) นอกจากนี้ SignalID ยังถูกใช้เพื่อ
    ติดตามการทบทุน
    ลำดับสัญญาณ ในขณะที่สัญญาณ OnNextExpiry สามารถมี id เฉพาะได้ แต่สัญญาณ OnNextSignal ควรมี id เฉพาะ
    เพื่อให้บอทสามารถรับรู้สัญญาณในรูปแบบลำดับการทบทุนเดียว
  3. สินทรัพย์เป็นคู่สกุลเงินของกราฟ มันควรประกอบไปด้วยอักขระ 6 ตัว (เช่น 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() – เซคชัน

ตัวอย่างการวางการเทรดขึ้น/ลงใน Up_Arrow_Condition และ 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);
}

พารามิเตอร์ของฟังก์ชัน MT2Trading:

  1. สินทรัพย์: คู่สกุลเงิน (ยาว 6 อักขระเช่น EURUSD)
  2. ทิศทาง: “คอล” / “พุท” การเทรดคอล หมายถึงการซื้อ (ทิศทางขึ้น) การเทรดพุท หมายถึงการขาย (ทิศทางลง)
  3. จำนวนการเทรด: จำนวเงินในสกุลเงินบัญชีโบรกเกอร์ของคุณ
  4. เวลาหมดอายุ: เวลาหมดอายุเป็นนาที
  5. ประเภทการทบทุน: กำหนดประเภทที่ควรใช้การทบทุน (ยกเว้น หากไม่ใช้ การทบทุน)
  6. ขั้นการทบทุน: จำนวนขั้นการทบทุน
  7. ค่าสัมประสิทธิ์การทบทุน: ค่าสัมประสิทธิ์ที่ควรใช้สำหรับการคำนวณยอดการเทรดสำหรับทุกๆ
    ขั้นการทบทุน (ละเว้น หากไม่ได้ใช้การทบทุน)
  8. โบรกเกอร์: เลือกโบรกเกอร์ (ไม่บังคับ) หรือโบรกเกอร์ทั้งหมด
  9. ชื่อสัญญาณ: เป็นแค่ชื่อของสัญญาณที่จะแสดงในตารางการเทรด (ไม่บังคับ)
  10. รหัสสัญญาณ: ทุกการเทรดจะมี ID ของตัวเองที่สามารถใช้เพื่อดึงผลลัพธ์การเทรดในภายหลังได้ นอกจากนี้ ID จะถูก
    ใช้ในการสร้างลำดับการทบทุน การเทรดทั้งหมดของลำดับการทบทุนจะมี ID เดียวกัน