Top Page


 
【ローソク足の終値のラインを描画するインジケーター】
とにかく1つ、カスタムインジケーターを作ってみようということです。とりあえず、見てみましょう。
以下のプログラムは、ローソク足の終値を結ぶラインを引くインジケーターです。
このインジケーターをMT4のUSDJPYのローソク足1Hのチャートに挿入すると下の画像のようになります。
実用的ではありませんが、プログラムを覚えるために簡単なものにしました。
◎ここから下がプログラムです。
//+----------------------------------------------------------------------------+
//| とにかく1つ、カスタムインジケーターを作ってみる |
//| ローソク足の終値のラインを描画するインジケーター |
//+----------------------------------------------------------------------------+
//----------------
//プロパティの設定
//----------------
//インジケーターをチャートウィンドウに表示する
#property indicator_chart_window
//インジケーターを1つ作成する(最大8個まで)
#property indicator_buffers 1

//--------------------
//グローバル変数の設定
//--------------------
//1つ目のインジケーター用の配列を定義する
double Buffer1[];

//+----------------------------------------------------------------------------+
//| 初期処理関数 |
//+----------------------------------------------------------------------------+
//プログラム起動時に1回だけ呼び出される関数
int init()
{
//1つ目のインジケーターのスタイルを線に設定する
//注意しなければいけないのは、配列では1番目が0になるため
//第1パラメーターは、1ではなく0になるということ
SetIndexStyle(0,DRAW_LINE,EMPTY,5,Red);

//1つ目のインジケーター配列に定義した Buffer1 を関連付ける
//注意しなければいけないのは、配列では1番目が0になるため
//第1パラメーターは、1ではなく0になるということ
SetIndexBuffer(0,Buffer1);

return(0);
}
//+----------------------------------------------------------------------------+
//| 終了処理関数 |
//+----------------------------------------------------------------------------+
//プログラム終了時に呼び出される関数
//今回は特に処理なし
int deinit()
{
return(0);
}

//+----------------------------------------------------------------------------+
//| メイン処理関数 |
//+----------------------------------------------------------------------------+
//価格が更新される度に呼び出される関数
int start()
{
//インジケーターの計算範囲を求める
//Bars変数は、チャートに表示されているローソク足の数
//IndecatorCounted()関数は、計算済みのローソク足の数を求める
//次の計算式で、limit変数には、計算していないローソク足の本数が設定される
int limit = Bars - IndicatorCounted();

//インジケーターの計算
//ローソクの終値の線を描画する
for(int i=0; i<limit; i++)
{
Buffer1[i] = (Close[i]);
}

return(0);
}

//+----------------------------------------------------------------------------+