記事"MQL5ウィザード:新バージョン"についてのディスカッション - ページ 4

 

1.シグナルを反転させる方法を教えてください。

例:GBP/USDの買いシグナルを確認するには、MACD EUR/GBPの売りシグナルが必要です。

それとも、ライブラリのコードを調べて、「プラス」を「マイナス」に変更し、別の名前でライブラリとして保存する方が簡単でしょうか。

P.S.Expert Advisorを作成する 際に、順張りシグナルと逆張りシグナルのどちらを取るかを選択できるとよいのですが。

2.ライブラリーに縫い込まれているパターンの重みを最適化するために、重みを取り出すにはどうすればよいでしょうか?

 
52_rus:

1.信号を反転させる方法を教えてください。

例:GBP/USDの買いシグナルを確認するには、MACD EUR/GBPの売りシグナルが必要です。

それとも、ライブラリのコードを調べて、「プラス」を「マイナス」に変更し、別の名前でライブラリとして保存する方が簡単でしょうか。

P.S.Expert Advisorを作成する 際に、順張りシグナルと逆張りシグナルのどちらを取るか選択できるとよいのですが。

2.ライブラリーに縫い込まれているパターンの重みを最適化するために、重みを取り出すにはどうしたらよいでしょうか?

1.シグナルを反転(および無視)するメカニズムはCExpertSignal基底クラスに組み込まれていますが、残念ながらウィザードからはまだ利用できません。

2 パターンの重みについても同じことが言えます。

ウィザード」の後に入手したエキスパート・アドバイザーのソースを簡単に添付してください。手作業」の方法を説明しようと思います。

PS.ウィザード」を開発し、これらの設定ができるようにする予定です。

 

1.マスターシグナルリストに自分のライブラリ(例:現在のMACDを変更し、メインライブラリを削除せずに保存)を追加するにはどうすればよいですか?

2.ライブラリの操作に関する質問です:

ウィザードを使って作成したMAKDベースのExpert Advisorを考えてみましょう。

ライブラリからのMAKDシグナルは以下の通りです:

//--- 市場モデルのデフォルトの「重み」を設定する。
   m_pattern_0    =10;       // model 0 "発振器は方向を要求している"
   m_pattern_1    =30;       // モデル1 "発振器の逆回転"
   m_pattern_2    =80;       // モデル2 "本線と信号線の交差"
   m_pattern_3    =50;       // モデル3 "ゼロレベルでの本線通過"
   m_pattern_4    =60;       // モデル4 "オシレーターと価格の乖離"
   m_pattern_5    =100;      // モデル5 "オシレーターと価格のダブルダイバージェンス" 

Далее, если я занулю не нужные мне паттерны (например 0,1,2,4,5) в библиотеке:

//--- 市場モデルのデフォルトの「重み」を設定する。
   m_pattern_0    =0;       // model 0 "発振器は方向を要求している"
   m_pattern_1    =0;       // モデル1 "発振器の逆回転"
   m_pattern_2    =80;       // モデル2 "本線と信号線の交差"
   m_pattern_3    =0;       // モデル3 "ゼロレベルでの本線通過"
   m_pattern_4    =0;       // モデル4 "オシレーターと価格の乖離"
   m_pattern_5    =0;      // モデル5 "オシレーターと価格のダブルダイバージェンス" 

ライブラリのみを コンパイルします(EAコード自体はコンパイルしません)。ライブラリのみをコンパイルする(EAコード自体はコンパイルしない)。

EAコードもコンパイルすると、異なる結果(この例ではパターン2のみ)が得られます。

ライブラリのパラメータを変更した後、なぜEAコードを再コンパイルしなければならないのでしょうか?(変更はありません)。

 
52_rus:

1.自分のライブラリ(例えば、現在のMACDを変更し、メインを削除せずに保存する)をマスターシグナルリストに追加するにはどうすればよいですか?


シグナルモジュールのコードを含むインクルードファイルのことですか?現在のモジュールを必要に応じて変更し、同じディレクトリに別の名前で保存してください。それについての詳細は記事に記載されています:

新しいMQL5ウィザードで取引ロボットを作成する

EAコードはMetaEditorのMQL5ウィザードを 使用して構築されます。

取引戦略の基本クラスはterminal_data_folderに ある。取引シグナル クラス オープンポジション維持 クラス、資本とリスク管理 クラスの準備されたアルゴリズムは、Signal、Trailing、Moneyサブディレクトリにあります。MQL5ウィザードはこれらのディレクトリ内のファイルを分析し、EAコードを生成するためにそれらを使用します。

