Strategi henti untung dan henti rugi saluran Ketner


Tarikh penciptaan: 2023-09-15 14:41:46 Akhirnya diubah suai: 2023-09-15 14:41:46
Salin: 0 Bilangan klik: 801
1
fokus pada
1617
Pengikut

Gambaran Keseluruhan Strategi

Strategi Stop Loss Kettner Channel adalah strategi kuantitatif untuk mengoptimumkan keputusan perdagangan berdasarkan kaedah analisis Kettner Channel, dengan menambahkan peraturan Stop Loss. Strategi ini memantau hubungan harga dengan aliran naik dan turun saluran, masuk ke arah melakukan lebih banyak shorting apabila pecah berlaku, dan mencapai keseimbangan risiko dan keuntungan berdasarkan titik Stop Loss Kettner Channel yang optimum.

Prinsip Strategi

  1. Hitung laluan pusat, atas, dan bawah.

  2. Pertimbangkan peluang ganda apabila harga menyentuh tren atas; pertimbangkan peluang kosong apabila ia menyentuh tren bawah.

  3. Masuk lebih banyak apabila harga menembusi tren naik; masuk kosong apabila harga menembusi tren turun.

  4. Tetapkan titik berhenti untuk kenaikan harga masuk dalam peratusan tertentu, titik hentikan untuk penurunan harga masuk dalam peratusan tertentu.

Keuntungan strategi ini adalah memperkenalkan peraturan berhenti berhenti, berhenti tepat pada masanya apabila kerugian berjalan terlalu besar; berhenti tepat pada masanya sebelum akhir gelombang. Ia juga menyediakan isyarat masuk semula, dan perdagangan tren yang berkekalan.

Parameter boleh dioptimumkan untuk pelbagai jenis untuk mencapai keseimbangan risiko dan keuntungan yang optimum.

Kelebihan Strategik

  • Kettner Channel menilai arah trend

  • Stop Stop Stop Stop Loss Optimisasi Hasil

  • Keluar masuk dengan lancar, mengelakkan penembusan palsu

  • Strategi fleksibel, parameter boleh disesuaikan

  • Boleh digunakan dengan kombinasi lain

Amaran risiko

  • Perlu meningkatkan kadar stop loss dengan sewajarnya

  • Masih ada risiko kerugian.

  • Kemungkinan pecahnya saluran ini menyebabkan kerugian

  • Kerugian berhenti yang terlalu kecil boleh menyebabkan kerosakan yang kerap

ringkaskan

Strategi hentian hentian saluran KTM telah dioptimumkan untuk perdagangan saluran tradisional, mengawal risiko perdagangan sambil mengikuti trend. Dengan pengukuran berulang dan penyesuaian parameter, anda boleh mendapatkan kesan strategi yang baik. Strategi ini layak untuk dikaji dan diuji di makmal, yang dapat meningkatkan kestabilan strategi secara beransur-ansur.

Kod sumber strategi
/*backtest
start: 2023-08-15 00:00:00
end: 2023-08-23 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title="Optimized Keltner Channels Strategy for BTC", overlay=true)
length = input(9, minval=1)
mult = input(1.0, "Multiplier")
src = input(close, title="Source")
exp = input(true, "Use Exponential MA")
BandsStyle = input("Average True Range", options = ["Average True Range", "True Range", "Range"], title="Bands Style")
atrlength = input(18, "ATR Length")
sl = input(defval=22, minval=0, title="Stop Loss (%)")
tp = input(defval=21, minval=0, title="Take Profit (%)")

esma(source, length)=>
	s = sma(source, length)
	e = ema(source, length)
	exp ? e : s
ma = esma(src, length)
rangema = BandsStyle == "True Range" ? rma(tr(true), length) : BandsStyle == "Average True Range" ? atr(atrlength) : rma(high - low, length)
upper = ma + rangema * mult
lower = ma - rangema * mult
c = color.blue
u = plot(upper, color=color.green, title="Upper")
plot(ma, color=#0094FF, title="Basis")
l = plot(lower, color=color.red, title="Lower")
fill(u, l, color=#0094FF, transp=95, title="Background")
crossUpper = crossover(src, upper)
crossLower = crossunder(src, lower)
bprice = 0.0
bprice := crossUpper ? close+syminfo.mintick : nz(bprice[1])
sprice = 0.0
sprice := crossLower ? close-syminfo.mintick : nz(sprice[1])
crossBcond = false
crossBcond := crossUpper ? true
     : na(crossBcond[1]) ? false : crossBcond[1]
crossScond = false
crossScond := crossLower ? true
     : na(crossScond[1]) ? false : crossScond[1]
cancelBcond = crossBcond and (src < ma or high >= bprice )
cancelScond = crossScond and (src > ma or low <= sprice )
if (cancelBcond)
	strategy.cancel("KltChLE")
if (crossUpper)
	strategy.entry("KltChLE", strategy.long, stop=bprice, comment="Long")
if (cancelScond)
	strategy.cancel("KltChSE")
if (crossLower)
	strategy.entry("KltChSE", strategy.short, stop=sprice, comment="Short")

strategy.exit("long exit", "KltChLE", profit = close * tp * 0.01 / syminfo.mintick, loss = close * sl * 0.01 / syminfo.mintick)
strategy.exit("Short exit", "KltChSE", profit = close * tp * 0.01 / syminfo.mintick, loss = close * sl * 0.01 / syminfo.mintick)

plot(bprice, color=color.green)
plot(sprice, color=color.red)