このフォーラムに投稿された「mqlコード」の機能を作成することは可能ですか? - ページ 3

 
- zero devide fixing ゼロディバイドを完全に 修正する

そして、ゼロディバイドの見つけ方/直し方に関するこの投稿は、https://www.mql5.com/en/forum/general

 

ブローカーがもう1桁増やしたら?

https://www.mql5.com/en/forum/179191

 
 

よくあるエラー

こんにちは、皆さん。

私はEAをコーディングしているのですが、ある珍しいエラーに直面しました。そこで、MT4でのこのエラーについて、皆さんの中で同じような経験をお持ちの方がいらっしゃると思いますので、ご協力をお願いしたいと思います。

EA全体を読むことは現実的でないかもしれません、ソースコードは非常に大きいです。

コンパイルに成功した後、テスターでは、MT4ジャーナルは、次のエラーを伝えます。

時間: 2011.01.28 23:35:36

メッセージ2007.07.13 00:00 InterCandles EURUSDFXF,H4: スタックオーバーフローです。

スタックサイズを天に上げてもvia

#プロパティ スタックサイズ 167692160

でスタックサイズを上限まで上げても、16MBのメモリが確保され、エラーは解消されません。

どなたか、テスターで同じ「スタックオーバーフロー」の問題に直面された方、あるいは、問題がMT4内部にあるのか、EAにあるのか(配列、ネストした宣言、大きすぎるex4ファイルなどの可能性)を指摘できる方はいらっしゃいませんか?

お忙しいところ申し訳ありませんが、よろしくお願いいたします。

ありがとうございました。

 

問題の解決方法

さて、どなたかが返信される前に、解決策を見つけました。

この関数を 使う前に、添付のライブラリをリンクしたEAをテスターがロードした直後に、「スタックオーバーフロー」というメッセージがジャーナルに表示されます。

問題は添付ファイルの "power "という名前の関数で見つかりました。私の結論は以下の通りです。

1) 確かにその名前に問題はありません。EX4のシンボルテーブルにMQL関数の衝突はありません。他のラベルもテストしました。

2) 関数の制限に達していないようです。2)関数の制限に達していないようで、問題の関数を削除した後、さらに関数を追加してもエラーは発生しませんでした。MT4コンパイラでEX4ファイル内のリンクを解除するだけでなく、この関数を削除することで正常に動作する。

3) 再帰関数が多数回呼び出されて実行され、結果がスタックに残される。スタックは、引数「指数」が指数関数的に増加するにつれて、漸近的に線形に増加する。このとき、スタックは限界に達し、オーバーフローする可能性がある。スタックオーバーフローは、この関数の実行とは無関係に発生する。

したがって、MT4コンパイラは、EA実行中にスタックオーバーフローの可能性を回避するために、言語上許されない再帰の[いくつかのクラス]を検出する装置を持っているかもしれないと推測しています。

ファイル: