MetaTrader4

サインツールの作り方を伝授!FXにもバイナリーにも使える作成方法

「自分好みのサインツールがほしい!」

「自分のトレード条件をクリアしたらサインをでるようにしたい!」

自身のトレード手法を持っている方の中には、このようにサインツールを作ってみたいと思ってもその作り方がわからない人がほとんどだと思います。

あなたもその1人ではないですか?

今回の記事ではそんな「サインツールを作りたいけど、作り方がわからない」そんな方のために下記の順番でサインツールの作り方について進めていきます。

本記事の内容
  • サインツールとはなにか
  • ツールの作成手段
  • MT4とは
  • MQL4とは
  • MQL4基礎
  • カスタムインジケーター(サインツール)の作り方
  • サインツールに組み込む条件の考え方
  • 使えるサインツールとは

この記事を読むことで、簡単にサインツールを作ることができるようになります。

サインツールとはなにか

サインツールとは、ポジションを持つべき方向とタイミングを矢印などで表してくれるものです。主にMT4と呼ばれるFXには欠かせない高機能プラットフォーム上で使用されます。

サインツールはある条件を満たすとサインが出るような仕組みになっています。
また、サインツールはインジケーターと呼ばれます。

また、サインツールを作るためには、サインを出す条件とサインを出すためのプログラムを書く必要があります。

サインツールには主に2種類のタイプのものがあります。

  • 順張り型サインツール
  • 逆張り型サインツール

それぞれのサインツールの種類について説明していきます!

サインツールの種類①:順張り型サインツール

これは順張りといって相場の流れに沿った方向へのサインを出すものです。

FXは損小利大という損失を小さくして利益を大きくするという考え方があるため、順張りは理にかなっている手法になります。

順張りのサインツールを作る上で、トレンド系のインジケーターと呼ばれる移動平均線やMACDなどの理解が必要になります。

サインツールの種類②:逆張り型サインツール

逆張りとは相場の流れとは逆の方向へのサインを出すものです。

主に短期的な取引を行う際はこの逆張り型サインツールがおすすめです。

逆張りのサインツールを作る上で、オシレーター系のインジケーターと呼ばれるRSIやストキャスティクスなどの理解が必要です。

サインツールの作成手段

サインツールの作成手段には2通りの方法があります。

  • 自分で作成する
  • ツール制作業者に依頼する

この2通りです。

では、それぞれサインツール作成の手段について説明します!

サインツール作成の手段①:自分で作成する

専用のプログラミング言語を用いて自分でサインツールを作ることが可能です。

その際、MT4とMQL4についての知識を付ける必要がありますが、今回の記事ではそちらを詳しく解説していきます。

サインツール作成の手段②:ツール制作業者に依頼する

個人での作成が難しい場合、オリジナルのインジケーターを作成している業者に依頼する方法があります。

自身のロジックをプロに作ってもらいたい場合は多少のお金はかかる場合がありますが、依頼するのも一つの手です。

サインツール作成に必須!MT4とは

サインツール作成と使用に際して必要不可欠なのがMT4です。

MT4は、ロシアのMetaQuotes社が2005年に開発した多機能の取引ツールです。

チャートや注文、テクニカル分析や自動売買機能など、さまざまな機能が標準で搭載されています。

サインツールはこのMT4に入れて起動し利用することができます。

カスタマイズ性に優れていますが、シンプルな取引ツールとして使用することも可能です。

そのため、海外FX初心者から上級者まで、幅広い層のトレーダーに支持されています。

MT4は無料で公開されているソフトなので、公式サイトからダウンロードして使うことも可能です。

また、MT4に対応している海外FX会社なら、FX会社の公式サイトからダウンロードもできます。

MT4に搭載!メタクオーツ言語エディタについて解説

MT4には、「メタクオーツ言語エディタ」と呼ばれるツールがあります。

この「メタクオーツ言語エディタ」がサインツールを作るために必要なツールになります。

このツールにプログラミング言語を入力すると、自分でインジケーターやEAの作成が可能です。

ちなみに、MT4で使用するプログラミング言語は「MQL言語」になります。

C言語がベースとなっていますが、自作するためには、ある程度のプログラミングの知識が必要です。

つまりサインツールを作るためにはMT4とMQL4の知識が必要だということです。

MQL4とは

MQL4とはMT4の機能を拡張するためのプログラム言語で、サインツールを自分で作るために最も必要なものがMQL4の知識です。

これがなければ自分が作りたいサインツールを作ることはできません。

MQL4はC++をベースに開発された言語のため、C++をはじめC#やJavaなどの開発経験があれば比較的容易に開発を行う事が出来ます。

MQL4のプログラムを開発するには、MetaEditorというアプリケーションを使います。

