single.php

MetaTraderで為替売買を行うEAを作成する手順

FXで自動取引するプログラムを、MT4で過去のチャートデータでテスト的に実行する際の手順を備忘録的に投稿します。

MetaEditorでEAやインディケータ作成

プログラムされた内容で外貨取引(FX)の自動売買を実行するためのプラットフォームとして今回は、MT4を使います。

MetaTraderで利用できるEAやカスタムインディケータを作成する手順については、別記事をご覧ください。

https://blog.janjan.net/2024/10/18/meta-editor-add-custom-indicator-helloworld/

MetaTraderで自動売買

MetaTraderでは、作成したカスタムインディケータやエキスパートアドバイザなどを動作させて為替チャート上で自動で売買を行うことが可能です。

例えば、為替が動いたイベントを取得して、条件を設定して売買を行えます。

その他にも、過去のチャートを利用して作成した自動売買のコードをテストも可能です。

エキスパートアドバイザの作成

今回は、[エキスパートアドバイザ]を作成してチャート上で動作させるコードを追加していきます。

具体的に[エキスパートアドバイザ]を作成するには次の手順で行います。

1. MetaEditorの[新規作成]をクリックします。

2.[MQL ウィザード]画面で[エキスパートアドバイザー]を選択して[次へ]をクリックします。

3. 作成する[エキスパートアドバイザー]の名前を入力して[次へ]をクリックします。

4.[エキスパートアドバイザのイベントハンドラ]画面で、すべてのチェックを外して[次へ]をクリックします。

5.[エキスパートアドバイザのテスターイベントハンドラ]画面で、すべてのチェックを外して[完了]をクリックします。

6. MetaEditorが起動して、新しく[MyOrder.mq4]が作成されて表示されます。

売買するコードを追加

作成した[エキスパートアドバイザ]に、売買用のコードを追加していきます。

MetaEditorで直接編集もできますが、私の場合は使い慣れたVisual Studio Codeで行っています。

拡張機能をインストールするとVSCodeでもMetaTraderで動作するコードの編集やコンパイル作業が可能です。詳しい内容は別記事をご覧ください。

コードの追加は次の手順で行います。

1. [MyOrder.mq4]内の[OnTick]イベントに次のコードを追加します。

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
    int TicketNumber = OrderSend("USDJPY",  OP_BUY, 1.0, Ask, 3, 0,  0, "EA", 1234, 0, Red);
    bool success = OrderClose(TicketNumber, 1.0, Bid, 3, Blue);
  }
//+------------------------------------------------------------------+

OnTickイベントは、為替チャートに変化があった場合に発生します。

その際に、[OrderSend]と[OrderClose]関数を呼び出しています。[OrderSend]関数は、指定したパラメータで通貨の買い(または売り)を行い、[OrderClose]関数は、その逆([OrderSend]で買いを実行した場合は売り)を行います。

[MyOrder.mq4]の場合は、チャートに変化があった際に[買い]操作を行い、即時(次の行)で[売り]操作をしています。

2. [ターミナル|ビルドイベント]などでコンパイル作業を行います。

MetaEditorで編集している場合は[コンパイル]をクリックします。

コンパイルした[エキスパートアドバイザ]を過去のチャートで実行してみます。(100%損失が出るので、実際の口座に設定されたチャートで動作させないようにしてください)

為替が動いた際に動作すると、チャートにマークが追加されていきます(赤が[買い]で青が[売り])

[結果]タブで確認すると、為替が動くたびに[buy]と[close]が繰り返されています。

FXで取引する場合にはスプリットが発生するので、損益はマイナスになります。

[グラフ]で損益を確かめてみると、一直線にマイナスになっているのが分かります。(繰り返しになりますが100%損失が出るので、実際の口座では実行しないように注意してください)

またテストを実行した際に[アップデート待機中]画面が表示された場合の詳しい対処法は、別記事をご覧ください。

まとめ

今回は、MetaTraderで実行する[エキスパートアドバイザ]で自動売買のテストを行うまでの手順について紹介しました。

サンプルとして為替が動くイベントを取得して、特定のパラメータで通過を[買い]、即時に[売る]操作をするコードを作成しました。

また、MetaTraderの[ストラテジーテスター]を利用して過去のチャートデータで作成したコードをテストまでの手順についても紹介しました。

[MT4]で自動売買を行う[エキスパートアドバイザー]を作成してテストしたい人の参考になれば幸いです。

スポンサーリンク

最後までご覧いただき、ありがとうございます。

コメントを残す

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