ケルトナーチャネルブレイクアウトリトレースメント戦略


作成日: 2023-12-27 14:49:39 最終変更日: 2023-12-27 14:49:39
コピー: 0 クリック数: 761
1
フォロー
1621
フォロワー

ケルトナーチャネルブレイクアウトリトレースメント戦略

概要

この戦略は,Keltnerチャネル指標をベースに,引き戻し取引戦略を設計した.この戦略は,価格とKeltnerチャネル上下線の関係を比較し,価格が逆転する可能性のあるタイミングを判断し,適切な多空操作を行う.

戦略原則

この策略は,Keltner通路指標を使用して価格の傾向を判断する. ケルトナー通路は均線と平均実際の波幅 (ATR) で構成されている. 通路上の軌道は均線加えたATRのN倍に等しく,下軌道は平均線からのATRのN倍に等しくなる. 価格が下から上へ突破する通路の下軌道を,多頭力増強すると考えられ,多頭力を加えることができる. 価格が上から下へ突破する通路上の軌道を,空頭力増強すると考えられ,空頭力を加えることができる.

また,この戦略は,引き出しの機会を判断する根拠として,価格が再び触れたりチャネル境界を突破したりする.例えば,価格上昇が下線を突破した後,上線を触れないまま再び下線を触れたりすると,これは,多重引き出しの機会である.戦略は,この時点で多重取引をする.

優位分析

これは,価格の逆転特性を利用して取引する戦略です.

  1. ケルトナー通路は,価格の方向を判断するために使用され,ノイズを効果的にフィルターすることができます.
  2. ターンバック前にフィールドに侵入し,より大きな動きを捉えるためのバックストラテジーを採用してください.

リスク分析

この戦略の主なリスクは,

  1. 市場が長期にわたって一方的に動いている場合,引き出しの機会は少ないかもしれないし,利益を得ることはできません.
  2. 抽出信号の判断が不正確である場合,損失を招く可能性があります.

対策として

  1. パラメータの最適化,通路の幅の調整,市場環境への適応.
  2. ポジション管理を強化し,単発損失を減らす.

最適化の方向

この戦略は以下の点で最適化できます.

  1. 取引量に基づいてブレイクフィルタリングを行い,偽のブレイクを回避します.
  2. ポジションの大きさは変動率に応じて調整されます.
  3. ストップを更新し,ストップを移動して,より多くの利益をロックします.

要約する

この戦略は,トレンド判断と引き戻し取引の方法を統合し,逆転状況を捕捉する点で独特の優位性を持っています.パラメータ調整と機能拡張により,戦略の安定性と収益性をさらに強化することができます.

ストラテジーソースコード
/*backtest
start: 2023-11-26 00:00:00
end: 2023-12-26 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("Keltner bounce from border. No repaint. (by Zelibobla)", shorttitle="Keltner border bounce", overlay=true)

price = close

// build Keltner
keltnerLength = input(defval=200, minval=1, title="Keltner EMA Period Length")
keltnerATRLength = input(defval=200, minval=1, title="Keltner ATR Period Length (the same as EMA length in classic Keltner Channels)")
keltnerDeviation = input(defval=8, minval=1, maxval=15, title="Keltner band width (in ATRs)")
closeOnEMATouch = input(type=bool, defval=false, title="Close trade on EMA touch? (less drawdown, but less profit and higher commissions impact)")
enterOnBorderTouchFromInside = input(type=bool, defval=false, title="Enter on border touch from inside? (by default from outside, which is less risky but less profitable)")
SL = input(defval=50, minval=0, maxval=10000, title="Stop loss in ticks (leave zero to skip)")
EMA = sma(price, keltnerLength)
ATR = atr(keltnerATRLength)
top = EMA + ATR * keltnerDeviation
bottom = EMA - ATR * keltnerDeviation

buyEntry = crossover(price, bottom)
sellEntry = crossunder(price, top)
plot(EMA, color=aqua,title="EMA")
p1 = plot(top, color=silver,title="Keltner top")
p2 = plot(bottom, color=silver,title="Keltner bottom")
fill(p1, p2)

tradeSize = input(defval=1, minval=1, title="Trade size")

if ( enterOnBorderTouchFromInside and crossunder(price, bottom) )
    strategy.entry("BUY", strategy.long, qty=tradeSize, comment="BUY")
else
    if( crossover(price, bottom) )
        strategy.entry("BUY", strategy.long, qty=tradeSize, comment="BUY")

if( crossover(price,EMA) and closeOnEMATouch )
    strategy.close("BUY")

if( 0 != SL )
    strategy.exit("EXIT BUY", "BUY", qty=tradeSize, loss=SL)
    strategy.exit("EXIT SELL", "SELL", qty=tradeSize, loss=SL)
   
if( enterOnBorderTouchFromInside and crossover(price, bottom) )
    strategy.entry("SELL", strategy.long, qty=tradeSize, comment="SELL")
else
    if ( crossunder(price, top) )
        strategy.entry("SELL", strategy.short, qty=tradeSize, comment="SELL")
    
    
if( crossunder(price, EMA) and closeOnEMATouch )
    strategy.close("SELL")