資源の読み込みに... 荷物...

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 )



もっと