Top Page



直近のローソク足6本の高値と安値にラインを引く
直近の6本のローソク足の高値と安値に水平線を引く処理です。
見てみましょう。
見たとおりです。
赤い水平線が2本引かれています。


◎解説
[1]メイン処理
    //変数初期化
    WK_DBL_HIGH =0;
    WK_DBL_LOW =9999;

    for(int i=0;i<6;i++)
    {
        WK_DBL_LOW = MathMin(WK_DBL_LOW,Low[i]);
        WK_DBL_HIGH = MathMax(WK_DBL_HIGH,High[i]);
    }
  ここで直近6本の高値と安値を算出しています。
  作業用変数の高値と安値に最小値を設定し(安値の場合は逆に大きい値の9999を設定)、
  6本分のローソク足の高値と安値と比較して、より高い(安い)値を変数に設定します。
  それを6本分繰り返すと6本分の高値・安値が算出できます。


◎以下、プログラム
//+----------------------------------------------------------------------------+
//| インジ 1-4 直近のローソク足6本の高値と安値にラインを引く |
//+----------------------------------------------------------------------------+
//----------------
//プロパティの設定
//----------------
//インジケーターをチャートウィンドウに表示する
#property indicator_chart_window

//----------------
//定数の定義
//----------------
#define OBJ_RANGE_HIGH "OBJ_RANGE_HIGH" //オブジェクト名
#define OBJ_RANGE_LOW "OBJ_RANGE_LOW" //オブジェクト名

//+----------------------------------------------------------------------------+
//| 初期処理関数 |
//+----------------------------------------------------------------------------+
//プログラム起動時に1回だけ呼び出される関数
//今回は特に処理なし
int init()
{
return(0);
}
//+----------------------------------------------------------------------------+
//| 終了処理関数 |
//+----------------------------------------------------------------------------+
//プログラム終了時に呼び出される関数
int deinit()
{
//オブジェクト削除
ObjectDelete(OBJ_RANGE_HIGH);
ObjectDelete(OBJ_RANGE_LOW);

return(0);
}

//+----------------------------------------------------------------------------+
//| メイン処理関数 |
//+----------------------------------------------------------------------------+
//価格が更新される度に呼び出される関数
int start()
{
double WK_DBL_LOW =0; //節目 安値
double WK_DBL_HIGH =0; //節目 高値

//オブジェクト削除
ObjectDelete(OBJ_RANGE_HIGH);
ObjectDelete(OBJ_RANGE_LOW);

//変数初期化
WK_DBL_HIGH =0;
WK_DBL_LOW =9999;

//オブジェクト作成
for(int i=0;i<6;i++)
{
WK_DBL_LOW = MathMin(WK_DBL_LOW,Low[i]);
WK_DBL_HIGH = MathMax(WK_DBL_HIGH,High[i]);
}
ObjectCreate(OBJ_RANGE_LOW,OBJ_HLINE,0,0,WK_DBL_LOW);
ObjectSet(OBJ_RANGE_LOW,OBJPROP_COLOR,Red);
ObjectSet(OBJ_RANGE_LOW,OBJPROP_WIDTH,2);
ObjectCreate(OBJ_RANGE_HIGH,OBJ_HLINE,0,0,WK_DBL_HIGH);
ObjectSet(OBJ_RANGE_HIGH,OBJPROP_COLOR,Red);
ObjectSet(OBJ_RANGE_HIGH,OBJPROP_WIDTH,2);

return(0);
}

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