English Русский 中文 Español Deutsch Português 한국어 Français Italiano Türkçe
トレーリングストップを採用した利益を生み出すアルゴリズム

トレーリングストップを採用した利益を生み出すアルゴリズム

MetaTrader 5トレーディングシステム | 2 10月 2015, 16:33
2 605 0
Гребенев Вячеслав
Гребенев Вячеслав

はじめに

ランダムエントリーとタイムドエグジットの機能を持つアルゴリズムの1つは既に、”オールオアナッシング”FXストラテジーの記事でレビューされています。そのアルゴリズムは市場の出来事と、市場が進むべき方向を考慮しませんでした。アルゴリズムにとって重要なのは、ボラティリティが多かれ少なかれコンスタントにあるかです。基本的に、アルゴリズムは利益も損失も生みませんでしたが、”くじを引く”際には便利であることが分かりました。

この記事でおさえるべき主なポイントは、1つのトレードの期間は1時間未満や1週間より長くセットできなかったということです。1時間未満という数字は、スプレッドによるとても早い損失によるもので、1週間より長い値は”宝くじ”を何年も続けました。

馴染みのあるEURUSDペアと、トレーリングストップを使ったエグジットでアルゴリズムの勉強を始めましょう。


1. ランダムエントリーとトレーリングストップを使ったエグジット機能を持つアルゴリズム

  1. マーケットにランダムな方向でエントリーします;
  2. トレーリングストップをTSと等しく設定します;
  3. トレーリングストップのトリガーが引かれるまで待ちます;
  4. ポイント1に戻るか、トレードを止めます。

市場の状況はトレーリングストップによって監視されているので、このアルゴリズムを使うことでいくらかの利益を期待できます。もしもプライスの動きがランダムウォークであれば、アルゴリズムは利益を得ることはありません。しかし、現実のプライスの動きは無秩序からはほど遠いので、いくらかの利益を期待できます。

アルゴリズムがどう実行されるかを予想する代わりに、EAを開発して、それをテストしてみましょう。プログラムでトレーリングストップをどう設定すれば良いかについては、多くの説明がされています。この記事では、アルゴリズムからプログラミングまで噛み砕くことをカバーしません。時間がかかり過ぎるからです。EAを勉強用に開発しますので、最大のデポジットは100.000米ドル、最少ロットは0.1に設定します。これにより停止するまでに多くのアクションを見ることができるようになります。

ここ記事では、トレリーグストップはTSに等しく、その他すべてのストップは、最新チャートの直近の5つの足(高低)の平均ボディサイズのパーセンテージで表すことにしましょう。最新のチャートを表示するタイムフレームはD1です。ロウソク足の数はいくつでも構いません、5である必要はありません。リーズニングに重要な影響を及ぼすわけではないからです。この数を選択していることが重要です。通貨のボラティリティや、選択した通貨や通貨ペアには依存しません。

テストの実行には、D1でTS=100%で設定しましょう。これくらいのTSを設定すると、1つのトレードの長さは約1日になります。前述のとおり、スプレッドにより、ロスがすぐに出てしまうため、短いトレード期間や小さいTSの値をセットすることはできません。大きすぎる値はアルゴリズムの実行時間が長くなりすぎてしまいます。

図 1. ランダムエントリーとトレーリングストップ、TS=100を使ったエグジット機能を持つアルゴリズムによって得られたバランス

図 1. ランダムエントリーとトレーリングストップ、TS=100を使ったエグジット機能を持つアルゴリズムによって得られたバランス

図1を見ると、アルゴリズムにより利益が出ており、EAの開発ができたため、通常そうなるので、この記事を終了してもいいように思えます。

しかし、このような記事を読んだ後、読者は不満を抱え3つの疑問を持ちます。

  1. デモンストレーションされた利益はパラメータを過去のデータに合わせただけなのでは?
  2. なぜEURUSDの通貨ペアが選ばれたのか?他の通貨ペアが選ばれた場合、結果はどうだったのか?
  3. なぜ、過去のデータのこの部分が選ばれたんのか?また、エントリーがランダムで行われたように、生み出された利益もランダム(たまたま)に過ぎないのでは?

これらの疑問に1つずつ答えていこうと思います。

ランダムエントリーとトレーリングストップによるエグジットの機能を持つアルゴリズムには、TSという1つのパラメータしかなく、それは純粋に一般的な考慮事項に基づいています-スプレッドとトレード期間による損失です。アルゴリズムはそれでも最適化されなければいけません。

