MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 1315

 
Aleksey Mavrin:

MT4ではこのようなことがあり、口座変更後にOnInitがトリガーされた場合、口座番号が 環境に反映される時間がないのか、それとも他のバグなのか分かりませんが、タイマーしてみることにしました。

EAが動作しているターミナルをリロードするといろいろとおかしくなる

テスター用でないのであれば、初期化は最初のカチカチ音がしたときに行うのがよいでしょう。

 
Igor Makanu:

EAが動作している端末に負荷がかかると、いろいろなことがうまくいかなくなる

テスター用でないなら、初期化は最初のカチカチ 音がしたときに行うのがよいでしょう - そうすれば、99.9%は正しく初期化されます。

私もそう思いますが、おそらく0.1%はあると思います ))

 
Igor Makanu:

EAが動作している端末に負荷がかかると、いろいろなことがうまくいかなくなる

テスター用でないなら、最初のティックが来たときにすべてを初期化する方がよいでしょう - そうすれば99.9%すべてが正しく初期化されるでしょう

最初のティックが来たときにすべての初期化を行う方が良い - そうすれば、99.9%のものが正しく初期化される...いかがお過ごしでしょうか

 
ponochka:

すべての初期化は、最初のティックが来たときに行う方が良い - そうすれば、99.9%のものが正しく初期化される...いかがお過ごしでしょうか

void OnTick()
{
   static bool first_run = true;
   if(first_run)
   {
      MyOnInit();
      first_run = false;
   }
 
Igor Makanu:

マイタイプのスペーサーを避けて素直にできる

int OnInit()
  {
   ...
    account=AccountNumber();
   ...
  }

void OnTick()
{
  static bool first_run = true;
   if(first_run)
   {
     if(account==0) { // Если терминал не успел получить данные с сервера
      OnInit(); // пробуем снова всё инициализировать
      return;
     }
      first_run = false;
   }
 
Vitaly Muzichenko:

"My "の形でパディングを避けることで、直接的に行うことができます。

パディングではなく、構造化されたコード です。

あなたの例は、文字の余分なカップルを書いて、非体系的なコードを取得する方法怠惰の例です - ここでは、少なくとも2回は、それが必要になるという事実ではなく、EAを実行すると、OnInit()と呼ばれる、というか前に書かれたものを壊さない - あなたが見た質問のレベル、右か)))。

 
Igor Makanu:

それはパッドではなく、構造化されたコード です。

あなたの例は、文字の余分なカップルを書いて、構造化されていないコードを取得する方法怠惰の例です - ここでは、少なくとも2回は、それが必要になるという事実ではなく、前に書かれたものを壊すことはありません起動EAでOnInit()を呼び出します - あなたが見た質問のレベル、右か?)

first_run = true;

また、最初の初期化時にInitでチェックする必要があり、もしかしたら既に "0 "になっているかもしれません。

それ以外は賛成です。


追伸:サーバーに接続して実際のデータを取得することができれば、2回も呼び出されることはないのですが、それは納得できません。

 
Igor Makanu:

は動作しません。なぜなら、OnTick()はインジケータでは動作 しないことがドキュメントに書かれているからです!

 
ponochka:

は動作しません。ドキュメントによると、OnTick() はインジケータでは動作しないそうです!

まあ、これが限界なんですけどね :(

OnTick() を次のように置き換えます。

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[])
  {
そして、もう一つの支店に行く。
 
Vitaly Muzichenko:

まあ、それが限界なんですけどね :(

上に書いたのは、質問のレベルについてです ;)

そして、OnTick/OnInitで初期化の最適化を探し始めたとします。そこではすべてがシンプルで、見つけたコードを同じ友人と共有するために保護が必要です ))) 。)