初めてのインジケータ作成② インジケータの作成手順

この記事では、インジケーターをはじめて作る人へインジケータを作る全体的な手順を説明します。

イメージしやすいように簡単なインジケータ作成を通じて説明していきます。実際にご自身で作りながらながら読んで頂くと理解しやすいと思います。

なお、インジケーターの作成にはメタエディターというソフトを使います。メタエディターはMT4のインストール時にPCにインストールされています。

まだメタエディターを使ったことがないという人は、前回の記事からお読みください。

今回作成するインジケータ

今回作るインジケータの機能は、下図のように「ターミナルに現在のBid価格を表示する」というごく単純なものです。

インジケータをチャートに適用

このインジケーターには実用性は全くありません(汗)。

簡単なインジケーターを実際に作ることで、全体の流れを理解してしまおうというのが今回の趣旨なのです。

手順1. インジケータのテンプレートを作成

では作成手順に入ります。まずは以下の手順でインジケータのテンプレートを新規作成します

MQLウィザードを開く

MetaEditorのツールバーにある「新規作成」をクリックし、MQLウィザードを開きます。

MQLウィザード(新規作成)

作成するプログラムの種類を選択

「カスタムインジケータ」にチェックを入れて「次へ」

MQLウィザード(カスタムインジケータ)

一般プロパティを入力

名前、著作者、リンクを入力して「次へ」

  • 名前:インジケータ名
  • 著作者:インジケータの著作者の名前
  • リンク:ウェブサイトがあればURL

MQLウィザード(一般プロパティ)

補足

「パラメータ」は必要に応じてプログラム内に直接記述すれば良いので、ここで指定する必要はありません。

イベントハンドラ

そのまま何も入力せずに「次へ」

MQLウィザード(イベントハンドラ)

補足

補足:[OnTimer]や[OnChartEvent]は必要に応じてプログラム内に直接記述すれば良いので、ここでチェックする必要はありません。

描画プロパティ

そのまま何も入力せずに「完了」

MQLウィザード(描画プロパティ)

補足

補足:色などの描画プロパティは、必要に応じてプログラム内に直接記述すれば良いので、ここで指定する必要はありません。

テンプレート完成

ここまでで指定した内容でインジケータのテンプレートが作成されます。

MQLウィザード(テンプレート)

これでインジケーターのテンプレート作成は完了です。

手順2. テンプレートの内容を確認

出来上がったテンプレートの内容を説明します。

テンプレートの構造

テンプレートは大きく分けて3つのエリアに分かれています。

①のエリア
インジケータ全体に関する値を記述するエリアです。作者などの情報の他、グローバル変数、ユーザーの入力パラメータなど、このインジケータ全体で使う値を記述します。
②のエリア
初期化処理(OnInit)を記述するエリアです。インジケータをチャートに適用した直後にここの記述内容が一度だけ実行されます。最初に1回だけ実行したい処理(例えば使用する変数に初期値を代入するなど)をここに記入します。
③のエリア
ティック受信時の処理(OnCalculate)を記述するエリアです。ここの内容はMT4がティックを受信するたびに実行されます。通常はここにインジケーターのメインとなる機能を記述します。

手順3. コードを書く

いよいよインジケータの機能をプログラムに書いていきます。といっても今回は単純な処理なのでたった1行のコードを書くだけです。

先ほど作成したテンプレートの③のエリアに下記のコードを追記します。

Print(Bid);  //Bid価格をターミナルに表示する

このコードの内容は「Bid価格をMT4のターミナルに表示する」というものです。使っているPrint()は、()の中の変数や文字列をターミナル表示する関数です。

またセミコロン;は、コード一文の終わりを意味します。「ここまでが一つの命令ですよ」と伝える意味があります。文章の「。」みたいなものですね。このセミコロン;を書き忘れるとプログラムがエラーになりますので忘れないように記述しましょう。

その後にある//はコメントを意味し、//以降のその行の記述はプログラムの処理からは無視されます。処理内容のメモなどを書いておくと後でプログラムを見たときに分かりやすくなります。

コード追記後の③エリアは下記のようになります。

