初心者の方からの質問 MQL5 MT5 MetaTrader 5 - ページ 614

 
newnek:

こんにちは、 標準ライブラリのシグナルにパラメータParameter=Ka,int,21が必要かどうか教えて ください。

型の列挙から最適化の過程で選択される。

しかし EA生成時にシグナルが選択から消えるのに、コンパイルは正常に行われているとなると、何が悪いのか・・・、コードのヘルプ、すでに実装があるのでは?

p.s. 最後のEAで毎回 intをintTypeに 変更する必要が あります。

正確な信号モジュールファイルとコードの行を指定してください...
 
Karputov Vladimir:
正確な信号モジュールファイルとコード行を指定する...

例えば、トップコードのSignalRVI.mqhの一部ですが、この場合、int型をintTypeに 変更すると、シグナル選択から消えてしまうのです。

スコープがおかしい場合は、別のファイルに列挙しています #include <Librariesmyfunc.mqh>
//+------------------------------------------------------------------+
//|                                                    SignalRVI.mqh |
//|                   Copyright 2009-2013, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#include <Expert\ExpertSignal.mqh>
// wizard description start
//+------------------------------------------------------------------+
//| Description of the class                                         |
//| Title=----------------Signals of oscillator 'Relative Vigor Index'               |
//| Type=SignalAdvanced                                              |
//| Name=Relative Vigor Index                                        |
//| ShortName=RVI                                                    |
//| Class=CSignalRVI                                                 |
//| Page=signal_rvi                                                  |
//| Parameter=PeriodRVI,intType,15,Period of calculation                 |
//+------------------------------------------------------------------+
// wizard description end
//+------------------------------------------------------------------+
//| Class CSignalRVI.                                                |
//| Purpose: Class of generator of trade signals based on            |
//|          the 'Relative Vigor Index' oscillator.                  |
//| Is derived from the CExpertSignal class.                         |
//+------------------------------------------------------------------+
enum intType
  {
   p0 = 15, 
   p1 = 21, 
   p2 = 29 
}
;
class CSignalRVI : public CExpertSignal
  {
protected:
   CiRVI             m_rvi;            // object-oscillator
   //--- adjusted parameters
   intType               m_periodRVI;      // the "period of calculation" parameter of the oscillator
   //--- "weights" of market models (0-100)
   int               m_pattern_0;      // model 0 "the oscillator has required direction"
   int               m_pattern_1;      // model 1 "crossing of main and signal line"

public:
                     CSignalRVI(void);
                    ~CSignalRVI(void);
   //--- methods of setting adjustable parameters
   void              PeriodRVI(intType value)            { m_periodRVI=value;                 }
   //--- methods of adjusting "weights" of market models
   void              Pattern_0(int value)            { m_pattern_0=value;                 }
   void              Pattern_1(int value)            { m_pattern_1=value;                 }
   //--- method of verification of settings
   virtual bool      ValidationSettings(void);
   //--- method of creating the indicator and timeseries
   virtual bool      InitIndicators(CIndicators *indicators);
   //--- methods of checking if the market models are formed
   virtual int       LongCondition(void);
   virtual int       ShortCondition(void);

protected:
   //--- method of initialization of the oscillator
   bool              InitRVI(CIndicators *indicators);
   //--- methods of getting data
   double            Main(int ind)                   { return(m_rvi.Main(ind));           }
   double            DiffMain(int ind)               { return(Main(ind)-Main(ind+1));     }
   double            Signal(int ind)                 { return(m_rvi.Signal(ind));         }
   double            DiffSignal(int ind)             { return(Signal(ind)-Signal(ind+1)); }
   double            DiffMainSignal(int ind)         { return(Main(ind)-Signal(ind));     }
  };
//+------------------------------------------------------------------+
//| Constructor                                                      |
//+------------------------------------------------------------------+
CSignalRVI::CSignalRVI(void) : m_periodRVI(15),
                               m_pattern_0(60),
                               m_pattern_1(100)
  {
  }
 
