せっかくMT4(メタトレーダー4)を使うのなら、あなたオリジナルのEA(自動売買プログラム)やテクニカルインジケーターを自作してみませんか!?
この記事では、初心者向けに、MQL4言語を使ったプログラミングについて解説します。
「プログラミングなんて自分にはとても無理だ」と言われる方も多くいると思いますが、そんなことはありません。実は超簡単なんです。アラフィフのおっさんが言うんだから間違いありません。
なぜ超簡単なのかというと、ここで作るどのプログラムも、基本的に、すでに出来上がっているサンプルEAのソースコードの一部を書き換えるだけだからです。
ホントに超簡単ですので、ぜひ挑戦してみましょう♪
※2020年5月2日、窓埋めEAの記事を追加しました。
MQL4言語とは?
MQL4言語(Meta Quotes Language 4)とは、MT4で使用されるプログラム言語で、ベースはC言語です。
MT4で使用するEAやインジケーターは、このMQL4言語で書かれています。
基礎編|プログラミングの基本
はじめに、プログラミングの基礎を理解しましょう。
ここの内容をきちんとインプットできれば、以降のアウトプットがスムーズにできるようになります。
EAの基本構造と書き方
MT4のサンプルEAを使ってEAの基本構造と書き方を解説します。
EA自作は難しいものではありません。簡単ですから、ぜひ挑戦してみましょう♪
![](https://get-daze.net/wp-content/uploads/2019/10/ea-kihonkozo-howto-e1571027763392-160x90.jpg)
変数と配列
変数と配列はあらゆるプログラム言語の基礎です。
変数はデータを入れる箱で、配列は整列された複数の変数の箱です。
![](https://get-daze.net/wp-content/uploads/2018/11/hensu-hairetu-160x90.png)
if文とfor文
ともにプログラムの実行の流れを制御する構文です。
if文は条件分岐を処理する構文で、for文はループ処理する構文です。
![](https://get-daze.net/wp-content/uploads/2018/10/choices_1540891435-1024x724-e1571010712999-160x90.jpg)
OrderSend()とOrderClose()
OrderSend関数は新規注文を行い、OrderClose関数は決済注文を行います。
どちらもMQL4言語独自の関数ですが、EA作りには必須の関数です。
![](https://get-daze.net/wp-content/uploads/2019/02/ordersend-orderclose-e1571011719396-160x90.jpg)
よく使う用語だけに絞ったお手軽リファレンス
よく使うプログラミング用語だけ集めました。
あなたがEAやインジケーターを自作するときに、きっと役立つと思います。
![](https://get-daze.net/wp-content/uploads/2020/01/dictionary-e1578029402998-160x90.jpg)
実践編|EAやインジケーターの自作
サンプルEAを使ってオリジナルEAを自作しよう
MT4のサンプルEAの一部をササっと書き換えて、MACDとスローストキャスティックスの2つのインジケーターで売買判断を行うオリジナルEAを作ります。
完成品を無料でダウンロードできます。
![](https://get-daze.net/wp-content/uploads/2018/10/Programing_1538906144-1024x682-e1570928221562-160x90.jpg)
サンプルインジケーターを使ってカスタムインジケーターを自作しよう
MT4のサンプルインジケーターの一部をササっと書き換えて、カスタムインジケーター「HiLoバンド」を作ります。
HiLoバンドは、チャート上に、過去n日間の高値・安値のラインを描き、レジスタンスやサポートを確認したり、高値・安値のブレイクアウトを判断するテクニカル指標です。
完成品を無料でダウンロードできます。
![](https://get-daze.net/wp-content/uploads/2019/10/custom-indicator-160x90.jpg)
カスタムインジケーターをEA化してみよう
前回作ったカスタムインジケーター「HiLoバンド」を使って、ブレイクアウト手法をEA化します。
ブレイクアウトとは、過去一定期間の高値・安値を突破したことをシグナルとする有名な投資手法です。
完成品を無料でダウンロードできます。
![](https://get-daze.net/wp-content/uploads/2018/10/breakthrough_1539006326-1024x1024-e1570927225234-160x90.jpg)
リピート系注文をEA化してみよう
MT4のサンプルEAの一部をササっと書き換えて、人気のリピート系注文をEA化します。
トラリピなどの既存のサービスを使えばいいと思われるかもしれませんが、リピート系注文をMT4でするメリットはたくさんあります。
完成品を無料でダウンロードできます。
![](https://get-daze.net/wp-content/uploads/2020/01/trap-ea01-e1577944488206-160x90.jpg)
![](https://get-daze.net/wp-content/uploads/2020/01/trap-ea02-e1577944907929-160x90.jpg)
![](https://get-daze.net/wp-content/uploads/2020/04/halfhalf-e1587201122349-160x90.jpg)
窓埋めをEA化してみよう
MT4のサンプルEAの一部をササっと書き換えて、有名な窓埋めの手法をEA化します。
窓埋めは、前週金曜の終値と翌月曜朝の始値のギャップ(窓)を埋めようとする相場のパターンを利用してトレードする手法であり、勝てる手法として人気があります。
窓埋めはシストレ向きの手法であり、MT4とも非常に相性が良いです。
完成品を無料でダウンロードできます。
![](https://get-daze.net/wp-content/uploads/2020/05/madoume-ea-top-e1588301632391-160x90.jpg)
応用編|さまざまな機能を追加
自作EAにトレーリングストップを実装してみよう
トレーリングストップとは、価格の動きにロスカットラインを追跡させていく投資手法です。
損失を抑えつつ、利益を伸ばせる有効な手仕舞い方法として人気があります。
![](https://get-daze.net/wp-content/uploads/2018/10/trailingstop_1539317803-1024x678-e1571012510798-160x90.jpg)
自作EAにnバーストップを実装してみよう
nバーストップは、過去nバーの期間の高値または安値超えを基準にストップロスオーダーを設定します。
直近の価格変動を重視した手仕舞い方法で、広く使われています。
![](https://get-daze.net/wp-content/uploads/2018/10/nbarstop-e1571013055497-160x90.jpg)
自作EAにATRストップを実装してみよう
ATRとは平均的な1日の値幅のことです。
ATRストップとは、トレーリングストップのトレール幅をATRで算出する投資手法です。
システムトレーダーのバイブル『魔術師たちの心理学―トレードで生計を立てる秘訣と心構え』でも、ATRを使ったストップロスの設定が推奨されています。
![](https://get-daze.net/wp-content/uploads/2018/10/ATRstop-1024x503-160x90.jpg)
自作EAに複利システムを実装してみよう
複利とは、トレードで得た利益を再投資することにより、利息が利息を生んで大きくふくらんでいく効果のことです。
リスクは大きいですが、うまく活用できれば、資金効率が上がり、グラフ上、二次曲線を描いて資金が増えていきます。
![](https://get-daze.net/wp-content/uploads/2018/10/fukuri_1539417469-1024x512-e1571012860344-160x90.png)
自作EAに新規注文の時間制限機能を実装してみよう
「この時間帯のトレードは避けたい」とかその逆とか、考えることもあると思います。
時間や曜日を指定し、そのときだけ取引しない、または取引する機能をEAに実装する方法を解説します。
![](https://get-daze.net/wp-content/uploads/2019/02/time-start-e1571012948491-160x90.jpg)
EA自作の落とし穴
EAの自作にはバックテストが不可欠です。
EAの有用性を確認するためやパラメーターを最適化するために、バックテストは正しく行いましょう。
間違ったバックテスト結果に騙されないようにしましょう。
コントロールポイントでバックテストをやってはダメ
バックテストは「全ティック」で行った結果でなければ信頼できません。
時間がかかっても「全ティック」でやりましょう。
![](https://get-daze.net/wp-content/uploads/2019/10/control-point-160x90.jpg)
カーブフィッティングに気を付けよう
バックテストではカーブフィッティングに注意しましょう。
カーブフィッティングされたシステムは、過去にだけ合うように出来てしまっているので、未来に全く通用しません。
![](https://get-daze.net/wp-content/uploads/2019/02/curve-fitting-e1570928508256-160x90.jpg)
まとめ
以上、初心者向けに、MQL4言語を使ったプログラミングについて解説しました。
せっかくMT4を使っているんですから、ぜひあなたオリジナルのEAやインジケーターを自作してみましょう。
すでに出来上がっているサンプルEAのソースコードをちょっと書き換えるだけで、こんなにいろいろ出来ます。
アイディア次第では、ものすごいEAを自作できるかもしれませんよ。