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

 

問題が発生した、どこに入れたらいいのかわからない。

気になるコード部分はこちらです。

      Print("itogo do=",itogo);
      if(itogo>1000)
        {
         Print("itogo>1000 =",itogo);
         itogo=500;
         Print("vsego_if=",itogo);
        }
      Print("itogo posle=",itogo);
      Print("+-----------------------------------------------------------+");

まず、変数itogoの値を "itogo do "というテキストでアンプリントする必要があると書いてあります。

もし、itogo が1000以上であれば、itogo に "itogo>1000 " と表示します。

イトゴに500を割り当て

vsego_if="のテキストを含むitogoを印刷し、保護区域を出る。

itogoを "itogo posle="のテキストで表示します。

を描きます。

なぜ詳しく説明するのか?

というのは、条件がなければ2行で、条件があれば4行になることは明らかであろう。

条件が成立すると、変数の値が変化することが分かっています。

まず、itogo do 変数のアンプリントですが、ここでは2つのプリンターを表示しているので、条件は発動していませんが、変数の値は変化しています。

どうしてこんなことになるんだ?


以下は、フィールドの境界を越えたどこかの行の間には何も隠されていないことを示すコードのスクリーンショットです。

コードが全くクラッシュしない、問題なくコンパイルできるが、意図したとおりに動作することを拒否する。

変数はグローバルにintと宣言されており、コード自体は大きいのですが、プリントはコードのどこにもありません。

そして、デバッガで最も興味深いのは、正常に動作しますが、あなたが通常モードで実行すると、ここではそのようなシフトです。

と、これはプログラムのロジックによってプリンタボットではない私は何かが間違っていることを参照してください。

 

他の例ではまだ再現できていませんが、これで解決しそうです。

以前はDebugBreak() があり、デバッガを通してコードを実行していたが、後にDebugBreak()が削除され、すべてが再コンパイルされた。

が、どうやらMEはデバッガを使ったことを記憶しているようで、コンパイル後にデバッグをしないと正しく動作しないようです。

デバッガを実行すると、通常の起動時でもスクリプトは正常に動作します。

 
Urain:

他の例ではまだ再現できていませんが、これで解決しそうです。

以前はDebugBreak()があり、デバッガを通してコードを実行していたが、後にDebugBreak()が削除され、すべてが再コンパイルされた。

が、どうやらMEはそのデバッガーを使ったことを記憶しているようで、コンパイル後にそれを通さないと正しく動作しないようです。

デバッガで実行すると、通常動作時でもスクリプトは問題なく動作します。


それをリリースと呼ぶのか?

2010年のチャンピオンシップ の参加候補者がExpert Advisorを書き、デバッグを行ったが、デバッガーのものがコードに残っている。しかし、Expert Advisorはうまく機能します。しかし、それは "仕掛け "がある場合にのみ機能します。 しかし、参加者はそのことを知りません。

そこで、その参加者が自分のEAのソースコードをMetaQuotesに送ってChampionship 2010に参加してもらったところ、彼らはそれをコンパイルしただけで、もちろん「デバッガ的なもの」は一切なく、きれいなコードに仕上がりました。

チャンピオンシップ2010が開催されていますが、MetaQuotes Expert Advisorはなぜか自分のパソコンと同じように取引できません。参加者は戸惑い、さまざまな思いを抱く...。

 
Urain:

問題が発生した、どこに入れたらいいのかもわからない。

例としてこのようなコードを作ってみました(あなたの値を入れてみました)。

void Check(int itogo)
  {
   Print("itogo do=",itogo);
   if(itogo>1000)
     {
      Print("itogo>1000 =",itogo);
      itogo=500;
      Print("vsego_if=",itogo);
     }
   Print("itogo posle=",itogo);
   Print("+-----------------------------------------------------------+");  
  }
void OnStart()
  {
   Check(158);
   Check(179);
   Check(202);
   Check(222);
   Check(243);
   Check(261);
   Check(288);
   Check(301);
  }

問題なく使えました。

2010.07.08 07:00:22     size (EURUSD,D1)        +-----------------------------------------------------------+
2010.07.08 07:00:22     size (EURUSD,D1)        itogo posle=301
2010.07.08 07:00:22     size (EURUSD,D1)        itogo do=301
2010.07.08 07:00:22     size (EURUSD,D1)        +-----------------------------------------------------------+
2010.07.08 07:00:22     size (EURUSD,D1)        itogo posle=288
2010.07.08 07:00:22     size (EURUSD,D1)        itogo do=288
2010.07.08 07:00:22     size (EURUSD,D1)        +-----------------------------------------------------------+
2010.07.08 07:00:22     size (EURUSD,D1)        itogo posle=261
2010.07.08 07:00:22     size (EURUSD,D1)        itogo do=261
2010.07.08 07:00:22     size (EURUSD,D1)        +-----------------------------------------------------------+
2010.07.08 07:00:22     size (EURUSD,D1)        itogo posle=243
2010.07.08 07:00:22     size (EURUSD,D1)        itogo do=243
2010.07.08 07:00:22     size (EURUSD,D1)        +-----------------------------------------------------------+
2010.07.08 07:00:22     size (EURUSD,D1)        itogo posle=222
2010.07.08 07:00:22     size (EURUSD,D1)        itogo do=222
2010.07.08 07:00:22     size (EURUSD,D1)        +-----------------------------------------------------------+
2010.07.08 07:00:22     size (EURUSD,D1)        itogo posle=202
2010.07.08 07:00:22     size (EURUSD,D1)        itogo do=202
2010.07.08 07:00:22     size (EURUSD,D1)        +-----------------------------------------------------------+
2010.07.08 07:00:22     size (EURUSD,D1)        itogo posle=179
2010.07.08 07:00:22     size (EURUSD,D1)        itogo do=179
2010.07.08 07:00:22     size (EURUSD,D1)        +-----------------------------------------------------------+
2010.07.08 07:00:22     size (EURUSD,D1)        itogo posle=158
2010.07.08 07:00:22     size (EURUSD,D1)        itogo do=158