コード追記後

この③エリアは、MT4がティックを受信するたびに実行されるので、MT4のターミナルに最新のBid価格が次々と表示されるというわけです。

これでコードの記述は終わりです。たった1行コードを書き加えるだけなので簡単でしたね。

手順4. コンパイルする

コードを書き終えたらコンパイルします。コンパイルとは、MQL言語で書かれたプログラムを、コンピュータが実行できるデータ形式に変換することを指します。

コンパイル

ツールバーの「コンパイル」をクリック

コンパイル

コンパイル完了

メタエディター下部のツールボックスに、0 error(s), 0 warning(s)と0と表示されれば無事コンパイル完了です。エラーがあった場合はコードを修正して再度コンパイルしてください。

エラーメッセージ

補足:errorとwarningについて

  • エラー(error)が表示された場合は、コンパイルできていません。コードを修正してから再度コンパイルしてください。
  • 警告(waring)が表示された場合は、コンパイルできていますが、コード内に修整した方が良い箇所が含まれています。

※warningが表示されていてもインジケーターは動く場合もありますが、基本的にはerrorもwarningも全て解消されるまでコードを修正します。

エラーが出なければコンパイルは一瞬で完了します。

補足:ファイルの場所

インジケーターのプログラムファイルは、メニューバー「ファイル」→「データフォルダを開く」→「MQL4」フォルダ→「Indicators」フォルダの中に保存されます。

プログラムファイルの保存場所

拡張子.mq4がコンパイル前のファイルで、拡張子.ex4がコンパイル後のファイルです。


長いプログラムになるとコンパイル時にエラーがどっさり出てくるようになります。でも本当につらいのは、エラーがないのにインジが思った通りに動いてくれない時です。そんな時は、原因を特定するのに結構苦労します。デバッグのコツはいつか記事にまとめたいと思います。

手順5. MT4のチャートに適用

では作成したインジケータを実際にチャートに適用してみましょう。

コンパイルが完了していれば、MT4のナビゲーターに作成したインジケータ名が表示されているはずですので、それをチャートに適用します。

インジケータをチャートに適用

ターミナルの「エキスパート」タブを見てみてください。最新のBid価格が次々と表示されれば、インジケーターは正常に動作しています。

※土日などで市場が閉まっているときはティックが更新されないので1回しかBid価格は表示されません


ちゃんと動いたでしょうか?ちゃんと動いたならコングラチュレーション!です。もしかしたらこれがあなたが作った最初のインジケーターかもしれませんね。

まとめ

今回は実際にインジケーターを作りながら、インジケーター作成の全体的な手順を説明しました。手順を整理すると以下のとおりです。

  1. インジケータのテンプレートを作成する
  2. コードを記述する
  3. コンパイルする(エラーがあれば修正)
  4. チャートに適用する

複雑なインジケーターであっても、コードを書く量やエラーの修正箇所が増えるだけで、根本的な流れは同じです。あとは数をこなしてMQLのコマンドを覚えたりコードの書き方に慣れたりしていけばOKです。

「インジケーターのプログラミングって思ったよりも大したことないな。」と思えばいいんです。それが上達のポイントだと思いますよ。

さて、次の記事↓では、少しだけレベルアップしてチャートにラインを描画するインジケータの作り方を説明します。

コメント

この記事へのコメント(2 件)

  • yuzuponさんより

    説明がわかりやすい
    簡単なインジを自分でも作ってみたいと思って本ももってますが
    EAの本だったので 挫折してました

  • 管理人ですさんより

    yuzuponさんへ
    コメントありがとうございます。私自身が最初にインジケーターを作った時にどこでつまづいたかな?ということを思い出しながら書きました。わかりやすいと言っていただけると嬉しいです。
    この「はじめての・・」シリーズは全20回ぐらいの構想なのですが、4回で止まってしまってます、、、。いつか更新するのでよかったらまたお越しください。
    ちなみにインジもEAもプログラムの書き方は8割くらいは同じですので、yuzuponさんがお持ちの本もいずれ役に立つときが来ると思いますよ。