私たちのファンページに参加してください
- ビュー:
- 1036
- 評価:
- パブリッシュ済み:
- 2018.05.11 09:59
-
このコードに基づいたロボットまたはインジケーターが必要なら、フリーランスでご注文ください フリーランスに移動
このライブラリはSignalMAAboveBelow2をさらに開発したものです。
バージョン32の新機能:
- CurrentBarSizeパラメータでは現在のバーのサイズを設定できます(これはClose-Openとして計算されます)
- PreviousBarSizeは、前のバーのサイズです(Close-Openとして計算されます)。
現在のバーの価格が指標の上にある場合、両方のバーは強気でなければなりません。現在のバーの価格が指標の下にある場合、両方のバーは弱気でなければなりません。したがって、これらの2つのパラメータ(CurrentBarSizeとPreviousBarSize)は、ポジションを開くときの保護フィルタです。
シグナルのモジュールでは、コンストラクタで時系列を接続する 必要があります。
//+------------------------------------------------------------------+ //| コンストラクタ | //+------------------------------------------------------------------+ CSignalMA::CSignalMA(void) : m_reverse(false), m_ma_period(12), m_ma_shift(0), m_ma_method(MODE_SMA), m_ma_applied(PRICE_CLOSE), m_pattern_0(80), m_size_current_bar(40), m_size_previous_bar(20) { //--- 保護されたデータの初期化 m_used_series=USE_SERIES_OPEN+USE_SERIES_HIGH+USE_SERIES_LOW+USE_SERIES_CLOSE; }
時系列を接続した後は、CiCloseクラスとCiOpenクラスのそれぞれのm_closeオブジェクトとm_openオブジェクトにアクセスできます(オブジェクトは 上位レベル(親のレベルExpertBase.mqhで宣言されています。)
これらのオブジェクトをCSignalMA::LongConditionで操作します。
//+------------------------------------------------------------------+ //| 価格が上昇するかどうかを「投票」する | //+------------------------------------------------------------------+ int CSignalMA::LongCondition(void) { if(m_type_trade==1) // m_type_trade: 取引種類の列挙体: 0 -> 買、1 -> 売、2 -> 売買 return(0); int result=0; int idx =StartIndex(); //--- if(m_close.GetData(idx+1)-m_open.GetData(idx+1)<m_previous_bar_size*PriceLevelUnit()) return(0); if(m_close.GetData(idx)-m_open.GetData(idx)<m_current_bar_size*PriceLevelUnit()) return(0); //--- 直近の価格と第1の分析されたバーの指標との位置関係を分析する
CSignalMA::ShortCondition
//+------------------------------------------------------------------+ //| 価格が下落するかどうかを「投票」する | //+------------------------------------------------------------------+ int CSignalMA::ShortCondition(void) { //--- m_type_trade: 取引種類の列挙体: 0 -> 買、1 -> 売、2 -> 売買 if(m_type_trade==0) return(0); int result=0; int idx=StartIndex(); //--- if(m_open.GetData(idx+1)-m_close.GetData(idx+1)<m_previous_bar_size*PriceLevelUnit()) return(0); if(m_open.GetData(idx)-m_close.GetData(idx)<m_current_bar_size*PriceLevelUnit()) return(0); //--- 直近の価格と第1の分析されたバーの指標との位置関係を分析する
Reverse == false の場合にポジションを開く例:
図1 SignalMAAboveBelow 3 - 買いポジションを開く
図2 SignalMAAboveBelow 3 - 売りポジションを開く
シグナルモジュールのパラメータ
- Reverse - シグナル反転フラグ
- PeriodMA - 移動平均指標の平均期間
- Shift - 移動平均指標の水平方向のシフト
- Method - 移動平均指標の平滑化の種類
- Applied - 移動平均の計算に使われる価格の種類
- TypeOfTrade - 取引シグナルの種類: 0 → 買い、1 → 売り、2 → 売買
- CurrentBarSize - 現在のバーのサイズ(Close-Openとして計算)
- PreviousBarSize - 1つ前のバーのサイズ(Close-Openとして計算)
TestSignalMAAboveBelow3.mq5のテストエキスパートアドバイザーはデフォルトパラメータを持ち、最適化はされませんでした。
TestSignalMAAboveBelow3.mq5MQL5ウィザードで作成したエキスパートアドバイザーで
//+------------------------------------------------------------------+ //| 入力 | //+------------------------------------------------------------------+ //--- エキスパートの入力 input string Expert_Title ="TestSignalMAAboveBelow3"; // ドキュメント名 ulong Expert_MagicNumber =20884; // bool Expert_EveryTick =false; // //--- メインシグナルの入力
ON EVERY TICK操作を有効にする(デフォルトの "false" を "true"に変更する)と、より興味深い結果を得ることができます。現在のバー(インデックス#0のバー )がCurrentBarSizeパラメータと同じか若干大きくなると、EAはより早くこの条件を処理します。
MetaQuotes Ltdによってロシア語から翻訳されました。
元のコード: https://www.mql5.com/ru/code/20164

VSI - Volatility Switch Indicator(ボラティリティスイッチ指標)

IDayIIndex (Intraday Intensity Index) オシレータ指標です。

対向するポジションを同時に開きます。トレールストップ

このバージョンはある種の正規化されたバージョンで、選択された期間の平均数量と比較した数量がパーセントで表示されます。