見出し画像

【MQL】期間内の最高値・最安値から半直線を表示する

期間内の最高値・最安値から半直線を表示するコードを作成しました。本コードでは、最後の確定足から50本までの最高値・最安値から半直線を引いています。

なお、半直線はトレンドラインで表現し、半直線の価格は水平線を非表示にすることによって表示しています。

//・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
//期間内の最高値・最安値から半直線を表示する
//(確定足で表示)
//・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・

#property version   "1.00"
#property strict
#property indicator_chart_window

int OnInit()
{
  return(INIT_SUCCEEDED);
}

void OnDeinit(const int reason)
{
 ObjectDelete("Hline");
 ObjectDelete("HlinePrice");
 ObjectDelete("Lline");
 ObjectDelete("LlinePrice");
}

int OnCalculate(const int rates_total, const int prev_calculated,
               const datetime &time[],const double &open[],
               const double &high[],  const double &low[],
               const double &close[], const long &tick_volume[],
               const long &volume[],  const int &spread[]        )
{
  int Highest = iHighest(NULL, 0, MODE_HIGH, 50, 1); //最後の確定足から50本までで最大値を持つバーシフト値
  int Lowest = iLowest(NULL, 0, MODE_LOW, 50, 1);    //最後の確定足から50本までで最小値を持つバーシフト値

  double Highprice = high[Highest];                    //期間内最高値
  double Lowprice = low[Lowest];                       //期間内最安値

  //50期間内最高値ラインの描写
  ObjectDelete("Hline");                                                           // Hlineがあったら消す
  ObjectCreate("Hline",OBJ_TREND,0,Time[Highest],Highprice,Time[0],Highprice);     // ObjectCreate(オブジェクト名,オブジェクトタイプ, ウィンドウ, 時間1, 価格1, 時間2, 価格2,);
  ObjectSet("Hline",OBJPROP_COLOR,clrYellow);     // 色設定
  ObjectSet("Hline",OBJPROP_STYLE,STYLE_SOLID);   // スタイル設定
  ObjectSet("Hline",OBJPROP_WIDTH,3);             // 幅設定
  ObjectSet("Hline",OBJPROP_BACK,false);          // 背景表示設定
  ObjectSet("Hline",OBJPROP_SELECTABLE,true);     // 選択可否設定
  ObjectSet("Hline",OBJPROP_SELECTED,false);      // 選択状態設定
  ObjectSet("Hline",OBJPROP_RAY_RIGHT,true);      // 延長線
  
  //50期間内最高値ラインの価格表示
  ObjectDelete("HlinePrice");                                          // HlinePriceがあったら消す
  ObjectCreate("HlinePrice",OBJ_HLINE, 0, Time[Highest], Highprice);   // ObjectCreate(オブジェクト名,オブジェクトタイプ, ウィンドウ, 時間, 価格);
  ObjectSet("HlinePrice",OBJPROP_WIDTH,EMPTY_VALUE);                   // 幅設定

  //50期間内最安値ラインの描写
  ObjectDelete("Lline");                                                        // Llineがあったら消す
  ObjectCreate("Lline",OBJ_TREND,0,Time[Lowest],Lowprice,Time[0],Lowprice);     // ObjectCreate(オブジェクト名,オブジェクトタイプ, ウィンドウ, 時間1, 価格1, 時間2, 価格2,);
  ObjectSet("Lline",OBJPROP_COLOR,clrWhite);      // 色設定
  ObjectSet("Lline",OBJPROP_STYLE,STYLE_SOLID);   // スタイル設定
  ObjectSet("Lline",OBJPROP_WIDTH,3);             // 幅設定
  ObjectSet("Lline",OBJPROP_BACK,false);          // 背景表示設定
  ObjectSet("Lline",OBJPROP_SELECTABLE,true);     // 選択可否設定
  ObjectSet("Lline",OBJPROP_SELECTED,false);      // 選択状態設定
  ObjectSet("Lline",OBJPROP_RAY_RIGHT,true);      // 延長線

  //50期間内最安値ラインの価格表示
  ObjectDelete("LlinePrice");                                          // LlinePriceがあったら消す
  ObjectCreate("LlinePrice",OBJ_HLINE, 0, Time[Lowest], Lowprice);     // ObjectCreate(オブジェクト名,オブジェクトタイプ, ウィンドウ, 時間, 価格);
  ObjectSet("LlinePrice",OBJPROP_WIDTH,EMPTY_VALUE);                   // 幅設定

  return(rates_total);
}


【実行結果】

動画は以下のとおりです。


この記事が気に入ったらサポートをしてみませんか?