![見出し画像](https://assets.st-note.com/production/uploads/images/43672062/rectangle_large_type_2_fd989a580fd8316b5b685b8f9d05546e.jpeg?width=1200)
【MT4】mql4での自作プログラムの作り方(その2)
今回は【MT4】mql4での自作プログラムの作り方(その1)で作成したインジゲータの内容を詳しく説明していきます。
できるだけ専門用語は使わないように記事を書いているので、正確には理解できないかもしれませんが、雰囲気はわかると思います。
わからない部分はわからない状態で進めてもらって大丈夫です。
(プログラムを作っていく段階で頭が慣れてきて、自然と理解できるようになると思います。)
では説明していきます。
#propertyの部分
#property indicator_buffers 1
double BufDown_Arrow[];
「#property indicator_buffers 1」は矢印を表示するための設定を保存しておく箱のようなものです。
「indicator_buffers」の部分についてはあらかじめ作られているものなので、覚えるだけで大丈夫です。
今回は1種類しか矢印を作成していないので、一番最後の数字は1にしています。(矢印等のマークを「アロー」と呼びます)
「↑、↓、〇、×」と四つのアローをプログラムで使用したい場合は最後の1を4に変えます。
※この数字は一つのインジゲータで8までしか設定できません。
「 double BufDown_Arrow[]; 」はdouble型の配列です。
double型とは:少数点を含む数字を扱えるものです。
備考:整数のみを扱えるものをint型、文字を扱えるものをstring型と呼びます。
配列とは:一つの変数名にたくさんの数字等を入れられる箱のようなものです。(パソコンでいうところのフォルダだと思ってもらっていいです。)
変数とは:変数は任意の数字等を保管できる箱のようなものです。
(パソコンでいうところのファイルです。)
ちなみに「BufDown_Arrow」という名前は自分がつけた名前なので「sitayazirushi」とかでも作成可能です。
「↑、↓、〇、×」4つのアローを作成したい場合は
double 配列名[];を四つ作成してください。
int OnInit()の部分
SetIndexBuffer(0,BufDown_Arrow);//バッファーにバッファー用配列を割り当て
SetIndexStyle(0,DRAW_ARROW,STYLE_SOLID,2,Yellow);//矢印を使う設定と色の設定
SetIndexArrow(0,234);//矢印の種類の設定
SetIndexBuffer(0,BufDown_Arrow);は#propertyの部分で作成したdouble型の配列を設定しています。
「SetIndexBuffer」は読んで字のごとくIndexBufferに()の中身をセットしています。以下に()の中身の説明をしていきます。
「0」はバッファーの1個目という意味です。(プログラムは0が最初です。)
「BufDown_Arrow」は1個目のバッファーに「BufDown_Arrow」というdouble型の配列を指定しています。
まとめると、
1個目のバッファーは「BufDown_Arrow」という名の配列を使ってね!とプログラムを書いています。
SetIndexStyle(0,DRAW_ARROW,STYLE_SOLID,2,Yellow);は1個目バッファーのスタイルを設定しています。以下に()の中身の説明をしていきます。
「0」は上記と同じで、1個目のバッファーを指定しています。
「DRAW_ARROW」はアローを書くように指示しています。
(DRAW_LINEと記述するとアローではなく線になります。)
「STYLE_SOLID」は矢印を実線で書くように設定しています。
「2」は矢印の大きさを設定しています。(試しに10にしてコンパイルしてみてください。笑)
「Yellow」は黄色で表示するように設定しています。
まとめると、1個目のバッファーは2の大きさでアローを黄色の実線で書くんやで!!!とプログラムを書いています。
SetIndexArrow(0,234);はアローの画像を指定しています。
いきなりまとめますが、1個目のバッファーはコード234の画像のアロー(下矢印)をつかってや~とプログラムで書いています。
(「↑」は233、「×」は251、「〇」は161で使用しています。)
//〇〇〇〇〇〇はコメントです。
「//」の後の部分をプログラムは処理しないので、プログラムの可読性を高めるためにこまめに記載していきましょう。
int OnCalculate()の部分
BufDown_Arrow[1] = High[1] + 5*Point;
BufDown_Arrow[1] = High[1] + 5*Point;はBufDown_Arrow[1]にアローを表示する位置を格納させています。
BufDown_Arrow[1]はBufDown_Arrowの2個目を指定しています。
「=」は右側の計算結果等を左に書き込みます。
High[1] は2個目のローソク足の高値を示しています。
Pointはその通貨の最小単位を示しています
((USD/JPY)なら0.001です。)
まとめると、BufDown_Arrowは右から2個目のローソク足の高値の5ポイントうえに下矢印かいといてや~と記述しています。
最後に
理解できましたでしょうか?
この記事を読んで実際にプログラムしてくれている方は
「高値の少し上に↑、安値の少し下に↓、を表示させるインジゲータを作成してみてください。
次回の記事で答え合わせも兼ねてローソク足が陽線なら高値より少し上に「↑矢印」を、陰線なら安値より少し下に「↓矢印」を表示するプログラムを作成していきます。
~次回予告~For文とif文を使います。
いいなと思ったら応援しよう!
![トレーダーの友](https://assets.st-note.com/production/uploads/images/24716143/profile_844bba2b6c76db97ef6edd1b12a401e0.jpeg?width=600&crop=1:1,smart)