OANDA × fx-on.com

OnTimerの精度・・・MT4(メタトレーダー4)のEA(自動売買)プログラミング講座

OnTimer()関数とは?

OnTimer()関数は決められた時間毎に動作する関数です。
最も短い単位では1ms毎に動作する設定ができます。

OnTimer()関数の検証

下記ソースコードを使用して1msでの動作検証をします。

void OnInit(){EventSetMillisecondTimer(1);}
void OnTimer(){Print(“Test”);}
void OnDeinit(const int reason){EventKillTimer();}

結果は以下のように15~16ms毎の動作でした。



EventSetMillisecondTimer(15)に変更し、15ms毎に動作をします。
15~16ms毎の動作するのですが時々30~31msに間隔が伸びます。
OnTimer()関数動作中に次の動作タイミングが来た時には処理が無視されます。
間隔の伸びた原因は前回の処理が終了する前に次の動作時間が来てしまい動作が1回キャンセルされたからです。



EventSetMillisecondTimer(100)に変更します。
結果はなんと109~110ms毎の動作です。
OnTimer()関数には9~10msの誤差があるのでしょうか



最後にEventSetMillisecondTimer(1000)で確認します。
1000~1001msで動作しています。



OnTime()関数使用時には、ある程度の誤差の許容もしくは1000ms程度の余裕が必要です。

筆者について
hayashi

林 貴晴(はやし たかはる)
株式会社ゴゴジャン(fx-on.com運営) メディア営業部 部長

・1981年 小学4年にBASICを習得
・1983年 機械語習得
米国系クインタイルズ・トランスナショナルジャパンにて
スイス系ノバルティスファーマでの業務に従事
英国系グラクソ・スミスクラインで7年の活動
・2015年7月よりEAの開発を開始
・2016年12月ゴゴジャンで業務開始
・2017年2月部長としての活動を始める
高速化の妨げになるコーディング規約に懐疑派。
カジノ式の巧みなロットコントロールや高速EAの開発には定評がある。
バックテストの結果のみでEAの性能をある程度分析できると評価され
fx-ONに記事を執筆。VB6によるシストレ開発に始まり千数百のEAを作成。
その経験からテクニカルが力を発揮するのは短期取引のオシレーターと信念を持つ。

この記事をシェアする


本ホームページに掲載されている事項は、投資判断の参考となる情報の提供を目的としたものであり、投資の勧誘を目的としたものではありません。投資方針、投資タイミング等は、ご自身の責任において判断してください。本サービスの情報に基づいて行った取引のいかなる損失についても、当社は一切の責を負いかねますのでご了承ください。また、当社は、当該情報の正確性および完全性を保証または約束するものでなく、今後、予告なしに内容を変更または廃止する場合があります。なお、当該情報の欠落・誤謬等につきましてもその責を負いかねますのでご了承ください。

ホーム » OANDA Education X fx-on.com » OnTimerの精度・・・MT4(メタトレーダー4)のEA(自動売買)プログラミング講座