トレンド取引戦略は常にすべての本格的なトレーダーのお気に入りであり、トレンド取引指標の王様は常に移動平均です。 おそらく、今日では他のすべてのテクニカル指標を合わせたよりも多くの資金が移動平均を使用して取引されています。 トレンドを特定する最も明確な方法を提供するため、非常に人気があります。 これらはトレンドの方向を示し、その変動を平滑化または抑制します。
そこで、自動移動平均戦略を開発する方法の指標の例として、移動平均に注目します。
この記事では、Expert Advisor 戦略を設計し、さまざまなタイプの移動平均クロスオーバーを使用して自動取引をセットアップする方法を学ぶことができます。
他のインジケーターベースの戦略と同様に、可能な戦略としての移動平均インジケーターの堅牢性を、絶対的な生の状態でテストする必要があります。 これは、可能な外部オプションと内部パラメータの数を可能な限り制限しようとしていることを意味します。 外部オプションと内部パラメータを制限したら、事前に定義した時間枠内で長さとアプローチの点で最適な移動平均と、シンプルな移動平均クロスオーバー戦略の構築方法に焦点を当てることができます。
これら 2 つの概念に関する背景情報を提供しましょう。
外部選択の制限。
内部パラメータを制限します。
外部オプションの制限
外部オプションの制限とは、インジケーターの堅牢性のテストを開始するときに、変更可能な添加剤を一切使用しないことを意味します。それ:
他のインジケーターと組み合わせないでください。
追加の開始ヒントはありません。
追加のエグジット手法はありません
(ストップロス、テイクプロフィット、損益分岐点、トレーリングストップなし...
< p> は単に停止信号と反対信号の逆です)。追加のフィルタリング手法はありません (時間ごとまたは日ごとのフィルタ、出来高、トレンド、逆トレンドのフィルタはありません)。
追加の注文管理テクニックは必要ありません。
その他の資金管理のヒントはありません。
今のところ、そのままの状態にしておく理由は、インジケーター、エントリーとエグジットのテクニック、フィルター、資金管理の公式の追加や組み合わせがすべて増加するためです。カーブフィッティングとメトリック汚染の可能性。
過剰最適化 (カーブ フィッティング) は、インジケーター パラメーターを特定のデータに調整し、見栄えの良いものを生成するために取引システムを過剰に最適化するプロセスです。 システムのコンポーネントとパラメータが増えるほど、現実世界ではなくバックテストでシステムを「収益性」にする正確な数値を見つけるためにコンピュータが最適化できるパラメータ値も多くなります。
メトリクス汚染とは、外部のメトリクスやテクニックをメトリクスに追加することで、そのメトリクスの本質がどのように曖昧になり、歪められるかを説明するために私が作った用語です。 たとえば、インジケーターベースの戦略にテイクプロフィットまたはトレーリングストップを追加すると、利益を出すために途中で終了せざるを得なくなり、戦略開発者が最初から最後までどのようなパフォーマンスを示し、買いに入って方向を反転して売りに転じたかを知ることができなくなります。 同様に、確認インジケーターとして 2 番目のインジケーターを追加すると、強制的に挿入するのが遅すぎて、戦略開発者が最初から最後までパフォーマンスを確認できなくなる可能性があります。相反,我提倡基于指标的策戦略開発者がインジケーターの本質的な価値を真に理解できるように、戦略は純粋で汚れのない状態に保つ必要があります。 私は戦略に他の指標や手法を追加することに反対しているわけではありません。透明性を確保するために、クリーンなスタートを提案しているだけです。
インジケーター自体が収益性の高いストップ アンド リバース戦略であるかどうかを把握したら、これらの追加機能を追加することで改善できるかどうかを確認できます。
内部パラメータの制限
内部パラメータの制限とは、インジケーターの堅牢性のテストを開始するときに、その中核となるパラメーターに焦点を当てることを意味します。最適化の可能性があり、他のパラメータは共通の値にデフォルト設定されます。
たとえば、移動平均インジケーターの場合、シングル、ダブル、トリプルクロスオーバー システムとして取引するかどうかを決定することに加えて、次のことも行う必要があります。多くの内部パラメータを決定します:
最適な通貨ペア (EURUSD、GBPUSD、USDCHF、AUDUSD など) は何ですか?
最適な時間枠 (M1 から MN1 まで) はどれくらいですか?
最良の価格 (始値、高値、安値、終値) はいくらですか?
最良のアプローチは何ですか (単純、指数関数、線形加重など)?
最適な長さまたは期間 (2 ~ 2000) はどれくらいですか?
これらのパラメータのほとんどは、MT4 ネイティブ移動平均インジケーターに存在し、独自の特定の構文があります。
double iMA (文字列シンボル)、int timeframe、int period、int ma_shift、int ma_method、int MAPrice、int Shift)
p>
私は、iMA ID の後の括弧内の構造を、複数の座席が割り当てられたバスとして考えるのが好きです。 バスの各座席はカンマで区切られており、パラメータと呼ばれます。 iMAインジケーター h
2008年に20日移動平均線が200日移動平均線を下回ったとき、危機の下降トレンドでなんとか1600ポイントを獲得し、2009年にそれを超えたとき、なんとか危機の上昇傾向から回復したことに注目してください。 2700ポイントくらいです。 2009 年 3 月から 2011 年 7 月まで。 このゴールデンクロス戦略は、長期的な外国為替トレンドを捉えるのに非常に強力です。 市場のフラクタルな性質により、より短い時間枠で使用するのに強力な組み合わせになることもあります。
期間が長い移動平均の欠点は、価格の変化やトレンドの反転に対する反応が遅いことです。 新しいトレンドへの参入を遅らせすぎると、良い価格でのエントリーや取引を完全に逃してしまう可能性があります。 期間が長いと、価格が最終的に移動平均を超えるまでの時間が長くなり、その時点までに動きが終了している可能性があります。
移動平均の長さを短くすると、トレンドとその反転に早く入ることができます。 できるだけ多くのポイントを獲得したいので、これは良いことかもしれません。 しかし、気をつけてください。 長さを過度に短くすると、よりぎざぎざのより近い移動平均が生成され、横ばいの市場では必然的に切り刻まれて偽装されます。 たとえば、H1 以下のタイムフレームで 25 期間未満の移動平均を使用するのは非常に難しいと思います。これは、長さが短いと誤ったトレンドや誤った終了が多すぎる可能性があるためです。
長さの問題で最も重要なのは、滑らかさとスピードの適切なバランスを見つけることです。 人々は、長さを滑らかにして途切れ途切れの浮き沈みを避けるのに十分な長さを望みますが、トレンドを早くからすぐに取り入れるのに十分な短さを求めます。 したがって、戦略開発者は流暢さとスピードの適切なバランスを見つけるために長さを最適化しようとします。 これから説明するように、トレーダーもこの問題を解決するためにさまざまな方法を試みます。
最適化のヒント #1: インジケーターベースの戦略を最適化するには、長さを外部パラメーターにすることをお勧めします。
例:
Double ma_current = iMA (NULL,0,200,0,0) ,0,0);
次を入力します:
// 外部変数にArea
external int MALength = 200;
// start() 関数の後に配置
double ma_current = iMA (NULL,0,MALength,0,0,0,0);
最適化のヒント #2: 通常は、信頼できる知識から始める長さを推測し、変数の範囲に応じて 5、10、または 25 のステップで調整します。 たとえば、H1 タイムフレームの移動平均をテストしていて、25 ~ 600 の範囲をテストしたい場合は、25 ステップでテストします。 最適な長さは、隣接するすべてのパラメーターの値を取得する必要があることに注意してください。 たとえば、最適な長さが 200 であることがわかった場合、前 (150、175) と後 (225、250) のパラメーター値も有益であるはずです。
メソッド: インジケーター パラメーターの女王 (単純と指数の間の実際の選択)。
これまで見てきたように、滑らかさとスピードの適切なバランスを見つけるには、長さを変えることが最も重要な方法です。改变方法也可以帮助解决这个问题。
移動平均インジケーターには、単純、指数関数、平滑化、加重という 4 つの組み込みメソッドがあります。
定数値名 計算の説明
MODE_SMA 0 単純移動平均は、計算中に各価格に等しい重みを与えます。
MODE_EMA 1 指数移動平均 ラグを減らすために、最近の価格にさらに重みが与えられます。
MODE_SMMA 2 SMA に似た平滑化移動平均。ただし、最も古い値を減算する代わりに、前の平滑化平均が減算されます。
MODE_LWMA 3 線形加重移動平均 最近のデータをより重視し、過去のデータをより重視しないように設計されています。
これらのパターンの背後にある数学については、ウェブ上の他の場所で説明されているため、詳しくは説明しません。
実際には、4 つのモード間に 2 つの連携があり、実際の選択肢の数は 2 つに減ります。
< br/>
スムーズ アライアンス: シンプル + スムーズ
SMA と SMMA はどちらも滑らかさを重視します。 同じ長さを使用した場合、SMMA は SMA よりも滑らかであることがわかります。
たとえば、GBPUSD H1 チャートの 50 SMMA と 50 SMA を 7 つのパラメーターとして示します。 各パラメータには、カスタマイズ (またはバス メタファーを維持するためにカスタマイズ) できるデフォルト値があります。 各パラメーターの機能、それぞれのデフォルト値、カスタマイズ方法、実際にバスを駆動するパラメーターを知っておくと役立ちます。
次の表では、移動平均の各パラメータについて説明します。
まあ / p>
パラメータの説明
シンボル取引シンボル (EURUSD など)。 NULL または Symbol() は、インジケーターが配置されるチャートの通貨ペアを示します。
TimeFrame 移動平均が適用されるチャートの時間枠。通常は 0 に設定され、EA が関連付けられているチャート シンボルを示します。
MAPeriod 移動平均のルックバック期間。 これは最も重要な変数です。
MAShift バー単位の移動平均の前方シフト。通常は 0 に設定されます。
MAMethod 移動平均の計算方法。単純、指数、平滑、線形の重み付けを選択できます。 2 番目に重要な変数。
MAPrice 移動平均を計算するときに使用される価格配列。終値、始値、最高値、最低値、またはある種の平均線が可能です。 通常は、デフォルト値の 0 またはオフを使用します。
Shift は、計算されたバーの後方シフトを返します。 値 0 は現在のバーのインジケーター値を返し、値 3 は 3 バー前のインジケーター値を返します。 後で説明するように、これは 3 番目に重要な変数です。
MA パラメーター (および 20 個すべてのネイティブ インジケーターのパラメーター) への便利なクイック リファレンスは、次の場所にあります: https://docs.mql4.com/indicators/iMA
考えられるパラメータをすべて確認したので、提案をしたいと思います。 そのうちの 2 つ (長さとモード) のみを最適化することを考えています。 バーの終わりの交差点に入る場合は、時間枠を最適化する必要がある場合もあります。 残りはデフォルトのままにしておきます。
区切りパラメータ: 通貨ペア、時間枠、価格。
通貨ペア。
移動平均などのトレンド指標を使用して取引する場合、2 つの理由から最初に EURUSD をテストするのが最善です。 まず、ほとんどの主要通貨はすべて米ドルとペアになっているため、相関性が高いため、スプレッドを最小限に抑え、迅速な実行を実現するには、最も流動性の高い通貨ペアを選択するのが最善です。 第二に、EURUSD は最も取引されている通貨ペアであるため、ほとんどの指標は人気の自己実現的予言に大きく依存しているため、EURUSD が成功の指標となる可能性が最も高くなります。 したがって、成功の可能性を最大限に高めるために、最も人気のある通貨ペアで最も人気のあるインジケーターをテストする必要があります。 移動平均が最も人気のある指標であり、EURUSD が最も人気のある通貨ペアであることを考えると、この組み合わせが最も論理的です。 EURUSD を完了したら、次のステップは GBPUSD、AUDUSD、USDCHF をテストして、これらの関連通貨ペアで戦略が機能するかどうかを確認することです。
大体时间
タイムフレームが移動平均の形成自体にどのような影響を与えるかについて、よく誤解されています。 初心者の戦略開発者の多くは、ある時間枠で移動平均クロスオーバーを開発して最適化し、別の時間枠でそれを開発すれば、それは新しい戦略になると考えます。 しかし、本当にそうなのでしょうか? むしろ、長さの方が重要であり、時間枠が提供する一見した利点の多くに取って代わることができると私は考えています。 さまざまな時間範囲を考慮して、時間範囲の差の倍数で長さを増減するだけです。 たとえば、100期間の移動平均がH1の時間枠で最もよく機能することがわかった場合、それはM30の時間枠での200期間の移動平均とほぼ同じになるはずです(M30はH1の半分であるため、100X2= 200) )、または H4 タイムフレームの 25 期間移動平均 (H4 は H1 の 4 倍であるため、100 / 4 = 25)。
ただし、クロスの瞬間ではなく、クロスを形成したバーの終わりでエントリーを待つ戦略が必要な場合は、その場合、時間枠が重要になります。 次に、バーが閉じるまでエントリーを遅らせます。これにより、バーの時間枠がより適切になります。 終値での取引はどのように時間枠の関連性を高めるのでしょうか? たとえば、H1 タイムフレームに基づく 100 期間 MA クロスオーバー戦略と、M30 タイムフレームに基づく 200 期間 MA クロスオーバー戦略を考えてみましょう。 どちらも列の最後に入る/出るように設定されています。 上で述べたように、2 つの戦略はそれぞれのバー内のどこかで同じ点で交差します。 ただし、時間のエントリー/エグジットは、さまざまな時間枠に合わせて調整する必要があります。 M30 チャートで 200 期間移動平均線のクロスオーバーを待つ戦略を設定した場合、この戦略は 100-H1 チャートと同じ交差点でエントリー/エグジットしますが、異なる点は、次の時点でエントリー/エグジットすることです。 over/ 後の H1 バーではなく、移動平均を下回る M30 バーの終値。 したがって、M30 のタイムフレームでは、H1 バーに基づいて構築された同じ戦略よりも 30 分早くクロスオーバーの機会が得られます。 戦略を素早く開始したり終了したりしたい場合は、ノイズを避けるために追加のラグタイムが必要な場合もあります。 場合によっては、M15 または M30 バーの速い代わりに H4 または D1 バーの遅れが必要な場合や、その逆の場合もあります。 なぜ閉店を待つのでしょうか? まず、取引終了まで待った方が戦略のバックテストが容易になります。 第二に、理由は何であれ、より良い結果が得られる場合があります。
したがって、終値バーを使用してクロスオーバー戦略を構築する場合は、最初のタイムフレームとして上半期のタイムフレームでテストし、その後、次のタイムフレームをテストするとよいでしょう ( M15 および M30) を使用して、速度がより有益であるかどうかを確認し、上記の時間枠 (H4 および D1) をテストして、遅延または遅さがより有益であるかどうかを確認します。
時間枠が戦略にとって重要である場合は、時間枠を外部パラメータにして最適化することをお勧めします。
価格
価格はデフォルトの 0 (終値) のままにする必要があります。 価格を高値、低値、またはオープン値に変更する正当な理由は何か考えます。 実際、他の価格には正当な理由がある可能性がありますが、移動平均戦略が終値で機能しない場合は、他の価格でも機能しません。
長さ: インジケーター パラメーターの王様
長さは、移動平均の最も重要な要素です。 これは、最適化する必要がある最初の変数です。
二重移動平均を使用している場合、トレンドを実際に定義するのは遅い移動平均です。 通常、高速移動平均の長さは低速移動平均の長さの 1/4 ~ 1/10 の一部であるため、それが正しいかどうかは大きな問題ではありません。
一般に、長さが長いほど、価格変動に対する反応はより滑らかになり、より遅くなります。 それが、大規模および中規模のトレンドを見つけるために必要なことです。 たとえば、200 日 SMA (単純移動平均) と、より速い 20 日 SMA または 50 日 SMA のクロスオーバーは、世界中のトレーダーがより大きなトレンドを特定するために使用する有名な「ゴールデン クロス」の基礎となります。
以下は、200 日 SMA の上/下の AUDUSD の 20 日 SMA クロスです:
ご覧のとおり、SMMA (50) は、対応する SMA (50) よりも価格の変化にゆっくりと反応します。 これは、SMMA の方が SMA よりも計算がスムーズであるためだと言われています。
ただし、SMMA の長さを半分にすると、EMA に非常によく似ており、視覚的な事実により区別が薄れます。
こちらは GBPUSD H1 チャートの 50 EMA と 25 SMMA です:
ご覧のとおり、50 EMA と半分の SMMA の間にはほとんど何もありません ( 25) 違い。 線が完全に重なっています。
したがって、EMA と SMMA の実際の違いが長さである場合、滑らかさを実現するための真の代用として SMA を使用する方が良いでしょう。 シンプルを使用する利点は、それが人気があり、スムーズであることを目的としていることです。つまり、(十分に長い長さを指定すると) より信頼性の高いトレンド シグナルを提供することを目的としています。
ただし、平滑化特性により SMA が最新のデータ ポイントより遅れるという事実を好まず、より新しいデータを提供することを好む人もいます。ポイント 加重移動平均や指数移動平均などの重み。
スピード アライアンス: 指数 + 線形加重
指数加重と線形加重の両方の移動を意味し、克服するために古い価格にあまり意味を割り当てません価格の遅れ。 こうすることで、すべての企業が価格の変化により迅速に対応できるようになります。 しかし、実際には、さまざまな方法で最近の価格により大きな意味を与えながらも、一般的には同じ道をたどることがわかります。
たとえば、これは GBPUSD H1 チャートの 50 EMA と 50 LWMA です。:
完全に一致するわけではありませんが、ほとんどのトレンド反転は同じ場所で発生します。 50期間EMAのクロスオーバーと50期間LMMAのクロスオーバーの間に、完全に異なる戦略は見つかりません。
したがって、2 つの間に大きな違いがない場合は、より人気のあるインデックスを使用することをお勧めします。
単純なインデックスよりも指数インデックスを使用する利点は、単純なインデックスよりも早く市場価格に適応することです。 ラグが軽減され、より早くトレンド反転に入ることができます。 欠点は、敏感すぎる可能性があり、価格変動を滑らかにするという移動平均の本来の目的が無効になることです。 EMA は市場のボラティリティの影響を受けやすい傾向があります。
本当の選択: SMA と EMA のどちらか
方法は事前にわかっていますが、実際の選択は単純な方法と指数関数のどちらかになります。方法は非常に簡単ですが、どちらが良いかを事前に知るのは困難です。 流動性の点で Simple に惹かれるかもしれませんし、スピードの点で Exponential に惹かれるかもしれませんが、最終的には、両者の間で公平な裁判が行われるまで、どちらがゲームの真の女王になるか決してわかりません。
最適化のヒント #1: インジケーターベースの戦略の外部パラメーターにしてメソッドを最適化することをお勧めします。
例:
Double ma_current = iMA(NULL,0,200,0, 0 ,0,0);
次のように入力します。
// を外部に入力します。変数 Zone
external int MATime = 0;
external int MALength = 200;
external int MAMethod = 0; // 0 = 移動平均; 1 =移動平均; 2 = 標準移動平均; 4= SWMA
// start() 関数に配置
double ma_current = iMA (NULL ,MATime,MALength,0,MAMethod,0,0);
最適化のヒント #2: SMA と EMA の間でのみ最適化します。
SMMA は SMA の冗長バージョンであり、LWMA は EMA の冗長バージョンであることを示したので、実際にはどちらも最適化する必要はありません。 SMA と EMA の間、0 と 1 の間では、1 ずつ段階的に最適化する方が賢明で簡単です。
クロスオーバー: 2 つの移動平均クロスオーバーから始める
トレーダーが移動平均クロスオーバー システムを構築しようとすると、次のようになります。移動平均クロスオーバーを 1 つ、2 つ、または 3 つ行うべきかどうかをよく自問してください。 違いについては、移動平均に関する私の記事を参照してください。
答えは簡単です。2 つの移動平均のクロスオーバーが最適です。
単一の移動平均クロスオーバーが最も簡単であるという利点があると主張する人もいます。 価格が移動平均を上または下で終了すると、ロングまたはショートになります。 しかし、二重移動平均は単純なものにすることもできます。つまり、速い移動平均が遅い移動平均を横切るか下回るときにロングまたはショートすることになります。 シングル MA にはクロスオーバーが速いという利点がありますが、高速 MA が十分に短い場合はダブル MA もクロスオーバーを高速化できます。 実際、デュアル移動平均クロスオーバー システムを構築する場合、高速 MA を 1 に設定することで、潜在的な戦略として単一移動平均クロスオーバーをテストできます。 Fast MA を 1 に設定すると、基本的に Fast MA が終値バーの関数に減少し、単一の移動平均クロスオーバー システムのように動作します。
3 つの移動平均には問題が生じる可能性があります。 エントリーメカニズムは基本的に二倍移動平均と同じで、速い移動平均が遅い移動平均を横切ったときに市場にエントリーします。 違いは出口メカニズムであり、より高速なアプローチが必要であり、3 番目に速い MA が遅い MA を通過または下回ったときに終了します。 しかし、3番目のMAの導入には指標汚染のリスクがあります。 より速いMAがより遅いMAを超える/下回るときに終了すると、テイクプロフィットやトレーリングストップと同じように移動平均の潜在的な寿命が短くなります。 この 3 番目の MA を追加すると、MA 戦略が途中で終了することになり、戦略開発者は開始から終了、終了、および反転シグナルまでのパフォーマンスを確認できなくなります。
それでは、ダブルクロスオーバーから始めます。
ストップおよびリバース ダブル MA クロスオーバーのエントリー/エグジット条件の形成
最初から一部の外部オプションと内部パラメーターを制限します。遅い MA 長と SMA と EMA の 2 つの方法のみを最適化することを目的としたデュアル移動平均戦略の使用を開始する時期が来ています。
したがって、最初の考えは 20 ~ 200 期間の MACross エントリーを書くことでしたが、テストする代わりに、より高いパーで取引するつもりはありません。毎日の時間枠では、H4 時間枠でテストします。 市場のフラクタルな性質を考慮すると、この短い時間枠でも同様にうまく機能するはずであり、毎日の時間枠よりも大きな取引サンプルサイズが得られるはずです。 リバースエントリーをエグジットに変換して、シンプルなストップアンドリバースシステムにします。これは、エントリーメソッドの強度をテストする最良の方法です。 優れたエントリーメソッドは、裏返して反対側のエントリーがエグジットになるようにすれば、エグジットメソッドとしても適切に機能するはずです。後で、移動平均の時間枠、長さ、方法を変更し、この変更によってより良い可能性がもたらされるかどうかを確認します。
エントリーの条件:
短い SMA ラインが長い SMA の上を横切る場合、イン(ロング)を買います。
弱気の SMA ラインが強気の SMA を下回った場合は売ります (ショートします)。
一度にオープンできる取引注文は 1 つだけです。
終了条件:
短い SMA ラインが長い SMA ラインの下を横切る場合、クローズ (買い)
ショート SMA がロング SMA を上回った場合はクローズ (ショート)
移動平均クロスオーバーをコーディングする標準的な方法は、2 セットの変数と条件を指定することです。
変数定義の例:
// 外部変数セクション内
external int MATime = 0;
external int MAFastLen = 20;
external int MASlowLen = 200;
external int MAMethod = 0;< /p>
// 外部変数のすぐ下のグローバル変数セクションに配置されます。
Double
FastMAC current, < /p>
FastMAPrevious、
Slow MAC current、
Slow MAPrevious;
// 配置済みStart() 関数内、エントリ条件の前
FastMACurrent = iMA (NULL, MATime, MAFastLen, 0, MAMethod, 0, 0);
FastMAPrevious = iMA (NULL , MATime, MAFastLen, 0, MAMethod, 0, 1);
SlowMACurrent = iMA (NULL, MATime, MASlowLen, 0, MAMethod, 0, 0);
SlowMAPrevious = iMA ( NULL, MATime, MASlowLen, 0, MAMethod, 0, 1);
注: iMA (移動平均) パラメーターの便利なリファレンスについては、次を参照してください。 https://docs.mql4.com/indicators/iMA
FastMACurrent と FastMAPrevious の違いは、各変数に割り当てる名前ではありません (これらの名前はどの移動平均を扱っているかを覚えておくために選択されたものです); これは iMA の最後のパラメータです。 最後のパラメータは「シフト」と呼ばれ、0 は現在のバー、1 は前のバー、2 は現在のバーの後ろの 2 つのバーなどになります。
私のセットアップでは、エントリ基準として次の変数を参照します。
ブール値
買いを開く = False、
売りを開く = False、
買いを閉じる = False、
売りを閉じる = false;
p>
if(FastMACurrent > SlowMACurrent && FastMAPrevious < SlowMAPrevious)
{
open buy=true ; //買い
if (反対のクローズ)
クローズ sell=true;
}
< br/>
if(FastMACurrent < SlowMACurrent && FastMAPrevious > SlowMAPrevious)
{
open sale=true; // 売る p>
if (終値の反対)
close buy=true;
}
買いシグナルの場合は、次のようになります。現在の足の速い移動平均が現在の足の遅い移動平均より大きくなければならないことを示す必要があるということです。 現在のバーの状況は理にかなっています。
では、なぜ、前の足の速い移動平均が前の足の遅い移動平均よりも小さくなければならないという 2 番目の条件も指摘する必要があるのでしょうか。バー?
2 番目の条件を指定せず、現在の MA 関係のみを買いシグナルとして使用する場合、たとえば (FastMACurrent > SlowMACurrent) の場合、現在の高速移動平均が依然として低速移動平均を上回っているため、新しい注文を行う必要があるとコードがプログラムに指示するため、各ストップロスまたはテイクプロフィットの後にポジションが継続的に購入されます。 ただし、連続して入力したくありません。 クロスオーバーの瞬間に立ち会いたい。 MT4 にはネイティブのクロスオーバー機能がないため、回避策を作成する必要がありました。高速 MA が以前に低速 MA を下回っていない限り、現在高速 MA が低速 MA を上回っている場合はエントリーできないという 2 番目の条件を作成する必要がありました。遅いMA。
TS8 との逸話的な比較
Tradestation の EasyLanguage では、「Crosses Above/Over」または「Cross Below/」と呼ばれる言語を使用します。この追加の手順を保存するには、「Under」と入力します。「AverageFC (C,20) が AverageFC (C,200) を超えている場合は購入」と言うだけです。 しかし、MT4ではそう単純ではありません。 自分で作成しない限り、「クロスオーバー」機能の便利さは得られません。 代わりに、現在の足の MA (20) > MA (200)、および過去の足の MA (20) < MA (200) の場合に購入するという 2 つの条件でクロスオーバー プロセスを説明する必要があります。
あとはセットアップ パラメータを EA に接続するだけです。EA でこれを行う方法をご覧ください:
ForexRazor_MACrossoverEA_InstrumentX_v1.0
EA をダウンロードし、ボンネットを開けてどのように見えるかを確認してください。
新しく作成した 20-200 SMA クロスを EURUSD で H4 タイムフレームで、0.1 ミニロットを使用して 10K デモ口座でテストする予定です。 これは MA 交差であるため、通常、最高の信号は上位フレームの長い長さから生成されます。 より短いタイムフレームでより短い長さを使用すると、誤った信号が多すぎる可能性があります。 バックテストには 3 つの期間を選択します。
FXPro を使用して、ユーロが正式に採用される前の 1971 年から 1999 年 1 月までの 28 年間の EURUSD をバックテストします。 ユーロが存在しない場合、FXPro は 1999 年 1 月より前の EURUSD データをどのように取得しますか? 方法は 2 つあります。FXPro がユーロの最も強力な代用通貨であるドイツマルクからデータを取得する方法、または 1999 年 1 月からユーロを構成する 11 の伝統的な通貨を組み合わせた過去のバスケットを使用する方法です。 次に、1999 年 1 月から 2009 年 1 月までの 10 年間の EURUSD をバックテストします。これにより、この戦略が正式に開始された最初の 10 年間の浮き沈みの間にどのように機能したかがわかるはずです。 最後に、2009 年から 2012 年までの過去 3 年間をバックテストして、ソブリン債務危機に見舞われた直近の期間にこの戦略がどのように機能したかを確認します。
過去 #1: 1971 年 1 月から 1999 年 1 月までの 28 年間 (詳細なレポートについては画像をクリック):
EA は 49 トランザクション (16 勝利) と 28 トランザクションにあります。年 (年率 2.8% のリターン) で 7690 ドル/7690 ポイント/76% のリターンが得られ、間違った開始点から開始した場合は、3786 ドル/3780 ポイント/37% のリトレースメント時間の損失を被ることになります。 落ち込みを許容できるのであれば、これらの結果は悪くありません。28 年以上、ほとんどの EA のパフォーマンスが悪かったのに、この EA はトップに留まり、結果をもたらしたからです。
それでは、ユーロの最初の 10 年間に何が起こったのか見てみましょう。
バックテスト #2: 1999 年 1 月から 2009 年 1 月までの 10 年間 (画像をクリックすると詳細なレポートが表示されます):
その後 10 年間、EA は依然として先頭を走り続けました。 ここで、10 年間のリターンが 4996 ドル/4996 ポイント/49% (年率 4.9%)、最大ドローダウンが 2088 ドル/2088 ポイント/20% であることから、これらの数字は過去 28 年間よりも優れていることを示唆していますが、そのプロフィットファクターはは 1.8 から 1.48 に低下しており、ドローダウン期間がさらに長くなることを示唆しています。 2 つの株価チャートを比較すると、これが当てはまります。1 つ目は着実な上昇のように見えますが、2 つ目はギザギザの上昇のように見えます。
それでは、過去 3 年間のパフォーマンスを見てみましょう。
バックテスト #3: 2009 年 1 月から 2012 年 1 月までの 3 年間 (詳細な結果については画像をクリック):
< p>例: ご覧のとおり、 EA は有望に見えます。 3年間で2152ドル/2152ピップス/21%(年間7%)、41回のトレード(11勝)で利益を上げましたが、損失は1978ドル/1978ピップス/19%でした。 全体的な統計は過去 38 年間とほぼ同じであり、パフォーマンスが毎年 2 倍になるのを見るのが好きです。 戦略のバックテストが長くなるほど、戦略が退化する可能性が高くなることに注意してください。 EA のバックテストを 3 年以上実施している EA 戦略開発者/ベンダーはほとんどなく、10 年以上のバックテストを実施しているところはさらに少数です。 彼らは戦略曲線を最新のデータ期間に適合させており、それ以前の期間ではまったく機能しなかったため、これを表示しません。 上記で作成した EA は、最適化やカーブ フィッティングを行っていない基本的なシステムであり、41 年間にわたって大きなトレンドを捉える上で非常に信頼性が高いです。。
結論
これまでに、ほとんどの外部オプションを定義し、非常に原始的で単純なストップロスと逆 20-200 デュアル移動平均クロスオーバーを作成するためのすべての内部パラメーターを定義しました。 これまで見てきたように、過去 41 年間の EURUSD H4 サポートは非常にうまく機能し、資金管理なしで 10,000 のアカウントが $15,000/15,000 pips 以上を生成しました。 綺麗な状態だからこそ良く出来ていると思います。 インジケーターベースの戦略を追加のインジケーター、エントリー/イグジットテクニック、フィルター、注文、管理テクニックで装飾しなければ、カーブフィッティングやインジケーターの汚染の可能性が少なく、正常に機能することがわかります。 システムの部品やパラメータが少ないほど、システムが履歴データにカーブフィットできる可能性は低くなります。 さらに、インジケーターとテクニックの複数の組み合わせを重ねると、インジケーターベースの戦略の本質がわかりにくくなり、歪められる可能性があるため、少なくとも最初はこの調整プロセスを保持しておくことは、インジケーターベースの戦略が裸の状態でどのように機能するかを理解するのに役立ちます。
また、すべての内部パラメータの中で長さが最も重要で、メソッド (ここでの実際の選択は単純で指数関数的です) が 2 番目だと思います。 20-200 デュアル SMA クロスオーバーを選択したのは、長期トレンドの方向を決定するために使用される移動平均クロスオーバーの最も人気のあるバージョンの 1 つであるためです。 ほとんどの人はそれを日足の時間枠で使用しますが、市場のフラクタルな性質と、より大きな取引のサンプルサイズが確認できるため、H4 時間枠でも使用できると思います。 この 2 つの単純な移動平均をチャート上にプロットするたびに、通常、どのくらいの速さでゆっくりと交差することでより大きなトレンドが発生するか想像できるため、これが 41 年間にわたって成功したことにはまったく驚きません。
次の記事では、長さと方法の最適化を続けて、二重移動平均クロスオーバーが 200 と異なる方法で通過できるかどうかを確認できるかどうかを確認します。長さを強化するか、単純な方法(指数関数など)とは異なります。 そうすることで、過剰な最適化とカーブフィッティングという二重の危険を回避するよう努めます。