私たちのファンページに参加してください
- ビュー:
- 1984
- 評価:
- パブリッシュ済み:
- 2015.10.29 11:21
- アップデート済み:
- 2016.11.22 07:34
-
このコードに基づいたロボットまたはインジケーターが必要なら、フリーランスでご注文ください フリーランスに移動
MQL5 Wizardは、エキスパートアドバイザーを自動生成することができます。詳細はCreating Ready-Made Expert Advisors in MQL5 Wizardを参照してください。
3つの移動平均線に基づいたトレンド戦略を考えてみます。"Signals based on three EMA"と呼ばれる戦略です。トレンドを決定するためには、3つの指数平滑移動平均線を使います。: FastEMA と MediumEMA と SlowEMA.
トレードシグナル:
- 買いシグナル: FastEMA>MediumEMA>SlowEMA (上昇トレンド).
- 売りシグナル: FastEMA<MediumEMA<SlowEMA (下降トレンド).
この戦略は、 CSignal3EMA クラスに実装されています。 ( signal3ema.mqh を下記フォルダーに入れておく必要があります。 Terminal\MQL5\Include\Expert\Signal\Signal3EMA.mqh).
図1. 3つの移動平均線に基づいたトレードシグナル
トレードシグナル
このトレード手法は CSignal3EMA クラスに実装されており、3つの移動平均(Fast,Medium,Slow)の値へのアクセスが単純化された方法です。:
double FastEMA(int ind) // returns the value of Fast EMA of the bar double MediumEMA(int ind) // returns the value of Medium EMA of the bar double SlowEMA(int ind) // returns the value of Slow EMA of the bar
1. 買いポジション
上昇トレンドは、下記条件で定義されます。: FastEMA>MediumEMA>SlowEMA:
- FastEMA(1)>MediumEMA(1): Fast EMA が Medium EMA より高い(直近の確定した足において);
- MediumEMA(2)>SlowEMA(1): Medium EMA が Slow EMA (直近の確定した足において);
//+------------------------------------------------------------------+ //| Checks conditions to open long position (buy) | //+------------------------------------------------------------------+ bool CSignal3EMA::CheckOpenLong(double& price,double& sl,double& tp,datetime& expiration) { double medium=MediumEMA(1); //--- price=0.0; sl =m_symbol.Ask()-m_stop_loss*m_adjusted_point; tp =m_symbol.Ask()+m_take_profit*m_adjusted_point; //--- checking for upward trend (on the last completed bar): FastEMA(1)>MediumEMA(1)>SlowEMA(1) return(FastEMA(1)>medium && medium>SlowEMA(1)); }
2. 買いの決済
下降トレンドは、下記条件で定義されます。: FastEMA<MediumEMA<SlowEMA:
- FastEMA(1)<MediumEMA(1): Fast EMA が Medium EMA よりも低い(直近の確定した足において);
- MediumEMA(2)<SlowEMA(1): Medium EMA が Slow EMA よりも低い(直近の確定した足において);
//+------------------------------------------------------------------+ //| Checks conditions to close long position | //+------------------------------------------------------------------+ bool CSignal3EMA::CheckCloseLong(double& price) { double medium=MediumEMA(1); //--- price=0.0; //--- checking for downward trend (on the last completed bar): FastEMA(1)<MediumEMA(1)<SlowEMA(1) return(FastEMA(1)<medium && medium<SlowEMA(1)); }
3. 売りポジション
//+------------------------------------------------------------------+ //| Checks conditions to open short position (sell) | //+------------------------------------------------------------------+ bool CSignal3EMA::CheckOpenShort(double& price,double& sl,double& tp,datetime& expiration) { double medium=MediumEMA(1); //--- price=0.0; sl =m_symbol.Bid()+m_stop_loss*m_adjusted_point; tp =m_symbol.Bid()-m_take_profit*m_adjusted_point; //--- checking for downward trend (on the last completed bar): FastEMA(1)<MediumEMA(1)<SlowEMA(1) return(FastEMA(1)<medium && medium<SlowEMA(1)); }
4. 売りポジションの決済
//+------------------------------------------------------------------+ //| Checks conditions to close short position | //+------------------------------------------------------------------+ bool CSignal3EMA::CheckCloseShort(double& price) { double medium=MediumEMA(1); //--- price=0.0; //--- checking for upward trend (on the last completed bar): FastEMA(1)>MediumEMA(1)>SlowEMA(1) return(FastEMA(1)>medium && medium>SlowEMA(1)); }
売りポジションの決済を改善するために、上昇トレンドまで待つ必要はありません。相場が横向きになった段階で売りポジションを決済しても構いません。横向きの定義は: FastEMA>MediumEMA<SlowEMA です。
MQL5 WizardでEAを生成する
このロジックに基づいたトレードロボットを生成するには、MQL5 Wizardの"Creating Ready-Made Expert Advisors" のシグナルプロパティ"Signals based on three EMAを選んでください。 :
図2. MQL5 Wizardの "Signals based on three EMA" を選択してください。
次に、trailing stop とmoney and risk management の有無を選択します。エキスパートアドバイザーのコードは自動的に生成されるので、コンパイルすれば、MetaTrader 5 client terminalの Strategy Testerでテスト可能です。
テスト結果
過去データでエキスパートアドバイザーをテストしてみましょう。 (EURUSD H1, テスト期間: 1.1.2010-05.01.2011, FastPeriod=5, MediumPeriod=12, SlowPeriod=24, StopLoss=400, TakeProfit=900).
エキスパートアドバイザーの生成において、今回は固定ロット(Trading Fixed Lot, 0.1), トレーリングストップ(Trailing not used)はなしを選択しました。
図3. 3つのEMAに基づいたエキスパートアドバイザーのバックテスト結果
Attachments: Signal3EMA.mqh と CSignal3EMA クラスが、Terminal_data_folder\MQL5\Include\Expert\Signal になければなりません。
MQL5 Wizard を使って生成したエキスパートアドバイザーのコードはthreeema.mq5です。
MetaQuotes Ltdによってロシア語から翻訳されました。
元のコード: https://www.mql5.com/ru/code/250

このコードは、ATC-2010用にValery Mazurenko氏が作ったエキスパートアドバイザーのテンプレートです。

ティックチャート例

ADXを確認した上で、移動平均と価格のクロスによるトレードロジックを検証することができます。この戦略のエキスパートのコードは、MQL5ウィザードで自動生成させることができます。

2つのEMAのクロスによるトレードシグナルを検証できます。この戦略のエキスパートのコードは、MQL5ウィザードで自動生成させることができます。