エキスパート: MQL5 Wizard - ザラバフィルター付きの2つの指数平滑移動平均のクロスによるトレードシグナル

 

MQL5 Wizard - ザラバフィルター付きの2つの指数平滑移動平均のクロスによるトレードシグナル:

MQL5 Wizardは、エキスパートアドバイザーを自動生成することができます。詳細はCreating Ready-Made Expert Advisors in MQL5 Wizardを参照してください。

2つの移動平均に基づいたトレードシグナルMQL5 Wizard - Trade Signals Based on Crossover of Two Exponentially Smoothed Moving Averagesトレンドがあるとき、移動平均は効果的です。しかしそれ以外の場合はダマシが発生します。この手法を改善する方法として、時間フィルターを活用する方法があります。(例として、為替のヨーロッパ時間のときに新規ポジションをたてるなど)

時間フィルター付きの2つの指数平滑移動平均 (fast EMA と slow EMA)のクロスに基づいた手法を検証してみましょう。この手法は(MQL5 Wizard で生成する際)"Signals based on crossover of two EMA with intraday time filter"です。

トレードシグナル:

  • 買いポジション: Fast EMA が slow EMA を上抜けして、かつ、ざらば時間の条件が満たされている。
  • 売りポジション: Fast EMA が slow EMA を下抜けして、かつ、ざらば時間の条件が満たされている。

この手法は CSignal2EMA_ITF classに実装されています。

特定の時間帯によるシグナルのフィルターは、 CSignalITF class に実装されています。使用例として、 CSignal2EMA_ITF class ( CSignalITF class object を含む) を扱ってみます。

このトレード手法は、予約注文に基づいており、価格レベルは移動平均の値によって計算され、ATR単位が使われます。

図1. ざらば時間帯フィルター付きの、2つのEMAのクロスによるトレードシグナル

Figure 4. Testing Results of the Expert Advisor with trading signals, based on crossover of two EMA with time filter (BadHoursofDay=16777152)

作者: MetaQuotes Software Corp.

 

良い記事ですが、いくつか説明をお願いします:

**** 0:00から5:59までの間だけポジションをオープンすること。BadHoursOfDay=16777152=1111111111111111000000bの値を設定することで可能です。 その他の取引時間はすべて「悪い」ので、6:00からその日の終わりまで新規ポジションのオープンを禁止する方が良いでしょう。****

詳細が必要です:

- この「16777152」という値をどのように計算/定義するか、他の「始値/終値」または「始値」のみに定義するか。

- 複数のITFに対してどのように決定を下すか:例えば、TOKYO/LONDON/NYの開場時間など。

 
razoff:

ここでいくつかの詳細が必要である:

- この「16777152」という値をどのように計算/定義するのか、他の「オープニング/クロージング」または「オープニング」時間のみに対してどのように定義するのか?

この例では、新規ポジションのオープンに対するフィルターが実装されています。(SL/TPによってクローズされることを想定しています)。

16777152のバイナリ表現です:

この例では、時間によるフィルターを使用し、"悪い "時間は対応するビット=1でマークされています。同じことがBadMinutesOfHourでもできます。

バイナリ値の変換にはcalc.exeを使うことができる:


- 複数のITFをどのように判断するか:TOKYO/LONDON/NYの営業時間

3つの別々のフィルター(TOKYO,LONDON,NY)を使いたい場合は、CSignalITFクラスのインスタンス(我々の場合はm_time_filterが1つだけ)をシグナル・クラスに追加します。

 
戦略テスターの 時間フィルターはどのように最適化しますか?
 
ssn:
ストラテジーテスターの時間フィルターはどのように最適化しますか?

最適な時間フィルターは、Strategy Testerの BadHoursOfDay入力パラメーターの最適化を使って見つけることができます。パラメーターの開始値と終了値を指定すれば、遺伝的最適化アルゴリズムを使って最適な時間帯を見つけてくれます。

2つ目の方法は、損失取引の時間を手動でチェックし、BadHoursOfDayパラメータのビットで「マーク」することです。

