Wizard In The Market
システムトレードの魔術師

*

■超直感!MT4プログラミング講座■ 第14回 インディケーターの定義部

公開日: : 最終更新日:2015/01/13 MT4(MQL4)プログラミング講座

こんばんは!キリンです。
最近ピグによく顔を出しています。
よければ遊びに来てくださいね。
ではでは、本日の講義です。
っとまずは前回の宿題からですね。

最新のローソク足から3本前のクローズ値を得たい場合には、
どうすればいいでしょうか?

配列とMQL定義済みの変数を理解していただいていれば、
まったく難しくないと思います。
正解は、 Close[3];
ですね。
※日本語の問題をご指摘いただいたjunkyさん、りあるさんありがとうございます。


第14回 インディケーターの定義部

第7回の動画で「ざーっ」と説明してしまったのですが、
非常に雑なため、ご理解いただけない点が多かったと思います。
反省を踏まえ、細かく説明していきます。
今日から本格的にプログラミングによる「もの」を作っていこうと思います!
ぜひぜひ付いてきてくださいね!
※この講座の当初の目標が、「移動平均線のプログラムを作成する」
 ということにしています。プログラム全体の中身は第1回をご覧ください。
■「 // 」の意味
■#propertyによる定義
■extern関数・グローバル変数の定義
■ini()の{}の中での動作
■「 // 」の意味
久しぶりにインディケータープログラムを呼び出してみました。
今日は、インディケーターの定義する部位について細かく説明していこうと思います。

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

「 // 」を入れると、それ以降の場所にメモ書きができます。
プログラムの動作にはまったく関係がないのですが、
内容を分かりやすくするために記入をします。
この場合は、プログラム作者の紹介ですね。
「 // 」の後ろの内容は動作に関係ないということを、
とりあえず理解していただければ問題ないと思います。
■#propertyによる定義

#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」で定義する内容は、プログラムの根本的な部分です。
特にインディケーターの場合は非常に重要な点になりますので、
良く理解してくださいね。
・#property copyright
著作権の表記です。
・#property link
作者のHPです。
・#property indicator_chart_window
ローソク足を表示している場所にインディケーターを表示するという意味です。
サブウインドウに表示させる場合は、

property indicator_seperate_window

になります。
・#property indicator_buffers 1
インディケーターで表示させるグラフの本数を指定します。
この場合は、 「 1 」ですね。
最大で8本まで表示することができます。
常に「8」としていても問題ないのですが、
プログラムを軽くするために必要すうだけ設定するのが良いです。
・#property indicator_color1 Red
インディケーターの色を指定します。
color1をcolor2にすれば2本目のインディケーターの色の変更ができます。
Red は 他にも Blue や Green などに変更できます。
■extern関数・グローバル変数の定義

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

・グローバル変数 double Buf[];
プログラムの前後で値を保持することのできる変数です。
詳細については、回を設けて説明させていただく予定です。
グローバル変数は、{}で囲まれていない場所に定義します。
重要難点ですので、これは今の段階で理解していただければと思います。
言い換えれば、一番外に定義するとグローバル変数になります。
・extern変数   extern int MAPeriod = 13;
extern変数は必然的にグローバル変数になります。
externで定義した変数は、インディケーター導入時の
「パラメーターの設定」に表示され、
簡単に変更ができるようになります。
extern [変数の定義] [変数名];
の順番になります。

//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//—- indicators
// 指標バッファの割り当て
SetIndexBuffer(0, Buf);
// 指標ラベルの設定
string label = “MA(“+MAPeriod+”)”;
IndicatorShortName(label);
SetIndexLabel(0, label);
return(0);
//—-
return(0);
}

・ini()
この部分は、インディケーター導入時にのみ動作する部分になります。
「インディケーターの初期設定を行う」ための部分だと理解していただいて問題ありません。
・ SetIndexBuffer(0, Buf);
配列 Buf にインディケーターバッファの0を割り当てる・・・と言っても理解しにくいですよね。
グラフの1本めは、Bufを基準に作りますよっていう意味です。
これで、Bufに値を入れていけばグラフが表示されるようになります。
ここで大事なのは、Bufが配列だということです。
Close[i]のときと同じように、Buf[i]とすれば、i本目のローソク足のBufの値を抽出できます。
・string label = “MA(“+MAPeriod+”)”;
おなじみ、文字変数の定義とそれに値を入れています。
変数labelの中身が、”MA(“+MAPeriod+”)”になりました。
MAPeriodという変数は、グローバル変数で定義済みなので、
“MA(“+MAPeriod+”)”の結果は、
“MA(13)”となります。
・IndicatorShortName(label);
表示するインディケーターの線の名前を入力します。
今回は変数labelがインディケーターの名前になります。
ここで設定した名前が、mt4の「データウィンドウ」に表示されます。
・SetIndexLabel(0, label);
表示させるインディケーターの名称を定義します。
0というのが、グラフの1本目のものに対し名前を設定しますよという意味で、
変数labelを割り当てています。
2本目のグラフに対して設定をするならば、
SetIndexLabel(1, label);
となります。
(今回は、
 #property indicator_buffers 1
 にしているので、グラフの2本目はありません。)
以上が、インディケーターの定義部になります。
最初はとっつきにくいと思いますが、この当たりは慣れが重要です。
とりあえず「どういう働きをするか」を理解していただければと思います。
最後までお読みいただきましてありがとうございます!
ちょっと今日は宿題にできそうな内容がないので、
次回は発展内容の問題を出すことで許していただければと・・・。
ではでは~

