
双方向突破反転戦略は,価格ピボットポイントに基づく反転取引戦略である.それは,価格が一定数のバー内の極限値を検知することによって,価格が反転する可能性のあるタイミングを判断する.価格が極限点を突破すると,反転入場を行う.この戦略は,価格が短期間の反転の機会を掴むことができる高波動性市場に適用される.
この戦略の核心的な論理は,
使用するpivothigh() そして pivotlow()この関数は,最近の n bar の内にある最高値と最低値を極限点として計算します. ここで n は 4 に設定されます.
最新のバーの高点が極限値を超えると,戦略は価格が逆転する可能性があると考え,空白入場を行う. ストップロスは極限値の上に置く.
最新のバーの低点が極小値より低いとき,戦略は価格が反転する可能性があると考え,多入場する。ストップロスは極小値より下に置く。
価格が逆転して極限を超えると,前回のシグナルは無効となり,次の取引の機会を待つ.
この方法により,策略が極限点を破るときに価格が短期的に逆転するチャンスを掴む.同時に,ストップ・ロスを設定してリスクを制御することができる.
双方向の突破逆転戦略には以下の利点があります.
sellable/roundの考え方は,極値点を利用して反転点判断する.
仮想通貨などの波動性のある市場には適用され,短線反転の機会を捉えることができます.
規則は比較的シンプルで,理解しやすい.
リスクはコントロールできます.
シャープ比率は”以上です.
双方向の突破逆転戦略には以下のリスクがあります.
市場がトレンドを続ける場合,小規模なストップが複数回発生する.
極限点は必ずしも反転点とは限らないので,誤った反転または不十分な反転の危険性がある.
極限を超えるとすぐに逆転を保証できず,損失を追求するリスクがある.
標本範囲が小さすぎるため,最新の4barの極限値のみを要求します.
市場流動性を考慮せずに,大額入場が価格に衝撃を与える可能性があります.
長期的には効果が疑わしい.
双方向の突破逆転戦略は,以下の点で最適化できます.
極限点の時間帯を増加させ,サンプルを小さすぎないようにする. 動的区間を設定することができる.
極限点を突破した後に,追加の確認信号を待って,偽突破を避ける.例えば,大量加え,MACDの背離など.
市場流動性に応じて,入場ポジションを動的に調整する.
トレンド指数と組み合わせて,トレンドの中で頻繁に反転するストップを避ける.
ストップラインを移動させる戦略を追加し,ストップラインが利益を追跡できるようにする.
異なる品種に対してそれぞれテストパラメータを設定し,最適パラメータを設定する.
戦略の安定性を検証する,より長い回帰時間と期貨データを追加する.
双方向の突破反転戦略は,価格の極値点を利用して反転のタイミングを判断し,高波動の市場でショートラインの機会を捉えることができる. 利点はルールがシンプルで,引き下げは低い,収益率は高い. しかし,誤った反転と損失を追求するリスクもあります.
/*backtest
start: 2023-10-16 00:00:00
end: 2023-11-15 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
strategy("QuantNomad - Pivot Reversal Strategy - XBTUSD - 1h", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 50)
//
// author: QuantNomad
// date: 2019-06-01
// Pivot Reversal Strategy - XBTUSD - 1h
// https://www.tradingview.com/u/QuantNomad/
// https://t.me/quantnomad
//
leftBars = input(4)
rightBars = input(4)
swh = pivothigh(leftBars, rightBars)
swl = pivotlow(leftBars, rightBars)
swh_cond = not na(swh)
hprice = 0.0
hprice := swh_cond ? swh : hprice[1]
le = false
le := swh_cond ? true : (le[1] and high > hprice ? false : le[1])
if (le)
strategy.entry("PivRevLE", strategy.long, comment="PivRevLE", stop=hprice + syminfo.mintick)
swl_cond = not na(swl)
lprice = 0.0
lprice := swl_cond ? swl : lprice[1]
se = false
se := swl_cond ? true : (se[1] and low < lprice ? false : se[1])
if (se)
strategy.entry("PivRevSE", strategy.short, comment="PivRevSE", stop=lprice - syminfo.mintick)