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