リサーチ(71) – Pivot Break

Pine Script

Pivot Break Strategy[WOLF] — 直近の高値・安値を“ちょっと超えたら”乗っかる

📝 概要

今回はPivot Break を紹介します。キレイな資産曲線になるわけではありませんが、めちゃくちゃシンプルなドテン戦略でもスプレッドなどを加味してもプラスになることは知っておいても損はないと思います。どんどん戦略が複雑になっている人には参考になるかと思います。

やってることはシンプルで、

  • 直近にできた ピボット高値(山) を、ほんの少し(1tick)上抜けたら ロングのストップ買い
  • 直近にできた ピボット安値(谷) を、ほんの少し下抜けたら ショートのストップ売り

いわゆるブレイクアウト戦略です。チャートの「ここを超えたら勢いつくよね」っていう節目を機械的に拾っていくタイプ。

※注意:ピボットポイントとは別物です。

 

 

 

💻️ バックテスト(スプ込み)

USDJPY

 

GBPJPY

 

NIKKEI(CFD)

 

BTCUSDT

 

 

 

🎯 作成の意図

ブレイクアウト戦略って「どこを節目にするか」が大事ですよね。移動平均、前日高値、ラウンドナンバー…色々あるけど、今回は ピボット(スイングの山と谷) を使った戦略です。

理由は3つ。

  1. ピボットは“その場の値動きが自分で決めた節目” だから。誰かが引いた水平線じゃなく、相場が実際に反転した価格。市場参加者の意識が乗りやすい。
  2. 再描画なしで素直に組める。 ta.pivothigh / ta.pivotlow は確定済みのバーだけで判定するので、未来を覗くズルが入りにくい。
  3. パラメータが少ない。 左右何本でピボットとみなすか、何tick超えたら入るか、くらい。いじる余地が少ない=過剰最適化しにくい、という狙い。

 

 

 

📘 コード(戦略部分)の解説

1. ピボットの検出

pivotHigh = ta.pivothigh(pivotLeftBars, pivotRightBars)
pivotLow  = ta.pivotlow(pivotLeftBars, pivotRightBars)

hasPivotHigh = not na(pivotHigh)
hasPivotLow  = not na(pivotLow)

ta.pivothigh(左, 右) は「左に N 本、右に N 本より高いバー」を山と判定する。デフォルトは左右1本なので、3本のうち真ん中が一番高ければ山、ってことですな。

 

ここで大事なのが、ピボットは 右側のバーが出揃ってから確定する ということ。つまり pivotRightBars=1 なら、山ができたと分かるのは1本遅れ。この“遅れ”が、未来を見ないための代償であり安全装置にもなりまする。

 

 

2. 節目の価格を覚えておく

var float pivotHighPrice = na
var bool  longStopArmed  = false

if hasPivotHigh
    pivotHighPrice := pivotHigh
    longStopArmed := true
else if longStopArmed and high > pivotHighPrice
    longStopArmed := false

var を付けた変数はバーをまたいで値を保持する。新しい山ができたら、その価格を pivotHighPrice に記録して、「いつでも撃てる」状態にセットする。

 

 

3. 逆指値注文を置く

longEntryOffset = syminfo.mintick * entryTickMultiplier

if longStopArmed and inDateRange
    strategy.entry("PivRevLE", strategy.long,
                   stop=pivotHighPrice + longEntryOffset, comment="PivRevLE")

armed の間は、節目より 1tick 上 にロングの逆指値を出す。syminfo.mintick はその銘柄の最小値幅なので、銘柄が変わっても自動でスケールしてくれるのが地味に便利。

ショートは完全に対称。

if shortStopArmed and inDateRange
    strategy.entry("PivRevSE", strategy.short,
                   stop=pivotLowPrice - syminfo.mintick, comment="PivRevSE")

谷の 1tick 下 にショートの逆指値を置く。

 

 

 

🚀 ワン モア ステップ

ドテン戦略なので、 手仕舞いが一切ない。なのでここから先、試すなら、

  • 損切り・利確を足す。 反対側のピボットを逆指値の損切りにする、ATR でストップを引く、など。まずはここから。
  • フィルターをかける。 時間帯・曜日・トレンド方向(上位足の傾き)で「入る/入らない」を選別。ブレイクは“地合い”で勝率が大きく変わる。
  • 左右非対称の修正。 上で触れたショート側オフセットを entryTickMultiplier 基準に揃えて、ロング/ショートを公平に比較する。
  • ピボット本数を振ってみる。 pivotLeftBars/RightBars を増やすと“より大きな山谷”だけを拾う。ノイズが減る代わりにエントリー回数も減る、のトレードオフ。

 

まずはこの素体を回して、「ブレイクで入るとどんな勝ち方(負け方)をするのか」を眺めてみましょう。あと、勝ちやすい時間帯とか。値動きのクセが掴めるかも。

  

 

それでは、また次回をお楽しみに~🐺

 

 

 

🔐 コアメンバー向けソース

こちらからどうぞ。

note ご指定のページが見つかりません

コメント

タイトルとURLをコピーしました