【保存版】MQL言語入門まとめ|EAやインジケーターの作り方

MQL言語まとめ

せっかくMT4(MetaTrader4)を使うのなら、あなたオリジナルのEA(Expert Advisor)やインジケーターを自作してみませんか!?

 

この記事では、初心者向けに、MQL言語を使ったプログラミングについて解説します。

「プログラミングなんて自分にはとても無理だ」と思われるかもしれませんが、そんなことはありません。実は超簡単なんです。アラフィフのおっさんが言うんだから間違いありません。

なぜ超簡単なのかというと、ここで作るどのプログラムも、基本的に、すでに出来上がっているサンプルEAのソースコードの一部を書き換えるだけだからです。

ホントに超簡単ですので、ぜひ挑戦してみましょう♪

 

MQL言語とは

MQL言語(Meta Quotes Language)とは、MetaTrader4で使用されるプログラム言語です。

MQL言語のベースはC言語です。

MetaTrader4で使用するEAやインジケーターは、このMQL言語で書かれています。

 

基礎編~プログラミングの基本~

まずは、プログラミングの基礎を理解しましょう。

ここの内容をきちんとインプットできれば、以降のアウトプットがスムーズにできるようになります。

 

EAの基本構造と書き方

MT4のサンプルEAを使ってEAの基本構造と書き方を解説します。

EA自作はけして難しいものではありません。簡単ですから、ぜひ挑戦してみましょう♪

MQL言語入門|EAの基本構造と書き方を理解しよう!
初心者向けにMQL言語プログラミングを解説しています。今回は、MT4のサンプルEAを使ってEAの基本構造と書き方を解説します。EA自作はけして難しいものではありません。一見難しそうに感じるかもしれませんが、簡単ですから、ぜひ挑戦してみましょう♪

 

変数と配列

変数と配列はあらゆるプログラム言語の基礎です。

変数はデータを入れる箱で、配列は整列された複数の変数の箱です。

MQL言語入門|変数と配列を使いこなそう!
MQL言語入門として、変数と配列について解説します。変数や配列を使えば、複雑な計算式を何度も書く必要がなくなるので、プログラムを読みやすくし、処理も速まります。EAやインジケーターを思いどおりに自作するために、ぜひ使いこなせるようになってください。

 

if文とfor文

ともにプログラムの実行の流れを制御する構文です。

if文は条件分岐を処理する構文で、for文はループ処理する構文です。

MQL言語入門|if文とfor文を使いこなそう!
MT4をこれから始めようとする方を対象に、MQL言語入門として、if文とfor文について解説します。if文とfor文は、思いどおりにEAやインジケーターを自作するために、ぜひ使いこなしたい構文です。難しそうに思うかもしれませんが、そんなことありません。

 

OrderSend()とOrderClose()

OrderSend関数は新規注文を行い、OrderClose関数は決済注文を行います。

どちらもMQL言語独自の関数ですが、EA作りには必須の関数です。

MQL言語入門|OrderSend()とOrderClose()を使いこなそう!
OrderSend()は新規注文を行う関数です。OrderClose()は保有ポジションの決済注文を行う関数です。どちらもEA作りでは必ず使う関数です。あなたもこれらの関数を使いこなして、勝てるシステムトレーダーになりましょう。

 

よく使う用語だけに絞ったお手軽リファレンス

よく使う用語だけ集めました。

あなたがEAやインジケーターを自作するときに、きっと役立つと思います。

MQL言語入門|お手軽リファレンス
MQL言語入門用に、よく使う用語だけを集めて、手軽に見れるリファレンスを作りました。EAやインジケーターを自作するときに、きっと役立つと思います。コメントの記述方法、データ型(変数の宣言)、定義済み変数・配列、口座情報関数、取引関数、テクニカル指標、カスタム指標

 

実践編~EAやインジケーターの自作~

サンプルEAを使ってオリジナルEAを自作しよう

MT4のサンプルEAの一部をササっと書き換えて、MACDとスローストキャスティックスの2つのインジケーターで売買判断を行うオリジナルEAを作ります。

完成品を無料でダウンロードできます。

MQL言語入門|オリジナルEAの超簡単な自作方法
MT4のオリジナルEAの超簡単な自作方法を解説します。Dr.田平のMACDとスローストキャスティックスを組み合わせた戦略をEA化します。完成品のダウンロードもできます。なぜ超簡単なのかというと、サンプルEAのソースコードの一部を書き換えるだけだからです。

 

サンプルインジケーターを使ってカスタムインジケーターを自作しよう

MT4のサンプルインジケーターの一部をササっと書き換えて、カスタムインジケーター「HiLoバンド」を作ります。

「HiLoバンド」とは、チャート上に、過去n日間の高値・安値のラインを描き、レジスタンスやサポートを確認したり、高値・安値のブレイクアウトを判断するテクニカル指標です。

完成品を無料でダウンロードできます。

MQL言語入門|カスタムインジケーターの超簡単な自作方法|ハイローバンド
カスタムインジケーター「HiLoBand.mq4」の超簡単な自作方法を解説します。完成品のダウンロードもできます。なぜ超簡単なのかというと、既存のソースコードの一部を書き換えるだけだからです。MT4をこれから始める初心者を対象にしています。

 

カスタムインジケーターをEA化してみよう

前回作ったカスタムインジケーター「HiLoバンド」を使って、ブレイクアウト戦略をEA化します。

ブレイクアウト戦略とは、過去一定期間の高値・安値を突破したことをシグナルとする有名な投資手法です。

完成品を無料でダウンロードできます。

MQL言語入門|カスタムインジケーターをEA化する超簡単な方法|ブレイクアウト戦略
カスタムインジケーター「HiLoBand.mq4」を使って、ブレイクアウト戦略をEA化する方法を解説します。完成品のダウンロードもできます。いつもどおりの超簡単な自作方法です。この記事を通じてカスタムインジケーターをEA化する方法を理解してください。

 

リピート系注文をEA化してみよう

MT4のサンプルEAの一部をササっと書き換えて、人気のリピート系注文をEA化します。

多くの個人トレーダーが、わざわざリピート系EAを使ってMT4でトレードしています。

その理由は、リピート系注文をMT4でするメリットがたくさんあるからです。

完成品を無料でダウンロードできます。

MQL言語入門|リピート系注文をEA化する超簡単な方法その1
リピート系注文をEA化する方法を解説します。サンプルEAのソースの一部を書き換えるだけの、いつもどおりの超簡単な方法です。実はリピート系注文とMT4は相性がいいので、ぜひあなたの勝てるEA作りに役立ててください。完成品を無料ダウンロードできます。
MQL言語入門|リピート系注文をEA化する超簡単な方法その2
前回の応用で”売りのみ”のリピート系注文をEA化する方法を解説します。もちろん、いつもどおり超簡単に自作できます。前回作ったEAのソースをほんの少し書き換えるだけです。ぜひあなたの勝てるEA作りに役立ててください。完成品を無料ダウンロードできます。

 

応用編~さまざまな機能を追加~

自作EAにトレーリングストップを実装してみよう

トレーリングストップは、価格の動きにロスカットラインを追跡させていく投資手法です。

損失を抑えつつ、利益を伸ばせる有効な手仕舞い方法として人気があります。

MQL言語入門|自作EAに簡単に実装できるトレーリングストップ
MT4のサンプルEA「MACD Sample.mq4」を使ってトレーリングストップのソースコードを解説します。仕組みさえわかれば、自作EAに簡単に実装できるようになります。ぜひあなたの勝てるEA作りに役立ててください。

 

自作EAにnバーストップを実装してみよう

nバーストップは、過去nバーの期間の高値または安値超えを基準にストップロスオーダーを設定します。

直近の価格変動を重視した手仕舞い方法で、広く使われています。

MQL言語入門|自作EAに簡単に実装できるnバーストップ
MT4のサンプルEA「MACD Sample.mq4」のソースコードの一部を書き換えて「nバーストップ」を実装します。仕組みさえわかれば、自作EAに簡単に実装できます。ぜひあなたの勝てるEA作りに役立ててください。

 

自作EAにATRストップを実装してみよう

ATRとは平均的な1日の値幅のことです。

ATRストップとは、トレーリングストップのトレール幅をATRで算出する投資手法です。

システムトレーダーのバイブル『魔術師たちの心理学―トレードで生計を立てる秘訣と心構え』でも、ATRを使ったストップロスの設定が推奨されています。

MQL言語入門|自作EAに簡単に実装できるATRストップ
MT4のサンプルEA「MACD Sample.mq4」のソースコードの一部を書き換えて「ATRストップ」を自作します。仕組みさえわかれば、自作EAに簡単に実装できます。ぜひあなたの勝てるEA作りに役立ててください。

 

自作EAに複利システムを実装してみよう

複利とは、トレードで得た利益を再び投資することにより、利息が利息を生んで大きくふくらんでいく効果のことです。

リスクは大きいですが、うまく活用できれば、資金効率が上がり、グラフ上、二次曲線を描いて資金が増えていきます。

MQL言語入門|自作EAに簡単に実装できる複利システム
MT4のサンプルEA「MACD Sample.mq4」のソースコードの一部を書き換えて「複利システム」を実装させます。仕組みさえわかれば、自作EAに簡単に実装できます。ぜひあなたの勝てるEA作りに役立ててください。

 

自作EAに新規注文の時間制限機能を実装してみよう

「この時間帯のトレードは避けたい」とかその逆とか、考えることもあると思います。

時間や曜日を指定し、そのときだけ取引しない、または取引する機能をEAに実装する方法を解説します。

MQL言語入門|自作EAに簡単に実装できる新規注文の時間制限機能
例えば、雇用統計発表時は取引しない、アジア時間は値動きが小さいので取引しない、ある曜日だけ取引したいなど。時間や曜日を指定し、そのときだけ新規注文しない、または新規注文する機能をプログラムし、EAに実装する方法を解説します。

 

EA自作の落とし穴

EAの自作にはバックテストが不可欠です。

EAの有用性を確認するためやパラメーターを最適化するために、バックテストは正しく行いましょう。

間違ったバックテスト結果に騙されないようにしましょう。

 

コントロールポイントでバックテストをやってはダメ

バックテストは「全ティック」で行った結果でなければ信頼できません。

時間がかかっても「全ティック」でやりましょう。

MT4のバックテストは「コントロールポイント」でやってはダメ!その理由は…
実験してわかったことは”「全ティック」以外の方法で行ったバックテストは信頼できない”です。少なくとも、ティック単位で条件分岐して命令を出すようなEAでは「コントロールポイント」では何の確認もできません。バックテストは「全ティック」をおすすめします。

 

カーブフィッティングに気を付けよう

バックテストではカーブフィッティングに注意しましょう。カーブフィッティングされたシステムは、過去にだけ合うように出来てしまっているので、未来に全く通用しません。

MQL言語入門|EAのバックテストではカーブフィッティングに気を付けよう!
バックテストする際には、カーブフィッティングに注意しましょう。システムの最適化をやりすぎるとカーブフィッティングしてしまいます。カーブフィッティングされたシステムは、過去の相場の動きにだけ合うように出来てしまっているので、未来の相場にまったく通用しません。

 

まとめ

以上、初心者向けに、MQL言語を使ったプログラミングについて解説しました。

せっかくMT4(MetaTrader4)を使っているんですから、ぜひあなたオリジナルのEAやインジケーターを自作してみましょう。

すでに出来上がっているサンプルEAのソースコードをちょっと書き換えるだけで、こんなにいろいろ出来ます。

アイディア次第では、ものすごいEAを自作できるかもしれませんよ。

コメント

  1. いず より:

    コメント失礼します。
    EAをつくっててわからないところがありお聞きしたいのですが、いま私は自動売買EAを使っており、24時間稼働しているかをチェックしています。たとえば一時間ごとに稼働しているかを主導でか確認しているのですが、それを自動で一時間ごとに確認してくれて動作の有無を自分のメールアドレスに送る機能を付けたいのですがそんなことってできるのでしょうか?

    • いずさん
      ご訪問ありがとうございます。
      例えば、SendMail()関数を使ってこんな感じでどうでしょうか?

      int Zi;
      if(Hour()>Zi && Minute()==0) {
      SendMail(“MT4 Mail Alert”,”No Problem”);
      Zi=Hour();
      }

      記述場所は、プログラムの最後あたりでいいと思います。
      実際に動かしてないので、うまく動くかわかりませんが。

      事前に、MT4のツール→オプション→E-メールからメールアドレスを登録しておきましょう。

タイトルとURLをコピーしました