複数ポジションに対して成行きのトレーリングストップを実行する方法

たとえば、ナンピンEA等を証券会社のストップレベルより小さい損切り幅でトレールしたいときに必要となります。

 

やっかいなのは、ポジションごとに建値が異なるため、それぞれの過去最大含み益もバラバラになり、それらをプログラム上どうやって抽出するかという問題です。残念ながら、OrderSelect()関数では過去最大含み益を抽出できないため、困ってしまうわけです。

 

あくまでも正攻法のやり方としては、二次元配列を使って、チケット番号ごとに最新の決済ラインを記憶していき、ティック変動ごとにそれらを更新していくしかなさそうです。

しかし、この二次元配列を使ったトレーリングストップは、以前にプログラムしたことがあるのですが、非常に複雑な作業になってしまい、耳から脳ミソが出そうになります。(笑)

 

そこで、もっと簡単なやり方がないのかなあ、と考えあぐねていたら、ありました。

 

本来の損切値よりも10~20PIPS深いところに「ダミーの逆指値」を入れてトレーリングストップを実行してしまうのです。

 

そうすれば、証券会社のストップレベルはクリアできるし、OrderSelect()関数で最新の逆指値も簡単に抽出できます。

 

あとは、ティック変動ごとに、その逆指値より10~20PIPS浅いところに各ポジションの成行き用の決済ラインを引き直してやり、条件を満たしていればそのポジションを決済すればよいわけです。

 

ただし、メタトレーダーの取引画面等に「ダミーの逆指値」が表示されるので、見た目は悪いですが、簡単で確実な方法です。

 

お客さん、見た目の悪さは我慢してくださいね。m(__)m