最適化には、1990年から2012年までの利用可能な過去データのほぼすべてを使用します。アルゴリズムにはランダムなエントリーがあるため、すべてのTSの値には100の異なるランダム配列を使います。このように、アルゴリズムのランダム性を除去し、過去のデータへの調節を防ぎます。

図 2. トレーリングストップのTS値の最適化 EURUSD、D1(最適 TS=500)

図 2. トレーリングストップのTS値の最適化 EURUSD、D1(最適 TS=500)

最適化はテスターの、小さなTS値に対しては緩い計算をする、”オープニングプライスオンリー”モードで実行されます、それが一般的な概念を正しく表わしています。

図2で分かるように、最適化でははっきりとした最大のポイントを得ることはできません。TSがTS=50と100などと小さい時、損失が出ています。さらに、TSが150と850の時、アルゴリズムは、平均で、利益を出しています。TSが900から1500の時、アルゴリズムは再び損失を出し始めています。

1500以上のTSは考慮する必要はありません。TS=1500の時、アルゴリズムは22年間の間に25回トレードを行います。これは合理的と言える限界です。はっきりとした最大のポイントを特定できないため、利益が出ている150-850の中心、TS=500 (22年間で130トレード)を採用します。

異なる通貨ペアのアルゴリズムから得たバランスを見てみましょう。過去データへの近似化を防ぐため、1つのパスではなく100パスの平均を見てます。

図 3. ランダムエントリーとトレーリングストップ、EUR/USDに対しTS=500を使ったエグジット機能を持つアルゴリズムによって得られたバランス、100個のランダムエントリーの平均

図 4. ランダムエントリーとトレーリングストップ、GBP/USDに対しTS=500を使ったエグジット機能を持つアルゴリズムによって得られたバランス、100個のランダムエントリーの平均

図 4. ランダムエントリーとトレーリングストップ、GBP/USDに対しTS=500を使ったエグジット機能を持つアルゴリズムによって得られたバランス、100個のランダムエントリーの平均

図 5. ランダムエントリーとトレーリングストップ、USD/JPYに対しTS=500を使ったエグジット機能を持つアルゴリズムによって得られたバランス、100個のランダムエントリーの平均

図 5. ランダムエントリーとトレーリングストップ、USD/JPYに対しTS=500を使ったエグジット機能を持つアルゴリズムによって得られたバランス、100個のランダムエントリーの平均

ランダムエントリーとトレーリングストップ、EUR/USD、GBP/USD,USD/JPYに対しTS=500を使ったエグジット機能を持つアルゴリズムによって得られたバランス、100個のランダムエントリーの平均バランスの平均はY軸、時間はX軸に沿って表示されています。バランスの平均を詳しく見てみましょう。

まず、すべての通貨に対して指摘できるのは、鋭い垂直的な上昇と長いフラットな下落です。バランスがこのような結果になるアルゴリズムは”擬似-負け”アルゴリズムと呼びましょう。確かに、ランダムで3か月の期間を取れば、急激な上昇はなく、優美な、安定して、コンスタントなロスを見るでしょう。つまり、このロスは通常のスプレッドによるロスよりも、かなり早いロスになるということです。同時に、”擬似-負け”アルゴリズムは20年間で勝ったり、負けたりしていることが分かります。

2つ目。垂直の上昇の数は通貨ペアによって変化します。例.GBP/USDチャートにはUSD/JPYチャートほど多くのの上昇がありません。さらに、この上昇は時間に対して全く無秩序というわけではありません。2009年の大きな上昇は3つの通貨ペアすべてに見られます: EUR/USD、 GBP/USDとUSD/JP。. 通貨チャートは、 2009年の上昇は2008年12月の金融危機の結果であることを示しています。ですので、この上昇は危機を示しています。ここからは、すべての顕著な上昇は危機と言及します。

平均バランスのチャートの危機は、実際の過去の出来事を反映しますが、そうでない場合もあります。つまり、偽ということです。このような危機は、理想的な混沌としたランダムウォークでも見ることができますが、それらは全て偽です。混沌としたランダムウォークでは、危機がそれぞれと同期することは決してありません。バランスの平均グラフでそれと識別される危機の数は、実際のプライスの動きが危機によるものなのか、それともまったく危機ではないのかによって識別されます。

