私たちのファンページに参加してください
TesterBenchmark - MetaTrader 5のためのライブラリ
- ビュー:
- 809
- 評価:
- パブリッシュ済み:
- 2017.11.14 08:15
- このコードに基づいたロボットまたはインジケーターが必要なら、フリーランスでご注文ください フリーランスに移動
コードの異なるバージョンを記述する場合、テスターでのエキスパートアドバイザーの全体的なパフォーマンスへの影響を測定する必要があります。これにより、コードの他のプログラムと比較した最適さを理解し、エキスパートアドバイザーをさらに迅速に最適化するための前提条件が提供されます。このアプローチにより、EAパフォーマンスの「ボトルネック」を特定することが可能です。
MetaTrader 5の履歴データによるエキスパートアドバイザープロファイリング機能は優れたものです。しかし、それにはいくつかの欠点があります。ビジュアルモードでは遅く、最終結果は相対的な単位で表示されます。つまり、絶対的にパフォーマンスを比較することはできません。
また、MetaTrader 5では、視覚化を伴わない1回の実行さえもがEAがローカルエージェント上で実行されます。場合によっては、テスト時間の大部分は、ターミナルを対応するローカルエージェントと同期させるために費やされることになります。したがって、次の行からの時間データ
Core 1 EURUSD,M1: 3387955 ticks, 52608 bars generated. Environment synchronized in 0:00:01.389. Test passed in 0:00:09.422 (including ticks preprocessing 0:00:00.187). Core 1 EURUSD,M1: total time from login to stop testing 0:00:10.811 (including 0:00:01.389 for history data synchronization)
はEA /テスターのパフォーマンスをよく表すものではなく、異なる実行において多くの点で異なる可能性があります。
ストラテジーテスターが作動するのは、最初のティックイベント(最初のOnTick)からテストインターバルの最後のティックまでの時間です。この間隔の直後に、テスターはOnTesterを呼び出します(OnDeinit が続く)。
ストラテジーテスターでのテスト実行の正味時間
ライブラリはEAコードに1行で追加することができます。
#include <TesterBenchmark.mqh>
テスターのネットパフォーマンスに関するデータのログを取得することができます。
Core 1 2017.07.21 23:59:59 Interval = 8.842 s., Count = 3387955, 383166.1 unit/sec Core 1 EURUSD,M1: 3387955 ticks, 52608 bars generated. Environment synchronized in 0:00:01.389. Test passed in 0:00:09.422 (including ticks preprocessing 0:00:00.187). Core 1 EURUSD,M1: total time from login to stop testing 0:00:10.811 (including 0:00:01.389 for history data synchronization)
さらに、テスターで単一実行から最適化モードに切り替えると(MetaTrader 5の最適化範囲を指定する必要はない)、ライブラリは指定された回数だけEAを実行し、テスターのパフォーマンス統計を生成します。 テスターの純粋なパフォーマンスはOnTickプロファイリングそれに基づいて理解することができます。
------ OnTesterInit i = 0 Pass = 0 OnTester = 8.687 s.: Count = 3387955, 390002.9 unit/sec, Agent = C:\Program Files\Alpari Limited MT5\Tester\Agent-127.0.0.1-3000 i = 1 Pass = 1 OnTester = 8.702 s.: Count = 3387955, 389330.6 unit/sec, Agent = C:\Program Files\Alpari Limited MT5\Tester\Agent-127.0.0.1-3000 iMin = 0 Results[iMin] = 8.687s. iMax = 1 Results[iMax] = 8.702s. Amount = 2 Mean = 8.694 s. - 83.89% OnTesterDeinit ------ Interval = 20.729 s., Count = 0, 0.0 unit/sec
この場合、同じローカルエージェントに2つの開始があったことは明らかです。最小、最大、および平均計算時間が表示されます。最適化の合計時間(間隔)も表示されます。パーセント特性(83.89%)は、テスターの純粋な操作(エージェントとの同期に必要な時間を考慮した)によって合計オプティマイザ時間が平均でどれくらいかかったかを示します。
OnTickプロファイリング
もう1行追加することで
#define PROFILER_OnTick // OnTickのすべての実行のネット時間を測定し、全体の動作をわずかに遅くする可能性がある
#include <TesterBenchmark.mqh>
取引環境やパフォーマンスなどをシミュレートするのにかかる時間は考慮しない、OnTickの実行に費やされた時間がわかります。
------ OnTesterInit i = 0 Pass = 0 OnTester = 9.540 s.: OnTick Profiler: Count = 3387955, Interval = 8.079 s., 419359.4 unit/sec , Agent = C:\Program Files\Alpari Limited MT5\Tester\Agent-127.0.0.1-3000 i = 1 Pass = 1 OnTester = 9.471 s.: OnTick Profiler: Count = 3387955, Interval = 8.029 s., 421956.9 unit/sec , Agent = C:\Program Files\Alpari Limited MT5\Tester\Agent-127.0.0.1-3000 iMin = 1 Results[iMin] = 9.471s. iMax = 0 Results[iMax] = 9.540s. Amount = 2 Mean = 9.505 s. - 98.86% OnTesterDeinit ------ Interval = 19.231 s., Count = 0, 0.0 unit/sec
例
ライブラリにはヘッダー付きのEAの例(MQL4/5) が用意されており、ライブラリの実用的なアプリケーションの1つを理解するのに役立ちます。
#include <TesterBenchmark.mqh> // 両方のインクルード行がコメントになっている場合、取引ロジックは純粋なMQL5 - trade APIで書かれている // それ以外の場合は、コメントでない行は使用されているAPIラッパーである // TesterBenchは、3つのAPIのそれぞれのパフォーマンスを示す // #include <MT4Orders.mqh> // https://www.mql5.com/en/code/16006 // #include <Trade\Trade.mqh>
MetaQuotes Ltdによってロシア語から翻訳されました。
元のコード: https://www.mql5.com/ru/code/18804
このスクリプトは、現在のチャート設定を指定された名前のテンプレートに保存します。
ReportこのMetaTrader 4/5ライブラリは取引履歴に基づいたレポートの生成を可能にします。
この指標は4つの移動平均線に基づいてトレンドの強さと方向を表示します。
Mikahekin_HTF入力パラメータでの時間枠選択オプションを含むMikahekin指標