実際、これによって戦略を調整し、取引アイデアの「論理的」な理由を考慮することができます。例えば、オシレーターは横ばいの方がうまく機能する。横ばいの理由は、ニュースの不在、セッション/通貨ペアの特性などである。

 
Automated-Trading:

この例では、新規ポジションオープン時のフィルターを実装しています。(SL/TPによってクローズされることが前提)。

16777152のバイナリ表現は次のようになります:

この例では、時間によるフィルターを使用し、"悪い "時間には対応するビット=1が付けられています。同じことがBadMinutesOfHourでもできます。

calc.exeを使ってバイナリ値を変換することができます:


3つの別々のフィルター(TOKYO,LONDON,NY)を使いたい場合は、シグナル・クラスにCSignalITFクラスのインスタンス(我々の場合はm_time_filterが1つだけ)を追加します。

このHowtoをありがとう、しかし、なんという頭痛の種だろう :( MT4でできるように、単純にStartHour/EndHour/StartMinute/EndMinuteのようなもっとユーザーフレンドリーなものを使うことはできないのだろうか?なぜこんな複雑なバイナリーモードを使うのですか?
 
razoff:
このハウツーには感謝しますが、なんという頭痛の種でしょう :( MT4でできるように、単純にStartHour/EndHour/StartMinute/EndMinuteのような、もっとユーザーフレンドリーなものを使うことはできないのでしょうか?なぜこのような複雑なバイナリーモードを使うのですか?

パラメータのバイナリ表示にはいくつかの重要な利点があります。例えば、Strategy Testerでパラメータ空間を探索することができます(0から開始、16777215から終了、ステップ1)。試してみてください。

最適な時間帯が見つかったら、日数を調べることができます。ただし、時間フィルターは低いタイムフレーム(H1以下)に有効であることに注意してください。

より「フレンドリー」な方法が必要な場合は、独自の売買シグナルクラスを作成することができます(MQL5 Wizard: How to Create a Module of Trading Signalsを 参照)。

 
Automated-Trading:

パラメータのバイナリ表現には、いくつかの重要な利点がある。例えば、Strategy Testerでパラメータ空間を探索することができます(0から開始、16777215を終了、ステップ1)。試してみてください。

最適な時間帯を見つけたら、日数を調べることができます。ただし、時間フィルターは低いタイムフレーム(H1以下)に有効であることに注意してください。

もっと "フレンドリー "な方法が必要な場合は、独自の売買シグナルクラスを作成することができます(MQL5 Wizard: How to Create a Module of Trading Signalsを 参照)。

calc.exeやその他の科学的なアプリがバイナリを「変換」できるのであれば、シンプルで簡単な方法でバイナリを取得する方法を見つける必要があります(誰もがアインシュタインではありません:例えば、説明の例では、バイナリを計算するために、なぜ23から始めて0まで計算するのでしょうか?それから、日(土曜日から月曜日?)、分(59から0?)のような他の時間枠のバイナリを取得する方法)
 
Automated-Trading:

最良の時間フィルターは、Strategy TesterのBadHoursOfDay入力パラメーターの最適化を使って見つけることができます。パラメーターの開始値と終了値を指定すれば、遺伝的最適化アルゴリズムを使用しているため、それほど時間を必要とせず、最適な時間帯を見つけることができます。

2つ目の方法は、損失取引の時間を手動でチェックし、BadHoursOfDayパラメータのビットで「マーク」することです。

実際、これによって戦略を調整し、取引アイデアの「論理的」な理由を考慮することができます。例えば、オシレーターは横ばいの方がうまく機能します。横ばいの理由は、ニュースの不在、セッション/通貨ペアの特性などです。

間違っていたら訂正してほしいのですが、仮に悪い分をフィルターにかけたい場合、1152921504606846975のオプションをふるいにかける必要があるということでしょうか?
 
ssn:
もし間違っていたら訂正してほしいのですが、仮に私が悪い分をフィルタリングしたいとすると、1152921504606846975個のオプションをふるいにかける必要があるということでしょうか?
その通りです。
 

こんにちは。

MA、EMA、WMAから選択する平均を作ることは可能でしょうか?