初めて作るカスタムインジケーター

前回の記事 カスタムインジケーターの作り方から動作確認まで では、ウィザードを使用して最もシンプルな、何も処理を行わないカスタムインジケーターを作成しました。今回は、これに簡単な処理を加えたインジケーターを作りたいと思います。
前回作成したカスタムインジケーターのソースファイル TestIndicator
MetaTrader 4が “C:\mt4\MetaTrader 4” にインストールされている場合、上記ファイルをダウンロード後、インジケーターフォルダにコピーしてご使用下さい。(Zipファイルで圧縮されています)
簡単な処理を行うインジケーターを作ると言いましたが、まだ勉強を始めたばかりの方もいらっしゃるでしょうから、シンプルな処理にしたいと思います。

早速ですが、今回作成したのは以下のソースです。

変更したのは32行目以降の start 関数のみです。
前回ご説明したとおり、start 関数はカスタムインジケーターをセットしたチャートが、ティックデータを受け取った時に自動的に実行される関数です。
関数は以下の様な形式で表現されます。

関数の内容は、”{” から始まって “}” で終わります。ですので、start 関数の処理そのものは次の1行ということです。

解説に入る前に、見ていただいたほうが早いので、このインジケーターをコンパイルして実際のチャートにセットしてみましょう。
まずはソースを上のように修正して、MetaEditor上でF5キーを押すか、”Compile” ボタンを押してコンパイルします。
エラーなくコンパイルが完了したらF4キーを押してMetaTrader 4を起動し、メニューの「ファイル」-「新規チャート」より適当な通貨ペアのチャートを開きます。
ナビゲーター(表示されていなければCtrl+Nで表示されます)より、”Custom Indicators”の下にある”TestIndicator”をチャートにドラッグ&ドロップし、出てくる設定ウィンドウはそのまま”OK”ボタンをクリックします。
すると、以下のようにチャートの左上に”Hello MQL4″と表示されると思います。
SimpleIndicator
それでは解説していきたいと思います。
以下に start 関数を抜き出しました。

解説が必要なのは34行目の部分ですね。
プログラムは小さな機能の集まりです。その最小の単位とも言えるのが”ステートメント”というものです。日本語で言い換えると”一文”でしょうか。
例えば、日本語で言う”一文”とは以下のようなものですよね。
「私はプログラマーです。」
で、この文章の “。”(句点)すなわち文の最後に使用されるものは、MQLの世界では “;”(セミコロン)という約束事があります。
日本語で句点を忘れたとしても、文章の意味がわからなくなることはあまりないですが、MQLでは文の終わりを表すセミコロンが抜けると大変です。コンパイル時にエラーが発生し、全く動作しません。
試しに以下のようにセミコロンを削除してコンパイルしてみましょう。

すると、MetaEditorの下の方に、以下のようなコンパイルエラーが出るはずです。

エラーメッセージの2行目の最後をみてみると、”(35, 4)”という表示がありますが、これはエラーが発生した場所を示しています。
具体的には35行目の前から4文字目でエラーが発生しているという表示です。
さらに、”semicolon expected”とありますから、この位置にセミコロンがないとおかしいでしょ?と言われているようです。
言われたとおりに以下のように修正してみましょう。

修正したらコンパイルしてみて下さい。エラーは出なくなったと思います。ただ、プログラマーでこのような書き方をする人はまずいません(^_^;)
日本語の”。”が改行後にくるようなものですから気持ち悪いです。ワード等のワープロソフトを使うと、禁則処理が効いて普通はそうはならないと思います。
ですので、素直に次のように修正しましょうね。

ステートメントの終わり方
MQLでは文の終わりに”;”(セミコロン)をつけること

このエラーメッセージは、プログラミング初心者のうちはよくあることですから、エラーメッセージを読んで “semicolon expected” と表示されたら(あ、セミコロンが抜けてるんだな)とすぐ分かるようになって下さい。

実際の処理の内容ですが、34行目では “Comment関数”が使用されています。ここで関数呼び出しについて説明しておきます。

関数の呼び出しは上記のようになります。
突然”引数”と言うものが出て来ました。引数とは、呼び出す関数に与えるデータのことです。今は理解できなくて大丈夫です。
ただ、”Comment関数”を”Hello MQL4″という引数で呼び出すと、チャートの左上にその文字を表示してくれるんだ、くらいの理解で大丈夫です。
ではもう少しComment関数について勉強しましょう。
Comment関数で”Hello MQL4″を表示する場合、以下のように書くこともできます。

上のように修正したらコンパイルしてみて下さい。MetaTrader 4で確認すると、先ほどと全く同じものが表示されると思います。
ちなみに、コンパイルした結果は即座に反映されますから、すでにチャートにカスタムインジケーターがセットされている場合は、再度セットし直す必要はありません。
どうして同じ結果になったかといいますと、Comment関数は64個までの引数をとることができ、与えられた引数を自動的に順番に連結して表示してくれるからです。
上の例では、”Hello”と” MQL4″という2つの引数を与えていますから、結果として”Hello MQL4″がチャートの左上に出力されたというわけです。
引数は”,”(カンマ)で区切るという約束事もあります。ご自身で適当に引数を追加してComment関数をマスターして下さい。
もう一つ、忘れてはならない約束事として、文字列は 「”」(ダブルコーテーション)で囲まなければならない、という事があります。
これを忘れるとコンパイルエラーが出ますので、忘れないようご注意下さい。
また、MetaEditor上でComment関数の “Comment” の部分をクリックしてカーソルを持って行きキーボードのF1キーを押すと、MetaEditorの下の方にComment関数に関する詳細な説明が表示されます(英語ですが)
他にもいろいろな関数がありますので、参考にして色々と試してみるのも面白いと思います。

関数呼び出しのお約束
引数は”,”(カンマ)で区切ること。

今回は、MQLで最低限覚えていただきたいことを解説いたしました。また、MQLを勉強する際に便利なComment関数をご紹介いたしました。
Comment関数は今後の解説でしばらく頻繁に出てくることになると思いますので、しっかり覚えて下さい。
今回作成したカスタムインジケーターのソースファイル
次回はよりプログラミングらしい、これ抜きでは語れない制御構造について解説していきたいと思います。

応援クリックありがとうございますm(_ _)m
 にほんブログ村 為替ブログ MetaTraderへ

スポンサードリンク

このエントリーをはてなブックマークに追加