ご覧のように、変数値にエラーや不整合はありません。

おそらく、何度も再編集した後に再コンパイルするのを忘れて、古いバージョンを使ってしまったのでしょう。

必要なこと

  • コードを最初からコピーし、ターミナルを再起動(保証のため)して、確認する
  • エラーが残る場合は、servicedk(フォーラムでも可)を通じて、完全なコードを送ってください。
 
simpleton:

もうヒステリックになるのはやめてくれ。

この誤りが確認された場合、直ちに修正されます。ソフトウエアの開発は、エラーなくして進められない。

 
Renat:

もうヒステリックになるのはやめてくれ。

この誤りが確認された場合、直ちに修正されます。ソフトウエアの開発は、エラーなくして進められない。

Renat さん、「MQL5批判」等のトピックを立てることをお勧めします。また、他のトピック(スレッド)からのそのようなメッセージは、オフトップとしてすべて削除されるべきです。

そうすることで、評論家が表現する場ができ、糸が整うのです。

 

EAからのインジケータ呼び出し(値がインジケータと一致しない)に対するリクエスト#18261の 行方を知りたいです。

何らかの反応があればいいのですが...。

Способы вызова индикаторов в MQL5
Способы вызова индикаторов в MQL5
  • 2010.03.09
  • KlimMalgin
  • www.mql5.com
C появлением новой версии языка MQL, не только изменился подход к работе с индикаторами, но и появились новые способы создания индикаторов. Кроме того, появилась дополнительная гибкость при работе с индикаторными буферами - теперь вы можете самостоятельно указать нужное направление индексации и получать ровно столько значений индикатора, сколько вам требуется. В этой статье рассмотрены базовые методы вызова индикаторов и получения данных из индикаторных буферов.
 
ddd06:

EAからのインジケータ呼び出し(値がインジケータと一致しない)に対するリクエスト#18261の 行方を知りたいです。

何らかの反応があればいいのですが...。

お客様のリクエストにお応えしました。アドバイスがありました。

プロフィールが更新されない理由 - 私たちが解明します。

 
Renat:

このコードは例として作ったものです(あなたの値を入れてください)。

問題なく使えました。

ご覧のように、変数値にエラーや不整合はありません。

何度も再編集した後、再コンパイルするのを忘れて古いバージョンを使ってしまった可能性があります。

何をするのか

  • コードを一からコピーし直し、ターミナルを再起動(念のため)して
  • それでもまだエラーが発生する場合は、servicedk経由で(またはフォーラムで)完全なコードを送ってください - 我々は間違いなくチェックします

そして、ここに投稿する前に同じことをして、結果はあなたのようになりましたが、ここで最初にエラーが発生したシートのすべてで、クラッシュします。

私はデバッガで理由を繰り返し、その特定のワークシート上で再コンパイルを行い、デバッグの動作が間違って実行されていない場合は、デバッグで実行した後、すべてが正常です。デバッガがなぜこの特定のワークシートにフックしたのかわかりません。他のワークシートのコードコピーはうまくいくのですが、このワークシートはうまくいきません。

そのため、上記で「今のところエラーは再現できない(というか、再現してもローカライズされたプロジェクト内だけ)」と書きました。

もしかしたら、デバッガやMEに編集履歴を記憶する機能があるのかもしれませんし、事件の前に私が注意しなかった重大なミスが あったのかもしれません。

Документация по MQL5: Программы MQL5 / Ошибки выполнения
Документация по MQL5: Программы MQL5 / Ошибки выполнения
  • www.mql5.com
Программы MQL5 / Ошибки выполнения - Документация по MQL5
 
Urain:

そして、ここに投稿する前に同じことをしたのですが、結果はあなたと同じで、もともとエラーが発生していたシートでは、すべてがクラッシュしてしまいました。

デバッガーで理由を繰り返し、特定のシートで再コンパイルし、デバッグを実行しなければ正しく動作しませんが、デバッグ後はすべて正常に動作しています。デバッガがなぜこの特定のワークシートにフックしたのかわかりません。他のワークシートのコードコピーはうまくいくのですが、このワークシートはうまくいきません。

そのため、上記で「今のところエラーは再現できない(というか、再現してもローカライズされたプロジェクト内だけ)」と書きました。

もしかしたら、デバッガやMEに編集履歴を記憶する機能があるのかもしれないし、事件の前に重大なミスが あり、それを注意しなかったのかもしれない。

DebugBreak()がどこに設定されていたか覚えていますか?

今のところ再現できていません。

理由: