ケルトナー・チャネル・プルバック・戦略

作者: リン・ハーンチャオチャン開催日:2023年12月27日 14:49:39
タグ:

img

概要

この戦略は,ケルトナー・チャネル指標に基づく引き下げ取引戦略を設計する.ケルトナー・チャネルの上下線と価格を比較して,潜在的な価格逆転のタイミングを判断し,適切なロングとショートポジションを取ります.

戦略原則

この戦略は,価格動向を判断するためにケルトナーチャネル指標を使用する.ケルトナーチャネルは,移動平均値と平均値の真の範囲 (ATR) を構成する.上列は移動平均値プラスN倍ATRに等しい.下列は移動平均値マイナスN倍ATRに等しい.価格が下から上へとチャネルの下列を突破すると,上昇力が強化され,ロングポジションを取ることができると考えられる.価格が上から下へと上層を突破すると,下降力が強化され,ショートポジションを取ることができると考えられる.

また,引き下げ機会を判断するための戦略の基礎は,価格がチャネル境界を再び触ったり突破したりすることである.例えば,価格が上昇して下線を突破した後,上線に触らずに下線に触れるように再び落ちると,それは長い引き下げをする機会である.戦略は,この時点でロングポジションを開く.

利点分析

これは価格の引き下げ特性を利用する取引戦略です.その利点は:

  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")

もっと