[警告は閉鎖されました!】フォーラムを乱雑にしないために、どんな初心者の質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしでは、どこにも行けない。 - ページ 315

 
chief2000 >> :

問題は、その仕組み(指標の最適化)です。

新しいティックごとに同じ矩形が表示されることは正しく理解されていますか?

(同じサイズで同じ数のバー)は削除され、再描画されるのでしょうか?

バーの数のチェックを追加する価値はありますか(バーが増えたら、その時だけ再描画する)?

コンピュータのCPUをオフロードするためか、それとも利得はわずかで、いじくり回す価値はないのか?

また、削除する代わりに、if(ObjectFind(RectangleSell)==-1){ ObjectCreate()}をチェックして、ObjectCreateを設定することができます。

というように、チェックせずに残りを表示することで、tick毎にオブジェクトを削除して設定し直す必要がなくなります。

if( MA_Fast[ i+1]> MA_Slow[ i+1]) {
   string RectangleSell = StringConcatenate("RECTANGLE_", StartBoxTime);   
   if(ObjectFind( RectangleSell)==-1){
      ObjectCreate( RectangleSell, OBJ_RECTANGLE, 0,  StartBoxTime, BoxLow,  EndBoxTime, BoxHigh);
     }
   ObjectSet( RectangleSell, OBJPROP_STYLE, STYLE_SOLID);
   ObjectSet( RectangleSell, OBJPROP_RAY, False);
   ObjectSet( RectangleSell, OBJPROP_WIDTH, 1);
   ObjectSet( RectangleSell, OBJPROP_BACK , True);
   ObjectSet( RectangleSell, OBJPROP_COLOR, ColorSell);
}
 
Vinin >> :

時間同期を追加する必要があります。

確かに開発はありますね!MAで実装する方法を示してください。

 
Vladimir11 >> :

毎日のスケジュールで動いている私に、アドバイスをお願いします。

そして、議事録データにアクセスしたい。更新されているのか、古いデータなのか?

リアルタイムの場合、それらは更新され、D1のテスターの場合、データM.を最後のバー(リアルタイムのもので、テストされているものではありません)に表示します。

 

このフォーラムに初めて投稿します。MQL4を勉強中です。以前からそのような質問があったのか、見つけられませんでした。IndicatorCounted関数を使う必要があると思うのですが、どうすればいいのかわかりません。300 000のquotesを追加し、indicators hangsを開始しようとしたとき、すべてのquotesではなく、特定のものだけを指定すべきだと思います。 しかし、私はすべての3000も再計算したくないので、IndicatorCountedが必要です。 最後の3000だけを表示する条件を指定して、すでに通過したものを再計算しない方法が分かりません。

ご感想をお寄せいただきありがとうございました。

 
depth_finde >> :

このフォーラムに初めて投稿します。MQL4を勉強中です。以前からそのような質問があったのか、見つけられませんでした。IndicatorCounted関数を使う必要があると思うのですが、どうすればいいのかわかりません。300 000のquotesを追加し、indicators hangsを開始しようとしたとき、すべてのquotesではなく、特定のものだけを指定すべきだと思います。 しかし、私はすべての3000も再計算したくないので、IndicatorCountedが必要です。 最後の3000だけを表示する条件を指定して、すでに通過したものを再計算しない方法が分かりません。

ご感想をお寄せいただきありがとうございました。

そう、このように。

int start()
  {
   int counted_bars = IndicatorCounted();
//----
   if( counted_bars < 0) 
       return(-1);
//----
   if( counted_bars > 0) 
       counted_bars --;
   int pos = Bars - counted_bars;  
//----
   while( pos >= 0) 
     {
       ma1_buffer[ pos] = iMA(NULL, 0 , Period1* Коэфициент, 0, Метод_Вычисления_МА, Низ,  pos);
       ma2_buffer[ pos] = iMA(NULL, 0 , Period1* Коэфициент, 0, Метод_Вычисления_МА, Верх, pos);
       ma3_buffer[ pos] = iMA(NULL, 0 , Period2* Коэфициент, 0, Метод_Вычисления_МА, Низ,  pos);
       ma4_buffer[ pos] = iMA(NULL, 0 , Period2* Коэфициент, 0, Метод_Вычисления_МА, Верх, pos);
       ma5_buffer[ pos] = iMA(NULL, 0 , Period3* Коэфициент, 0, Метод_Вычисления_МА, Низ,  pos);
       ma6_buffer[ pos] = iMA(NULL, 0 , Period3* Коэфициент, 0, Метод_Вычисления_МА, Верх, pos);
       pos--;
       
     }
     
//----
   return(0);
  }
//+------------------------------------------------------------------+
 
costy_ писал(а)>>

リアルタイムの場合、それらは更新され、D1テスターの場合、データM...を最後のバー(テストしたものでなくリアルタイムのもの)で表示します。

プライベートで返信

 
costy_ писал(а)>>

だいたいこんな感じです。

あなたは最初の実行で示されているように3000が、300000引用符、すべてがある計算されますので、おそらく、ありません。

 
depth_finde >> :

最初の実行を示した方法では、3000の引用ではなく、300000の引用を読むことになりますから、おそらくそうではないでしょう。

そう、一度だけ、その後、変わるのです!!!!

インジケータをチャートの一部ではなく、全体に表示させること。

 
Vinin >> :

本人が回答。

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

 
costy_ писал(а)>>

そうですね、一度だけ、その後、変更しました!!!

チャート全体にインジケータを表示し、一部には表示しない場合。

これは、30万個のインディケータをすべてダウンロードして5分待つのではなく、最初の実行で3000個をダウンロードし、その後、変更のあったものだけをダウンロードする、というものです。

このようなインジケータが1つのチャートに5つあるとすると、読み込みに25分かかることになります。