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

 
fxsaber:
リソースはこのサイズに限られるのでしょうか?

だから、送信するデータを凝縮することに意味があるのです。

 
fxsaber:

その意味では、MT4はMT5よりずっと賢明でした。プログラムのクラッシュがなく、LastErrorを分析することができたからです。

第一に、回復不可能なクリティカル・エラーの後にプログラムを実行し 続けることは、知恵ではなく、愚かさである。

2つ目:MetaTrader 4 765x32で実行してもPrintError()にならない。

3つ目:strictを外すと到達しているが、GetLastError()が0を返すので、何を解析すればいいのか不明である

 
fxsaber:
EAの停止をユーザーに通知する方法は?

この意味で、MT4はMT5よりずっと賢明でした。プログラムのクラッシュはなく、LastErrorを分析することができました。

また、配列にアクセスする場合、アクセスインデックスを確認するのが筋ではないでしょうか?

 
A100:

第一に、回復不可能なクリティカル・エラーが発生した後にプログラムを実行し 続けることは、知恵ではなく愚かさである。

次に、MetaTrader 4 765x32で実行した 後、PrintError()は決して出てきません。

3つ目は、strictを外すと0を返しますが、GetLastError()なので、何を解析すればいいのかが不明です。

MT4がMT5より優れていることを示すタスクはなかった。現実的な問題を解決する必要があったのです。

トレーディング、自動売買システム、ストラテジーテストに関するフォーラム

ライブラリ:HistoryTicks

fxsaber さん 2018.12.10 13:55

配列が範囲 外であるためにEAが停止したというメッセージを取得する(EA作者の責任ではない)。例えば、メモリ不足などの障害によるもの。数時間後に偶然に気づくのではなく、EAが異常停止 したことをすぐに知ることができるということです。


Expert Advisor が停止したときは不愉快だが、何も報告されない。

ゲオルギー・メルツ

また、配列にアクセスする場合、アクセスインデックスを確認するのが論理的ではありませんか?

論理的ではないのです。

 
Nikolai Semko:

だから、伝送されるデータを凝縮することは、より合理的なのです。

確認したところ、60Mbは簡単に(MT4/5)Resourceに書き込めました。だから、もし限界があるとすれば、その方が高い。

 

小さな点ですが、やはり。

ストレージに送信するとき - 最初のパネル "修正" - 問題なく動作し、第二、確認、私の最初のケースでは、OKキーを待たずに、すぐに出て、第二に - それは、送信されたすべてのファイルが表示されません。しかし、確認したところ、ファイルは正常に送信されています。

私だけでしょうか?

送信後、送信したファイルのリストが表示され、すべてがうまくいったことが確認されるため、正しいようです。

 
fxsaber:

意味がない。

その理由は?

論理的に考えて、配列の限界を 超えたインデックスが出現するはずがないところ、インデックスを確認する必要はないように思います。また、この場合でも、念のためASSERTを使用する必要があります。

また、インデックスが外部パラメータ、引用符、ユーザーのアクションに関連する以前のアクションに依存するような場所では、インデックス参照のチェックを義務付けるべきである。

そうではない、とお考えなのでしょうか?

 
Georgiy Merts:

その理由は?

プログラムのロジック上、インデックスが配列の 外に出ることはありえないので、インデックスをチェックする必要はないように思います。

私もそう思います。

また、この場合でも、念のためASSERTを使用する必要があります。

コードの可読性が大きく損なわれるため、私は反対です。

インデックスが外部パラメータ、引用符、ユーザーアクションに関する以前のアクションに依存する箇所では、ハンドリングインデックスのチェックを義務付けなければならない。

ここでいう外部パラメータというのがよくわからないのですが。ArrayResizeやArrayCopyが正常に終了したか、つまらないメモリ不足でないかをチェックするたびに、ASSERTでコードを肥大化させてしまい、これは本当に困ったものです。チェックしないと、Expert Advisorが気づかないうちに停止してしまうのです。今のところ、ArrayResizeとArrayCopyを置き換えるという解決策しか見つかっていません。

 
Slava:

邪魔なのは誰だ?

ChartSaveTemplate(chart_id,"\\Files\\MyPreferredTemplates\\cewl.tpl");

この関数は、フォルダを作成 するのではなく、フォルダが既に存在する場合にのみテンプレートを書き込む ....フォルダが存在しない場合、エラー4112

だから、フォルダーはあらかじめ用意しておかなければならない...。

面白いことに、FileOpen関数ではテンプレートフォルダにフォルダを作成できず、ChartSaveTemplate関数ではディレクトリを作成できない...。

つまり、テンプレートをサブフォルダーに保存したいのであれば、手動でフォルダーを作ればいいのですが...。

 

メモリ不足

GlobalVariablesを 検索する場合

が発生することがあるのでしょうか?