English Русский Deutsch
preview
取引におけるトレーリングストップ

取引におけるトレーリングストップ

MetaTrader 5 | 19 6月 2024, 14:42
125 0
Aleksej Poljakov
Aleksej Poljakov

はじめに

トレーリングストップの主な目的は、最小限のリスクで確実な利益を得ることです。トレーリングストップの仕組みの本質は非常にシンプルです。損切りは、トレーダーにとって有利な方向に動いた場合、徐々に価格の後方に移動します。価格が反対方向に動いても、それは維持されます。

トレーリングストップを図式化すると以下のようになります。あるトレーダーが上昇トレンドで買いポジションを建てたとしましょう。価格が上昇すると、損切りは自動的に価格の後方に移動します。トレンドの方向が変われば、トレーダーは利益を得ることができます。

トレーリングストップのオプションは数多くあります。MetaTrader取引プラットフォームには、独自のトレーリングストップオプションがあります。

さらに、トレーリングストップは自動化することができ、エキスパートアドバイザー(EA)の取引コードに含めることができます。例えば、これはポジションの支持クラスでおこなうことができます。

トレーリングストップの効率は、価格のボラティリティと損切りレベルの選択に大きく左右されます。損切りを設定するには、さまざまなアプローチを用いることができます。例えば、トレンドがはっきり見える場合は、価格の高値や安値の値を使用することができます。さらに、テクニカル指標を使用して、トレーリングストップパラメータを決定することができます。このような方法は、「独自のトレーリングストップ注文を作成する方法」稿で説明しています。この記事では、統計データに基づいてトレーリングストップを構築する可能性について見ていきます。


簡単なトレーリングストップ

取引戦略とトレーリングストップは互いに独立しています。両者の主な違いは、ストラテジーがポジションを建て、クローズすることです。トレーリングストップは、ポジションをクローズするためのものです。

まず、損切りにかけられる制限を見てみましょう。

損切りの上限は銘柄のプロパティで設定します。ポジションの終値と設定した損切りの差の最小値は、ポジションの現在の終値からの最小オフセット(ポイント)を下回ることはできません。

SymbolInfoInteger(_Symbol,SYMBOL_TRADE_STOPS_LEVEL)

下界については、自分で計算しなければなりません。最小損切りの第一条件は、損益分岐点領域であることです。一見すると、すべてがシンプルです。損切りの最小値は、ポジションの始値より悪くならないようにします。..ですよね。違います。

ポジションを建てる際、手数料がかかる場合があります。さらに、ポジションはその存続中にスワップを蓄積する可能性があります。これらの追加コストは、可能な限り最小限の損切りを計算する際に考慮に入れるべきです。そのためには、預金通貨での1ポイントのコストを調べる必要があります。

PointValue=SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_VALUE)*SymbolInfoDouble(_Symbol,SYMBOL_POINT)/SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE)

これで、手数料とスワップを補うために、価格が何ポイント動くかを計算できます。加えて、スリッページも忘れてはなりません。取引操作中、スリッページは良い方にも悪い方にも働くことがありますが、念のために、スリッページは常にトレーダーに不利に働くと仮定します。

PriceOpenはポジションの始値であり Lotはその数量だとします。最小損切りは以下の式で計算できます。

上の符号は買いポジション、下の符号は売りポジションに使用されます。

損切りの最小値は、ポジションの損益分岐点保証レベルに相当します。言い換えれば、ポジションが最小の損切りで決済された場合、その合計利益(現在の利益、スワップ、手数料を考慮)はマイナスになりません。

これでトレーリングストップの基本ルールができました。

  • 新たな損切りは、最小レベルと最大レベルの間にあるべきです。
  • 新しい損切りは、前のものよりも優れていなければなりません。

これらの条件を満たせば、損切りをアップグレードすることができますが、アップグレードする前に、もう1つ確認をおこなう必要があります。古い損切りは、凍結レベルの外になければなりません(これについての詳細は「マーケットでの公開前にトレードロボットに行うべき検査」稿でご覧ください)。

新たな損切りを決めるには、さまざまなアプローチを用いることができます。ここでは、「トレーダーにやさしい損切りと利食い」稿で説明されているレベルを使用します。

ただし、最適な損切りを計算するために、ちょっとした変更を加えます。トレーリングストップは現在のバーでトリガーされるため、ポジション保有時間は常に1バーとなります。さらに、ランダムに選んだ時間枠で値動きの統計を取ります。このアプローチによって、トレーリングストップの感度を調整することが可能になります。

利食いについて一言。ここにはいくつかの異なる選択肢があるでしょう。

あるトレーダーが所定の利食い幅を持つ取引戦略を使用していると仮定しましょう。そうすれば、利食いは固定されたままとなり、トレーリングストップは損切りを修正するだけとなります。この場合、トレーリングストップはポジションを損益分岐点に持っていきます。

