EAとスクリプトの利点を組み合わせる

仲間のトレーダーやプログラマー、

私はこのフォーラムを私がここに投稿するアイデアを開発するための素晴らしい場所であることを知っているので。

EAの利点(MT4の再起動後やTimeFrameの変更後もチャートに固執するなど)をスクリプトの利点(特定の通貨ペアのブローカーへの接続やティック収入とは無関係に実行)と組み合わせたいと思います。

ですから私はEAの中で無限ループを使うことができると考えました。もちろんスクリプトはスクリプトのように動作します。

しかし、ティックが入っていなくても、ほとんどすべてのジョブを開始できるようにする必要があるので、すべてのコードをinit()に入れることが唯一の選択肢です。

これはMetaQuotesのアーキテクチャを悪用していると思いますか、それとも大丈夫ですか?

EAのinit()start()の違 いはどうですか?私が知っている唯一の関連事項は、 UninitializeReason()の状態です。

init()でコードを実行することに、もっと多くの違いや制限がありますか?

最も明白な違いと問題はあなたがコマンドでEAを正しく止めることができないということです – あなたはこれに対する解決策がありますか?

つまりinit()関数でdeinit()を手動で呼び出してから、存在しない関数をDLLから呼び出すと、EAのすべての関数が強制的に停止されますが、これは私が行った最も醜いことです。 MQL4では何年もの間。また、これはチャートからEAをデタッチしません – これはコマンドで可能ですか?

敬具

ダニエル


チャートデータ、市場価格などはモジュールの初期化の瞬間までに不完全になる可能性があるため、 init ()関数からstart()関数を呼び出すことや取引操作を実行することはお勧めできません。 init()関数とdeinit()関数はできるだけ早く動作を終了させる必要があります。 決してstart()関数が呼び出される前に本格的な動作を開始しようとしたときにループしません。


ありがとう…それはかなり一般的な答えです。 「チャートデータ、市場価格の完成など」のようなアクションがいつ行われるのか行った?あなたはinit()で言うが、まさに – init()の中の私自身のコードの後に?

MT4がこれらのタスクを終了するのを待つことはできますか、それともinit()は本当に終了しなければなりませんか?

この珍しいアプローチによって引き起こされたエラーについて詳しく教えてください。


私の理解するところでは、 init()のコードが実行される前に 、すべてのチャートのデータなどが完成しているからです。

たくさんのシンボルが入ったブローカーを試して、マーケットウォッチにそれらをロードしてください。すべてのデータが取得されるまで少し時間がかかります…しかし、私のinit-codeはこの短い "update freeze"の後に実行されます。


なぜあなたはいくつかのテストを実行し、あなたが得るものを見てみませんか?


確かに、それは私がやっていることです。これをして、私はまたMetaQuotesによってすぐに修正されて、そして構築で修理されるであろうバグを見つけました:)

優秀な。



2545: https://www.mql5.com/en/forum/109876


Originally posted 2019-08-03 07:26:37.

Translate »