つまり、シグナルモジュールは、terminal_data_folderのdirectoryに あります(MQL5 ウィザードが見るためには、そうでなければなりません)。
 
コードを修正しただけで、クラス名は変更していないんだ。
 

何らかの理由で、新しい バージョンのターミナルには カスタムバージョンのシグナルジェネレーターモジュールが含まれていません。MQL5/Include/Expert/Signal/ フォルダには30個のモジュールがありますが、ヘルプによると、ウィザードには標準で20個のモジュールしか含まれていません。

私だけでしょうか、それともMT5エディタは新しいモジュールのためにシグナルモジュールのあるフォルダをスキャンしなくなったのでしょうか?Metaquotesによって開発されたローソク足パターンに基づくシグナルの以前のモジュールでさえ、接続されていません。

 
Livingston:

何らかの理由で、新しい バージョンのターミナルには カスタムバージョンのシグナルジェネレーターモジュールが含まれていません。MQL5/Include/Expert/Signal/ フォルダには30個のモジュールがありますが、ヘルプによると、ウィザードには標準で20個のモジュールしか含まれていません。

私だけでしょうか、それともMT5エディターは新しいモジュールのためにシグナルモジュールのあるフォルダをスキャンしなくなったのでしょうか?Metaquotes が開発した古いローソク足パターンベースのシグナルモジュールでさえ接続されていません。

新しいシグナルモジュールは、モジュールの説明が異なり、タイプがSignalAdvancedでなければなりません。


 
Rosh:

新しいシグナル・モジュールは、異なるモジュールの説明を持つべきで、そのタイプはSignalAdvancedであるべきです。


ありがとうございました。
 
Rosh:

新しいシグナルモジュールは、異なるモジュール記述を持っていなければならず、そのタイプはSignalAdvancedでなければなりません。


以前に書かれたシグナル・モジュールでSignalをSignalAdvancedに置き換えても、まだ動作しません。現在、関数 CheckOpenShort/CheckOpenLong は使用されておらず、ShortCondition/LongCondition に置き換えられています。

これらの関数にはパラメータがないので、テイクアウトやストップをどのように設定するのか不明です。

int CSignalMA::LongCondition()
  {
   int result=0;
   int idx   =StartIndex();
//--- 最初の分析バーでの終値とインディケータの位置関係を分析する。
   if(DiffCloseMA(idx)<0.0)
     {
      //--- 終値がインジケーターを下回った。
      if(IS_PATTERN_USAGE(1) && DiffOpenMA(idx)>0.0 && DiffMA(idx)>0.0)
        {
         //--- 建値はインジケーターの上にある(つまり交差している)が、インジケーターは上向きである。
         result=m_pattern_1;
         //--- これは形のない "ピアス "であると考え、現在の価格で市場に参入することを提案する。
         m_base_price=0.0;
        }
     }
   else
     {
      //--- 終値がインジケーターを上回った(インジケーターは買いに反対していない)。
      if(IS_PATTERN_USAGE(0))
         result=m_pattern_0;
      //--- モデル2を使用する場合
      if(IS_PATTERN_USAGE(2) && DiffMA(idx)>0.0)
        {
         //--- インジケータは上向き
         if(DiffOpenMA(idx)<0.0)
           {
            //--- オープン価格がインジケーターを下回った(つまり交差した)。
            result=m_pattern_2;
            //--- "ロールバック "での参入を勧める。
            m_base_price=m_symbol.NormalizePrice(MA(idx));
           }
         else
           {
            //--- オープン価格がインジケーターを上回った。
            if(DiffLowMA(idx)<0.0)
              {
               //--- 安値がインジケーターを下回った。
               result=m_pattern_2;
               //--- これは形成された「ピアス」であると考え、現在の価格で市場に参入することを勧める。
               m_base_price=0.0;
              }
           }
        }
     }
//--- 結果を返す
   return(result);
  }

現在、IS_PATTERN_USAGE() は シグナル・モジュールのあらゆるところで使用されていますが、その理由は不明です。

一般的には、シグナル・モジュールを自分で作る方法についての情報を待っています。

それとも、すべてのモジュールが新しい方法で書かれるのでしょうか?

 

各市場モデルには重要度が割り当てられ、1~100の間で測定される。数値が高いほど強力なモデルである。

MAのウェイトが0.4で、ストキャスティックの ウェイトが0.8 - これは外部変数で設定され、MAがどこから来たのか - その有意性は100ですこのモデルの 確率的有意性は、80に等しい。各モデルの有意性は、どこで設定されるのですか、またはどのように決定されるのですか?