3つ目。異なる通貨を使用して、アルゴリズムのパフォーマンスのバランスを調べたことで、アルゴリズムの働きを徐々に理解し始めたのではないでしょうか。市場が穏やかな時は、プライスの動きは混沌としたランダムウォークに似ていて、平均的に、スプレッドにより損失が出ます。一貫した損失と偽の危機が交互にある期間 - 上向きの動き - 平均的に、スプレッドにより損失が出ます。

アルゴリズムでのトレードの期間は2か月に及ぶこともあるので、損失はとても遅く、無視することもできます。本当の危機に近づくと、価格の動きは無秩序ではなくなります。予測できるようになり、トレンドによって動かされるようになります。つまり、トレッドが生じやすくなります。危機のさらなる発展により、無秩序なランダムウォークとは全く違った、雪崩のような価格の動きが起こることもあります。

アルゴリズムは危機の際に、次のように動作します: トレンドの方向を予想し、そのピークを待ち、トレーリングストップをセットします。危機がピークに達するとトリガーが引かれます。アルゴリズムが予想した、トレンドの方向が間違っていた場合、トレーリングストップはトレンドの始まりに位置し、アルゴリズムはポジションを50/50の確率でひっくり返します。このように、アルゴリズムはすべての本当の危機の3/4の処理に成功します。これが、利益を上げる基本的な方法です。

以上のように、アルゴリズムが利益を出すには、危機のトレンドによる動きが必要です。上記の通貨ペアのうち、EUR/USDの価格の動きがもっともそれに当たります。それに対して、GBP/USDの価格の動きには、トレンドや危機がありません。このような価格の動きの違いはなぜ起こるのでしょうか?基本的な分析から分かることは、トレードにおける戦いはいつも、欧州対アメリカで起こりイギリスとアメリカのとても友好的な関係を築いているということです。アルゴリズムを使いプロットした平均バランスチャートを見れば、この友好関係にどんな価値があるかが分かります。

価格の動向は金融規制によっても決定されます。2008年の危機は、ほぼすべての通貨ペアの平均バランスチャートにおける急騰として反映された、財政投入によって抑制されました。2008年の危機については、当時もニュースで良く知っています。アメリカではそれ以来、2回の量的緩和を行っています。どこで、いつ、どの方向へどれくらいの金額を注入したから、いくつかの理由により、いつものことですが、報告されていません。

EUR/USDの平均バランスは2010年と2010年半ばの危機を示唆しています。これは量的緩和の結果でしょうか?規制当局は市場に通知することなく、静かに介入しようと試みます。価格チャートを見て、危機を裸眼で識別するの簡単ではありません-価格の上下は必ずしも危機を示すわけではありません。価格変動の平均バランスは危機を明らかにするインディケーターの役割をします。しかし、表示された危機の内、どれが本物で、どれが偽物かは、また別の複雑な問題です。

価格動向の安定性に関して、少しお話しをしましょう。例えば、GBD/USDのバランスは22年間に渡り、ゆっくりと下落していますが、EUR/USDはかなり安定した成長を示してます。USD/JPYには安定性がわずかしかありません。価格変動の安定性は、それがアルゴリズムの将来の収益性の保証であることから、とても重要です。テクニカル分析にはアルゴリズムの収益性の保証は何もありません。

これで、どの価格変動を、どのように、アルゴリズムで使用し利益を上げるのかを理解できました。そろそろ利益について見てみる頃合いでしょう。研究用のため、上記のロットサイズは0.1でした。このロットサイズは利益の面からは最適ではありません。最適なロットサイズを計算してみましょう。利益はロットサイズに比例して増加します。ストップアウトのリスクもまた、ロットサイズに比例して増加します。EUR/USDのバランスでは、1991年にUSD200の最大のドローダウンがありました。

ロットサイズが0.1の代わりに25であったら、ドローダウンはUSD 50.000あるいは、 50%に達していました。言い換えると、ロットサイズが25であったら、ストップアウトを避けることは間違いなくできなかったということです。したがって、最適なロットサイズは0.1と25の間にあります。もっと正確に計算することは自由ですが;私は大まかに0.1と25の平均に近い10を使用します。最適なロットサイズは10ということになりました。

アルゴリズムは、ロットサイズ0.1でUSD1400を達成しました(EUR/USDのバランスを参照)。ロットサイズが10であれば、 USD140.000です。入金したのはUSD 100.000でした。その結果、22年間で利益は140%、年平均6%でした。現実的な観点から見ると、これら多くの外貨預金の利息に比べてとても多いわけではありませんがそれ以上です。


アルゴリズムのバリエーション

