MG4スクリプトとアドバイザーをサポートするテスター - ページ 11

 
Renat:

CopyXXXはiClose/iOpen/iXXXX関数と同じ速度 です。iXXXだけが一度に1つの要素を返し、CopyXXXは多数の要素を返すので、より効率的で高速 です。

おそらく、MT4がティックハンドラーを起動する前に、ローカルチャートのすべての履歴を ローカル(キャッシュ)EAのマーケット環境に強制的にコピー することを考慮していないのでしょう。そして、この情報を経済的に更新する方法があるのですが、これには非常にコストがかかります。MQL4の特殊関数RefreshRatesは、ローカルチャートのキャッシュとヒストリーを強制的にリフレッシュさせます。

CopyXXX を呼び出すと、以前に要求されたデータをキャッシュするための非常に精密で正確なメカニズムによって、より効率的になります。例えば、ディープヒストリーを刻々と再要求する必要はなく、ローカルに保存/書き出し、できるだけ早くアクセスできるようにする。

昔の「ダイレクト」(実際にはダイレクトアクセスではない)アクセスOpen/High/Low/Closeとローカル配列double local[xxxx]を扱う方法を比較すると、後者の方が何倍も速い。したがって、ローカルに自分自身にコピーし、繰り返しクエリされるデータにローカルで高速にアクセスできるようにするのがよいでしょう。

ティックハンドラーとは、OnTickなどのカスタム関数を意味するのでしょうか?表示されるデータだけでなく、履歴全体をコピーしたい理由は何ですか?
 
Vinin:
これは指標にはならない。
ここで、OOPインジケーターのリンクをあげました。
 
C-4:
ティックハンドラーとは、OnTickなどのカスタム関数を意味するのでしょうか?なぜ、出現したデータだけでなく、履歴全体をコピーする必要があるのでしょうか?

Yes, OnTick/OnStart.

MT4でローカルチャートに直接アクセスすることは、実際には直接的ではないことを、多くの人が知ったことと受け止めています。メモリ消費量も同期損失も2倍になる。

幸いなことに、キャッシュリフレッシュは経済的ですが、それでもシステムコストが発生します。MT5では、ローカルキャッシュを完全に削除し、OnTick/OnStartを呼び出す前のシステムオーバーヘッドを少なくしています。

 
Renat:

Yes, OnTick/OnStart.

MT4でローカルチャートに直接アクセスすることは、実際には直接的ではないことを、多くの人が知ったことと受け止めています。メモリ消費量も同期ロスも2倍だ。

幸いなことに、キャッシュの更新は控えめにしていますが、それでもシステムコストは出てしまいます。MT5では、ローカルキャッシュを完全に削除し、OnTick/OnStartコール前のシステムオーバーヘッドを少なくしました。

1年前は、MT4/MT5テスターの性能について議論して いました。MT4の標準EA「MovingAverage」は、同様のテスト条件で1分間に1回実行したのに対し、MT5では2分34秒で実行しました。なぜ時間軸が違うのですか?まず思い浮かぶのは、MT5の「モジュール性」と、MT5が稼働中に引き出さなければならない大量の取引環境だ。
 
C-4:
1年前、MT4/MT5のテスターの性能について説明しました。 MT4の標準EA「MovingAverage」は、同様のテスト条件で1分間に1回実行しましたが、MT5では2分34秒かかりました。なぜ時間軸が違うのですか?まず思い浮かぶのは、MT5の「モジュール性」と、MT5が稼働中に引き出さなければならない大量の取引環境です。

多通貨実行に合わせたモジュール化、外部プロセス、環境のより良いモデリング。