タイトルが入力されていません。
コンテンツがありません。
There have no category
There have no subcategory
EAを自作で何個か作って試しているのですが、 どうも違うEAのポジションを決済してしまう時があります。 1つのMT4でEA別にポジションを管理するにはどのようにコードを書いたら良いのでしょうか。 教えてください。
違うEAのポジションを決済してしまう現象は、 OrderCloseの際に誤って他EAのチケット番号を指定してしまっていることにより発生します。 下記2つの対応をすれば問題ないかと思います。
① EAごとに異なるマジックナンバーを設定(外部パラメータにされるのがよいかと思います)
extern int Magic = 999999;
② ポジション管理
for (int i = 0; i < OrdersTotal(); i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == FALSE) break; if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic){ RefreshRates(); Ticket=OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 0, White); return; } }
マジックナンバーと通貨ペアが正しいことを判定すれば正しいチケットを決済することができます。
はじめまして。ソースがないので何とも言えないのですが、 マジックナンバーを確認していないのかもしれません。
エントリー時と決済時にはマジックナンバーの確認をすれば、他のEAが決済することはないと思います。
↓参考までに
// マジックナンバーを外部パラメータとする extern int MagicNumber = 123;
// エントリー時はマジックナンバーを指定 OrderSend(Symbol(),OP_BUY,lot,Ask,Slippage,0,0,Com,MagicNumber,0,Blue);
// 決済時にマジックナンバーを確認 for(i=OrdersTotal()-1; i>=0; i--){ if(OrderSelect(i, SELECT_BY_POS) == true){ if(OrderType() == OP_BUY && OrderMagicNumber() == MagicNumber && OrderSymbol() == Symbol()){ if(!(OrderClose(OrderTicket(),OrderLots(),MarketInfo(Symbol(),MODE_BID),Slippage,Green))){
ádasd
コメント文がありません。
違うEAのポジションを決済してしまう現象は、
OrderCloseの際に誤って他EAのチケット番号を指定してしまっていることにより発生します。
下記2つの対応をすれば問題ないかと思います。
① EAごとに異なるマジックナンバーを設定(外部パラメータにされるのがよいかと思います)
② ポジション管理
マジックナンバーと通貨ペアが正しいことを判定すれば正しいチケットを決済することができます。
はじめまして。ソースがないので何とも言えないのですが、
マジックナンバーを確認していないのかもしれません。
エントリー時と決済時にはマジックナンバーの確認をすれば、他のEAが決済することはないと思います。
↓参考までに
ádasd