にほんブログ村 為替ブログへ 
Fx-Kirin

About Fx-Kirin

2009年10月にFXを開始、翌年2010年5月から脱サラをしてFX業界に専念。 2012年10月頃から本格的に勝ち始め、一月で資産を倍にする、2年半月間負けなし等、安定した収支で2013年11月に生涯FX収支が1億を超える。 投資スタイルはシステムトレード。プログラミングの知識がほぼない状態から、独学で自分がしたいと思うことであればほぼ実現することが可能なレベルまで成長。好きな言語はRuby, Python。必要となればC++からVBA、Pascal等なんでも行う。MT4/MT5のプログラミングも得意。 2011年にはFXで稼いだ資金をもとにシンガポールに移住し、留学も兼ねて起業をチャレンジするほど、ビジネスを興すことに熱意がある。国内の業者を主に使い始めたことから、2012年に帰国。零細株式会社経営中。

Adsense

  • このエントリーをはてなブックマークに追加
  • Pocket
  • 67 follow us in feedly

関連記事

no image

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

こんにちは!キリンです。 GW真っ最中! 私は引っ越し先を探してきました。 納得のいく部屋を見つけて、さらに洗濯機も購入

記事を読む

no image

■超直感!MT4プログラミング講座■ 第36回 ブレイクアウトシステムのEA 作成

おはようございます。キリンです。 今日は、マインドアップ的読書感想文で非常に良いことが書いてありました。 その中のさわり

記事を読む

no image

■超直感!MT4プログラミング講座■ 第19回 ボリンジャーバンドを作ろう(1)

こんばんは!キリンです。 気づいたら本格的なプログラムを扱っている状態にまで、 この講座も進んでこれたのですね。 私とし

記事を読む

no image

■超直感!MT4プログラミング講座■ 第2回 変数を覚えよう!

こんばんは。キリンです。 この講座の第1回で、非常に大きな反響をいただけました。 MT4のプログラミングに興味持っている

記事を読む

no image

■超直感!MT4プログラミング講座■ 第9回 for関数を使ってみよう

こんばんは!キリンです。 今日は、繰り返し同じ動作をすることのできる for関数についてのお話しようと思います。 第9

記事を読む

no image

■超直感!MT4プログラミング講座■ 第11回 配列を覚えよう

こんばんは。キリンです。 最近、各EAの動向で一喜一憂してしまっています。 精神的によろしくないですな^^; クロスファ

記事を読む

no image

■超直感!MT4プログラミング講座■ 第28回 決済スプリクトの作成(1)

こんにちは!キリンです。 引越しも終わり、かなり落ち着いてきました。 時間的制約が皆無になると、セルフコントロール能力が

記事を読む

no image

■超直感!MT4プログラミング講座■ 第39回 ブレイクアウトシステムのEAの最適化をやってみよ

こんばんは!キリンです。 今日は最適化をしてみます。 簡単に成績がいいものができてしまうので、 成果が出たときは非常に嬉

記事を読む

no image

■超直感!MT4プログラミング講座■ 第22回 ボリンジャーバンドのおさらい

こんばんは!キリンです。 お酒を飲んでからの講義は難しいですね。 何か対策を考えなければっ! 頑張って書いていきます。

記事を読む

no image

■超直感!MT4プログラミング講座■ 第3回 関数を覚えよう!

こんばんは!キリンです。 前回の「変数の定義」のお話ですが、 やはりつまづいている方が多かったようですね。 基本的で、非

記事を読む

Comment

  1. junky より:

    SECRET: 0
    PASS:
    SetIndexBuffer(0, Buf);
    IndicatorShortName(label);
    SetIndexLabel(0, label);
    この大文字から始まる3つって、変数ですよね?
    真ん中を除いた2つが(0,***)と2つの要素を入れるっていう概念が急にでてくるもので、とっつきにくいんだと思います。
    あと、これらはintとかが定義されてないのも???です。

  2. SECRET: 0
    PASS:
    >junkyさん
    素晴らしい理解度ですね!
    これは、MQL定義済み関数になります。
    ちょっと内容が複雑なので、
    しっかりと回を設けて・・・
    と思っていましたが、
    できるだけ早いほうがよさそうですね。
    ()があるかないかが変数と関数の違いです。
    コメントありがとうございます!^^
    次の回はこれにしますね!

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

Adsense

Ubuntu で仮想ディスプレイを使う

雑多な備忘録ですが、せっかくなので残しておきます。 Ubuntu 18.04 の resolv.c

PYPIへの登録を10秒でできるようになる方法

pip 使ってますよね Pythonを使っている人であれば、pip installでライブラリ

The art of debugging with GDB, DDD, and Eclipse の読書メモ

GDBの勉強がしたくて、下の本を原著で読んでみました。10年前の本だけど全然現役でした。

JupyterでボタンからJavascriptを実行して追加のアウトプットをさせない方法

Javascriptを実行するとアウトプットセルの行が増える これがとても面倒だった。上の

まだBokehで消耗してるの?これからはPandas-Bokehを使おうぜ

タイトルはあまり気にしないでください。全然、Bokehで消耗する価値があるとは思っています。ただ

→もっと見る

PAGE TOP ↑