この記事では、FXの自動売買プログラムが30分で作成できる方法を解説します。
新しいことを始めるのは、面倒ですよね。
ですので「30分でひととおり終わるなら、大きく化ける副業になるか試してみようかな」と思っていただける方に向けて書いています。
プログラミング自体もコピペ主体なので、未経験の人でも10分でできますよ。
この点は、以前投稿した記事「FXの自動売買プログラムは難しくないよ」で詳しく書いています↓↓
今回紹介するおおまかな手順は以下のとおりです。全部合わせて30分で終わります。
1.MetaTrader4をインストールする 5分※
2.コーディング 10分※
3.バックテスト 5分※
4.デモアカウントで稼働させる 10分※
※大凡かかる時間になります。
それでは、さっそくいってみましょう!
1.MetaTrader4をインストールする 5分
アキシオリーという会社のMetaTrader4のダウンロードページにアクセスして、インストールします。
インストール手順はリンク先にくわしく書いてあります。
今回はプログラミング(=コーディング)を行うので、PC版MetaTrader 4をダウンロードします。
iPhone/iPad版やAndroid版のMetaTrader4だとプログラミング機能がついていません。
2.コーディング 10分
コーディングするために まずMetaEditor というエディタを開きます。
MetaEditor上で「新規作成」を押します。
次の画面では、何か1つを選んで先に進めます。今回は「エキスパートアドバイザ(テンプレート)」を選びます。
このあとの画面ではファイル名などを入れます。今回は"test"というファイル名にしました。
次の画面は、なにもいじらずに先に進めます。「次へ」ボタンを押してください。
さらに次の画面も、なにもせずに先へ進めます。「完了」ボタンを押してください。
「完了」ボタンを押した直後は、以下のようにソースコードが書いてある状態です。
最初に書いてある文字をCtrl+Aなどで全選択して、全部消します。
以下に自作EA(FXの自動売買プログラム)のソーステンプレートを載せています。全部で38行しかありません。
しかも、わざとスカスカになるように書いているので、実質30行くらいです。
通常の文章に置き換えると、1行とばしで書いているような感じです。
そのほうがパッと見の威圧感がなくていいかなと思いまして・・。
まっさらな状態のMetaEditorに以下の青文字部分をコピペしてください。
#define MAGIC 55821
input double Lots = 0.1; // 取引ロット数
int Ticket_L = 0; // エントリー(買い)注文の結果をキャッチする変数
int Exit_L = 0; // エグジット(売り)注文の結果をキャッチする変数
// ------------------------------------------------------------
void OnTick()
{
double RSI_H4_1 = iRSI(NULL,240,14,PRICE_CLOSE,1); // RSI関数
OrderSelect(Ticket_L,SELECT_BY_POS,MODE_TRADES); // 保有中の買いポジションを選択
// 買いエグジット
if(
RSI_H4_1 > 70
&& ( Ticket_L != 0 && Ticket_L != -1 )
)
{
Exit_L = OrderClose(Ticket_L,Lots,Bid,3,Red);
if( Exit_L ==1 ) {Ticket_L = 0;}
}
// 買いエントリー
if(
RSI_H4_1 < 30
&& ( Ticket_L == 0 || Ticket_L == -1 )
)
{
Ticket_L = OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0,0,MAGIC,0,Red);
}
}
上記のソースがコーディングされた test.mq4 ファイルを、どこか好きな場所に保存してください。今回はデスクトップに保存してみます。
MetaEditorの画面に戻って、上記の test.mq4 ファイルをコンパイルします。コンパイルのボタンは以下です。
プログラムにエラーがなければ、「詳細」ウインドウに"0 errors"と表示されます。
警告も出ていますが、とりあえずエラーがなければプログラムは動きます。
(ただ、警告は出さないほうがいいです。)
コンパイルが成功したので、test.mq4 が入っているのと同じ場所(今回はデスクトップ)に、ex4という実行ファイルが新たに作られます。
このex4ファイルを、データフォルダ(3FF8B7E613873B41AA882848EEBBE999)\MQL4\Experts の中に入れます。
※3FF8B7E613873B41AA882848EEBBE999 の部分は、インストールしたMT4によって毎回異なります。
データフォルダは以下のメニューから開くことができます。↓の画像は英語になっていますが、日本語でも同じ位置です。
以降はソースコードのかんたんな説明です。
4時間足でRSIが30未満になったら「買い」を入れます。RSI_H4_1 < 30 の部分です。
その下の && ( Ticket_L == 0 || Ticket_L == -1 ) は、注文関連なので今回はスルーしてください。
まず動かすのを優先して、その後、余裕が出てきたらググってみてください。
// 買いエントリー
if(
RSI_H4_1 < 30
&& ( Ticket_L == 0 || Ticket_L == -1 )
)
ポジションを仕切る「売り」も同様です。
RSIが70以上になったらエグジットします。
// 買いエグジット
if(
RSI_H4_1 > 70
&& ( Ticket_L != 0 && Ticket_L != -1 )
)
3.バックテスト 5分
自作プログラムがちゃんと動くかどうかをチェックします。
MetaTrader4にあるバックテスト機能を使います。
以下画像にあるように、虫眼鏡アイコンのボタンを押すか、Ctrl+Rを押して、ストラテジーテスターというプログラムを起動します。
このストラテジーテスターで、バックテストを実行できます。
"Tester"のところにある"Expert Advisor"横のプルダウンを押します。
すると、先ほどの「データフォルダ」に入っている test.ex4 ファイルがリストアップされます。
この test.ex4 が、FX自動売買プログラムの本体です。
クリックで拡大します
test.ex4 ファイルを選択した後は、他の項目を設定していきます。
① Expert Advisor → バックテストしたいFX自動売買プログラムです。今回は"test.ex4"をテストします
② Symbol → バックテストしたい通貨ペアを選びます。上の画像ではEURUSDを選んでいます
③ Model → どのくらい厳密にバックテストするか、3つのモードから選べます。今回は"Open Price Only"モードを選択します
④ Use Date → いつからいつまでの期間、バックテストするか選びます。期間は長いほうがいいですが、時間がかかる場合もあります。"Open Price Only"モードは簡易的なバックテストなので、10年などの長期間であっても数秒~1,2分で終わります
⑤ Visual Mode → ビデオファイルを再生しているような感じで、バックテストしている最中のチャートが高速で動いてくれます。見てて楽しいです
⑥ Period → タイムフレーム(時間足)です。5分足、1時間足、日足などから選べます。今回の test.ex4 は4時間足を指定しても、5分足を指定しても動きます
⑦ Spread → スプレッドといって、FXの世界の手数料みたいなものです
⑧ Start → バックステストを開始させるボタンです
"Start"ボタンを押して数秒~数十秒後にバックステストが終わります。
以下のようにグラフの青い線が出れば、ちゃんとトレードできています。
4.デモアカウントで稼働させる 10分
最後は、実際にマーケット上で動かしてみます。
EA(FX自動売買プログラム)の動かし方を実演してくれている動画を貼り付けておきます。
手順1.で開いたデモアカウントで、架空のお金をもらってトレードができます。
本番環境(ライブアカウント)でも流れは同じです。
免責事項:本記事で載せたソースコードはあくまでテンプレート用途です。デモアカウント稼働までに止めていただくようお願いします。ライブアカウントでの稼働は想定していません。
おわりに
今回はMQL4での自動売買プログラム作成方法を紹介しました。
実のところ、プログラミング言語はPythonとかでやる方が発展性があるのだろうと思います。
ですが、FXの場合はMQLというC/C++の亜種(?)言語を使うことが多いです。
なぜかというと、MetaTrader4+MQLによってイタレリツクセリな状態が10年以上前から出来上がってますので・・。
MetaTraderという無料ソフトがあれば、ワンストップで自動売買ができてしまいます。
このことは、FXをやってる人はみんな知ってるんですけど、FXに興味ない人に訊いてみると「ナニソレ?」っていう反応が返ってきますね。
ここでさらに脱線しますが、MetaTrader4とMQL4を使って自動売買をスタートさせるなら早いほうがいいです。というのも、MetaTrader4を開発しているMetaQuotesという会社は、次バージョンのMetaTrader5+MQL5へと移行したがっているように見えるからです。その証拠に、MetaTrader"4"の日本語公式ページからMetaTrader4をダウンロード&インストールしても、MetaTrader5がインストールされてしまいます。
残念なことに、プログラミング言語MQL4とMQL5には互換性がないです。なので、MQL4で書いたソースはMetaTrader5では動かないと思っていたほうがいいです。一方、MQL5は文法がC++かつ多機能なのでMQL4より難易度が上がります。だから、比較的簡単なMQL4のうちに慣れておいたほうがいいんじゃないかなと思う次第です。
「ひととおり終わるのに30分」のコストで済むので、試してみてはいかがでしょうか?