ホーム> 山中康司 >かんたんプログラミング④

かんたんプログラミング④

「かんたんプログラミング」と題して、誰でもカスタム指標が作成できることをゴールとして5回程度の内容で進めています。今回は4回目になります。

前回の復習

前回の復習ですが、カスタム指標を表示するための準備部分でした。

変えてはならない「おまじない」部分があること。外部から(後から)変えられるパラメータ、設定表示する線の数(今回は3本)に応じて準備する線種、バッファ、シフトと今後新たなカスタム指標を作る時に必要な部分ですが、これらは同じことを繰り返していくだけなので、やっているうちに慣れる部分と言えます。

「かんたんプログラミング」の学習に使うテンプレート(ソースコード)は以下からダウンロードしてください。 http://www.ascendant.jp/mt4/HLB.zip

カスタム指標の計算と表示

今回は61行目から最後(80行目)までですが、カスタム指標自体の計算とその表示を行うもっとも重要な部分となります。まずは、該当部分のソースコードをご覧ください。

62行目でカスタム指標の計算と表示をする部分であることを示し、その範囲は63行目のカッコから始まり、80行目で終わることを示しています。今回はおまじない部分が多いです。

まず、62行目から69行目まではカスタム指標を表示する部分のおまじないなので触れないでください。また最後の79・80行目も終わりの合図のおまじないで同様に触れないでください。となると、カスタム指標の計算は残り71~78行目の部分となります。今回はここを重点的に見て行きます。

while(i>=0) //各ラインの計算
{
ExtMapBuffer0[i]=High[Highest(Symbol(),0,MODE_HIGH,BandsPeriod,i+1)]; //ライン1
ExtMapBuffer1[i]=Low[Lowest(Symbol(),0,MODE_LOW,BandsPeriod,i+1)]; //ライン2
ExtMapBuffer2[i]=(ExtMapBuffer0[i]+ExtMapBuffer1[i])/2; //ライン3

//以下同じように増やしていく
i–;
}

まず、この部分はwhile構文というもので、カッコ内(72行目の{から、78行目の}まで)の作業をi(回数)が0以上の間続けるということを指示しています。つまり、71・72行目と77・78行目もおまじないとなりますので、見るべきは73~75行の3行となります。これら3行が今回のカスタム指標の3本のラインを計算している部分です。

逆に今回に至るまでのほぼ全ての部分は準備のための部分ですから、毎回それほど変更はありませんが、この3行(あるいは線の数に応じた行数)は毎回、表示するための内容に書き換える必要があるわけです。しかし、心配は要りません。MT4には予め便利な指標用の関数が準備されていますので、それらを流用しながら記述すればよいのです。

各ラインの計算

それでは、順番に見て行きましょう。

73行目(1本目の線)
ExtMapBuffer0[i]=High[Highest(Symbol(),0,MODE_HIGH,BandsPeriod,i+1)];

ExtMapBuffer0[i]はライン1ですよということを示し、右辺にそのライン1の計算内容が示されています。

右辺High[Highest(Symbol(),0,MODE_HIGH,BandsPeriod,i+1)]を順に見て行きましょう。

まず、カッコの中からですが、1つ目のSymbol()はチャートに表示されている通貨ペア,2つ目の0はチャートに表示されている時間枠を示しますので、これら2つはおまじないと考えてください。

そして、Highは高値を計算する関数で、Highestは最高値を計算する関数です。つまり、Highest Highと呼ばれる最も高い高値(最高値)をHigh[Highestという部分で指示し、それに対応する4本値は高値ですから、カッコの中3つ目の部分で高値(MODE_HIGH)を指定し、4つ目の遡る期間はBandsPeriodという名前で26行目で既に初期値を20としています。最後のi+1はシフトさせる期間ですが、初期値を+1として直近のLIVEのバーを無視する設定としています。

文字で書くとややこしい感じがしますが、
High[Highest(Symbol(),0,MODE_HIGH,BandsPeriod,i+1)]
という部分全体で最高値を表示する行であると、これは暗記すべき内容に該当します。もちろん暗記というよりは使い方をどこかにメモしておく程度で十分です。

74行目(2本目の線)
ExtMapBuffer1[i]=Low[Lowest(Symbol(),0,MODE_LOW,BandsPeriod,i+1)];

この行は73行目から類推できますね。
Low[Lowest(Symbol(),0,MODE_LOW,BandsPeriod,i+1)]
という部分で最安値を表示する行として暗記です。

75行目(3本目の線)
ExtMapBuffer2[i]=(ExtMapBuffer0[i]+ExtMapBuffer1[i])/2;

この行はHiLoバンドの高値のラインと安値のラインの中間値であるミッドラインを表示するための計算です。このように指標の計算結果どうしを計算することも可能です。

良く見るとわかりますが、右辺は1本目の線の左辺ExtMapBuffer0[i]と2本目の線の左辺ExtMapBuffer1[i]を足して、それをカッコで囲み最後に2で割っています。四則演算で使う記号はエクセルと同じで掛け算は*(アスタリスク)、割り算は/(スラッシュ)で表示します。そして、3行とも行の最後に;(セミコロン)を忘れずに。

これで、HiLoバンドのカスタム指標が完成です。次回は、この3行部分を色々と変えることで、別のカスタム指標を表示する具体例をいくつか紹介しましょう。

今回のまとめ

カスタム指標の最も重要な部分は、わずか数行(HiLoバンドでは3行)の計算部分であって、この部分はMT4が関数として予め用意していること、そして、計算結果どうしを計算することも可能なこと、今回は非常に簡単ですが暗記(メモに取っておく)部分という説明でした。

これで全体を見渡しましたので、次回はささっと別のカスタム指標を作ってみましょう。

◆本稿は筆者の個人的見解に基づき、執筆されたものです。あくまでも個人ユーザー向けのコラムとして提供された参考記事であり、FXTFの見解、分析ではございません。

リスク警告 / 免責事項

  • 当サイトは、投資判断にあたり参考となる情報の提供を目的としており、金融商品の売買を勧めるものではありません。
    投資の最終的な判断はお客様ご自身の責任でされるようお願いいたします。
  • 当サイトは、当社が信頼できると判断した情報を掲載しておりますが、その情報の正確性、完全性を保証するものではありません。
    ご提供する情報を利用につき生じた何らかのトラブルや損失・損害等につきましては、当社及びブログ執筆者は一切責任を負うものではありません。
  • 当サイトでご提供する情報の著作権は、当社又はブログ執筆者で帰属します。許諾なく、コンテンツを翻案、公衆送信等いかなる目的、態様においても利用することはできません。