本日はEA開発について記事を書きました。
この記事を読んでいる方の中にもEAを運用しているという方や自分の手法でEAを作ってみたいという方もいるでしょう。
ただEAの開発をすると聞くと
ハードルが高そう・・
と思う方の方が多いのではないでしょうか?
しかし、EAというのは誰でも勉強さえすれば開発できるようになります。
そこでEAを作るために最低限必要な知識やEAを作るまでの流れについて詳しく解説していきましたので最後までご覧ください。
この記事の目次
EAの開発は誰でもできるのか?
EAとは?
EAとはMT4上で動く自動売買のことを言います。
エキスパートアドバイザーの略でエントリーから決済までの自動で行うことがでるのが特徴です。
そんなEAですが、ネット上にはたくさんの種類のEAが存在しますが自分で作ってみたいという方も多いのではないでしょうか?
なぜ自分でEAを開発すべきか?
多くのEAというのはロジックが公開されていません。
なぜなら、ロジックを公開すると誰かに真似されてしまう為、EAのロジックは非公開になっていることが多いです。
しかし、自分で大事なお金を入れて運用するってなった場合、ロジックがわからない自動売買を使うのは少し不安ではありませんか?
運用中に
- 何でこの場所でポジション持ったんだろう?
- 何でここでナンピンしたんだろう?
- なんで損切りなかなかしないんだろう?
と思うことが多々あると思います。
やはりトレードスタイルは人によって違いますし、自分が理想とするロジックで売買を行いたいですし、中身がわからないと少し怖いですよね。
でしたら自分でEAを開発するのがおすすめです。
EAの開発はMT4標準についているメタエディターというソフトを使って作成することができます。
メタエディターは完全に無料で使用することができますし、これ一つでEAの開発ができます。
何か特別なソフトやPCシステムがなくても誰でもEAの開発は出来るのです。
メタエディターはmql4という専用の言語が存在し、その言語を使ってプログラムをします。
mql4の知識をつけて自分のロジックを形にすることが出来れば、自分専用の自分の理想のEAを完成させることができます。
自分の理想とするロジックを形できたら理想ですよね?
さらにMT4にはストラテジーテスターというバックテストをとるシステムがありますので、自分が作ったロジックをバックテストを取って良い結果になるまで修正をする。
これを繰り返すことで、最も利益が出る組み合わせを見つけて自分で回すことで、自動的に利益を出すことができるのがEA開発の魅力です。
今回はEAの開発に最低限必要な知識と作成するまでの流れを解説していきますね。
EAを開発する際に覚えておいた方がいい知識について
次にEAを開発する際に覚えておいた方がいい知識について解説していきます。
EAを開発する為にはmqlの知識が必要で、たくさん覚えることはあるのですが、ここだけは最低限押さえておいてほしいという知識を紹介していきたいと思います。
start,init,deinit,property関数:EAの基本構造を理解する
EAを作成する際には
- 設定画面を編集するproperty関数
- EAをチャート入れた時に一度だけ動くinit関数
- EAを削除した時に動作するdeinit関数
- 一回値動きが動きがあるたび1回通るstart関数
の4つがあります。
この4つの関数の中に設定やロジックを入れることでEAの作成を行います。
例えば、プロパティ関数では誰が作ったのかというcopyrightを入れたり、色の設定などをします。
その後にinit関数ではスリッページの設定などを行います。
最後にグレーニット関数では表示させたオブジェクトを削除する式や全決済する式を入れます。
1ティックごとに通る、メイン部分であるstart関数の中には売買する条件を入れるといった流れになっています。
この4つの関数の中を埋めてあげることによってEAを開発していきますので、この4つの関数は必ず覚えておいてください。
if文:条件分岐で取引ロジックを組み立てる
if文とは『もし~ならば~』という意味の文になります。
どういう時に使うかというと例えば、
RSIが70以下から70以上になった時に売りポジションを入れるとしましょう。
その時にもし一本前のRSIの値が70以下で、かつ現在足のRSIの値が70以上の時に売りのポジションを入れる。
こんな式を書きます。
こういった感じで『もし~ならば~』と書く時には、if文をとてもよく使うため必須となります。
必ず覚えておいてください。
for文:繰り返し処理でポジション管理を効率化
for文とは繰り返し処理を行い時に使います。
for(初期値;繰り返す条件;一度通った後にする処理)
の順で書きます。
どういう時に使うかと言うと、例えばクローズ処理をする時などに使えます。
例えば、複数ポジションを一つ一つチェックする時に
totalpos=OrdersTotal();//ポジションの合計値
for(int i = totalpos-1; i >= 0; i--)
こんな感じでfor文を使います。
ポジションを5ポジ持っていた時に1つのポジションをチェックしたら、-1して0になるまで繰り返し処理をするといったイメージです。
ポジションが5個あったら、ひとつひとつチェックをして条件を満たしたところはクローズ処理をするという流れにするときに使います。
for文は繰り返し処理を使うの時にとてもよく使う式になりますので必ず覚えておきましょう。
オーダー関数:エントリー&決済の実装方法
オーダー関数とは、その名の通り注文に関する処理をする関数になります。
例えば
- 新規注文をしたい場合はOrderSend
- 注文をクローズしたい場合はOrderClose
- 損益を取得したい場合はOrderProfit
- オーダーを選択したい場合はOrderSelect
といった感じです。
注文に関する処理は全てオーダー関数によって行うことができます。
このオーダー関数を使って基本的に売買の指示を出していくため必ず覚えておいてください。
他にも覚えてほしい知識はたくさんあるのですが、最低限上記の知識は覚えていただくと良いと思います。
EAを開発するまでの流れについて
次にEAを開発するまでの流れについて解説をしていきます。
MQL4の基本を学習するおすすめの方法
プログラミング初心者の方は、まずmql4の基本知識を身につけましょう。
mqlの勉強方法ですが、
●ネットで調べる
●書籍を買う
などの様々な方法があるのですが、オススメなのは私が運営しているYouTube チャンネルを見ることです。
私のチャンネルではEA・インジケーターのプログラミングの基礎的な部分の解説をしており、初心者の人でも簡単なインジケーターやEAを作成できるようにmql4プログラミング講義をやっております。
ですのでEA開発をやってみたいという方はぜひ見ていただければと思います。
インジケーター・EA編がありますので、どちらも見ていただければ大まかなmqlの流れは掴めると思います。
初めは分からないこともあると思いますが、繰り返し見て理解することが大切です。
トレードロジックの言語化
なんとなく分かってきたなーと思ったら、実際に作成に進み作りながら覚えていきましょう。
EAを開発していく際、一番最初にやってほしいことはロジックの言語化をすることです。
EAを開発する場合はロジックを細かく言語化する必要があります。
例えば、MAクロスでエントリーするEAを作りたいとしましょう。
ゴールデンクロスで買いエントリーをするならば
- クロスした時の短期線と長期線の角度は上向きの方がいいのか?それとも長期線のみの上向きなのか?
- 利確損切りポイントはどこに設定するのか?
- ポジション数は何ポジションまで持つのか?
など細かくロジックの言語化をしていく必要があります。
この言語化がしっかりできていないと、開発する際にどうすればいいか分からなくなってしまい挫折する原因となっておりますので、言語化はしっかりしておきましょう。
バックテストと最適化
一通り言語化したものをプログラムしたら、必ずストラテジーテスターを使ってバックテストを取りましょう。
バックテストの結果を見ながら調節をして行くのがおすすめです。
調節をする際のポイントは、負けるポイントをどれだけ減らせるかという考え方が良いです。
エントリーポイントを増やしていくという考え方も悪くはないのですが、負けるポイントをいかに減らしていけるのかという部分に着目していく方が上手くいきやすいです。
例えば
●損切り幅を小さくできないか?
●負けやすいポイントを追加ロジックでスルーできないか?
などなど負けるポイントを少なくするという考え方がEA開発において非常に大切になります。
勝率があまり良くないからナンピンを使用するというのは、ナンピンを多用するといつか資金がショートしますので、ナンピンはおすすめしません。
そのためナンピンではなく、負けるポイントをなるべく減らすということを考えてEAのロジック修正をしていきましょう。
それを繰り返すことで自分の理想のEAが完成していきます。
通貨ペアごとにバックテストを取って設定値を変えていくこともした方がいいですね。
EAを開発する際は
言語化をする→バックテストを取る→負けを減らすよう修正をしていく
この作業を繰り返していくのがとても大事です。
思い付きで開発したロジックが一発で良い結果が出るということはなかなかありませんが、完成したら自動でシステムがトレードをしてくれて利益を出すことができます。
何度も何度も修正してロジックを洗練させていくのがEA開発の流れになります。
EA開発をすることで、今までの自分の手法を見直す良いきっかけにもなります。
システム開発をすることで裁量のスキルもアップしたという方も非常に多いですのでチャレンジしてみてください。
まとめ
EAはMT4標準で付いている、メタエディターというソフトを使えば作成できるため、誰でも開発をすることができます。
そして私が運営しているYouTubeチャンネルではEAやインジケーターのプログラミング方法について詳しく解説しておりますので、ぜひ見て学んでいただければと思います。
もしも最短で開発できるようになりたいという方は、プログラミングスクールに入って勉強するのが一番早く習得できます。
独学で勉強すると、エラーが出た時などに原因がわからなかったり、実装したい機能がどのようにコードを書いたらいいかわからなくて挫折してしまいやすいです。
わからないことがあった時にすぐに質問できる環境があるというのは非常に大事です。
当サイトのプログラミングスクールでは24時間いつでも分からないことがあれば質問ができたり、エラーが出た場合は構造の添削などをしすぐに解決でき前に進める環境を用意しています。
スクールに入った方のほとんどが未経験の方ですが、今ではみんな一人で開発ができるレベルになっています。
早い人だと1か月ほどでインジケータ、EAの開発ができるようになる方もいます。
あなたが最短でEA開発ができるようになるプログラムとなっておりますので、ぜひ下のスクール案内を見てください。