私たちのファンページに参加してください
正確なタイマー - MetaTrader 5のためのライブラリ
- ビュー:
- 1301
- 評価:
- パブリッシュ済み:
- 2018.05.07 07:18
- このコードに基づいたロボットまたはインジケーターが必要なら、フリーランスでご注文ください フリーランスに移動
MetaTrader 4/5の標準タイマーはシステムタイマーの呼び出しに基づいているため不正確なばあいがあります。これは次のシンプルなエキスパートアドバイザーを実行することで確認できます。
input int Timer = 1000; // タイマーがトリガーするためのミリ秒数 #define TOSTRING(A) #A + " = " + (string)(A) + " ms.\n" const bool Init = EventSetMillisecondTimer(Timer); // チャートのコメントとして現在のタイマーエラーとその平均値を表示する void OnTimer() { static ulong StartTime = 0; static int Count = 0; static int Sum = 0; if (StartTime) { const int RunTime = (int)(GetMicrosecondCount() - StartTime) / 1000; const int Error = RunTime - Timer * Count; Sum += Error; Comment(TOSTRING(Timer) + TimeToString(RunTime / 1000, TIME_SECONDS) + "\n" + TOSTRING(Error) + TOSTRING((double)Sum / Count)); } else StartTime = GetMicrosecondCount(); Count++; }
チャートのコメント(左上隅)には、タイマーの遅れがどのように拡大するかが示されています。
スクリーンショットでは、わずか1分で2番目のタイマーが1秒以上遅れることを示しています。さらに、この遅れは時間とともに増加します。
このライブラリを使用すると、エキスパートアドバイザー/指標の標準タイマーの精度を向上させることができます。この目的のために、コードの先頭に次の行を追加する必要があります。
#include <AccurateTimer.mqh> // 標準タイマーの精度を上げる
その後、次のコメントが表示されます。
10分の動作後、理想的な(理論上の)タイマーからの平均偏差は約1ミリ秒で、誤差は増大しません。
正確なタイマーを持つことは常に良いことですが、いくつかのタスクでは、それは必須です。例は取引サーバー時刻に同期した第2のタイマーです。
このクロスプラットフォームライブラリは標準タイマー(OnTimer)を使用するすべてのエキスパートアドバイザー/指標と互換性があります。ストラテジーテスターの実行速度には影響しません。
たったの1行で既存のプログラムと新しいプログラムの精度を向上させましょう。
MetaQuotes Ltdによってロシア語から翻訳されました。
元のコード: https://www.mql5.com/ru/code/19859
Chandes Quick Stick (Qstick)
Relative Momentum Index (RMI)Relative Momentum Index (RMI) はRSI指標の変種です。RMIは、RSIのように終値から終値の日数を両方向に数えるのではなく、X(XはRSIと異なり1に制限されていない)日前の終値に相対した終値までの日数を数えます。