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

 
Kirill Belousov:

というのは、関数を宣言するときにconstを考慮せずに、入力される引数の型によってオーバーライドをチェックすべきだということでしょうか?

それとも、ArrayMinimum システム関数 テンプレートにconstバリアントを追加する必要がありますか?

https://www.mql5.com/ru/docs/array/arrayminimum

int  ArrayMinimum( 
   const void&   array[],             // массив для поиска 
   int           start=0,             // с какого индекса начинаем поиск 
   int           count=WHOLE_ARRAY    // количество проверяемых 
   );
そして、Warningは不十分です。
Документация по MQL5: Операции с массивами / ArrayMinimum
Документация по MQL5: Операции с массивами / ArrayMinimum
  • www.mql5.com
//| Закрашивание основной части свечи                                | //
 
fxsaber:

https://www.mql5.com/ru/docs/array/arrayminimum

そして、Warningは不十分です。
警告は、どこから来たのか明らかです - 失策し、数値のために意図された操作にテキストの配列を許可した
 
Kirill Belousov:
その理由は明らかで、数値を意図した操作の前にテキスト配列を許可してしまったからです

対応するArrayMinimumを書いたので、瞬きもしなかった。しかし、それは許されることであり、自分の都合で呼ばれることはないのです。だからこそのこの論法。

void OnStart()
{
  string Str[];
  
  int i = ArrayMinimum(Str); // Warning: possible loss of data due to type conversion
  ArraySort(Str); // Warning: expression has no effect
  ArrayFill(Str, 0, 1, 0); // Error: 'Str' - type mismatch
}

赤いものがあるところには、必ず黄色いコンパイラーメッセージが あるはずです。赤は、やはり違いますね。

 
fxsaber:

対応するArrayMinimumを書いたので、瞬きもしなかった。しかし、それは許されることであり、自分の都合で呼ばれることはないのです。だからこそのこの論法。

赤いものがあるところには、必ず黄色いコンパイラーメッセージが あるはずです。赤は、やはり違いますね。

"blundered "はあなたの法廷にはありません :)

開発者は、システム関数であらゆる配列の操作のための関数名を固定していますが、これまでのところ、数値配列にしか対応していないのです。

しかし、すべてのケースに「スタブ」をつけているわけではないので、ユーザーが「オフトピック」なメッセージを受け取っていることが判明したのです。

これは訂正すべきです。100%同意します。

 

このような状況を経験された方はいらっしゃいますか(MT4)。

EAは多くのチャートで動作します(1つのテンプレートに基づいてインストールされています)。すべてをプロファイルに保存。VPSで24時間稼働 させっぱなし。

突然、いくつかのチャートで、設定ウィンドウを開くと、すべての文字列変数に空の値が含まれていることが判明しました。(偽物を含む。"---TOUT FILTER---"のような設定部分を示すのみ)

マーケットとは異なる作者の端末やEAがありました。

私自身は端末の再起動はしていません。意図的に設定を変更したわけではありません。

 


こんにちは、私のEAを助けていただけませんか?それをテストし始めると、「EA.mq4の配列が範囲外です」(149,49)というエラーが表示されます。この行にエラーがあると思います for (int li_8 = li_4; li_8 > 0; li_8--) aia_0[li_8] = aia_0[li_8 - 1]; EAのコードのこの部分を削除すると、テスターは動作しますが、EAが取引を開始することはありません。このコードをどのように変更すれば動作するようになるのか、アドバイスをお願いします。

 
Ivan Lysenkov:


こんにちは、私のEAを助けていただけませんか?それをテストし始めると、「EA.mq4の配列が範囲外です」(149,49)というエラーが表示されます。この行にエラーがあると思います for (int li_8 = li_4; li_8 > 0; li_8--) aia_0[li_8] = aia_0[li_8 - 1]; EAのコードのこの部分を削除すると、テスターは動作しますが、EAが取引を開始することはありません。このコードをどのように変更すれば動作するようになるのか、アドバイスをお願いします。

デコンパイルで作業しているのですか?そうなんですか?このリソースでは、盗用されたコードに関する作業や議論は一切禁止されています。

 
Kirill Belousov:

このような状況を経験された方はいらっしゃいますか(MT4)。

EAは多くのチャートで動作します(1つのテンプレートに基づいてインストールされています)。すべてをプロファイルに保存。VPSで24時間稼働させっぱなし。

突然、いくつかのチャートで、設定ウィンドウを開くと、すべての文字列変数に空の値が含まれていることが判明しました。(偽物を含む。"---TOUT FILTER---"のような設定部分を示すのみ)

マーケットとは異なる作者の端末やEAがありました。

私自身は端末の再起動はしていません。意図的に設定を変更したわけではありません。

遭遇した時にテンプレートを保存しておけばよかった。

 
fxsaber:

対立した時にテンプレートを残しておくべきだった。

理解できない。

チャートにEAを貼り付けただけです。必要な設定を行い、テンプレートとして保存しています。

どういうことかというと、すべてのチャートが同じ設定になっていたのです。中には、後から設定で文字列変数をゼロにしたものもあります。

偶然発見したのですが、トレードのコメントが表示されなくなりました。


4月にSDに応募したことがあります。しかし、私の依頼で今日わかったことですが、再現できないとのことでした。

それ以来、externの文字列パラメータの信頼性に自信が持てなくなった。

テンプレートを適用した直後はこんな感じです。


不具合が発生した後の様子は以下の通りです。


以下は、不具合のあるEAと不具合のないチャートのプログラムでの比較です(どちらも同じテンプレートで開かれています)。


 
Kirill Belousov:

理解できない。

不具合後に保存されたテンプレートが表示されるのが面白かったです。最後のスクリーンショットに映っていましたね。

実行中のすべてのEAの入力パラメータを読み取り、入力パラメータが変更されたときにシグナルを出すEAを作成します。そうすれば、追跡が可能になります。