CK 모멘텀 역전 스톱 로스 전략

저자:차오장, 날짜: 2023-11-27 18:13:58
태그:

img

전반적인 설명

이 전략은 가격 트렌드를 결정하기 위해 CK 채널을 사용하며 가격 반전이 발생하면 역작업을 수행하기 위해 동적 스톱 로스 라인을 설정합니다. 단기 거래 전략에 속합니다.

전략 원칙

이 전략은 CK 채널을 사용하여 가격 추세와 지원/항항을 결정합니다. 상위 및 하위 채널 라인을 계산합니다. 가격이 채널 라인을 통과 할 때 거래 신호가 생성됩니다. 또한 전략은 채널 라인의 움직임을 추적하고 채널 라인이 역전되면 역행 포지션을 취합니다. 이는 역행 거래 전략에 속합니다.

구체적으로, 전략은 가장 높고 가장 낮은 가격에 따라 상위 및 하위 채널 라인을 계산합니다. 상위 채널 라인이 떨어지기 시작하면 하위 채널 라인이 상승하기 시작하면 가격 반전으로 결정됩니다. 반대로, 하위 채널 라인이 떨어지기 시작하면 상위 채널 라인이 상승하기 시작하면 가격 반전으로 결정됩니다.

전략 의 장점

  1. 정확한 리버스 오퍼레이션을 위해 가격 전환점을 결정하기 위해 이중 채널을 사용하십시오.
  2. 위험을 통제하고 적절한 시간 내에 손해를 막기 위해 동적 스톱 손실을 채택하십시오.
  3. 전략 논리는 간단하고 명확하며 이해하기 쉽고 실행하기 쉽습니다.

전략 의 위험

  1. 시장 가격 이 급격 히 변동 될 때, 스톱 로스 라인 이 깨질 수 있으며, 더 큰 손실 이 발생할 수 있습니다
  2. 더 빈번한 거래는 거래 비용을 증가시킬 수 있습니다
  3. 중지 손실 라인을 제어하는 적절한 매개 변수를 선택해야 합니다, 너무 느슨하거나 너무 긴 피

전략 최적화

  1. 더 합리적이고 효과적인 만들기 위해 중지 손실 라인 매개 변수를 최적화
  2. 트렌드 신호의 신뢰성을 판단하기 위해 트렌드 지표를 포함하고 트렌드 중에 역작업을 피하십시오.
  3. 자동 거래 및 자동 스톱 로스 모듈을 늘려 거래 비용을 줄이세요

요약

전략의 전반적인 아이디어는 명확하고 이해하기 쉽습니다. 가격 반전을 결정하고 역작업을 수행하기 위해 이중 채널을 사용합니다. 그리고 위험을 제어하기 위해 동적 스톱 손실을 설정합니다. 그것은 전형적인 단기 거래 전략에 속합니다. 전략 효과는 주로 스톱 손실 매개 변수를 조정하고 다른 기술적 지표를 지원하여 입출 시기를 결정함으로써 더 이상 최적화 될 수 있습니다.


/*backtest
start: 2023-10-27 00:00:00
end: 2023-11-26 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
//

//study(title="Chande Kroll Stop", shorttitle="CK Stop", overlay=true)
strategy(title="Chande Kroll Stop", shorttitle="Chande Kroll Stop回測", overlay=true, initial_capital=100000, calc_on_every_tick=true,default_qty_type=strategy.percent_of_equity, default_qty_value=10)
br_red = #e91e63,Red = #f41818,n_green = #91dc16,dk_green = #004d40,lt_green = #16dc78,lt_blue = #0dbdd8,dk_blue = #0a3577,Blue = #034fed,br_orange = #f57c00,dk_orange = #e65100,dk_gray = #434651,dk_pink = #7c1df0,lt_pink = #e743f5,Purple = #5b32f3,lt_purple = #6b5797

hiP = input(9, "",inline="h")
hix = input(1,"" ,inline="h", step=0.1)
hiQ = input(7,"" ,inline="h")
loP = input(9,"" ,inline="h1")
lox = input(1,"" ,inline="h1", step=0.1)
loQ = input(5,"" ,inline="h1")
Xr=input(false,"反向操作:買/賣",inline="T"),
first_high_stop = highest(high, hiP) - hix * atr(hiP)
first_low_stop = lowest(high, loP) + lox * atr(loP)

stop_short = highest(first_high_stop, hiQ)
stop_long = lowest(first_low_stop, loQ)

cklow = stop_short
ckhigh = stop_long


Xdn = cklow < cklow[1] and ckhigh < ckhigh[1]
Xup = cklow > cklow[1] and ckhigh > ckhigh[1]
longcol = Xup ? lt_green : Xdn ? br_red : #2a2e39
shortcol = Xup? lt_green : Xdn ? br_red : #2a2e39
plot(stop_long, color=longcol)
plot(stop_short, color=shortcol)


plotshape(Xup and not Xup[1] , title="CK Stop Buy", text='CK', style=shape.triangleup, size=size.tiny, location=location.belowbar, color=lt_green, textcolor=lt_green,display=display.none)
plotshape(Xdn and not Xdn[1], title="CK Stop Sell", text='CK', style=shape.triangledown, size=size.tiny, location=location.abovebar, color=br_red, textcolor=br_red,display=display.none)

//       , default_qty_type=strategy.percent_of_equity, default_qty_value=10, calc_on_every_tick=true)

tl=input(true,"Sig",inline="T"), sbg=input(true,"Bgtrend",inline="T"), vbuild="FIREHORSE XRPUSDT"
Xp = 0.0, Xp:=Xdn? -1 : Xup? 1 : Xp[1], Xdf = Xr? Xup and Xp[1] == -1 : Xdn and Xp[1] == 1 ,Xuf = Xr?  Xdn and Xp[1] == 1: Xup and Xp[1] == -1 
FY=input(2021,"年",inline="btf"),FM=input(9,"月",inline="btf"),FD=input(01,"日",inline="btf"),
TY = input(2032,"年",inline="to"),TM=input(01,"月",inline="to"),TDy=input(01,"日",inline="to"), 
testTF = time>=timestamp(FY,FM,FD,00,00) and time <= timestamp(TY,TM,TDy,23,59)?  true:false


plotchar(tl? Xuf:na,vbuild+" 生門","△",location.bottom, #14e540,10,0," " ,#14e540,1,size.tiny)// ︽  ︾
plotchar(tl? Xdf:na,vbuild+" 傷門","▽",location.top,  #9b0842,10,0," ", #9b0842,1,size.tiny)  
bgcolor(sbg ? Xp==1 ? #0d47a1 :na: na, transp=90),
alertcondition(Xuf,vbuild+ "Buy", "Long 💹 \n"+vbuild),  alertcondition(Xdf, vbuild+ " Sell","Short 🈹\n"+vbuild)

if Xuf
    alert("Long " + tostring(close)+"\nLong "+input("My Long  Msg","Long Alert Msg")+vbuild, alert.freq_once_per_bar) 
if Xdf
    alert("Short " + tostring(close)+"\nShort"+input("My Short Msg","Short Alert Msg")+vbuild, alert.freq_once_per_bar) 


if testTF
    strategy.entry("Long ", strategy.long,  comment=" Long ",when=Xuf), strategy.entry("Short", strategy.short, comment=" Short",when=Xdf )



더 많은