取引速度を測定するEA

ご利用のブローカーの約定速度を調べるEAのサンプルです。

OnTimerを利用して10秒毎にエントリー、即決済を繰り返します。
OnTimerを利用して一定時間毎に処理を行う
エントリーから決済までにかかった時間を測定し、平均時間をチャートへ表示しています。時間の単位はミリ秒(1/1000秒)です。
何回テストするかは外部パラメータから設定可能です。デフォルトでは10回テストを行います。


#property copyright "Copyright 2016, gogojungle"
#property link "http://labo.fx-on.com"
#property version "1.00"
#property strict

extern int TestCount = 10; //テスト回数

uint total_time = 0;
int trade_count = 0;

int OnInit(){
EventSetTimer(10); //タイマーを10秒毎に設定
return(INIT_SUCCEEDED);
}

void OnDeinit(const int reason){
EventKillTimer();
Comment("");
}

void OnTick(){
// 結果をチャートへ表示
if(trade_count > 0){
Comment(
"Trade Count : ", trade_count, "
",
"Average : ", (total_time / trade_count), "msec");
}
}

void OnTimer(){
if(trade_count < TestCount){
uint start_time = GetTickCount();
int ticket = OrderSend(Symbol(), OP_BUY, 0.01, Ask, 0, 0, 0, NULL, 0);
if(ticket > 0){
if(OrderClose(ticket, 0.01, Bid, 100)){
total_time += GetTickCount() - start_time;
trade_count++;
}
}
}
}

エントリー・即決済のためほぼ確実にスプレッド分の損失が発生します。
リアル口座での発注を避けたい場合には、OnInit内にデモ口座のみで稼働する制限を加えて下さい。
各種利用制限の実装方法
TwitterでシェアFacebookでシェアGoogle+でシェアはてなブックマークに追加

TOPへ