newnek:

こんにちは、標準ライブラリのシグナルにパラメータParameter=Ka,int,21が必要かどうか教えて ください。

型の列挙から最適化の過程で選択さ れる。

しかし、EA生成時にシグナルが選択から消えるのに、コンパイルは正常に行われているとなると、何が悪いのか・・・、コードのヘルプ、既に実装があるのでは?

p.s. 最後のEAで毎回intをintTypeに変更する必要があります。

Relative Vigor Index" インジケータをベースにExpert Advisorを生成し、ストラテジーテスターの「設定」タブで最適化の一つを選択し、「パラメータ」タブで "Relative Vigor Index(10) Period of calculation" パラメータに間隔と値を設定するだけで、何も変更する必要がないのです。

RVI

しかし、15-29の区間から3つの値しか使いたくないので、OnInit()にチェック条件を書く必要が あります。

//+------------------------------------------------------------------+
//| Initialization function of the expert                            |
//+------------------------------------------------------------------+
int OnInit()
  {
   if(Signal_RVI_PeriodRVI!=15 && Signal_RVI_PeriodRVI!=21 && Signal_RVI_PeriodRVI!=29)
      return(INIT_PARAMETERS_INCORRECT);
//--- Initializing expert

最適化を実行 した後、テスターはパラメータ15、21、29に対してのみ動作したことがわかります。

選択的最適化

 
Karputov Vladimir:

Relative Vigor Index" インデックスをベースにExpert Advisorを生成し、Strategy Testerで最適化の一つを選択し、"Parameters" タブで "Relative Vigor Index(10) Period of calculation" パラメータに間隔と値を設定するだけで、何も変更する必要がないのです。


しかし、15-29の区間から3つの値しか使いたくないので、OnInit()にチェック条件を書く必要が あります。

最適化を実行 した後、テスターはパラメータ15、21、29に対してのみ動作したことがわかります。

しかし、無駄なステップが多くなります(おそらく時間も無駄にはなりませんが)。生成されたEAを手動でenum型に変更することに成功しました。そして、さらに自動化を進めたいと考えています。
 
newnek:
しかし、無駄なステップが多くなります(おそらく時間も無駄にはなりませんが)。生成されたEAでenum型に手動で変更することができました。そして、さらに自動化を進めたいと考えています。
OnInit()は条件不成立で終了し、次の最適化ステップがすぐに開始されるため、空のステップが発生しますが、時間はかかりません。
 

こんにちは...私自身、C++のプログラマーです。最近、この分野で自分もやってみようと思って...。Expert AdvisorやExpert Advisorを書きたいのですが、私の戦略はOKで、プラットフォームはMT4なのですが...。エキスパートアドバイザーでMACDを使っているのですが、この問題に直面しています...。近日中に書きます...。

例えば、新しいテンプレートEAを作成し、x=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0); と追加します。コンパイル、テスト、すべてOK、テストの終わりに、指定したパラメータでMacdチャートを表示、すべてOKです。

2番目のオプション - 私はOnTickで新しいテンプレートEAを作成し、サードパーティ製のインジケータを追加 RSICur = iCustom(NULL、0、"My_Induk"、14、1、0、21、1、65、35、"DodgerBlue"、"マゼンタ"、50、50、"赤"、"緑"、0、0); コンパイル、テスト、すべてがOKですが、!?私はこれらの指標の数千のウィンドウでテストを終了するか、またはテストをキャンセルすると、私はすべてのティックに新しい指標を作成することを理解する...標準のMAKDは一回生まれて終わりなので、なぜか理解できない.

どなたか、この問題を説明してください...他の規格外のインジケーターの問題点を説明しようとしているが、同じ問題点がある...。

P.S. 初めての投稿です...写真をスポイラーで隠す方法が見つからなかったことを責めないでください。

