エントリー時に指定したマジックナンバーを返すOrderMagicNumber()関数(MQL4)

関数OrderMagicNumber()

書式

int  OrderMagicNumber();  //引数なし

戻り値(返り値)

エントリー時に指定したマジックナンバーを返す。
使用用途は他のEAの注文と識別するために主に決済時に使う関数
画像下から
買エントリー
注文に指定したマジックナンバーと選択したチケットのマジックナンバーが一致

int Ticket;
int MagicNumber = 12345;
int slippage = 30;  //30pointを指定:1point=0.1pips換算_Point
bool flag = true;
if( flag ){
	Ticket = OrderSend(Symbol(),OP_BUY,MarketInfo(Symbol(),MODE_MINLOT),Ask,slippage,0,0,"OP_BUY",MagicNumber,0,clrNONE);
	
	if(OrderSelect(Ticket,SELECT_BY_TICKET,MODE_TRADES) && MagicNumber == OrderMagicNumber()){
		Print("マジックナンバーが一致しました");
	}else if(OrderSelect(Ticket,SELECT_BY_TICKET,MODE_TRADES) && MagicNumber != OrderMagicNumber()){
		Print("マジックナンバーが違います");
	}
	flag = false;
}

サンプル

画像下から
買エントリー
買のマジックナンバー
売エントリー
売のマジックナンバー
決済ポジションのマジックナンバー(買)
買決済
決済ポジションのマジックナンバー(売)
売決済

//グローバル変数
extern int MagicNumber = 12345;
extern int MagicNumber_2 = 67890;
int sellTicket = 0;
int buyTicket = 0;
bool flag = true;
int slippage = 30;  //30pointを指定:1point=0.1pips換算_Point

void OnTick(){

	
	if( flag == true ){
		//買エントリー	
		buyTicket = OrderSend(Symbol(),OP_BUY,MarketInfo(Symbol(),MODE_MINLOT),Ask,30,0,0,"OP_BUY",MagicNumber,0,clrNONE);
		Print("この買エントリーのマジックナンバーは"+MagicNumber+"です。");
		//売エントリー	
		sellTicket = OrderSend(Symbol(),OP_SELL,MarketInfo(Symbol(),MODE_MINLOT),Bid,slippage,0,0,"OP_SELL",MagicNumber_2,0,clrNONE);
		Print("この売エントリーのマジックナンバーは"+MagicNumber_2+"です。");
		if( buyTicket == -1 ){
			Print( "オーダー失敗エラーコードは"+GetLastError()+"です" );  //エラー内容を出力
		}   
		flag = false;
	}

	//買決済
	if( flag == false && buyTicket != 0 ){
		if( OrderSelect(buyTicket,SELECT_BY_TICKET,MODE_TRADES)  && OrderMagicNumber() == MagicNumber && OrderSymbol() == Symbol() ){
			Print("選択成功:決済するポジションのマジックナンバーは"+OrderMagicNumber()+"です。");
			bool res = OrderClose(buyTicket,OrderLots(),Bid,slippage,clrNONE);
			if( res == false ){
				Print( "決済失敗:"+GetLastError() );  //エラー内容を出力
			}
		}else{
			Print("選択失敗:"+GetLastError());  //エラー内容を出力
		}
		buyTicket=0;
	}
	
	//売決済
	if( !flag && sellTicket != 0 ){
		if( OrderSelect(sellTicket,SELECT_BY_TICKET,MODE_TRADES) && OrderMagicNumber() == MagicNumber_2  && OrderSymbol() == Symbol() ){
			Print("選択成功:決済するポジションのマジックナンバーは"+OrderMagicNumber()+"です。");
			bool res = OrderClose(sellTicket,OrderLots(),Ask,slippage,clrNONE);
			if( res == false ){
				Print( "決済失敗:"+GetLastError() );  //エラー内容を出力
			}
		}else{
			Print("選択失敗:"+GetLastError());  //エラー内容を出力
		}
		sellTicket=0;	
	}
}

関数OrderSelect(),関数OrderClose(),関数OrderSymbol()

シェアする

  • このエントリーをはてなブックマークに追加

フォローする