エラー、バグ、質問 - ページ 3078

 
fxsaber #:

ビジュアライザーは、取引環境と常に同期しているとは言い難い。つまり、古い情報が表示される場合があります。最新のものが常にEAにある。

これは非常によくある問題で、EAではあることが表示されているのに、Visualizerでは別のことが表示されている場合です。

いいアイデアがあるんです。了解です、ありがとうございました。基本的に、EAは論理的に動作し続け、注文は本当に実行されますが、視覚的には後でしか見えません。

 
Igor Petrov #:

なるほど。ありがとうございます。基本的にEAはさらに論理的に動作し、注文が本当に実行されるのは、後で見ることができる視覚的なものだけです。

タイミングよく同期の状況を見るには、テスターを停止した後、次のテロップを待つ必要があります。

例えば、面白い瞬間の前に5秒早送りし、ポーズを押して、F12で次のティックごとにロールバックすることができます。これらのテロップはすべて正しくレンダリングされます。


ビジュアライザーのマーケットウォッチウィンドウに表示されるタイムラグと比較することで、現在のティックタイム(ミリ秒単位の精度)のコメントでタイムラグを特定することができます。不一致があれば、それは非同期化である。


もし矛盾があるとすれば、それはデバッガが停止したとき(またはポーズを押したとき)のビジュアライザの同期不良です。もちろん、もっと前に行われているはずです。

 
Igor Makanu #:

BarsCalculated()https://www.mql5.com/ru/docs/series/barscalculated

何を返してくれるの?- は、OnCalculate()で計算した後、インジケータがreturn(rates_total)に返した数字だけでしょうか?

BarsCalculated() はreturn(rates_total ) です。

インドA

int OnCalculate...
{
   static int cnt = 0;
   cnt++;
   Print("cnt = ", cnt);
   return(cnt);
}

ind B:

int OnInit()
{
   handle = iCustom(NULL, PERIOD_M1, "tst_code\\A");
   return(INIT_SUCCEEDED);
}
int OnCalculate...
{
   double tmp[];
   int bc = BarsCalculated(handle);
   if(bc == -1) return(rates_total);
   int copy = CopyBuffer(handle, 0, 0, 1, tmp);
   Print("BarsCalculated = ", bc);
   return(rates_total);
}

は、H1指標B、ログに走った。

2021.09.02 16:11:44.872 A (EURUSD,M1) cnt = 1

2021.09.02 16:11:44.873 A (EURUSD,M1) cnt = 2

2021.09.02 16:11:44.998 A (EURUSD,M1) cnt = 3

2021.09.02 16:11:44.998 B (EURUSD,H1) BarsCalculated = 3

2021.09.02 16:11:46.617 A (EURUSD,M1) cnt = 4

2021.09.02 16:11:46.617 B (EURUSD,H1) BarsCalculated = 4

2021.09.02 16:11:46.663 A (EURUSD,M1) cnt = 5

2021.09.02 16:11:46.663 B (EURUSD,H1) BarsCalculated = 5

2021.09.02 16:11:46.671 A (EURUSD,M1) cnt = 6

2021.09.02 16:11:46.671 B (EURUSD,H1) BarsCalculated = 6

2021.09.02 16:11:46.684 A (EURUSD,M1) cnt = 7

2021.09.02 16:11:46.685 B (EURUSD,H1) BarsCalculated = 7

2021.09.02 16:11:46.697 A (EURUSD,M1) cnt = 8

2021.09.02 16:11:46.697 B (EURUSD,H1) BarsCalculated = 8

2021.09.02 16:11:47.008 A (EURUSD,M1) cnt = 9

2021.09.02 16:11:47.008 B (EURUSD,H1) BarsCalculated = 9

2021.09.02 16:11:47.029 A (EURUSD,M1) cnt = 10

2021.09.02 16:11:47.029 B (EURUSD,H1) BarsCalculated = 10

2021.09.02 16:11:47.502 A (EURUSD,M1) cnt = 11

2021.09.02 16:11:47.502 B (EURUSD,H1) BarsCalculated = 11

2021.09.02 16:11:47.614 A (EURUSD,M1) cnt = 12

2021.09.02 16:11:47.614 B (EURUSD,H1) BarsCalculated = 12

2021.09.02 16:11:47.620 A (EURUSD,M1) cnt = 13

2021.09.02 16:11:47.620 B (EURUSD,H1) BarsCalculated = 13

2021.09.02 16:11:47.667 A (EURUSD,M1) cnt = 14

2021.09.02 16:11:47.667 B (EURUSD,H1) BarsCalculated = 14

2021.09.02 16:11:47.713 A (EURUSD,M1) cnt = 15

2021.09.02 16:11:47.713 B (EURUSD,H1) BarsCalculated = 15

2021.09.02 16:11:47.726 A (EURUSD,M1) cnt = 16

2021.09.02 16:11:47.726 B (EURUSD,H1) BarsCalculated = 16

 

こんにちは、問題が解決できないようです。

最初の実行ですべてのバーを処理し、最後のバーだけを処理する必要があります。

最初は0を表示し、次に新しいバーが出るたびに最後のバーだけを表示し、途中のバーは表示しない。

何が問題なのか?

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {

      for(int i = prev_calculated; i <= prev_calculated && i < rates_total && !IsStopped(); i++)
        {
         Print(i);
        };
   return(rates_total);
  }
 
SEM #:

こんにちは、問題が解決できないようです。

最初の実行ですべてのバーを処理し、最後のバーだけを処理する必要があります。

最初は0を表示し、次に新しいバーが出るたびに最後のバーだけを表示し、途中のバーは表示しない。

エラーは何ですか?

サイクル1の式でi--またはiが0に等しいか)はすべて正しくプリントされます)
これは1本目用です。そして、定番の新型バーキャッチ。
 
SEM #:

こんにちは、問題が解決できないようです。

最初の実行ですべてのバーを処理し、最後のバーだけを処理する必要があります。

最初に0を表示し、次に新しいバーでは最後のバーだけを表示し、途中のバーは表示しません。

エラーは何ですか?


手始めに私はこのように修正してみることにします。

      for(int i = prev_calculated; i >= prev_calculated && i < rates_total && !IsStopped(); i++)
        {
         Print(i);
        };
 

皆さん、ごきげんよう。どなたかこの問題に遭遇した方はいらっしゃいませんか?今日のmt5では10mskまで全て順調でした。注文を出し、ストップとプロフィットを設定しました。

注文を出すとき、10msk後にストップや利益を出すと、私の注文は並んで待っている状態で、10分以上経過すると注文が出ます。そして、これは今も変わりません。

 
Михаил Савченко #:

皆さん、ごきげんよう。どなたかこの問題に遭遇した方はいらっしゃいませんか?今日10mskまではmt5で全てうまくいっていました。注文を出し、ストップとプロフィットを設定しました。

22時以降、注文を開いてストップや利食いを入れると、注文が並んで待っており、10分以上経過すると開くようになっていました。そして、これは今も変わりません。

マニュアル取引?どのブローカー?
 
mktr8591 #:
マニュアルトレード?どこのブローカー?
はい、マーケットから手動でエントリーしています。フィナム
 
mktr8591 #:

まず始めに、私ならこう直してみる。

ありがとうございました。助かりました。