
初期設定等はないので、start からやっていきます。
以下を追加してください。
for(int i=OrdersTotal()-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) continue;
if(OrderType()==OP_BUY)
{
OrderClose(OrderTicket(),OrderLots(),Bid,3,White);
}
if(OrderType()==OP_SELL)
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,White);
}
}
最初に保有ポジションの数を数えて、for文で繰り返し処理の設定をしています。
保有ポジションのインデックスは 0 から始まりますので、個数から1をひきます。
そして、大きい方からインデックスを設定して、数を減らしていきます。
これには理由があり、小さい方から始めるとうまくいかない場合があります。
小さい方から決済していくと、0番を決済した後、次は1番を処理するという流れになります。
保有ポジションの数が多い場合、連続で処理していくのですが、
メタトレーダー内部の保有ポジションの処理が終わっていくと、
0番が処理された時、1番だったものが0番になります。
なので、0番の処理が終わって、1番に取り掛かろうとした時に、
その1番は元々2番のポジションで、
元々1番だったものは処理されずに残ってしまうことがあります。
このようなことを避けるために、数の大きい方から処理します。
次に、保有ポジションかどうかチェックします。
そして、買いか売りかをチェックし、それぞれに応じて決済の処理を行います。
このようにして、一括決済を行うことができます。

入力が終わったら、コンパイルしてみてください。
ナビゲーターの Script の欄に表示されていればOKです。

今回は、とにかくポジションを決済するプログラムにしています。
条件わけ等は次回以降にやっていきます。

