一般的なトレイリングストップ関数の改良版(階段型)

アイキャッチ

一般的なトレイリングストップに階段型を追加

一般的なトレイリングストップ関数をご覧になった読者の方から、「複雑なトレイリングストップ」に興味があるというコメントをいただきました。

複雑という言い方が適切でなく、無闇に期待値を上げてしまったのは反省です。複雑というか応用です。通常のトレイリングストップは、一定ラインを超えたら、それ以降は1ティック順行するたびに、損切り値を更新するかと思います。

でも、それって時と場合によっては、損切りに引っかかりやすくなって使いにくいこともあります。

それを回避する1つの方法に階段型が考えられます。階段型というのは、特定の値幅だけ順行したら損切り値を更新するというものです。常に更新し続ける一般型に対して、一定の値幅の単位で更新するのが階段型です。

一般的なトレイリングストップ関数とは別に関数を用意する必要があるかなぁと思っていたのですが、一般的なトレイリングストップ関数の中に包められることが分かりました。まぁ、分かりましたって言うか、プログラミングしてたら「一緒にできるじゃん!」って気づいただけなんですけどね。

というわけで階段型の関数をご紹介します。

一般的なトレイリング関数と見比べると分かると思いますが、殆ど手を加えていません。主要な変更箇所は、損切り値の更新の条件に「if(MathAbs(modifyStopLoss – oStopLoss) >= step){」を追加し、関数の引数に「double aTS_StepPips = 0.0」を追加したぐらいです。

「double aTS_StepPips = 0.0」と引数に初期値を持たせることで、この関数を呼び出す時にこの引数を省略することが可能になります。何が言いたいかというと、従来の一般的なトレイリングストップ関数を使っていて、別に階段型にする必要がない場合は、何も変更しなくても大丈夫ということです。

上記の階段型以外にも、ATRやある期間の最高値/最安値を使って損切り値を更新する方法があります。別途ご紹介する予定です。

はたまた、仕掛けてから一定時間経過したら強制的に損切り値を更新するとか、一定値幅の利益を確保できたら半分だけ決済して、残りを継続してトレイリングするといったことも可能です。これまでご紹介したテクニックを応用すれば、これらのことも実現できるはずです。ぜひ、チャレンジしてみてください。

ブログランキングに参加中!

ポチっとクリック頂けると励みになります♪
(クリックしてもランキング一覧が表示されるだけですが、それでOKです)

  にほんブログ村 為替ブログ FX システムトレード派へ

1件のコメント

  • cazu

    勉強になりました。
    一度チャレンジしてみます。

コメントを残す



3 × 3 =