【移植#02】SwingPoint View — 直近高値/安値を一目で確認¶
この記事の3行まとめ
- 📍 直近の高値/安値に価格と時刻をラベル表示
- 🔍 チャートを見るだけでスイングポイントが把握できる
- ⚙️ 前後N本(デフォルト10本)でスイング判定
はじめに¶
この記事は、「とあるMetaTraderの備忘秘録」様のブログ記事をMQL5に移植するシリーズの第2弾です。
外為どっとコムなど一部の業者チャートには「SwingPoint View」という機能があり、直近の高値・安値に価格と時刻が表示されます。これをMT5で再現しました。
元ネタ
MT4でSwingPoint View を表示する方法
https://fai-fx.hatenadiary.org/entry/20090909/1252422045
(2009年9月9日 公開)
スイングポイントとは¶
定義¶
スイングポイントとは、チャート上で価格が転換した地点のことです。
| 種類 | 定義 |
|---|---|
| スイングハイ | 前後N本のバーより高い位置にある高値 |
| スイングロー | 前後N本のバーより低い位置にある安値 |
graph LR
A[価格上昇] --> B[スイングハイ]
B --> C[価格下落]
C --> D[スイングロー]
D --> E[価格上昇] なぜ重要か¶
スイングポイントは以下の分析に活用できます:
- サポート/レジスタンスの特定
- トレンドラインの起点
- フィボナッチリトレースメントの基準点
- エリオット波動のカウント
MQL5での実装ポイント¶
スイングポイントの検出ロジック¶
前後N本すべてのバーより高い(または低い)場合にスイングポイントと判定します。
MQL
bool IsSwingHigh(const double &high[], int index, int period)
{
double centerHigh = high[index];
//--- 前後N本より高いかチェック
for(int i = 1; i <= period; i++)
{
if(high[index - i] >= centerHigh)
return false;
if(high[index + i] >= centerHigh)
return false;
}
return true;
}
テキストオブジェクトの配置¶
MQL5ではOBJ_TEXTオブジェクトを使用して、チャート上にテキストを表示します。
MQL
if(ObjectCreate(0, name, OBJ_TEXT, 0, time, price))
{
ObjectSetString(0, name, OBJPROP_TEXT, text);
ObjectSetInteger(0, name, OBJPROP_COLOR, clr);
ObjectSetInteger(0, name, OBJPROP_FONTSIZE, InpTextSize);
ObjectSetInteger(0, name, OBJPROP_ANCHOR, anchor);
}
元記事の課題と解決¶
元記事で指摘されていた問題
MT4では縦軸のスケールを変えるとテキストが重なってしまう問題がありました。
解決策: TextGapPipsパラメータで間隔を調整可能にし、スケール変更時も見やすい表示を維持できるようにしています。
使い方¶
- インジケータをチャートにドラッグ&ドロップ
- パラメータを設定
- 直近の高値/安値に価格と時刻が表示されます
パラメータ¶
| パラメータ | デフォルト | 説明 |
|---|---|---|
| SwingBars | 10 | スイング判定期間(前後N本) |
| TextSize | 9 | テキストサイズ |
| HighColor | 赤 | 高値テキストの色 |
| LowColor | 青 | 安値テキストの色 |
| MaxLabels | 50 | 最大表示ラベル数 |
| TextGapPips | 10.0 | 価格と時刻の間隔(pips) |
活用例¶
トレードへの応用¶
使い方の例
- レジスタンス確認: スイングハイの価格をレジスタンスラインとして意識
- 損切り設定: スイングローの少し下に損切りを配置
- エントリータイミング: スイングポイントをブレイクしたタイミングでエントリー
ブログ・分析への活用¶
元記事でも触れられていますが、相場観をブログで解説する際に、この情報があると説得力が増します。
ソースコードのダウンロード¶
この記事で紹介したインジケータをダウンロードできます。
ファイルの種類:インジケータ
保存先: MQL5/Indicators/ フォルダ
使い方: MT5のナビゲーターから「インディケータ」を展開し、チャートにドラッグ&ドロップで適用