ここまで見てきたアルゴリズムにはランダムエントリーとトレーリングストップを使ったエグジット機能がありました。ランダムエントリーは、平均バランスを過去のデータの近似化から自由にするために必要でした。これはトレーリングストップの働きの分析と理解の大きな助けになりました。しかし、アルゴリズムは危機とトレンドによる価格変動を扱うには最も良い状態はありませんでした。

上記のように、アルゴリズムはすべての本当の危機の3/4の処理にしか成功しませんでした。トレンドによる価格の変動を最適に処理するアルゴリズムの開発は、テクニカル分析の一般的なタスクですが、ここではそれについては時間を使いません。今回は、ランダムエントリーのアルゴリズムの改善にのみ取り組む予定です。

もっともシンプルなアイデアとして、リバースエントリーのアルゴリズムというのがあります。上記の例から、トレードに対する失敗したエントリーと、トレーリングストップのトリガーがかかる状態では、アルゴリズムはトレンドの方向を50/50でしか予想することができませんでした。予想するのをやめて、直近のトレードの反対の方向にエントリーしましょう。


2. リバースエントリーとトレーリングストップを使ったエグジット機能を持つアルゴリズム

  1. 直近のトレードの反対の方向にエントリーしましょう。まず、買いの方向に、エントリーしましょう。
  2. トレーリングストップをTSと等しく設定します
  3. トレーリングストップのトリガーが引かれるまで待ちます
  4. ポイント1に戻り、トレードを止めます。

アルゴリズムに基づくEAの開発はルーチンタスクです。TSの値の最適化にとらわれることなく、以前に指定した500を使います。(最適化を実行を選ぶ場合は、それでもTS=500を得るでしょう)。以前のデポジットは、USD 100.000で、ロットサイズは0.1、タイムフレームはD1でした。

図. 6. リバースエントリーのアルゴリズムで得られたバランス(最初のエントリー-買い)

図. 6. リバースエントリーのアルゴリズムで得られたバランス(最初のエントリー-買い)

図. 6. リバースエントリーのアルゴリズムで得られたバランス(最初のエントリー-売り)

図. 6. リバースエントリーのアルゴリズムで得られたバランス(最初のエントリー-売り)

図5-6はリバースエントリーのアルゴリズムで得られたバランスを示しています。最初のエントリーの方向が問題になるのは、1つ目の危機までであることが分かります。1つ目の危機以降はバランスは平行になります。

前述の通り、これは”擬似-負け”アルゴリズムで、危機の時に、特に2008年の危機で利益を上げました。ランダムエントリーとリバースエントリーのアルゴリズムで示されるドローダウンはほぼ同じです。しかし、リバースエントリーのアルゴリズムによって発生する利益はUSD9.000で、ランダムエントリーによるものは1400でした。その結果、年平均の収益性は6%ではなく、6*9000/1400=38%になります。年率38%は現実的観点から言ってもまったく悪くありません。

トレーリングストップを使用したエグジット機能のあるアルゴリズムは、異なる方向での改善が可能です。異なるエントリーを使用して、トレンドの方向を予測したり、危機の周期性を利用したり、ファンダメンタル分析に基づいたアルゴリズムを有効/無効にしたりできます。その他にも多くあります。それは特別な愛好家のための楽しみとしてとっておきます。

これらのアルゴリズムのもっとも困難なパートは、EAの開発や最適化の修正ではなく、アルゴリズムの観点から、価格の長期安定した挙動(平均バランスという意味)を得ることです。価格の安定性は、利益という形で返ってきます。価格の挙動をアルゴリズム得るには、これも別の複雑な作業である、アルゴリズムのパラメータの変更が必要です。

最後に、上記のGBP/USDの価格の安定した損失挙動を利用しないわけにはいきません。もっとも簡単なのは、ランダムエントリーとトレーリングストップを使ったエグジット機能があるアルゴリズムのトレードと反対の方向にトレードをするということです。しかし、これはそれほど素晴らしくありません。より良い方法はトレーリングテイクやトレーリングプロフィットの使用です - どちらの名前で呼ぶのが良いのか分かりません。

トレーリングテイクは、本質的には、トレーリングストップに似ていますが、ストップロスのレベルの代わりに、アルゴリズムは常にテイクプロフィットのレベルを追います。最新価格が、TPの値よりもずっと大きくなったなら、テイクプロフィットのレベルも価格に向かって移動します。ストップロスのレベルはセットされないままです。つまり、ストップアウトレベルのままです。

