自作EAを作るためのEA設計図のつくりかた(MQL4)

プログラミングの知識はあるが自作EAを作ろうか迷っている。自作EAの作成手順がわからない。サンプルを元に作っては見たがよくわからない。などの人を対象にこの講座を作成しています。

プログラミング初心者の人は別途プログラミング初心者講座を作成しますのでもうしばらくお待ちください。

MT4のインストールとダウンロードのやり方

この講座ではエントリー後、決済条件まで追尾するRSIのEAサンプル(MQL4)を作っていきます。
まぁつまり作成過程を見れちゃうワケなんですね(笑)あくまでも僕の作成の過程なので柔軟に対応してくださいね(笑)

インディケータを決めよう

まず自作EAに絶対に必要なのはエントリー条件とエグジット条件(ポジションを持つ入口と決済する出口の条件)です。
インディケータも色々ありますが代表的なもので言うと、

  • 移動平均線(MA)
  • ボリンジャーバンド(BBbands)
  • エンベロープ
  • MACD
  • RSI
  • ストキャスティクス

こんなところですかね。まぁローソク足も一応エントリー条件にできるのでそれも頭にいれておきましょう。
普通は自身の裁量トレードのを自動化したいなどの時に自作EAを作るのですが、作ってみるのもまた一興でしょう。
今回使うインディケータはRSIのみです。これはイッチャン簡単に条件を作れるのでRSIにしました。
RSIの値を取得する関数は下記からどうぞ。
RSIの値を取得するiRSI()関数の内容(MQL4)

今回の条件はRSIの70以上と30以下を条件にします。

通貨ペアと時間足をなんとなく決めておこう

通貨ペア

例えば、メジャーな通貨ペア(USDJPY,GBPJPY,GBPUSD,AUDJPY,NZDJPY)と新興国(TRYJPY,MXNJPY)などではロジックも変わってきます。特に新興国はpriceが滑り台です。元の値段に戻ってくるような形をしていません。
メジャーな通貨ペアならばまぁ戻ってくる可能性が高いと言えるでしょうね(笑)
まぁ新興国で作るならばスワップ目的の低価格の時に買い込むEAでしょうかね?しらんけど、、、

時間足

これは時間足が短くなればなるほどエントリー回数が増えます。そしてエントリーが増えれば必然的にスプレッドが邪魔になってきます。時間足が短いEAならばスプレッドが低い業者でやるのが良いでしょう。あとはインディケータのダマシが多くなってきて勝ちにくいです。しかもストップレベルなんていう厄介な代物まであるのでスキャルピングEAなんかは業者をちゃんと選ばないと大変です(笑)
長期足になるとスプレッドはそこまで意識しなくて良いですが、まぁスプレッドは低いに越したことはありませんね。
今回作成するEAは特に時間足も通貨も決めずに作っています。まぁ本当にサンプルのつもりで作ったので、、、
ちなみにテスターにかけると徐々に資金が減っていく最悪なEAとなっております(笑)
そんなEAを作らせるのか!!と言われそうですが我慢して下さい。
エントリー後、決済条件まで追尾するRSIのEAサンプル(MQL4)

外部変数にする項目を決めよう

EAを作成するうえで変更可能な項目を決める必要があります。
変更可能な変数(項目)にも2種類あってinputとexternです。

inputはEAを動かしている時は変更できません。
externはいつでも変更が可能な変数です。

作成する人によってこの項目は変わってきますが、
今回は

  • ロット数(input)
  • 損切りpips(extern)
  • 利食いpips(extern)
  • スリッページpips(extern)
  • マジックナンバー(EA識別番号)(input)

です。
マジックナンバーは定数にしてしまうこともできますが、万が一他のEAとマジックナンバーが被ってしまった場合、
こちらのマジックナンバーを変えて運用すればOKです。

マジックナンバーをEA運用中に変更してしまうと変更前に持っていたポジションが決済されないため、EA運用中に変更するのはやめたほうが良いのでinputです。ロット数も同様にある程度運用してフィードバックを得てからロット(input)を変更するのが妥当でしょう。

インディケータの入力項目も外部変数にすることもありますが今回はなしです。

一度に保有するポジション数を決めよう

両建てなのか?1つずつしかポジションを持たないのか?ロングだけ?ショートだけ?
いろんなパターンがあります。
これを決めないと、決済のコードが書けません。

今回はポジションは1度に1つのみ同時に2つポジションを保有している状態がない状態です。
まぁサンプルなので妥当でしょ(笑)
ただの普通のサンプルでは面白くないと思ったので追尾というおまけをつけたまでです(笑)

グローバル変数を考えよう

グローバル変数とはどこからでも呼び出しが可能な変数です。
例えばチケットを管理するのはグローバル変数が良いと言えます。
なぜならEAはチケットなしには取引が成り立たないのです。
このチケットの扱い方でポジションを複数持てたりします。

主にグローバル変数にするのは保存しておきたい値をいれて置くためです。

今回グローバル変数にするのは

  • 注文ロット数
  • 注文スリッページ
  • レート損切り
  • レート利食い
  • 買いチケット
  • 売りチケット
  • 買い追尾の判定
  • 売り追尾の判定

です。

今回は以上になります。お読み頂きありがとうございました。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする