コンテンツにスキップ

【移植#66】点在シグナルを線で結ぶ — DRAW_SECTIONとDRAW_NONEの安全な切替

MT5のEURUSD M15チャートで確定した局所高値と安値を水色のDRAW_SECTIONで結び、マーカーをDRAW_NONEで非表示にした検証画面

この記事の3行まとめ

  • 点在する確定シグナルだけを1本の線で結ぶならDRAW_SECTIONを使う
  • 矢印や丸印を消すときは透明色にせず、描画方式をDRAW_NONEへ切り替える
  • 非表示バッファも計算値は残るため、3バッファを取得して実チャートと独立照合する

原典は「点を結ぶ」と「本当に消す」の使い分け

2010年3月12日の原典では、DRAW_ARROWで描かれた点列をDRAW_SECTIONへ変更すると、点在する値を線で結べることが紹介されています。一方、矢印の色をNoneにしても下にある線が欠ける場合があり、矢印自体を消したいときはDRAW_NONEへ変更する、という注意も示されていました。

元記事「DRAW_SECTION と DRAW_NONE」を読む

今回のMQL5版は、この2つの役割を一つの小さなインジケーターで確認できるようにしています。売買シグナルの再現ではなく、描画方式の違いを観察するための移植です。

確定した疎な点だけを線で結ぶ

掲載画像の水色線は、左右3本ずつより高い局所高値、または低い局所安値だけをバッファへ入れたDRAW_SECTIONです。それ以外のバーにはEMPTY_VALUEを設定しています。

Text Only
局所高値 = 中心の高値が左右3本すべての高値より大きい
局所安値 = 中心の安値が左右3本すべての安値より小さい
線分バッファ = 局所高値または局所安値、それ以外はEMPTY_VALUE

左右の値がそろうまで確定できないため、最新3本には点を置きません。確定後の点だけを使い、形成中の高値・安値で線の端が動き続けないようにしています。

MQL5公式仕様でも、DRAW_SECTIONは一つの非空値から次の非空値へ線分を描き、空値を無視する方式です。連続する全バーを結ぶDRAW_LINEとは用途が異なります。

マーカーは色ではなくDRAW_NONEで消す

インジケーターは、線分用に加えて局所高値マーカー、局所安値マーカーの2バッファを持ちます。InpShowMarkers=falseでは、色だけを透明にせず、プロット方式そのものを切り替えます。

MQL
const ENUM_DRAW_TYPE marker_type =
   InpShowMarkers ? DRAW_ARROW : DRAW_NONE;
PlotIndexSetInteger(1, PLOT_DRAW_TYPE, marker_type);
PlotIndexSetInteger(2, PLOT_DRAW_TYPE, marker_type);

DRAW_NONEにしても、バッファの計算値は残ります。チャートでは丸印を描かず、データウィンドウやEAのCopyBuffer()から値を利用できるのがポイントです。InpShowMarkers=trueへ変えると、高値は緑、安値は赤橙の丸印として表示されます。

66_Sparse_Section_Visibility_Toggle_v1_00.mq5 をダウンロード

主なパラメーター

パラメーター 初期値 役割
InpWing 3 局所高値・安値の確定に使う左右の本数
InpShowMarkers false 確定点の丸印を表示するか

InpWingを大きくすると点は減り、より大きな山谷だけを結びます。小さくすると点が増え、価格の細かな往復を拾います。

検証結果

専用MT5(Build 6090、EURUSD・M15)で、配布インジケーターと独立検証プログラムを各0エラー・0警告でコンパイルしました。撮影前にインジケーターを実チャートへ追加し、BarsCalculated()は10,056本でした。

線分・高値マーカー・安値マーカーの3バッファを各600本取得し、線分の有効点121、高値60、安値61、空値479を確認しています。さらに、価格履歴から600地点を別計算して3バッファと照合し、不一致0になってから撮影しました。画像取得エラーは0で、注文・ポジション操作もありません。

注意点

DRAW_SECTIONは空値を区切りとして線を切るのではなく、空値を飛ばして次の非空値まで結びます。そのため、原典でも触れられていたように、結びたくない2点までつながる場合があります。線を意図的に分断したい用途では、区間ごとに別バッファを使うか、チャートオブジェクトで線分を個別管理してください。

局所高値・安値は左右の本数がそろって初めて確定します。今回の設定では3本分の遅れがあり、天底をリアルタイムで予測する指標ではありません。また、線の形だけで相場の方向や収益性は判断できません。

まとめ

点在する値を簡潔に結ぶ役割はDRAW_SECTION、計算値を残したまま描画だけ止める役割はDRAW_NONEです。透明色で見かけだけを消すより、描画方式を明示的に切り替える方が、下の価格やラインを邪魔しません。非表示にしたバッファも検査対象から外さず、表示と計算を分けて確認するのが安全です。


前後の記事

前: 【移植#65】アンディの雲をMTF化 — 確定H1をM15へ安全に重ねる

次: 【移植#67】QQEを同じ物差しで重ねる — 50中央の高速・低速2ライン

— SPONSORED —