マルチカレンシーEAのバックテスト - ページ 2

 
私の場合は、IsNewBar()メソッドと、私のEAが始値でのみ 動作する場合を除き、「毎ティック」実行メソッドのスイッチで解決しました。
Documentation on MQL5: Standard Constants, Enumerations and Structures / Indicator Constants / Price Constants
  • www.mql5.com
Standard Constants, Enumerations and Structures / Indicator Constants / Price Constants - Documentation on MQL5
 
trendick:

アリさん、先ほどの例は、あなたがおっしゃるIsNewBar()関数のソースとなるEAで、すでに使っています。

これをどう説明するのですか?

私は2つのシンボルで取引する私のEAについて話していたのですが、一方のシンボルは ontick()でデータを取得し

もう一方はIsnewbar()を使っています。

私はまた、上記のEAのようにisnewbarを使用して両方の引用符を取得しようとし、同じ問題があったが、ontick()で元のシンボルの引用符を取得すると、問題は解決されました。

もちろん、テスターに問題があるのは当然ですが、私はただ、私の望む結果を得ることができた方法を示しただけです。

 
kgo:
私の場合はIsNewBar()メソッドと "Every Tick "実行メソッドで解決しましたが、私のEAはオープンプライスのみで 動作します。

もっと詳しく教えてください。 多分、デモのためのコードスニペット? 3つの通貨を扱うことができますか?
 
trendick:
3つの通貨を扱うことができるのでしょうか?

なるほど、そういうことだったんですね。1つのペアは新しいバーを開くトリガーとして使用され、残りのペアはティックを即座に読み取ります。

 

Kgo、しかしそれでも私の場合、これは問題を解決していません。どのようなことを行っているのか、スニペットを見せていただけませんか?

ありがとうございます、trendick

 
TheEconmistさん、ありがとうございます。(I thought you guys stick to the random walk hypothesis...:-)): 早速、チェックしています。
 
私はいくつかの新しいテストを行い、私の以前の投稿は正しくありません。IsNewBar()メソッドは役に立ちません。TheEconomistは多通貨EAでOnTick()がどのように実装されなければならないか、良い例を示しています。
 
IsNewBar()メソッドがどこにあるのかさえ知らないなんて、信じられますか?どのクラス?
 
TheEconomist:
このIsNewBar()メソッドがどこにあるのかさえ知らないなんて、信じられますか?どのクラス?

105条からのメソッドを参照しています。ここにそれがあります(最初と最後だけが関係あります)。

ここにあります。

/+X================================================================X+
//| IsNewBar() function                                              |
//+X================================================================X+
bool IsNewBar(int Number,string symbol,ENUM_TIMEFRAMES timeframe)
  {
//----+
   static datetime Told[];
   datetime Tnew[1];
//----+ Declare variable to store sizes of variables arrays
   static int Size_=0;

//----+ Change size of variables arrays
   if(Number+1>Size_)
     {
      uint size=Number+1;
      //----
      if(ArrayResize(Told,size)==-1)
        {
         string word="";
         StringConcatenate(word,"IsNewBar( ",Number,
                           " ): Error!!! Unable to change sizes of variables arrays!!!");
         Print(word);
         //----          
         int error=GetLastError();
         ResetLastError();
         if(error>4000)
           {
            StringConcatenate(word,"IsNewBar( ",Number," ): Error code ",error);
            Print(word);
           }
         //----                                                                                                                                                                                                  
         Size_=-2;
         return(false);
        }
     }

   CopyTime(symbol,timeframe,0,1,Tnew);
   if(Tnew[0]!=Told[Number])
     {
      Told[Number]=Tnew[0];
      return(true);
     }
//----+
   return(false);
  }