取引速度を測定するEA

MetaTrader 4
GogoJungle
2019/08/02 21:20
144

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

OnTimerを利用して10秒毎にエントリー、即決済を繰り返します。
< a href=“https://labo.gogojungle.co.jp/articles/62”>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内にデモ口座のみで稼働する制限を加えて下さい。

各種利用制限の実装方法

コメント

関連項目

検索結果がありません。