■超直感!MT4プログラミング講座■ 第6回 インディケータープログラムの解説

スポンサーリンク

こんにちは!キリンです。
GW真っ最中!
私は引っ越し先を探してきました。
納得のいく部屋を見つけて、さらに洗濯機も購入。
あとは引っ越すだけ!
それ以外にも社会保険とか、健康保険とかの手続きもしていかなければならないですよね。
詳しく調べていかないと、あとで痛い目に会いそうなので、
しっかりと勉強します。
「起業だーっ!」って意気込んでいるときはいいのですが、
やはり多少なり不安に感じてしまうわけで。
そんなときには、野村克也さんの
「不安は行動の不足から起こる」
という言葉を思い出します。
「まだ何かしていないことがあるんじゃないか。」
「準備は大丈夫か」
などなど、常に行動の不足がないかをしっかりと顧みることは大事ですね。
その意識を持つことで、不安を取り除くための努力を怠っていたことが
一番の不安材料だったということに気がつきました。
しっかりと芯を据えて構えていきたいですね。
さて、前置きが長くなりましたが今回の講義です。


第6回 インディケータープログラムの解説

前回、MQLの必須関数の説明をさせていただきました。
インディケータープログラムを見ても、
分からない使い方がたくさんあると思います。
その中で、簡単な説明で済むものは今回取り上げようと思っています。
今後にも繋がる重要な内容でもありますので、
しっかりと理解していただければと思います。
では、いつものプログラムを前から解説していきます。

//+------------------------------------------------------------------+
//| MA Kirin.mq4 |
//| Copyright Kirin 2010, Forex Trading Laboratory. |
//| http://ameblo.jp/ftlabo-kirin/ |
//+------------------------------------------------------------------+

「//」を入れると、その行で「//」より後ろのものはプログラムの動作から除外されます。
言い換えれば、「メモ書きができる」んですね。
プログラム自体には関係ないけど、見直したときに何か分かりやすいようにメモしておくときに、
「//」を入れ、その後ろにメモを書きます。

#property copyright “Copyright Kirin 2010, MetaQuotes Software Corp.”
#property link “http://ameblo.jp/ftlabo-kirin/”
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Red
#property indicator_level1 0

「#property」を分の最初に入力することで、プログラムのプロパティを定義します。
って言っても多分伝わりが悪いと思いますし、
ちょっと発展の内容も含まれていますので、
「#property」っていうのがあるんだということを理解していただく程度でいいと思います。

// 指標バッファ
double Buf[];
// 外部パラメータ
extern int MAPeriod = 13;

Buf[]っていうのは配列の定義の方法・・・といっても配列の説明はまだ行っておりませんので、
今後のお楽しみにとっておきます。
次に大事な「extern」の説明です。
externで定義した変数は、EAやインディケーター導入時の「パラメーターの入力」欄で
変更ができるようになります。
この場合、移動平均の区間をMAPeriodで定義しているのですが、
それをextern関数にすることにより、
使う人がパラメーターの入力で簡単に変更できるようにしています。

//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//—- indicators
// 指標バッファの割り当て
SetIndexBuffer(0, Buf);
// 指標ラベルの設定
string label = “MA(“+MAPeriod+”)”;
IndicatorShortName(label);
SetIndexLabel(0, label);
return(0);
//—-
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//—-
//—-
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
//—-
int limit = Bars-IndicatorCounted();
for(int i=limit-1; i>=0; i–)
{
Buf[i] = iMA(NULL, 0, MAPeriod, 0, MODE_SMA, PRICE_CLOSE, i);
}
//—-
return(0);
}
//+------------------------------------------------------------------+

上記の内容はそれぞれ細かく説明していかなければならないものですね。
次回以降にお話させていただくことにします。
思ったより簡単に説明できる点が少なかったですね^^;
次はインディケーターの定義方法か、配列について話させていただく予定です。
最後までお読みくださりまして、ありがとうございます。
今回の講義で不明な点がありましたら、コメントいただけると助かります。
また、それ以外にも質問は受け付けておりますので、
お気軽にお声をおかけいただければと思います。
ではでは~

コメント

  1. junky より:

    SECRET: 0
    PASS:
    #propertyは本体とは独立した感じなので、割とわかりやすいんじゃないかと思いますよ~~~

  2. SECRET: 0
    PASS:
    >junkyさん
    伝わりがよければ私もうれしいです^^
    コメントありがとうございます!

タイトルとURLをコピーしました