FXで自動取引するプログラムを、MT4で過去のチャートデータでテスト的に実行する際の手順を備忘録的に投稿します。
MetaEditorでEAやインディケータ作成
プログラムされた内容で外貨取引(FX)の自動売買を実行するためのプラットフォームとして今回は、MT4を使います。
MetaTraderで利用できるEAやカスタムインディケータを作成する手順については、別記事をご覧ください。
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]で自動売買を行う[エキスパートアドバイザー]を作成してテストしたい人の参考になれば幸いです。
スポンサーリンク
最後までご覧いただき、ありがとうございます。