MetaEditorではMQL4によるプログラムの新規作成や編集といったエディターとしての機能に加えて、コンパイル(ソースコードから実行ファイルを生成する)からデプロイ(実行ファイルをMetaTrader4に配置し認識させる)まで、MQL4による開発の全てをこれ一つで網羅出来る非常に多機能なアプリケーションです。

MQL4で作ることができるものは以下の4つです。

  • カスタムインジケーター
  • エキスパートアドバイザー(EA)
  • スクリプト
  • ライブラリ

では、それぞれそのようなものなのかについて説明します!

MQL4で作ることができるもの①:カスタムインジケーター

いわゆるサインツールというものがこのカスタムインジケーターに入ります。

サインツール以外にも移動平均線やボリンジャーバンドなどの、インジケーターを拡張したり、全く新しいインジケーターを作ったりすることができます。

MQL4で作ることができるもの②:エキスパートアドバイザー(EA)

エキスパートアドバイザー(EA)は指定された条件に従い自動的に売買を行うプログラムです。

売買条件は自由いカスタマイズ可能で、カスタムインジケーターを売買条件にすることも可能です。

つまりサインツールを作成したらその方向に自動で売買する機能を付与することも可能になるわけです。

MQL4で作ることができるもの③:スクリプト

スクリプトはチャートに設定した際に一回だけ処理を実行するプログラムです。

取引を補助するような機能、例えば任意のタイミングで保有中のポジションを全て決済する、といった内容はスクリプトとして開発することになります。

MQL4で作ることができるもの④:ライブラリ

ライブラリは他のMQL4プログラムから呼ばれることを目的としたプログラムです。

よく使用する処理をまとめて1つのライブラリとして用意しておくことでコードの重複を防止し開発工数の削減に繋げるが出来ます。

サインツールの作り方の基礎!MQL基礎プログラムについて

さっそくMQL4についてプログラムの基礎的なソースコードに記載する内容をいくつか紹介します。

MQL基礎プログラム①:プロパティの定義

プロパティとはMQL4プログラムの設定に関する定義で、通常はソースコードの先頭に記述します。

#property strict
#property link "任意のリンク"

 

プロパティの種類は他にもたくさんあり、作成するプログラムによっては定義が必須となるプロパティもあります。プロパティの種類については以下のリンク先をご参照ください。

MQL基礎プログラム②:パラメータの定義

パラメーターとはMQL4プログラムを使用するユーザーが後から自由に変更可能な項目です。
サインツールを作る場合は任意のオシレーターの数値を利用するケースが多いです。
もし通貨や相場ごとにパラメータを変えるのであれば、必須のプログラムになります。

input int MAPeriod = 20; //移動平均線の期間
input ENUM_MA_METHOD MAMethod = MODE_SMA; //移動平均の種別
input ENUM_APPLIED_PRICE MAPrice = PRICE_CLOSE; //移動平均の適用価格

 

行の頭に「input」と記載した変数はパラメータ扱いとなり、プログラムをチャートに設定した際に表示されるウインドウの「パラメーターの入力」タブで設定内容の変更をすることが可能です。

MQL基礎プログラム③:パラメーター項目の日本語化

パラメーターの項目名は変数名となりますが、末尾に「//コメント」をつけることでそのコメントがパラメータの項目名として表示されます。

日本語の表示も可能なので設定を間違えることを防ぐ役割もあるためできる限り日本語で項目名を表示しましょう。

サインツールの作り方実践:イベントハンドラの定義

イベントハンドラとは特定の条件を満たすことで呼ばれる関数のことです。

MQL4では主にこのイベントハンドラの関数内に記述していくことになります。

イベントハンドラの定義①:OnInit関数

OnInit関数はMQL4プログラムが開始する際に1回だけ呼ばれる関数で、藻にプログラムの初期化処理の役割をしています。プログラムが動作する上で必要な前準備を行う関数です。

int OnInit()
{
//プログラムの初期化に関する処理

//初期化が正常に行われた事を示す定数を返却
return INIT_SUCCEED;
}

イベントハンドラの定義②:OnDeinit関数

OnDeinit関数はMQL4プログラムが終了する際に1回だけ呼ばれる関数となり、主にプログラムの終了処理を記述します。

例えばプログラム動作中に表示したオブジェクトの削除など、プログラムが開始する前の状態に戻すための処理です。

void OnDeinit(const int reason)
{
// プログラムの終了に関する処理を記述
}

イベントハンドラの定義③:OnCalculate関数

OnCalculate関数はサインツールを作成する際に必須の定義です。

インジケーターのメイン処理を記述する関数です。

チャートの現在価格が変動すると、このOnCalculate関数が自動的に呼ばれることになります。

最初にOnCalculate関数が呼ばれた時点で全てのローソク足に対して判定や表示処理を行い、2回目以降は最新のローソク足だけに対して判定や表示処理を行うのが一般的なインジケーターの処理方法です。