取引戦略に利食いの設定がない場合、またはトレーリング利食いを使用することが可能な場合、トレーリングストップは損切りと利食いの両方のレベルを監視することができます。この場合、一部のポジションがより有利な価格で決済される可能性があるため、取引の収益性が変わる可能性があります。

さらに、ティックごとモードでトレーリングストップが使用される可能性もあります。それでは、利食いを設定する意味がありません。価格が利食いに追いつくことはありません。ポジションを決済する唯一の選択肢は、損切りのみです。

単純なトレーリングストップが利食い、利食いなしでどのように機能するか確認してみましょう。同時に、トレーリングストップが損切りを損益分岐点領域まで移動させた後にのみ、利食いの設定と変更が可能になるという追加条件も導入します。

EURUSD H1、2023年1月1日から12月31日までのテスト期間、トレーリングストップのM1時間枠を使用します。ポジションの方向と量はランダムに決定されます。損切りと利食いのポジションは設定しません。

残高グラフは以下のようになります。


いくつかのポジションはテスト終了時に強制的にクローズされたました。これは使用された戦略の欠点です。しかし、このグラフはトレーリングストップがどのように機能するかを示しています。テスト結果を見てみましょう。

PERIOD_M1 総純利益 粗利益 総損失
UseTakeProfit=false 4 758.48 10 689.84 -5 931.36
UseTakeProfit=true 5 483.94 11 297.68 -5 813.74

このように、利食いの使用は取引の収益性に影響を与える可能性があります。では、同じ条件で、トレーリングストップの時間枠をM15に設定してテストを実行してみましょう。

PERIOD_M15 総純利益 粗利益 総損失
UseTakeProfit=false 16 371.11 33 435.31 -17 064.20
UseTakeProfit=true 17 038.63 34 042.13 -17 003.50

時間枠を変えると、テスト結果に大きな影響がでました。これは、最適な損切りレベルと利食いレベルの変化によるものです。小さなトレーリングストップの時間枠はスキャルピングに適しており、大きな時間枠はトレンド戦略に適していると結論づけることができます。


道徳的期待とトレーリングストップ

期待効用は、1732年にダニエル・ベルヌーイによって初めて紹介されたリスク評価です。道徳的期待によって、ゲームの有用性を評価することができます。同時に、プレイヤーの資本金、勝ち負けの可能性、およびその確率も考慮されます。

取引のプロセスを少し変えて見てみましょう。それぞれのポジションを別のプレイヤーと考えます。そのポジションには資本金(ポジションの利益の合計)があります。この資本金は、ポジションが利益確定で決済された場合に増加する可能性があります。また、損切りによってポジションが決済された場合にも減少する可能性があります。

ProfitPointをポイント単位のポジション利益、pをポジションが利益確定で決済される確率とすると、そのポジションに期待されるモラルは次のようになります。

明らかに、トレーダーは、モラルの期待値が最大になるような損切りと利食いを選択する必要があります。道徳的期待の助けを借りて、立場を支持することの特徴を見てみましょう。

損切りは利益より小さくなければなりません。この場合のみ、道徳的な期待はポジティブなものとなります。しかし、この条件は十分ではありません。最適な損切りと利食いが見つかったと仮定しましょう。これらのレベルは理想的な市場にとって理想的です。現実の市場は驚きをもたらすことがあります。

トレーリングストップが最適な損切りを設定したが、スリッページのためにポジションがより悪い価格で決済される可能性があるとします。この場合、実際の損切りはポジションの利益よりも大きくなる可能性があります。これは許されることではありません。したがって、損切りは制限の対象となります。

モラルの期待値を計算する際には、利食い値が使用されますが、その使用は義務ではありません。この問題では、取引戦略の特徴がより重要です。

このような結果は、道徳的な期待に基づくトレーリングストップによって示されます。

PERIOD_M1 総純利益 粗利益 総損失
UseTakeProfit=false 4 482.35 8 175.37 -3 693.02
UseTakeProfit=true 4 747.94 8 434.11 -3 686.17

結果は、単純なトレーリングストップの場合よりも若干悪くなりました。これは、ポジションが道徳的な期待によって支えられている場合、ポジションが単純なトレーリングストップよりも早く損益分岐点に移行するという事実によるものです。したがって、このようなトレーリングストップはスキャルピング戦略で使用するのが最適です。

もう1つの重大な欠点は、必要な操作の数が多いことです。計算は最適化することができますが、この場合でも、道徳的な期待によるトレーリングストップの時間枠は小さいはずです。


複数ポジションのトレーリングストップ

