ไลบรารีตัวเชื่อมต่อ 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,
	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
};

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

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

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

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 เดียวกัน