int OnCalculate(
  const int rates_total,
  const int prev_calculated,
  const datetime& time[],
  const double& open[],
  const double& high[],
  const double& low[],
  const double& close[],
  const long& tick_volume[],
  const long& volume[],
  const int& spread[]
){
  // インジケーターのメイン処理を記述
  // サインツールの条件はここに記述していきます

  // 計算済みのローソク足の本数を返却
  return rates_total - 1;
}

 

ここまでのまとめ
  • サインツールを作成するためにはMQL4を知る必要がある
  • MQL4はMT4の機能を拡張するプログラム言語
  • サインツールの開発はMT4に同梱のMetaEditorを使う
  • 作成したいサインツールによってソースコードに必要な定義が異なる
  • サインの条件は主にOnInitに記述する

サインツール(カスタムインジケーター)の作成手順

加藤エル兄
加藤エル兄

サインツールはMT4の「カスタムインジケーター」に含まれることは理解できたかな?

カトエル
カトエル

うん!できたよ!

加藤エル兄
加藤エル兄

よかった!

じゃあ早速サインツール作成の手順について説明していくね!

では、サインツールの作成の手順について説明していきます。

サインツールを作るためには、以下の手順を踏んで作成していきます。

  1. MT4を起動してMetaEditorを開く
  2. MetaEditorの言語表示を日本語に変更する
  3. MetaEditorでプログラムを書く

では、それぞれ作成の手順について説明します!

サインツール作成手順①:MT4を起動してMetaEditorを開く

まずMT4を開き、画面上部の「黄色いノート画像」をクリックしてMetaEditorを起動します。

サインツール作成手順②:MetaEditorの言語表示を日本語に変更する

MetaEditorが英語の場合は、「View」→「Languages」→「Japanese」を選択して、日本語表示にしましょう。

英語表示がよければそのままでも大丈夫です。

バージョンによっては文字化けする場合がありますが、「ツール」→「オプション」→「フォント」から、日本語表示対応のフォントに変更することで解消できる場合があります。

サインツール作成手順③:MetaEditorでプログラムを書く

MetaEditorの「ファイル」→「新しいファイル」をクリックしてプログラムを起動させていきます。

 

作成するコンテンツはカスタムインディケータを選んでください。

いくつか選択項目を経て進めていきます。

あとはサインツールの内容に従ってプログラムを記述していきます。

サインツールに組み込む条件の考え方

サインツールを作る上でどんな条件を組み込むかはとても重要です。条件一つでサインツールが優位性があるかどうかが大きく分かれます。

自分のどういうトレードを行いたいかによってしっかり条件を考えましょう。

サインツールに組み込む条件として簡単な例を2つご紹介します。

  • 順張りサインツールの考え方
  • 逆張りサインツールの考え方

条件の考え方①:順張りサインツールの考え方

順張りのサインツールによく使われる条件が移動平均線とMACDです。

この2つはトレンド系の順張り向きのインジケーターです。

短期の移動平均線と中期の移動平均線がゴールデンクロスもしくはデットクロスしている状態で、MACDも上昇もしくは下降しているときを条件とすると簡単に順張りのサインツールを作成できます。

このように順張りのサインツールを作りたい場合はトレンド系の条件を組み合わせるのがおすすめです。

条件の考え方②:逆張りサインツールの考え方

逆張りの場合はオシレーター系の条件が一般的です。

RSIが買われすぎもしくは売られ過ぎの状態で、CCIも買われすぎもしくは売られすぎの場合に逆張りのサインを出す条件とするとオシレーター系の反転を狙ったサインツールができます。

トレンドに逆らう動きですので、大きな値幅は望めませんが組み合わせによってはとても優位性があります。

FXやバイナリーで使えるサインツールとはどういうものか

実際のトレードに使えて有意義なサインツールの定義は、以下になります。

トータルで利益がでるように検証済みのサインツール

トレードロジックにあわせて、利益が残るように検証済みのものであることが第一です。

サインツールを作成したら必ずバックテストをとり、作成したサインツールが本当に優位性のあるものなのかをしっかり見極めましょう。

より楽に効率的にトレードできるように相場状況を判断するサインツール

それまでは複数のインジケーター等を使って自分で相場分析していたことを、1つのカスタムインジケーターのサインにまとめていったりもできます。

それにより、よりシンプルにトレード判断ができるようになります。

また、サインはメールやアラーム音で知らせることもできるためサインツールはよりトレードを効率的に行うためのものです。

まとめ

サインツールとはカスタムインジケーターの一つで、自分で作成するにはMT4とMQL4が必要です。

MQL4ではサインツールの作成以外に自動売買EAなども作成が可能です。

MQL4でサインツールを作る上で定義やイベントハンドラをしっかり理解しましょう。

サインを出す条件を考える際はまず、順張りにするのか逆張りにするのかを考えましょう。

それによって条件のプログラムが大きくことなります。

サインツールが完成したら優位性についてバックテストをとって検証しましょう。

作成できたとしても使い物にならなければ意味がありません。