初心者でもできるプログラミング基礎から学ぶ自作EAの作成方法

プロフィール

EAの大魔術師
この世に生まれ何とか勉強していくことで誤魔化しで大学院まで進学したが、就職がうまくいかずIT系の中小企業に就職する。社会人になり将来の不安と日々のストレスと絶望感を味わいながら何とか脱サラを目指しブログと投資を実施中。

 

 

自作EAの作成方法を1から説明したいと思います。

今回はプログラミングの知識がほとんどない方を対象して説明しようと思います。

プログラミング経験がある方はプログラミングの基礎知識の部分は読み飛ばしていただいて大丈夫です。

準備するもの

まず準備には以下の2つが必要です。

  • Windowsのパソコン
  • MT4※

※MT4とはMetaQuotesという会社が開発したFXのチャートソフトです。
こちらの公式サイトからダウンロードが可能です。

新規EA作成

MT4を開いたらメタクォーツ言語エディタのボタンを押します。

MeTaEditorが開いたら「New」ボタンを押します。

EAを作成するのでエキスパートアドバイザーを選択します。

Experts¥の文字の後に入力するのがEAの名前になります。適当にEAの名前をつけて「次へ」ボタンを押します。

「次へ」ボタンを押して進めます。

「完了」ボタンを押します。

すると下のようなEAの元となるソースが作成されます。

今回はわかりやすくするためにint start()という文字だけを記述したソースを元に説明します。

プログラミングの基礎知識

MT4はMQLというプログラミング言語を使います。プログラミング言語とはプログラミングを記述する際に使う言葉のことです。

ここからはプログラミングをする上で知っておきたい基本的な知識を紹介します。

変数、型とは?

変数とは値を入れるための箱のようなものです。プログラミングでは数字や文字をこの変数に入れてすべての処理を行います。変数には型と呼ばれる情報が必要で、変数には名前を付ける必要があります。

型の主な種類は
・int(数値型)
・string(文字型)
・double(少数を含んだ文字型)
などがあります。

型 + 変数名で変数を作成することできます。

例)
文字列型変数 string mojihensu
数値型変数 int suutihensu

作成した箱に値を入れる時は以下のように記述します。

mojihensu = "文字列";
suutihensu = 1;

コメントとは?

プログラミングの記述をしていると自分がどんな意味のプログラムを書いているのか忘れるときがあります。そのためにプログラムにコメント(メモ)を書いておけば忘れるのを防ぐことができます。

コメントの書き方はスラッシュを2つの後に記載します。

例)

// 数値変数に1を入れるよ
suutihensu = 1;

関数とは?

関数とは何か入れると何かを返してくれる機能のようなものです。具体的に言うとスマートスピーカーのようなイメージです。スマートスピーカーに何か喋りかけると応答してくれます。関数もこれと同じです。

関数の書き方は型 + 関数名  + (入力) + { + }です。

最初の型は返してくれる変数の型になります。何も値を返したくない場合は型のところをvoidと記述します。

何か値を返す関数は{}の最後にreturnという記述をします

例)
入力された文字をそのまま返す関数(オウム返しみたいな関数)

String mojiwokaesuyo(String nyuuryoku) {
   return nyuuryoku;
 }

何も返さず、処理だけ実行する関数

void mojiwokaesuyo(String nyuuryoku) {
   ~なんかの処理
 }

初期化関数とは?

int init(){ }

EAを起動させるときに括弧の中に書いた処理が必ず呼ばれる関数を初期化関数と言います。関数名はinitとなっております。(関数名はMT4のバージョン等により異なります)

EAを起動させる前や、最初にやっておきたい処理がある場合などに使います。

スタート関数とは?

int start(){ }

チャートのティックが動くたびにこのstartの中の処理が呼ばれます。

EAの注文とかを出すメインの処理はこの関数に書かれることが多いです。

終了関数とは?

int denit() { }

EAを終了させるときに括弧の中の処理が呼ばれます。

EAがトラブルによって終了して、ポジションをクローズしたい時などに使います。

注文関数とは?

int OrderSend( string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit, string comment, int magic, datetime expiration, color arrow_color );

とりあえずこの関数があれば注文を出すことができます。

詳細はここでは省きます。

サンプルソース

ここまで説明した知識を使って注文を出すEAを作成してみましょう。

// 使う値を変数に格納する 
// 売買ロット数
double Lots = 0.1;
// 許容スリッページ
int Slippage = 0.3;
// マジックナンバー
int MagicNo = 1; 

int start() {
   // 買い処理
   OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,0,0,"buy",MagicNo,0,Blue);
   // 戻り値
   return(0);
}

これだけの記述でただひたすら買い注文を出すだけのEAが完成です。絶対本番では動かしてはいけません。

コンパイルをする

ソースコードを書いたらソースを機械語に変換するためにコンパイルという作業を行います。コンパイルという作業をしないままだと記述したプログラムは実行できません。

「コンパイル」ボタンを押すとコンパイルできますが、このときソースの記述ミスがあった場合エラーとなります。

エラーがでた場合はソースを修正して再度コンパイルしましょう。エラーが解消されない限りコンパイルは成功しません。

よくあるエラー

  • 全角スペースがある
  • 型の不一致

バックテストする

EAが完成したらバックテストをしましょう。
バックテストの方法はこちらに記載しております。

まとめ

今回は注文するというだけのEAの作成方法を紹介しました。他にも覚えなければいけないことはたくさんありますが今回はここまでです。

バックテストまで出来ればEA作成の第一歩です。

もしちゃんと学びたいならばとりあえず入門として「FXメタトレーダー入門 現代の錬金術師シリーズ」という書籍の購入をおすすめします↓

【中古】 FXメタトレーダー入門 最先端システムトレードソフト使いこなし術 現代の錬金術師シリーズ56/豊嶋久道【著】 【中古】afb

価格:1,649円
(2019/6/2 21:15時点)
感想(0件)

もしプログラミングの理解がどうしても難しい場合はEAつくーるというソースコードを自動生成してくれるソフトをオススメします↓

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

EAつくーるを用いれば、自分の作りたい条件でEAをプログラミングなしで作成できるのでソースコードの参考にもなるし、プログラミングができない人でもEAを作成することができます。

まずは1ヶ月版を試して使えそうなら製品版の購入をオススメします↓

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

 

初心者でもできる自作EAの作成方法2
初心者でもできる自作EAの作成方法2
EAの基本的なコードがわかったら今度はもう一歩踏み出して実際にEAを作成してみましょう。 目次1 EAの外部パラメータを記述してみ よう2 ...