MT4で稼働する自動売買プログラム(Expert Adviser)を開発しよう①

 

kapipara180です。

はじめに

仮想通貨、法定通貨を問わずFXの自動売買しようという場合、選択肢は大きく以下の2つになります。

  1. 高性能汎用取引ツール(MT4)で動かせるプログラム(Expert Advisor(以下EA))を開発する
  2. 取引所APIを使用したプログラムを開発する

EAは一度開発できるようになるとMT4が使用できる取引所であれば同じソースコードを使用できることから、
基本的に自動売買を行う際の第一候補はEAだと考えています。EAが使用できない場合は、仕方ないので取引所ごとのAPIを使用したプログラムを組みます。

 

 

EAとAPIを使用したプログラム(以下APIプログラム)の比較

EAで開発する場合とAPIプログラムの開発はかなり性質が異なりますので、まずは大枠の性質の違いをご説明します。

EAとAPIプログラムの比較

 使用言語繰り返し制御チャート情報管理インジケーターを
使用したロジック
バックテスト
EAMQL5不要(tickが動くごとに
稼働する
不要(自動管理されている
リスト使用
簡単(ほとんどのインジを
呼び出して使用可能
MT4で実施可能
APIプログラム自由(主にpython)必要必要自分でコーディングが
必要
自作が必要

上記の表の通り、EAは専用のプログラミング言語であるMQL5を使用します。この言語は自動売買とインジケーターの自作専用の言語なので、自動売買に必要な機能は
一通りすべて揃っています。テクニカル指標を使用した自動売買等はすぐに作成することができます。これがMT4を優先して使用することをお勧めする理由です。コーディングのしやすさに加え、表示しているチャートの情報を使用したバックテストと、テスト結果の分析もMT4に標準装備されています。(pine scriptに似ていますね)

これに対し、APIプログラムは、処理のトリガーやバックテスト、チャートの終値の取得やテクニカル指標の計算など、すべてを自分でコーディングする必要があります。
コーディング慣れしている人や、ストラテジーを考えなれている人ならなんとかなりますが、そうでない人にはとっつきにくいと思います。
ただし、全てをコーディングしないといけないということは、全てをコーディングできるということなので、プログラムが得意な人にとっては、こちらの方が自由度が高くてやりやすいかもしれません。

 

EAのコーディングの基本① – テンプレートファイルの作成 –

APIプログラムについてはnoteにソースコード付きの記事が大量にありますので、そちらを参照してください。bitflyert向けAPIプログラムの雛形

ここではEAのコーディングの基本についてご説明します。
実際のプログラムを書きながらご説明しますので、MT4が手元にない方はOANDAの口座を開設し、MT4を入手してください。(OANDAをお勧めする理由はこちら)

では、自動売買のすべての基本である各種情報の取得を行ってみましょう。
MT4を起動し、メインメニューの中から「メタクォーツ言語エディタ」を選択してください。

次に、開いたエディタ(これがEAを作る際のIDEになります)のExpertsを右クリックし、New Fileを選択してファイルを作成します。

ウィザードが開くので、Expert Advisorを選択てください。次の画面ではプログラムの名前を求められますので、自由に決めてください。
その後の画面はすべて変更せずに「次へ」を押していき、完了してください。

すると、以下のようなテンプレートが作成されたはずです。

 

このテンプレートは3つのセクションに分かれています。読んで字のごとしですが、「OnInit()」はEA起動時に実行される関数です。この中に各種初期化を記述します。
「OnDeinit(const int reason)」はEAを終了する時に実行される関数です。開いたファイルを閉じたり、残っている注文を消したりする処理を記述します。
「OnTick()」はtickが更新される度に実行される関数です。この中に状況の確認、注文等のメイン処理を記述します。

 

次の記事では各種情報取得と出力、MT4で実際にEAを稼働させるところをやってみようと思います。

プログラミングが苦手だけどEAを作ってみたいという人はこちら

私自身は使ったことがないのですが、下記のツールを使用することでGUIベースでEAを作成できるそうです。
さほど高額ではないので、一度使ってみるのも面白いと思います。

EAつくーる【1ヶ月版】
MQL言語の学習ができ、裁量トレーダーもEA開発が可能になる!

 

以上。

MQL言語の学習ができ、裁量トレーダーもEA開発が可能になる!?|?fx-on.com

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です