これまで、各ポジションに個別にトレーリングストップを適用してきました。一度に複数のポジションに適用することは可能でしょうか。この可能性を考えてみましょう。ポジションは同時に異なるタイプ、異なるボリュームを持つことができると仮定します。

まず、どのタイプのポジションが有利かを見極める必要があります。そのためには、買いポジションの数量の合計を求め、そこから売りポジションの数量の合計を引きます。

その結果、どちらのタイプのポジションが強いかがわかるでしょう。プラスの数値は買いポジションが強く、マイナスの数値は売りポジションが優勢であることを示します。もし結果がゼロなら、ポジションの強さは等しくなります。

次に、各ポジションの終値の最小値を求める必要があります。最小損切りと同じ方法で計算されますが、スリッページは考慮されません。

ここで、これらの終値をAsk/Bid価格に変換し、その加重平均を求める必要があります。ポジションボリュームは重みとして機能します。

この2つの値は、後にポジションを追跡するために必要となる最適なBid値1つに減らした方が便利です。

今、3つの選択肢があります。

  • 買いポジションと売りポジションの数量が互いに等しい場合、最適なBid値は最小の損失に対応します。言い換えれば、実際のBid価格が最適なBid価格と一致すれば、トレーダーはすべてのポジションを決済することができます。
  • 買いポジションの数量が多い場合は、スリッページ分だけBidOptを増やす必要があります。これはすべてのポジションの最小損切りとなります。
  • 売りポジションの数量の方が多い場合は、BidOptの値をスリッページ分だけ減らす必要があります。

ポジションは単純なトレーリングストップと同じ方法で維持されます。新たな損切り水準が計算され、価格に合わせて調整されます。唯一の違いは、この損切りがバーチャルであることです。したがって、ティックごとの価格変化を追跡する必要があります。

私は、単純なトレーリングストップの原則に基づき、いくつかのポジションを支持しています。残高グラフはこのように変化します。


すべてのポジションを支持し、それぞれのポジションを個別に支持することは、対立をもたらさないことに留意してください。例えば、単純なトレーリングストップ+全ポジションのトレーリングストップでは、以下のような結果が得られます。


総純利益 粗利益 総損失
PERIOD_M1 4 907.90 10 425.52 -5 517.62
PERIOD_M15 16 524.44 32 304.01 -15 779.57

全体として、トレーリングストップは便利なツールです。しかし、トレーダーは、その使用によって損益分岐点取引が保証されるわけではないことを忘れてはなりません。不十分な取引戦略を改善することはできません。


結論

この記事を書くにあたり、以下のプログラムを使用しました。

名前 種類 機能
Trailing stop EA
  • TFTS:トレーリングストップ時間枠
  • Seed:一連の乱数のシード番号。0でない場合は、ポジションとそのボリュームのシーケンスが繰り返されます。
  • Slippage:スリッページ
  • TypeTS:トレーリングストップタイプの選択
  • UseTakeProfit:利食いを使用する
  • MultiTS:すべての未決ポジションのトレーリングストップ

MetaQuotes Ltdによってロシア語から翻訳されました。
元の記事: https://www.mql5.com/ru/articles/14167

添付されたファイル |
Trailing_stop.mq5 (32.67 KB)
複数の商品を同時に取引する際のリスクバランス 複数の商品を同時に取引する際のリスクバランス
この記事では、初心者が複数の商品を同時に取引する際のリスクバランスを取るためのスクリプトの実装をゼロから書けるようにします。また、経験豊富なユーザーは、この記事で提案されたオプションに関連して、ソリューションを実行するための新しいアイデアが得られるかもしれません。
時系列分類問題における因果推論 時系列分類問題における因果推論
この記事では、機械学習を用いた因果推論の理論と、Pythonによるカスタムアプローチの実装について見ていきます。因果推論と因果思考は哲学と心理学にルーツを持ち、現実を理解する上で重要な役割を果たしています。
多通貨エキスパートアドバイザーの開発(第3回):アーキテクチャの改訂 多通貨エキスパートアドバイザーの開発(第3回):アーキテクチャの改訂
複数の戦略が並行して動作する多通貨EAの開発はすでにある程度進んでいます。蓄積された経験を考慮し、先に進みすぎる前に、ソリューションのアーキテクチャを見直し、改善を試みましょう。
フリーランスサービスでトレーダーから受注して収入を得る方法 フリーランスサービスでトレーダーから受注して収入を得る方法
MQL5フリーランスは、開発者がトレーダー顧客のために取引アプリケーションを作成して報酬を得ることができるオンラインサービスです。このサービスは2010年以来成功裏に運営されており、これまでに10万件以上のプロジェクトが完了し、その総額は700万ドルに達しています。ご覧の通り、相当な額の資金が絡んでいます。