Стратегия сдерживания потерь с изменением импульса

Автор:Чао Чжан, Дата: 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 )



Больше