初心者でもわかる!!
MQL言語を活用してEAをプログラミングする方法についてまとめてみました。
MQL言語を活用してEAをプログラミングする方法について
MQL言語を活用してEAをプログラミングする方法についてです。
今回から実際にEAを作っちゃいましょうwww
とにかく手を動かさないことには、
プログラミングは学べないので今回の記事でEAの作り方をマスターしてみてください。
MQL言語でプログラミングをする準備
MQL言語でプログラミングをする準備をしましょう。
MetaTrader 4を起動
MetaTrader 4を起動しましょう。
もしMetaTrader 4をインストールしていない方は、
以下のリンクからMetaTrader 4をダウンロードすることができます。
MetaEditorを起動
MetaTrader 4を起動しましたら、
黄色い冊子のようなボタンがあるのでクリックしましょう。
するとMetaEditorが起動します。
MetaEditorを日本語化
MetaEditorを日本語化します。
タブからView > Languages >Japaneseの順で選んでください。
日本語のコメントができるように設定
日本語のコメントができるように設定します。
タブのツールからオプションを選んでフォントを選び、
MSゴシックを選んでください。
そしてスクリプトを日本語にして下さい。あとはOKを押して下さい。
これで日本語のコメントが使えます。
MQL言語でプログラミングをするときの注意点
MQL言語でプログラミングをするときの注意点になります。
プログラムを書く時は半角英数字で
プログラムを書く時は半角英数字で記入してください。
全角で記号や文字を書くとエラーになります。
プログラムの終わりは必ず;(セミコロン)をつける
プログラムの終わりは必ず;(セミコロン)をつけてください。
;(セミコロン)は文章の終わりの「。」みたいなものです。
無いとエラーになるので注意しましょう。
MQL言語でプログラミングしてEAを作成する
では早速MQL言語でプログラミングして
移動平均線がゴールデンクロスした時にエントリーするEAを作成してみましょう。
とにかくプログラミングは書けばどんどん上達するのでがんばりましょう。
全体のデータは以下のリンクに貼っておくのでコピペすればEAは出来上がります。
どんなプログラムを書くことでできるか詳細を書いていきますね。
変数を宣言
まず、変数を宣言してみましょう。
///変数の宣言 int count;//カウント用 int CurrentPosition;//現在のポジション int Ticket;//ポジション double kakoMA1; double kakoMA2; double genMA1; double genMA2;
それぞれの変数について説明すると、
count:カウントする用の変数
CurrentPosition:現在のポジション
Ticket:ポジションを取る
kakoMA1:過去の移動平均線A
kakoMA2:過去の移動平均線B
genMA1:現在の移動平均線A
genMA2:現在の移動平均線B
int型は整数です。double型は浮動小数点数型です。
変数名は自分で付け替えることもできるのでわかりやすいもので良いです。
注文をチェックする
// 注文をチェックする CurrentPosition=-1; for(count=0;count < OrdersTotal();count++){ OrderSelect(count,SELECT_BY_POS); if(OrderSymbol() == Symbol()) CurrentPosition=count; }
今現在ポジションを持っているかどうかなどを調べます。
すべて説明すると時間がかかるので今回は省略します。
移動平均線のデータ
//一時間前の50日線 kakoMA1 = iMA(NULL,0,50,0,MODE_SMA,PRICE_CLOSE,1); //一時間前の100日線 kakoMA2 = iMA(NULL,0,100,0,MODE_SMA,PRICE_CLOSE,1); //現在の50日線 genMA1 = iMA(NULL,0,50,0,MODE_SMA,PRICE_CLOSE,0); //現在の100日線 genMA2= iMA(NULL,0,90,0,MODE_SMA,PRICE_CLOSE,0);
iMA(NULL,0,50,0,MODE_SMA,PRICE_CLOSE,1);は、
以前紹介した移動平均線の関数になります。
順番にどんな項目にどんな値が入っているのかですが、
double iMA(string symbol, int timeframe, int period, int ma_shift, int ma_method, int applied_price, int shift)
string symbol(通貨ペア):NULL
int timeframe(タイムフレーム):0
int period(移動平均線の期間):50
int ma_shift(シフトするローソク足の本数):0
int ma_method(移動平均線の種類):SMA
int applied_price(始値・高値・安値・終値の選択):PRICE_CLOSE
int shift(移動平均線の時間をシフトする数値):0
変数に移動平均のデータを入れています。
kakoMA1:一つ前の50MA
kakoMA2:一つ前の100MA
genMA1:現在の50MA
genMA2:現在の100MA
ポジションチェック
// ポジションチェック(ポジション無し) if(CurrentPosition == -1){
最初にCurrentPosition = -1;を書きましたが、
ポジションを取っていない状態かどうかを分岐させます。
ポジションがない場合に次の項目に進んでいきます。
エントリールール
//もし50日移動平均線が100日移動平均線を下から上にクロスしたら if( kakoMA1 < kakoMA2 && genMA1 >= genMA2){
エントリールールは50移動平均線が100日移動平均線をゴールデンクロスクロスするかどうかです。
それを説明しているのが以下の文です。
kakoMA1 < kakoMA2 && genMA1 >= genMA2
kakoMA1(過去の50MA数値)よりもkakoMA2(過去の100MA数値)の数値が大きく
かつgenMA1(現在の50MA数値)のほうがgenMA2(現在の100MAの数値)以上だった場合
という感じですね。
プログラミング初心者がありがちな間違いは、
if( genMA1 >= genMA2)だけでいけるのではないか?と思いますがこれは間違いです。
50日移動平均線が100日移動平均線の上にあり続ける場合ポジションを買い続けてしまいます。
買いポジションを取る
//買いポジションを取る Ticket = OrderSend(Symbol(), OP_BUY, 1, Ask, 3, Ask-(200*Point), Ask+(200*Point), "Buy", 0, 0, Blue); } } return;
OrderSend()の関数は「売買注文を出すときに使う関数」です。
EAのシステムを作成する場合は必ずOrderSend()関数を使います。
OrderSend()関数の中にはどんな値を入れているのかというと、
通貨ペア:Symbol()
注文内容:OP_BUY
ロット数:1lot
レート:Ask
スリップページ:3
損切り幅:Ask-(200*Point)
利食い幅:Ask+(200*Point)
コメント:Buy
マジックナンバー:0
有効期限:0
色:Blue
MQL言語で書いたプログラムをコンパイルする
MQL言語で書いたプログラムをコンパイルしてみましょう。
コンパイルの方法
文章を書き終えたらメニューにある「Compile」をクリックします。
エラーなどが無ければDestrictionに「0 error(s), 0 warning(s)」と表示されます。
もし、記述ミスがあればエラーが表示されるので、
一度振り返って記述を修正して再コンパイルしてみましょう。
コンパイルでエラーが表示された場合
コンパイルエラーが出る場合は以下の項目を確認してみましょう。
全角スペースを使った
基本的にはプログラムを書く上で全角スペースは使えません。
なので半角スペースのみを使ってください。
全角文字を使った
全角文字も基本的にNGです。記号や英字も全角は使えないので注意しましょう。
;(セミコロン)の付け忘れ
MQLでは文章の末尾に;(セミコロン)を付ける必要があります。
;(セミコロン)がついているか確認してみましょう。
スペルミス
スペルミスをすると処理が上手くできません。
作成したEAをバックテストする
では、今回作成したEAをバックテストしてみましょう!!
ストラジテスターをクリック
MT4にあるストラジテスターをクリックしましょう。
作成したEAをバックテストする
作成したEAをバックテストしてみましょう。
通貨ペアはドル円で期間はM5にしました。できたらスタートを押しましょう。
評価してみる
今回作成した単純なEAを評価してみましょう。
結果を見てみましょう。純益マイナスですね。簡単なEAなのでこんなもんです。
グラフを見てみましょう。もちろん純益マイナスなので右肩下がりですwww
レポートを見てみるとトレードの詳細記録が表示されます。
今後MQL言語のプログラミングについては記事を書いていきますが、
自分で色々とEA作っていくとわかるのが、
FX-EA System Projectの提供しているEAのクオリティの高さだと思います。
この企画のEAやっぱり凄いと思えるようにプログラミングの知識もつけていきたいですね。
まとめ
今回はMQL言語を使った移動平均線のゴールデンクロスのEAについてでした。
意外と誰でも作ろうと思えば作れてしまうことがわかったと思います。
意外と難しいようで難しくありません。
次回はアラートやシグナルを鳴らす方法をなど細かいテクニックをご紹介したいと思います。
コメント