ランダムエントリーのアルゴリズムのリピートを防ぐために、リバースエントリとトレーリングテイクを使ったエグジットの機能を持つアルゴリズムに設定します。


3. リバースエントリーとトレーリングテイクを使ったエグジット機能を持つアルゴリズム

  1. 直近のトレードの反対の方向にエントリーします;
  2. トレーリングテイクをTSと等しく設定します;
  3. トレーリングテイクのトリガーが引かれるまで待ちます;
  4. 1に戻ります。

GBP/USD、 D1、デポジットはUSD 100.000、ロットサイズは勉強用に0.1、 TP=500で行っています。

図. 7. リバースエントリーとトレーリングテイクを使ったエグジット機能を持つアルゴリズムGBPUSD, D1

図. 7. リバースエントリーとトレーリングテイクを使ったエグジット機能を持つアルゴリズムGBPUSD, D1

アルゴリズムは、危機なし、トレンドのない価格変動で動作します。

アルゴリズムの動作メカニズムは次のようになります:トレンドなしの価格変動は、すべてのトレンドを壊し、水平相場に変換します。テイクプロフィットのトリガーががレンジ相場で引かれた場合、すでに次のレンジに入っており、直近のトレードの反対の方向にエントリーします。これはまさに私たちが行うべきことです。

図を見ると、このアルゴリズムによるドローダウンの値は、勉強のための最小のロット0.1で19年間の利益がUSD7.000だったものよりも少し小さいことが分かります。最適なロットを使用して得ることのできる年間収益率はおよそ30%です。

この記事も、この見栄えの良い上昇傾向のあるチャートで終わるという、定番の終わり方をしたいと思います。この記事で選ばれた通貨ペアと過去のデータや、アルゴリズムの最適化に読者の皆さんが失望していないことを願っています。


まとめ

この記事ではリバースエントリーとトレーリングストップを使ったエグジット機能を持つ3つのアルゴリズムを紹介しました。ランダムエントリーとトレーリングストップによるエグジット機能を持つアルゴリズムに対する、EUR/USD、USD/JPYとGBP/USDの価格の挙動についてデモンストレーションしました。

提示された価格変動の安定性に基づき、年率6%の収益性が期待できるリバースエントリーとトレーリングストップを使ったエグジット機能を持つアルゴリズムが提案されています。価格変動の安定性とランダムエントリーのアルゴリズムの動作を理解により、年率30%を達成できる2つのリバースエントリーのアルゴリズムが提案されています。アルゴリズムの動作メカニズムが考察され、関連するEAのコードが提供されています。

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

一瞬でトレードロボットを作る方法 一瞬でトレードロボットを作る方法
金融市場でのトレードには深刻なものを含む多くのリスクがあります。すべてのトレーダーの夢は、絶えずいい状態でいて、恐怖、欲望、あせりなどの人間的な弱さを持たないトレードツールを持つことです。
メタトレーダー5 - 想像以上の製品です! メタトレーダー5 - 想像以上の製品です!
メタトレーダー5クライアントターミナルは1から開発され、もちろん旧バージョンをはるかに超える製品となっています。この新しいトレーディングプラットフォームは、どの金融市場においても無限の取引機会を提供します。また、常により使いやすい機能・利便性を提供するため拡張し続けています。そのため、メタトレーダー5の利便性を全て挙げることは難しいものとなっています。一つの記事において簡潔に全てを説明することを試みましたが、簡潔に収めることができず大変驚きました。
MQL5を初体験 MQL5を初体験
MQL5のトレーディングストラテジーのプログラム言語を学ぶと決めたものの 、それについて何も知らないのですか?私たちはMQL5とMetaTrader 5のターミナルを新しい参加者の視点から見てみた上で、この短い紹介記事を書いています。この記事では、この言語を使ってできることの簡単なイメージだけではなく、MetaTrader 5とターミナルを使う上でのいくつかのヒントも見つかるはずです。
6つのステップでトレーディング自動装置を作りましょう! 6つのステップでトレーディング自動装置を作りましょう!
もしどのようにトレード用クラス群がどのように組まれているかをご存知でなく、「オブジェクト指向プログラミング」という単語に恐怖を感じるようであれば、この記事はあなたにとって最適かもしれません。実際、売買シグナルのためのモジュールの作成のために詳しい内容を知る必要はありません。ただ、いくつかの簡単なルールに従ってください。作業は全てMQL5のウィザードに従って進められ、すぐに使用できる取引用自動システムを作ることができます!