MT4 - 縦線と横線をオブジェクトで引く

sitemap
世界最強のFXキャッシュバックサイト
オブジェクトで縦線と横線のラインを引く
公開日:2018/10/26
前回、ヒストグラムをサブウインドウに表示させるインジゲーターの作り方について簡単に紹介しました。

あれから、サブウインドウ系のいろいろなインジゲーターを作成してみましたが、ちょっと試してみたかったものがあったので、そちらを紹介していきます。

ということで、今回は、またオブジェクトに戻ります!

なんだかんだでやっぱオブジェクトがいいかなー。

というか、今回試してみたいことはオブジェクトじゃないとできないので...。

そして、今回試してみたかったのは、

「オブジェクトで縦線と横線を引く」

ということです。

どういうことかというと、たとえば、

指定した時間に縦線を引いたり、指定した価格に横線を引いたりするということです。

なんで、これをやりたいかというと、

東京時間やロンドン時間、ニューヨーク時間とかが一目でわかるようにしたいからです。

また、指定した期間の高値や安値にラインを引くことで、ブレイク系の手法に使えたり、サポレジとしても機能させることができるので、トレードの補助ツールとして使ってみたかったからです。

今回は、インジゲーターを作るというよりは、線の引き方について、備忘録メモ的な感じで書いときます。

それでは、以下から作成過程を説明していきます。
縦線を引く
今回は、オブジェクトを使って線を引いていきます。

まずは、現在の足に縦線を引いてみたいと思います。

  ①datetime time01 = Time[0];
  
  ②ObjectsDeleteAll();
  
  ③ObjectCreate("Time",OBJ_VLINE,0,time01,0);
  ④ObjectSet("Time",OBJPROP_COLOR,Red);
  ⑤ObjectSet("Time",OBJPROP_WIDTH,3);

今回は、OnInit内で全部書きます。

また、短い処理になるので、全部のコードを説明していきます。

①datetime time01 = Time[0];
現在時間(現在の足)に縦線を引くので、datatime型の変数にTime[0]で現在の足の時間を取得して代入します。

②ObjectsDeleteAll();
表示されているオブジェクトをすべて削除します。

③ObjectCreate("Time",OBJ_VLINE,0,time01,0);
オブジェクト名「Time」、種類「OBJ_VLINE(垂直線(縦線))」、ウインドウ番号「0(メインウインドウ)」、1番目の時間のアンカーポイント「time01(上記で取得した現在の時間)」、1番目の価格のアンカーポイント「0」を指定します。

④ObjectSet("Time",OBJPROP_COLOR,Red);
オブジェクト「Time」の色を「赤色」に指定します。

⑤ObjectSet("Time",OBJPROP_WIDTH,3);
オブジェクト「Time」の線の太さを「3」に指定します。

こんな短いコードですが、コンパイルして実行してみます。

実行結果
縦線

現在の足にうまく縦線が表示されました。
横線を引く
縦線はうまく表示されました。

次は横線を引いてみます。

今回は、当日の高値と安値に横線を引いてみます。

  ①double high = iHigh(NULL,PERIOD_D1,0);
  ②double low = iLow(NULL,PERIOD_D1,0);
  
  ③ObjectsDeleteAll();
  
  ④ObjectCreate("High",OBJ_HLINE,0,0,high);
  ⑤ObjectSet("High",OBJPROP_COLOR,Red);
  ⑥ObjectSet("High",OBJPROP_WIDTH,3);
  
  ⑦ObjectCreate("Low",OBJ_HLINE,0,0,low);
  ⑧ObjectSet("Low",OBJPROP_COLOR,Blue);
  ⑨ObjectSet("Low",OBJPROP_WIDTH,3);

①double high = iHigh(NULL,PERIOD_D1,0);
当日の高値にラインを引くので、iHighで通貨ペア「NULL(現在のチャートの通貨ペア)」、時間軸「PERIOD_D!(日足)」、シフト「0(現在の足)」を指定して、double型の変数に高値を代入します。

②double low = iLow(NULL,PERIOD_D1,0);
当日の安値にラインを引くので、iLowで通貨ペア「NULL(現在のチャートの通貨ペア)」、時間軸「PERIOD_D!(日足)」、シフト「0(現在の足)」を指定して、double型の変数に安値を代入します。

③ObjectsDeleteAll();
表示されているオブジェクトをすべて削除します。

④ObjectCreate("High",OBJ_HLINE,0,0,high);
オブジェクト名「High」、種類「OBJ_HLINE(水平線(横線))」、ウインドウ番号「0(メインウインドウ)」、1番目の時間のアンカーポイント「0」、1番目の価格のアンカーポイント「high(上記で取得した高値)」を指定します。

⑤ObjectSet("High",OBJPROP_COLOR,Red);
オブジェクト「High(高値用)」の色を「赤色」に指定します。

⑥ObjectSet("High",OBJPROP_WIDTH,3);
オブジェクト「High(高値用)」の線の太さを「3」に指定します。

⑦ObjectCreate("Low",OBJ_HLINE,0,0,low);
オブジェクト名「Low」、種類「OBJ_HLINE(水平線(横線))」、ウインドウ番号「0(メインウインドウ)」、1番目の時間のアンカーポイント「0」、1番目の価格のアンカーポイント「low(上記で取得した安値)」を指定します。

⑧ObjectSet("Low",OBJPROP_COLOR,Blue);
オブジェクト「Low(安値用)」の色を「赤色」に指定します。

⑨ObjectSet("Low",OBJPROP_WIDTH,3);
オブジェクト「Low(安値用)」の線の太さを「3」に指定します。

これで、完成です。

それでは、コンパイルして実行してみます。

実行結果
横線
USD/JPYの15分足に表示させています。

赤線:当日の高値
青線:当日の安値
黄線:当日の開始時刻(自分で引きました)

当日の高値と安値に横線が表示されました。
まとめ
いかがだったでしょうか?

今回は、縦線と横線をオブジェクトで引いてみました。

思ったより簡単に引けました。

これを応用して、各市場のオープンとクローズ時間に縦線を引いたり、高値安値の横線を引いたりしてみたいと思います。

今回は、短くて簡単な記事になってしまいましたが、今回はここまでにしておきます。

それでは、また。
今回使用したMQL一覧
関連ページ
big_candlestick_judgment
スポンサードリンク
Twitter