読者です 読者をやめる 読者になる 読者になる

プログラミングでアイデアを具現化したい

あらゆるものを具現化するためにプログラミングを始めました。主にC#

MT5のバックテストは複数通貨の価格情報を参照できる

MT4では対象通貨の価格を使ったバックテストしか出来ませんでしたが、
MT5では他通貨の価格も参照することができるようです。
※やり方はあるようですし、そもそも今は対応している?調べてませんw

私の考えているロジックは単独通貨だけではなく複数の通貨が絡むので
これに対応してくれていると、ロジック検証が非常に楽になります。
SQLServerでバックテストしようとすると、都度シグナルに合わせて
テーブルを再作成する必要がありますし、想像すると手順が結構面倒そうですが
これなら、比較的手順は簡単になります。

//+------------------------------------------------------------------+
//|                                                  MT5_EA_Test.mq5 |
//|                                         Copyright 2016, tos5511. |
//|                                   http://tos5511.hatenablog.com/ |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, tos5511."
#property link      "http://tos5511.hatenablog.com/"
#property version   "1.00"
//--- input parameters
MqlTick last_tick;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   double bid = SymbolInfoDouble(Symbol(), SYMBOL_ASK);
   double ask = SymbolInfoDouble(Symbol(), SYMBOL_BID);
   printf("USDJPY ,"+DoubleToString(bid,3)+" , "+DoubleToString(ask,3));
   bid = SymbolInfoDouble("EURJPY", SYMBOL_ASK);
   ask = SymbolInfoDouble("EURJPY", SYMBOL_BID);
   printf("EURJPY ,"+DoubleToString(bid,3)+" , "+DoubleToString(ask,3));
   bid = SymbolInfoDouble("EURUSD", SYMBOL_ASK);
   ask = SymbolInfoDouble("EURUSD", SYMBOL_BID);
   printf("EURUSD ,"+DoubleToString(bid,5)+" , "+DoubleToString(ask,5));
   return;
  }
//+------------------------------------------------------------------+


f:id:tos5511:20160503202809p:plain

ちゃんとUSDJPY、EURJPY、EURUSD、3通貨の価格情報を取得できていますね。
※bidとaskが逆になってますが、とりあえず気にしないでください笑