はじめに
EAを作っていて、ポジションを全決済したかったのですが、デフォルトで入っているEAに書かれていた「ClosePositionsメソッド」では上手く全決済が出来なかったので他の方法を模索しました。
その方法をまとめます。
ソースコード
ソースコードは下の通りです。
void CloseAllPositions()
{
for(int i = OrdersTotal() - 1; i >= 0; i--){
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == True){
bool Closed=OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), Slippage, clrNONE);
}
}
}
int start(){
CloseAllPositions();
}
int start()より上のメソッドを定義する部分に上のような「CloseAllPositionsメソッド」を追加してください。
start()内で呼び出すときは、上のようにして呼び出します。
バックテストをして複数のポジションが一斉に決済されることを確認してください。
コメント