MT4で初めてのEA

MT4でEAを作ってみました。

将来的には、Pythonと連携してロジックはPython側で実装したいです。

MT4のMQL4のリファレンスとして参考にしているのが、
http://yukifx.web.fc2.com/sub/reference/00_root/cone/ref_root.html
です。

まずはテンプレート

MetaEditorでエキスパートアドバイザーを作ってみました。

作成時のオプションで選べるのは下記。

  • OnTimer 指定時間間隔ごとに動作
  • OnChartEvent マウスクリックなどのイベント
  • OnTester ストラテジーテスターでテストが終わったあとのイベント

ただし、OnTimerはローカルPC時刻の時刻を使って動作するので、バックテストでは使えない です。

上記を全部OFFで作ってできるイベントは、

  • OnInit 初期化
  • OnDeinit 終了
  • OnTick Tick更新

最初のサンプル

まず、Printでバーの数を数えるだけのEAを作ってみました。

//+------------------------------------------------------------------+
//|                                                       MyTest.mq4 |
//|                        Copyright 2018, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   Print("Takada OnInit");
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   Print("Takada OnDeinit");
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   printf( "%s[%d分足]のチャート上のバー数 = %d",Symbol(),Period(), iBars(Symbol(),Period()) );
  }
//+------------------------------------------------------------------+

おさらい

とりあえず、イベントを整理します。

  • OnInit 初期化
  • OnDeinit 終了
  • OnTick Tick更新
  • OnTimer 指定時間間隔ごとに動作
  • OnChartEvent マウスクリックなどのイベント

シェアする

  • このエントリーをはてなブックマークに追加

フォローする