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

 

こんにちは。

勉強して、専門家を直そうとする。コードエディターのデバッグモードでは、ティックによる方法とヒストリによる方法の2種類があります。

なぜか履歴のテストができない、この行はアクティブではない。説明書を見ると、セッティングで表を埋めて終わりです。

しかし、"Start on historical data "という行がアクティブになっていない......?

 
Fantomas:

こんにちは。

勉強して、専門家を直そうとする。コードエディターのデバッグモードでは、ティックによる方法とヒストリによる方法の2種類があります。

なぜか履歴のテストができない、この行はアクティブではない。説明書を見ると、セッティングで表を埋めて終わりです。

しかし、"Start on historical data "という行がアクティブになっていない......?

このようにMetaEditorのフィールドに入力し、正しいボタンを押しましたか?

1

 
Karputov Vladimir:

このようにMetaEditorで項目を埋めて、右のボタンをクリックしたのでしょうか?


はい、このテーブルを埋めて、ブレークポイントを置いて ください。

ここで、メニューの「デバッグ」の最初の2行を表示します。

1.実データで起動------ 動いている

2.過去のデータでは----------頑なにアクティブではない。

削除済み  
Fantomas:

はい、このテーブルを埋めて、ブレークポイントを置いてください。

さて、「デバッグ」メニューの最初の2行です。

1.実データで起動------ 動いている

2.過去のデータでは----------頑なにアクティブではない。

端末の最新ビルド?
 
Tapochun:
端末の最新ビルド?
おそらく880
 
Fantomas:
おそらく880

確かにMT5ビルド1159では履歴の32ビットデバッグが可能ですが、MT4ビルド891では履歴の32ビットデバッグができません。

歴史ではテストできない。MT4ビルド891

 
Karputov Vladimir:

実際、MT5ビルド1159ではヒストリーの32ビットデバッグが可能で、MT4ビルド891ではヒストリーの32ビットデバッグは利用できません。


皆さん、ありがとうございました!!!

 
Alexandr Bryzgalov:

ということは、本当にエラーではないのでしょうか?

本当にそうですね。 それでも、(; ・`д・´)は可能でしょう。

 
Комбинатор:

確かに。 それでも、(;;)可能性はありそうです。

ええ、ヘルプで読みましたよ )
 

こんにちは、私はほとんどmql4で書いていますが、mql5で作業を始めることにして、問題がありました。

私のインジケーターでは、石目盛りを使っています。データが更新されず、エラー4806が表示され続けている。

void OnInit(){
   int i_ich=INVALID_HANDLE;
   i_ich=iIchimoku(Symbol(), Period(), 9, 26, 52);
   WaitInd(i_ich, "Ишимоку");     
}

void WaitInd(int hnd, string name, int wait=10){
   if(hnd==INVALID_HANDLE){
      return;
   }
   double Arr[];
   datetime now=TimeLocal();
   Comment("Ждем построения индикатора ",name,"...");
   GetLastError();
   while(CopyBuffer(hnd, 0, 0, 1, Arr)<=0){
      int err=GetLastError();
      if(err!=4806){
         PrintFormat("Ошибка %d при получении данных инликатора %s",err,name);
         Comment("");
         return;
      }
      if(TimeLocal()-now>=wait){
         PrintFormat("Ошибка: индикатор %s не построился за %d секунд",name,wait);
         Comment("");
         return;
      }
   }
   Comment("");
}

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[]){
       
       return(rates_total);
}

同じコードをスクリプトで使用した場合、エラーは表示されず、インジケータは即座に構築されます。何が問題なのでしょうか?