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
  • 68 follow us in feedly

関連記事

no image

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

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

記事を読む

no image

■超直感!MT4プログラミング講座■ 第25回 発注スプリクトの作成

おはようございます。キリンです。 今日から引越しの準備です。 今週はあまり仕事が進んでないです・・・。 引越しの準備とか

記事を読む

no image

■超直感!MT4プログラミング講座■ 第1回 プログラミングって何?

こんにちは!キリンです。 今日から一週間に一回くらいの更新頻度を目標に、 MT4プログラミング講座を更新していきます。

記事を読む

no image

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

おはようございます。キリンです。 今回は記念すべき第30回ですね! 開始当初から考えると思ったより速いペースでの達成です

記事を読む

no image

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

こんにちは!キリンです。 昨日は土曜出勤でした。サラリーマン生活も残すところあと2週間弱。 今日は、引越し会社に引越しの

記事を読む

no image

■超直感!MT4プログラミング講座■ 第35回 MAの傾きを使ったEA

こんばんはっ!キリンです。 土曜日なんですが、脱サラすると関係なかったり・・・。 なんか実感が湧かない今日この頃です。

記事を読む

no image

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

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

記事を読む

no image

■超直感!MT4プログラミング講座■ 第15回 MQL定義済み関数について

こんにちは!キリンです。 このブログ自体が夜書くことが多いので、「こんにちは!」っていうと新鮮ですね。 春の陽気を感じら

記事を読む

no image

■超直感!MT4プログラミング講座■ 第34回 決済スプリクトをサブルーチン化する

こんにちは。キリンです。 自立ってそんなに難しくないと思うんですが、 自律は大変ですよね。 自立できれば自律を目指さなけ

記事を読む

no image

■超直感!MT4プログラミング講座■ 第17回 iMA()に慣れよう

こんばんは!キリンです。 今日、鮒谷さんのかの有名なメルマガ、平成進化論において面白い話が載っていました。 簡単にご紹介

記事を読む

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

joblib によって謎のバグが起こる

joblib 0.14.1 にて確認.0.13.2 だと起こらない.import joblib を消

Fixing kernel error AMD-Vi: Event logged IO_PAGE_FAULT on Ryzen Machine

My pc was periodically shut down on 7:40 am JS

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

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

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

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

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

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

→もっと見る

PAGE TOP ↑