MT4がハングアップし、start()を再度呼び出さない - ページ 3

 
mt4forum:

いいえ、sleep()やmessagebox()は使っていませんが、MyInit()という関数で多くの作業を行い、5秒程度で終了します。

ログファイルを見ればわかると思います。

2013.11.15 14:35:32 テストは1180990を減らしました。USDJPY M15 DebugStart: InitialHistoryGapClosed
2013.11.15 14:35:32 テストは1180990を削減しました。USDJPY M15 DebugMyInit開始: <---------- 作業開始
2013.11.15 14:35:32 テストは、1180990を削減しました。USDJPY M15 DebugMyInit InitialMyInitCalls:0 IndexCount:CreateHistory()で1件
2013.11.15 14:35:33 テストは、1180990を削減しました。USDJPY M15 DebugMyInit InitialMyInitCalls:0 IndexCount:CreateHistory()実行時:2
2013.11.15 14:35:34 Test reduced 1180990:USDJPY M15 DebugMyInit InitialMyInitCalls:0 IndexCount:CreateHistory()実行時:3
2013.11.15 14:35:35 テストは、1180990を削減しました。USDJPY M15 DebugMyInit InitialMyInitCalls:0 IndexCount:CreateHistory()実行時:4
2013.11.15 14:35:35 テストは、1180990を減らしました。USDJPY M15 DebugMyInit InitialMyInitCalls:0 IndexCount:CreateHistory()実行時:5
2013.11.15 14:35:36 テストは、1180990を削減しました。USDJPY M15 DebugMyInit InitialMyInitCalls:0 IndexCount:CreateHistory()実行時:6
2013.11.15 14:35:37 テストは、1180990を削減しました。USDJPY M15 DebugMyInit InitialMyInitCalls:0 IndexCount:CreateHistory()で7件
2013.11.15 14:35:37 テストは、1180990を削減しました。USDJPY M15 DebugMyInit return InitialMyInitCalls:0 IndexCount:8 <---------- 作業終了
2013.11.15 14:35:37 テストは、1180990を削減しました。USDJPY M15 DebugStart: InitialGapFoundの最後のリターン

しかし、なぜそれでMT4がその後ループしてしまうのでしょうか?

そうではなく、インターフェイスのスレッドを台無しにするとMT4がロックされる ... ... EAでやっていることができないのですか?
 
皆さんは無限ループについて話しますが、CreateHistory() が何をするのか誰も知りたがらないでしょう。ログ出力によると、それは最後のstart()実行時にのみ表示されます。
 
Ovo:
皆さんは無限ループについて話しますが、CreateHistory() が何をするのか誰も知りたがらないでしょう。ログ出力によると、それは最後のstart()実行時にのみ表示さ れます。
私は、それがある種の履歴保存機能 であると仮定しました ... もし、OPがそれを示したいならば、彼はそうするでしょう ... ...私は、彼がそうしないと仮定し、彼がそうするとしても、それはおそらく私たちが彼を助けるのを助けるつもりはないでしょう。 一番手っ取り早いのは、彼が自分のコードを投稿して、誰かがそれを新鮮な目で見ることができるようにすることです。. .
 
RaptorUK:
私は、それがある種の履歴保存機能であると仮定しました ... ... もしOPがそれを見せたいと思えば、彼はそうするでしょう ... ...私は彼がそうしないと仮定して、彼がそうするとしても、それはおそらく私たちが彼を助けるのを助けるつもりはないでしょう。 一番手っ取り早いのは、彼が自分のコードを投稿して、誰かがそれを新鮮な目で見ることができるようにすることです。. .

問題ありません。私は、無限ループがターミナルがハングする唯一の理由ではないことを指摘したかったのです。特に、スクリプトがいくつかのファイルを変更する場合。
 

mt4forum 2013.11.16 11:14


しかし、なぜその後にMT4がループするようになるのでしょうか?

ログファイルから判断すると、すでにループしていたようです。8になった後、何が起こりましたか? ループに入っていたのなら、どうしてループを抜けたとわかるのですか?init()に戻ったのでしょうか?

Print("Start Started"); を追加しましたが、ログファイルには表示されなかったので、start()関数に入ることはなかったのでしょう。ということは、init()関数を終了していないことになります。もっとPrint()ステートメントを追加して、絞り込んでください。

 

まず、大きな関心を寄せていただき、ありがとうございます。また、回答が遅くなり申し訳ありません。

以下のエントリで、さまざまなコメントに対応させていただきます。

 
RaptorUK:
そうではなく、インターフェイスのスレッドをしくじるとMT4がロックしてしまいます ... ... EAでやっていることができないのでしょうか?

EAとしてプログラムを走らせています。同様にハングアップするか、MT4がクラッシュしてしまいます。

 
mt4forum:

EAとしてプログラムを走らせています。同様にハングアップするか、MT4がクラッシュしてしまいます。

私はあなたが誰かを助けるために多くのチャンスに立つことができるようにあなたのコードを投稿する必要があると思います... ...。
 
Ovo:
皆さんは無限ループについて話しますが、CreateHistory() が何をするのか誰も知りたがらないのです。ログ出力によると、それは最後のstart()実行にのみ表示さ れます。

CreateHistory() は、多くの作業を行います。通貨ペアと タイムフレームをループし、オフラインのチャートを生成しています。

しかし、ログファイルを見ると、正しく終了していることがわかります。

 
SDC:

ログファイルから判断すると、すでにループしていたようです。8に到達した後、何が起こりましたか? それはループしていましたか?もしそうなら、どうしてそのループを抜けたと分かりますか?init()に戻ったのでしょうか?

Print("Start Started"); を追加しましたが、ログファイルには表示されなかったので、start()関数に入ることはなかったのでしょう。ということは、init()関数を終了していないことになります。さらにPrint()ステートメントを追加して、絞り込んでください。

8になった後、init()に正しく戻っています。

ログファイルの次の行がそれを示しています。 "DebugMyInit return ..." は、MyInit()の最後のデバッグ行です。

2013.11.15 12:33:22 Test reduced 395052: USDJPY M15 DebugMyInit return InitialMyInitCalls:0 IndexCount:8

ログファイルを生成するために、自作のprint関数を使って います。Print("Start Started") は、そのログファイルにプリントされません。

エントリーは

2013.11.15 12:33:22 Test reduced 395052: USDJPY M15 DebugStart: last return in InitialGapFound というエントリーがあります。

は、init()関数を終了したことを示しています。

もし私が、私のデバッグ関数がすべての情報を正しく記録していると信じることができるなら、ログファイルは、start()の最後の実行の後に、それを教えてくれるでしょう。

start()は終了し、再び呼び出されることはありません。これが問題なのです。