私たちのファンページに参加してください
- ビュー:
- 2467
- 評価:
- パブリッシュ済み:
- 2015.10.29 12:41
- アップデート済み:
- 2021.11.01 10:36
-
このコードに基づいたロボットまたはインジケーターが必要なら、フリーランスでご注文ください フリーランスに移動
MQL5 Wizardを使えば、エキスパートアドバイザーを自動生成することができます。 (MQL5 Wizard: Creating Expert Advisors without Programmingを参照).
CSignalCandles class に、ロウソク足の転換によるシグナルが入っています。(MQL5ウィザードでEAを自動生成する際 ) "Signals based on reversal candlestick patterns" です。
複数の足の計算を用いて転換パターンを特定するという考え方です。転換パターンは、 日本のロウソク足分析における"Hammer" や "Hanging Man" パターンと似ています。しかし、今回は単一の足の代わりに複数の足を使い、転換を確認するのに必要なロウソク足の実体は必要ありません。
パラメータの入力:
- Range - 計算に使う足の最大数
- Minimum - 足の最小サイズ(基準点).
- ShadowBig and ShadowSmall - ヒゲ (足単位).
- Limit, StopLoss and TakeProfit - エントリー価格、 SL や TP レベル。この値は足の終値によって決定されます。(足単位).
- Expiration - 予約注文の際のオーダーの有効期限(足単位) (Limit!=0.0).
転換足は下記によって定義されます。
直近の確定した足から、合成足のパラメーターをRangeパラメーターで決められた期間、計算します。転換足の大きさがMinimumパラメーターの値よりも大きければ、その影の分析により転換の条件を確認します。
ベアパワーは、足の上ヒゲのサイズによって決まります。ブルパワーは下ヒゲのサアイズによって決まります。
- ベアトレンドの転換(ブルの始まり)を確認するには、下記が必要です。: 下ヒゲのサイズがShadowBigパラメーターの値よりも大きい。上ヒゲ(ベアパワー)のサイズは、ShadowSmallパラメーターの値よりも小さい。
- ブルトレンド(ベアの始まり)を確認するには、下記が必要です。: 上ヒゲ(ベアパワー)のサイズがShadowBigパラメーターの値よりも大きい。下ヒゲ(ブルパワー)のサイズがShadowSmallパラメーターの値よりも小さい。
転換の手法に加えて、Limitパラメーターの値を負にすることにより、ブレイクダウンの手法を使うことも可能です。 (MQL5 Wizard - Trade Signals Based on Crossover of Two EMA with intraday time filterを参照).
Limit によって、3つの異なるエントリー方法を使うことができます。:
- Limit>0. 市場価格が推移している方向とは逆の方向にエントリーします。 (Buy Limit、 Sell Limitの予約注文はトレードシグナルによって位置づけられます。)
- Limit<0. 市場価格が推移している方向にエントリーします。 (Buy Stop、 Sell Stopの予約注文はトレードシグナルによって位置づけられます。).
- Limit=0. 市場価格をそのまま使います。
この手法は、CSignalCandles classに実装されています。
図1. ロウソク足の転換パターンによるトレードシグナル
トレードシグナル
このトレード手法は、CSignalCandles classにあります。Candle() 関数が入っており、分析に使います。:
int Candle(int ind); // Returns the positive/negative number depending on type of the composite candle // the returned value is the number of bars (candles) in the composite candle (starting from ind)
転換の状態の形成にはいくつかの足が必要です。足の最小数はRangeパラメーターによって決めます。Rangeで決めた値よりも少ない本数で転換状態が形成される場合があります。(サイズ/ヒゲが満たされたとき)転換足が形成されていないとき、Candle関数は0を返します。
1. 買いポジション
買いポジションには、ブル型の転換足が必要です。この関数は、転換足が形成されていないか、転換足がベア型の状態かを確認して、値を返します。それ以外の場合、転換足のサイズ (価格、SL、TPの計算に必要)と予約注文の際の価格レベルを計算します。
予約注文のタイプ(Buy Limit、 Buy Stop) は、Limitパラメーターによって決められます。(Limit=0 もしくは |price-ask|<stops level の場合、成行注文。Limit>0 の場合,Buy Limit.Limit<0 の場合、Buy Stop)
//+------------------------------------------------------------------+ //| Checks conditions to open long position (buy) | //+------------------------------------------------------------------+ bool CSignalCandles::CheckOpenLong(double& price,double& sl,double& tp,datetime& expiration) { //--- check the fact of the bullish composite candle formation if(Candle(1)<=0) return(false); //--- get the size of the composite candle double size=m_high_composite-m_low_composite; //--- calculate the price of pending order price=m_symbol.NormalizePrice(m_symbol.Ask()-m_limit*size); //--- calculate Stop Loss price sl =m_symbol.NormalizePrice(price-m_stop_loss*size); //--- calculate Take Profit price tp =m_symbol.NormalizePrice(price+m_take_profit*size); //--- set order expiration time expiration+=m_expiration*PeriodSeconds(m_period); //--- the conditions are satisfied, return true return(true); }
2. 買いの決済
ベア型の転換足が形成されたとき、買いポジションを決済します。
//+------------------------------------------------------------------+ //| Checks conditions to close long position | //+------------------------------------------------------------------+ bool CSignalCandles::CheckCloseLong(double& price) { //--- check the fact of the bearish composite candle formation if(Candle(1)>=0) return(false); //--- price=0.0; //--- the conditions are satisfied, return true return(true); }
3. 売りポジション
ベア型の転換足が形成されたとき、売りポジションをとります。転換足が形成されていないとき、もしくは、ベア型でないとき、値を返します。それ以外の場合、サイズと予約注文の価格レベルを決定します。
(オーダータイプは、Limitパラメーターによって決められます。"買いポジション"を参照してください。).
//+------------------------------------------------------------------+ //| Checks conditions to open short position (sell) | //+------------------------------------------------------------------+ bool CSignalCandles::CheckOpenShort(double& price,double& sl,double& tp,datetime& expiration) { //--- check the fact of the bearish composite candle formation if(Candle(1)>=0) return(false); //--- get the size of the composite candle double size=m_high_composite-m_low_composite; //--- calculate the price of pending order price=m_symbol.NormalizePrice(m_symbol.Bid()+m_limit*size); //--- calculate Stop Loss price sl =m_symbol.NormalizePrice(price+m_stop_loss*size); //--- calculate Take Profit price tp =m_symbol.NormalizePrice(price-m_take_profit*size); //--- set order expiration time expiration+=m_expiration*PeriodSeconds(m_period); //--- the conditions are satisfied, return true return(true); }
4. 売りポジションの決済
ブル型の転換足が形成されたとき、売りポジションを決済します。
//+------------------------------------------------------------------+ //| Checks conditions to close short position | //+------------------------------------------------------------------+ bool CSignalCandles::CheckCloseShort(double& price) { //--- check the fact of the bullish composite candle formation if(Candle(1)<=0) return(false); //--- price=0.0; //--- the conditions are satisfied, return true return(true); }
MQL5 WizardでEAを生成する
この手法のトレードロボットを生成するには、MQL5 Wizardの"Creating Ready-Made Expert Advisors"の"Signals based on reversal candlestick patterns"を選択してください。:
図2. MQL5 Wizard の "Signals based on reversal candlestick patterns "を選択してください。
次に、trailing stop とmoney and risk management の有無を選択します。エキスパートアドバイザーのコードは自動的に生成されるので、コンパイルすれば、MetaTrader 5 client terminalの Strategy Testerでテスト可能です。
テスト結果
過去データでエキスパートアドバイザーをテストしてみましょう。 (EURUSD M15, テスト期間: 1.1.2010-05.01.2011, Range=3, Minimum=50, ShadowBig=0.5, ShadowSmall=0.2, Limit=0, StopLoss=2.0, TakeProfit=1.0, Expiration=4).
エキスパートアドバイザーの生成において、今回は固定ロット(Trading Fixed Lot, 0.1), トレーリングストップ(Trailing not used)はなしを選択しました。
図3. 転換足パターンによるトレード手法のトレード結果
アタッチメント: SignalCandles.mqh と CSignalCandles class がterminal_data_folder\MQL5\Include\Expert\Signal folderになければなりません。
生成したコードは、expert_candles.mq5 です。
MetaQuotes Ltdによってロシア語から翻訳されました。
元のコード: https://www.mql5.com/ru/code/268

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

ザラバフィルター付きの2つの指数平滑移動平均のクロスによるトレードシグナルを考えます。この戦略のエキスパートのコードは、MQL5ウィザードで自動生成させることができます。

このトレードシグナルは、ストキャスティクスをフィルターとした"3 Black Crows/3 White Soldiers"ロウソク足パターンです。この戦略のエキスパートのコードは、MQL5ウィザードで自動生成させることができます。

このクラスは、足の転換によるシグナルの生成に使います。