(続)指定時間帯のみにEAを動かすスクリプト…。

とある人のブログに、ミラーチャートの活用方法が書かれていました。
客観的には意味のないミラーチャートでも、チャートを見る人の心理的なバイアスを矯正するためのツールとしてなら価値はあるのかもしれません。(そういう目的なら、逆ペアチャートよりもミラーチャートの方が適していますね。)


さて、話は昨日に戻って、、Kaさんから、

要望は既にポジションを持っているときは決済するまで動作継続でお願いします。
時間指定できるEAでもこれを使えば複数時間の設定ができるので便利ですね

との要望がございましたので、EA動作時間外のポジションの扱いを少し指定できるようにしてみました。ダウンロードはこちらからどうぞ。


extern bool DeleteAllPendingOrders = true;

このオプションを true にすると、EA停止時に、未約定の指値注文を全て取り消します。

extern bool CloseAllOpenPositions = true;

CloseAllOpenPositions を true にすると、EA停止時に、保有ポジションを全てクローズします。
昨日のスクリプトは、上記2つが true になった状態と考えてもらったらOKです。

extern bool DeleteAllPendingOrders = true;
extern bool CloseAllOpenPositions = false;
extern int FaultyPosition_TP = 25;
extern int FaultyPosition_SL = 50;

この設定では、指値注文は取り消し、保有ポジションは既存のsl/tp設定を生かすために残します。
但し、sl/tp設定の無い不完全なポジションが見つかった場合は、FaultyPosition_TP/SL 値を設定します。
これはEA停止の直前にポジ取りしてしまい、sl/tp設定に失敗した場合を想定しているので例外的な処理と考えてください。

extern bool DeleteAllPendingOrders = false;
extern bool CloseAllOpenPositions = false;

両方を false にすると、指値注文や保有ポジがある場合にEAを止めません。(!)
指値注文と保有ポジがなくなった時点でEAを止めます。これが役に立つ人がいるのか分かりませんが...(ポジをとり続けるポジポジ病なEAに対しては、タイマーとして働かなくなるので..)、改造してみたい人は参考にしてください。


設定項目がややこしくなったので、設定内容を確認できるように画面出力するようにしました。

EA自体がコメント機能を使うことが多いので、EAとは別のチャートでスクリプトを動かすと便利だと思います。