スクリーンショット
 

なんだかよくわからないけど、解決策が見つかった...。

RSICur=iCustom(NULL,0, "My_Induk",14,1,0,0,21,1,65,35, "DodgerBlue", "Magenta",50,50, "Red", "Green",0,0);-1目ごとに チャートを描画します。

RSICur=iCustom(NULL,0, "My_Induk",0,0); - OK、1つのチャートで、RSICur変数のデータだけがティックごとに更新 されます...。どういう理屈なのか理解できない、原理的にはこれで十分なのだが、なぜデフォルトの設定でしかうまく動かないのか理解したい......。

 
Игорь Марин:

こんにちは...私自身、C++のプログラマーです。最近、この分野で自分もやってみようと思って...。Expert AdvisorやExpert Advisorを書きたいのですが、私の戦略はOKで、プラットフォームはMT4なのですが・・・。エキスパートアドバイザーでMACDを使っているのですが、この問題に直面しています...。近日中に書きます...。

例えば、新しいテンプレートEAを作成し、x=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0); と追加します。コンパイル、テスト、すべてOK、テストの最後に指定したパラメータでMacdチャートを表示、すべてOKです。

2番目のオプション - 私はOnTickで新しいテンプレートEAを作成し、サードパーティ製のインジケータを追加 RSICur = iCustom(NULL、0、"My_Induk"、14、1、0、21、1、65、35、"DodgerBlue"、"マゼンタ"、50、50、"赤"、"緑"、0、0); コンパイル、テスト、すべてOKですが、!?私はこれらの指標の数千のウィンドウでテストを終了するか、またはテストをキャンセルすると、私はすべてのティックに新しい指標を作成することを理解する...標準のMAKDは一回生まれて終わりなので、なぜか理解できない.

どなたか、この問題を説明してください...他の規格外のインジケーターの問題点を説明しようとしているのですが...。

P.S. 初めての投稿です...ネタバレの下に写真を隠す方法が見つからなかったとお叱りを受けないでください。

写真は隠さずOKです。

My_Indukが書いたのか、それともどこかで見つけたのか?インジケーターが曲がっているのはわかりますが。もしソースコードをお持ちでしたら、それを投稿してください - 何が問題なのか見てみましょう。

 
Игорь Марин:

なんだかよくわからないけど、解決策が見つかった...。

RSICur=iCustom(NULL,0, "My_Induk",14,1,0,0,21,1,65,35, "DodgerBlue", "Magenta",50,50, "Red", "Green",0,0);- 1目ごとにチャートを描画 します。

RSICur=iCustom(NULL,0, "My_Induk",0,0); - OK、1つのチャートで、RSICur変数のデータだけがティックごとに更新 される...。どういう理屈なのか理解できない、原理的にはこれで十分なのだが、なぜデフォルトの設定でしかうまく動かないのか理解したい......。

これは、インジケーターのパラメーターが正しく渡されていない場合に起こります。
 
Alexey Volchanskiy:

写真はOK、ここは隠さない。

My_Indukが書いたのか、それともどこかで見つけたのか?インジケーターが曲がっているんですね。もしソースコードをお持ちでしたら、それを投稿してください - 何が問題なのか見てみましょう。

ウラジスラフ・アンドルシェンコ
これは、インジケーターのパラメーターが正しく渡されていない場合に起こります。

ありがとうございます、わかりました...一日中つっこんでたけどわからなかった...。私もプログラマーですが、そんなこともあるんですね...。インジケータを呼び出すときに、カラーパラメータを引用符で囲んで渡すという構文上のミスがありました...。

iCustom(NULL,0,"My_Induk",14,1,0,21,1,65,35,"DodgerBlue","Magenta",50,50,"Red","Green",0,0);

それが今回の故障の原因だったのか......。) ありがとうございます!!!きっと、もっと質問があるはずだ!!!

理由: