テクニカル指標をマスターする|MQL入門(9回目)

2018年11月12日

メタトレーダーのチャート

今回はMT4/MT5で利用可能なテクニカル指標について学びます。

難しい計算などは必要なく、MQLが持っている関数を利用するだけです。

第8回目までを確認いただいている前提で進めますので、まだ見ていない方は先にご確認いただければと思います。

初心者でも分かる!MT4/MT5のプログラミング入門|MQL入門(1回目)

MT4/MT5のコメントと変数について|MQL入門(2回目)

MT4/MT5で数値の計算をしてみる|MQL入門(3回目)

条件分岐をマスターする|MQL入門(4回目)

ループ処理をマスターする|MQL入門(5回目)

配列を使いこなす|MQL入門(6回目)

組み込み関数と自作関数を理解する|MQL入門(7回目)

MT4/MT5独自の処理を理解する|MQL入門(8回目)

どのようなテクニカル指標が使えるか

移動平均線、ボリンジャーバンド、RSIなど様々なテクニカル指標がMT4標準で搭載されています。

MQLコミュニティのインジケーターのページ(MT4用)と、インジケーターのページ(MT5用)に使えるものはすべて載っていますので、ご確認いただければと思います。

今回は、この中でもメジャーなテクニカル指標を紹介しながら実戦での使い方についても触れていきます。

 

テクニカルの取得方法はMT4とMT5で全く異なる

例えば単純移動平均の値を取りたい場合は、以下のようになります。

[MT4の場合]

 

[MT5の場合]

MT5ではエラー処理なども記述する必要があるのですが、分かりやすいように最小限の構成にしてあります。

 

このような違いがMT4からMT5へ移行するときの障壁でしょうか。

ただ、ここまで何度かご紹介してきた通り、MT4/MT5共通ライブラリによってMT4と同じ記述でMT5が動きますので、そちらを導入することをお勧めします。

 

テクニカル指標に関してはMT4とMT5を同じページで紹介するのは難しいので、ここではMT4での使い方を説明していきます。(共通ライブラリを入れればMT5でも同じく動かせますので。)

 

 

移動平均線

使い方

最もシンプルで最も奥が深いテクニカル指標です。

初回なので、MQLコミュニティの内容を参考にしつつ詳しく見てみましょう。

概要としては、iMAという関数があるので必要な引数を渡せば移動平均線の値が取得できるというものです。

どのような引数を渡せば値が取得できるかが、定義に書かれています。

項目名 説明
symbol シンボル名 EURUSD, USDJPY, etc
NULLにするとプログラムが適用されているチャートのシンボル名
timeframe 時間枠 5分足なら5、1時間足なら60、etc
0にするとプログラムが適用されているチャートのタイムフレーム
ma_period 移動平均線の期間 25期間, 100期間, etc
ma_shift 移動平均線を基準からずらす期間 ※後述します。
ma_method 移動平均線の計算方法 単純移動平均線(SMA)
指数平滑移動平均線(EMA)
修正移動平均線(MMA)
加重移動平均線(WMA)
applied_price 適用価格(どの価格を元に計算するか) 終値, 始値, 高値, 安値, etc
shift いくつ前の値を取得するか 1本前, 2本前, etc

ma_shiftは少し分かりづらいのですが、実際のチャートで確認すると簡単に理解することができます。

[ma_shiftが0の場合]

MAのシフトが0の場合

 

[ma_shiftが5の場合]

MAのシフトが5の場合

移動平均線が前にずれたのが分かると思います。

ma_shiftをプラスしていくと先行指標のように見えますが、やっていることは移動平均線の描画位置をシフトしているだけです。

 

実戦での使い方

移動平均線のみでエントリーすることは少ないですが、価格が移動平均線に対してどの位置にあるかをトレードの判断基準の1つにすることがあります。

このプログラムでは1本前のローソク足の終値と、1本前の移動平均線の関係を見ています。

ローソク足や移動平均線の1本前とは、最新から1つ前の事を指し、具体的には下図の黄色丸になります。

チャート状況の確認

プログラムを実行すると、「価格は移動平均線より上にあり」、「1.2625円移動平均線から乖離」していることが分かりました。

 

ボリンジャーバンド

使い方

1つ1つのテクニカル指標の使い方を説明しても、ただただ覚えるだけになってしまいます。

今後を考えて、使ったことのないテクニカル指標を使う場合にどのような順序で問題解決すればよいのかを説明します。

あくまでも私のやり方なので、これが正解というわけではありませんが参考になれば幸いです。

 

ボリンジャーバンドを知らない状態から使えるようになるまでの道のり

1. やりたいことが見つかる

「ボリンジャーバンドを使ってみたい。」と考えたとします。

 

2. 基本調査

ボリンジャーバンド自体がよくわからないので、「ボリンジャーバンドとは」でgoogle検索します。

 

3. 概要を把握する

googleの検索結果からボリンジャーバンドの概要のみ把握します。

  • 移動平均線と上下±1σ~±3σの線で構成される
  • ±1σの範囲内に価格が68%収まる
  • ±2σの範囲内に価格が95%収まる
  • ±3σの範囲内に価格が99%収まる
  • 実際は理論通りにはならないことが多い
  • 逆張りと順張りの両方で使える

 

4. MQLの関数確認

MQLコミュニティでボリンジャーバンドがMQLの関数にあるか確認します。

 

5. 使い方の確認

上記のような定義が書いてありました。

移動平均線の時に学んだものと共通のものは先ほどまでの知識で使うことがてきます。

「symbol, timeframe, period, bands_shift, applied_price, shift」は共通のようです。

残っているのが、「deviation, mode」の2つです。

deviationは「メインラインからの標準偏差の値」ということなので、先ほど調べた±1σ~±3σを設定すれば良さそうです。

modeは説明に「enumeration value (0 – MODE_MAIN, 1 – MODE_UPPER, 2 – MODE_LOWER).」と書かれていました。

移動平均部分が0、+σ部分が1、-σ部分が2ということのようです。

 

6. 試しに書いて動かしてみる

MQLコミュニティにはサンプルも一緒に書いてあるので、それを参考にプログラムを書きます。

今回は、20期間で2σとしました。

プログラムを実行したら、赤枠部分と黄色丸の部分が同じ値であることを確認します。

問題なければボリンジャーバンドの値を取得できるようになったということです。

ボリンジャーバンドの確認

 

この流れで問題解決に取り組めば、未知のテクニカル指標が来ても直ぐに使えるようになると思います。

もちろん最初のうちは時間が掛かるとは思いますが、慣れるまでです。

だいぶ横道に逸れてしまいましたので、元のテクニカル指標の説明に戻ります。

 

実戦での使い方

順張り

終値が±2σを超えたら売買するパターンを考えます。

超えたタイミングを捉えたいため、2本前の時点では超えておらず1本前で超えた場合にシグナルです。

 

ボリンジャーバンドを順張りで使う

 

逆張り

±2σを超えたタイミングで逆張りするのは危険なので、一度超えて戻ってきたところで売買するパターンを考えます。

ちょうどよいチャートが見当たらなかったので、無理矢理ですが6本前と5本前の値で判定します。

あくまでも検証なのでご容赦ください。

 

ボリンジャーバンドを逆張りで使う

 

RSI (Relative Strength Index)

使い方

ボリンジャーバンドの時の要領でMQL4コミュニティを確認してみてください。

RSIはここまでの知識があれば分からない項目は1つもないので、そのまま使うだけになります。

ただし、基本知識として「RSIは0~100の値をとり、0に近いほど売られ過ぎ100に近いほど買われ過ぎ」という部分は理解しておいてください。

 

実戦での使い方

単独で使うことは少ないですが、いくつかのフィルターと組み合わせて利用することがあります。

RSIが70を上回ったら売り、30を下回ったら買いという逆張りパターンを考えます。

ちょうどよいチャートが見当たらなかったので、6本前と7本前で動作確認しました。

確認すると、赤丸の値は69.48で黄色丸が71.42となっていましたので、プログラム通りに動いています。

RSIの逆張り

 

最後に

ここまでの内容で、テクニカル指標を使って売買の判断基準にする方法が分かったのではないかと思います。

全てのテクニカル指標を書くことはできませんが、調べ方が分かれば今後どのようなテクニカルが来ても対応できるようになります。

また、今回はシグナル部分をprintfにしましたが、実際に自動売買をする際はprintf部分がエントリーのフラグに変わるだけなので特に違和感は無いと思います。

自動売買のやり方については「メタトレーダー(MT4)で自動売買するための事前準備(第1回)」をご参照ください。

 

次はかなり難しくなりますが、「MT4/MT5でオブジェクト指向入門|MQL入門(10回目)」です。

 

自動売買入門のまとめは以下をご参照ください