トップ  >  リファレンス  >  MQL4プログラム  >  ストラテジーテスターでのプログラム処理
スポンサーリンク
検索
カスタム検索
リファレンスツリー
オススメ
ストラテジーテスターでのプログラム処理


MT4のストラテジーテスターは、過去のデータでEAのパフォーマンスをテストする事が出来ます。




ストラテジーテスターはプログラムのテストと最適化の機能を備えていますが、
以下内容について考慮して、取引ロボットにテストさせる必要があります。

 ・ストラテジーテスターの関数制限
 ・クライアントターミナルのグローバル変数
 ・ストラテジーテスターの時間シミュレーション
 ・テスト中のグラフィカルオブジェクト
 ・テスト中のイベントハンドラ





ストラテジーテスターの関数制限


ストラテジーテスターでいくつか関数の処理制限があります。
関数名 制限
Sleep() ストラテジーテスターではSleep()関数による遅延は発生しません
Print()
PrintFormat()
パフォーマンス向上の為、取引ロボットが最適化する際にPrint()とPrintFormat()関数は処理されません
Alert()
MessageBox()
PlaySound()
SendFTP()
SendMail()
SendNotification()
WebRequest()
外部との対話目的の為に設計された関数は、ストラテジーテスターで実行されません。
OrderSend()
OrderModify()
OrderDelete()
OrderClose()
OrderCloseBy()
テスト対象の通貨ペアのみトレード処理が出来ます。
テスト対象以外の通貨ペアを指定した場合は処理されません。



管理人の勝手なコメント:
上記一覧にはありませんが、ストラテジーテスター動作中にファイル関数を使用しましたが、
関数の戻り値は正常になりますが実際にファイル操作は行われませんでした。






クライアントターミナルのグローバル変数


テスターはクライアントターミナルの一部なので、共通のグローバル変数を共有します。

その為、クライアントターミナルグローバル変数と名前が重複しないようにしなければなりません。
重複させた場合、プログラムの誤動作やテスト結果に影響が出る可能性があります。




ストラテジーテスターの時間シミュレーション


テストする際に、時間は過去のデータに応じてシミュレータされます。

PCのローカル時刻を取得するTimeLocal()関数、
取引サーバーの設定されたタイムゾーンの時刻を取得するTimeCurrent()関数
取引サーバーの時刻をGMT時間で取得するTimeGMT()関数、
これらの関数は、テスト中には同じ時間になります。

テスター内ではローカル時刻・サーバー時刻・GMT時刻に差はありません。
テスターはサーバーへの接続が失われたケースを意図的に提供しています。

サーバーとの接続有無に関わらず、テスト結果は常に同じになります。
サーバー時刻に関する情報がローカルデータに格納されていない場合、サーバーから取得します。





テスト中のグラフィカルオブジェクト


ヴィジュアルモードがONの場合、実際にチャートを表示してEAをテストします。
ヴィジュアルモードがOFFの場合、表示されない仮想チャートでEAテストします。

前者の場合、いくつか特殊性が有ります。
最適中においてグラフィカルオブジェクトはサポートされていません。





テスト中のイベントハンドラ


ストラテジーテスターでは以下のイベントが処理されます。
関数名 テスターでの動作
OnInit() EAの実行前に1回呼ばれます
OnDeInit() EAの終了時に1回呼ばれます
OnTick() 新しいtick受信をシミュレート
OnTester() テスト完了後にOnDeInit()関数が呼ばれる前に呼ばれます
入力パラメータを最適化する際に、この関数によって返された値をカスタム基準として使用されます。
OnTimer() ストラテジーテスターで処理されません
OnChartEvent() ストラテジーテスターで処理されません



スポンサーリンク



Copyright ©2015 MT4でEA自作しちゃお〜 All Rights Reserved.


Top

inserted by FC2 system