Mt4 サポート終了。 - ページ 35

 
Реter Konow:

この変種はNew_bar()関数を全く持っていない。

これは、私が提供した中で最も省資源なオプションです。さらに、もう一つの利点があります。新しいバーイベントは、ユーザーコードがタイマーまたはティックイベントで実行されるときは常に保存されます。

以前は、このイベントは一度しか取得できず、New_bar()でフラグがクリアされました。この特別な関数は、1分間に1回、"event_new_bar[][]"配列をクリアし、カスタムコードの実行後にのみ呼び出されるようになりました。

カスタム関数は、タイマやティックイベントでコードが実行 されるたびに、配列に直接アクセスして新しいバーイベント情報を取得することができます。

これにより、さらに資源を節約することができます。

最後のコードもうまくいかず、プリントの到着に7分もかかってしまった

//+------------------------------------------------------------------+
//Пример использования событий нового бара в пользовательском функционал.
//Просто обращаемся к глобальному массиву "События_нового_бара[a1][a2]" напрямую
//и используем событие в наших торговых алгоритмах.
//+------------------------------------------------------------------+
void Моя_стратегия_торговли_на_новых_барах()
{
  for(int a1 = 0; a1 < Всех_символов; a1++)
   {
    string Этот_символ    = Символы[a1];
    //----------------------------------
    for(int a2 = 0; a2 < Всех_таймфреймов; a2++)
      {
       bool   Новый_бар      = События_нового_бара[a1][a2];
       int    Этот_таймфрейм = Таймфреймы[a2];
       //----------------------------------
       if(Новый_бар && Этот_символ == "EURUSD" && Этот_таймфрейм == PERIOD_M5)
         {
          Print("M5");
         }
       //---------------------------------- 
       if(Новый_бар && Этот_символ == "EURUSD" && Этот_таймфрейм == PERIOD_M1)
         {
          Print("M1");
         }
       //----------------------------------        
      }
   }
}
 
Vitaly Muzichenko:

最後のコードもうまくいかず、プリントが届くまで7分かかりました。

この関数は、OnTick またはタイマーから呼び出す必要があります。

小さな問題があるかもしれないが、まだその場所を特定できていない。自分でコードを見て、エラーがないかどうか探してみてください。3コペックのようなシンプルなものです。しかもコメント付きで。

わからないことがあれば、聞く。他にやることがあるんです。

 
Реter Konow:

この変種はNew_bar()関数を全く持っていない。

これは、私が提供した中で最も省資源なオプションです。さらに、もう一つの利点があります。新しいバーイベントは、ユーザーコードがタイマーまたはティックイベントで実行されるときは常に保存されます。

以前は、このイベントは一度しか取得できず、New_bar()でフラグがクリアされました。この特別な関数は、1分間に1回、"event_new_bar[][]"配列をクリアし、カスタムコードの実行後にのみ呼び出されるようになりました。

カスタム関数は、タイマやティックイベントでコードが実行 されるたびに、配列に直接アクセスして新しいバーイベント情報を取得することができます。

資源をさらに節約することができます。


ユーモアがわからない。デバッガがロシア語を理解しないのはなぜですか?それとも、そんな不具合があるのは私だけでしょうか?ラテン語で変数を表示し、キリル文字では表示しない。

ピーター では、デバッガはどのように使っているのですか、それとも使っていないのでしょうか。

 

興味のある方は、コードのバグを探してみてください。

コードの要点

1.グローバル配列の宣言。

  • シンボル名用の一次元配列 "Symbols[]"
  • タイムフレーム用一次元配列 "Timeframes[]"
  • 現在のバーの数「Number_bars[][]」を書き込む2次元配列。
  • 2次元配列 "New Bar Events[][]" ここに各シンボル、各時間枠の新しいバーイベントのフラグを書きます。配列「Symbols[]」と「Timeframes[]」にあるもの。この配列は、タイマーイベントのシンボルと時間枠によって、1分間に1回、ループの中で埋められます。その後、クリアされます。この配列は、フィルとクリアの間にユーザー関数から呼び出され、新しいバーについて通知されます。

2.初期化時に、シンボル配列のサイズを設定し、そこにマーケットレビューからのシンボル名を書き込む。

3.Number_bars[][]」配列の1次元目のサイズをシンボル数と等しく、2次元目のサイズをタイムフレーム数と等しく設定します。この配列はテーブルのようなものです。各シンボル、各時間枠の現在のバー数を記録します。この数値は、iBars関数によって返されます。

4.配列 "Events_new_bar[][]" の1次元目のサイズをシンボル数と等しく、2次元目のサイズをタイムフレーム数と等しく設定します。この配列はテーブルのようなものです。各タイムフレームで各シンボルの新しいバーのイベントフラグを記録します。

5.タイマーの内部では、分をカウントダウンし、シンボル(配列Symbols[])とタイムフレーム(配列Timframes[])に対して二重(ネストされた)ループを実行します。iBars関数を呼び出し、Symbols配列とTimeframe配列から各シンボル、各時間枠の現在のバー数を取得します。まず、現在のバーの本数と、すでに配列に格納されている本数を比較します。これらの値が等しくない場合、配列 "Events_new_bar[][]" に新しいバーイベントのフラグを設定する。そして、現在の小節数を前の小節数に置き換えて書き込む。


グローバル配列 "events_new_bar[][]"は、プログラムのどの時点でも利用でき、1分ごとに自動的に埋められ、また自動的にクリアされる。配列が埋まっている間、ユーザー機能は新しいバーに関する新鮮なデータを受け取ることができます。その後、アレイは自動的にクリアされます。


それだけです。

 
Реter Konow:

この関数は、OnTick またはタイマーから呼び出す必要があります。

何か小さな問題があるのかもしれませんが、まだ特定できていません。自分でコードを見て、エラーがないかどうか探してみてください。3コペックのようなシンプルなものです。しかも、その上にコメント付きで。

わからなければ聞けばいいのです。他にやることがあるんです。


プロフェッショナルアンサー

 
Nikolai Semko:

ユーモアがわからない。デバッガはロシア語を理解できないのか?それとも、そんな不具合があるのは私だけでしょうか?ラテン語の変数は見えるが、キリル文字の変数は見えない。

ピーターさん、では、デバッガはどのように使うのですか、それとも使わないのですか。

ニコライ 恥ずかしながら、私はデバッガの使い方がわからないんだ。使ったことがないんです。((
 
Galina Bobro:

プロフェッショナルレスポンス

そして、これはプロの荒らしです。
 
Реter Konow:

この関数は、OnTick またはタイマーから呼び出す必要があります。

何か小さな問題があるのかもしれませんが、まだ特定できていません。自分でコードを見て、エラーがないかどうか探してみてください。3コペックのようなシンプルな ものです。しかもコメント付きで。

わからなければ、私に聞いてください。他にやることがあるんだ。

複雑で捻じ曲がっていて、作ることができない。

申し訳ないのですが、これも全く読めません。

 
Vitaly Muzichenko:

複雑に絡み合っていて、混乱するほどです。

申し訳ないのですが、これも全く読めません。

という言葉を知っていますか?は拷問しない」?いいものだと思います。

 
Реter Konow:

という言葉を知っていますか?は拷問しない」?いいものだと思います。

そうなんです、そうやって結論ありきで課題に取り組んだんですね、まあ、あるいはあなたの解答を正しく理解することに失敗したんです。