トレイリングストップとブレイクイーブンを併用するために

アイキャッチ

変更箇所はたったの2行

トレイリングストップ関数とブレイクイーブン関数はどちらも自作ライブラリに包含されていますが、両方を併用するとトレイリングストップが打ち消されて、ブレイクイーブンが常に適用されてしまう問題があることが分かりました。

トレイリングストップとブレイクイーブンを併用したいという声が複数ありましたので、併用できるようにコードを変更します。

変更前のコードは、現在の損切り価格とブレイクイーブン後の損切り価格が不一致ならば、ブレイクイーブン後の損切り価格に変更するロジックになっています。

この場合、トレイリングストップで損切り価格を随時変更すると、上記条件が成立してしまうので、ブレイクイーブン後の損切り価格に戻っちゃうというわけです。

これを避けるために、変更後のコードでは、現在の損切り価格がブレイクイーブン後の損切り価格よりマイナス方向にあるか、そもそも損切り設定していない(oStopLoss == 0.0)場合のみ、ブレイクイーブン後の損切り価格に変更するようにしています。

これで併用できるようになります。アップロードしているライブラリも近いうちに最新化しますね。

なお、コードの抜粋だけだと分かりにくいでしょうから、変更前後の関数もそれぞれ載せておきます。

スポンサードリンク

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

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

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

3件のコメント

  • たごさく

    いつもありがとうございます、とても素晴らしいです
    1つ教えてください。
    このBEと、TRの併用コードですが
    こちらのTRは階段状TRではなくノーマルのものでしょうか?
    つまり
    aMoveExecPips ストップ変更開始位置(pips)
    aMoveStopPips ストップ変更幅(pips)

    aMoveExecPips だけ進んだら
    そこからaMoveStopPips の位置にstoplossをしかける
    というものでしょうか?
    そのあとは、同じaMoveExecPips だけ順行したら
    再度そこからaMoveStopPips の位置にstoplossをしかけるという感じですか??

  • たごさく

    すみません、私勘違いをしていたかもしれません。
    このBE関数は、あくまでBE関数を修正されたもので、
    階段状TRと併用したい場合は
    階段状TRの関数と、こちらの修正版BE関数を
    順番に呼び出すという感じになりますか?
    (tickごとではなく、新しいローソク足が確定したときの頻度などで)

    • りゅーき

      ご認識の通り、BE関数を修正しただけです。TR関数と併用したい場合は両方の関数を順番に呼び出していただく必要があります。

コメントを残す



six + 12 =