Strategi Perdagangan Penembusan Supertrend

Penulis:ChaoZhang, Tarikh: 2024-02-18 14:19:58
Tag:

img

Ringkasan

Strategi ini dibangunkan berdasarkan penunjuk Supertrend. Ia menggabungkan tindakan harga dan arah saluran Supertrend untuk menilai trend pasaran dan menghasilkan isyarat perdagangan apabila arah saluran berubah.

Apabila harga menembusi saluran Supertrend, pergi panjang; apabila harga menembusi di bawah saluran bawah Supertrend, pergi pendek. Pada masa yang sama, ia mempunyai mekanisme rintangan trend stop loss.

Logika Strategi

Saluran Supertrend terdiri daripada rel atas dan rel bawah. Kawasan di dalam saluran adalah kawasan penyatuan dan kawasan di luar adalah kawasan trend. Ia menggunakan julat sebenar purata dikalikan dengan faktor untuk menentukan lebar saluran.

Apabila harga memecahkan rel atas dari bawah, ia adalah isyarat beli. Ini bermakna bahawa trend menaik baru bermula. Apabila harga memecahkan rel bawah dari atas, ia adalah isyarat jual. Ini bermakna bahawa trend penurunan baru bermula.

Strategi ini menggunakan penunjuk Supertrend untuk menilai arah trend utama. Apabila arah saluran berubah, iaitu apabila harga menembusi rel saluran, isyarat perdagangan dihasilkan. Kemudian gunakan penjejaki trend stop loss untuk mengunci keuntungan.

Analisis Kelebihan

Ini adalah strategi breakout yang agak mudah dan intuitif.

  1. Gunakan saluran Supertrend untuk menentukan arah trend utama dan mengelakkan perdagangan bunyi bising.

  2. Ikuti trend, menilai peluang panjang dan pendek berdasarkan hubungan harga dengan saluran.

  3. Ia mempunyai mekanisme stop loss yang jelas untuk mengawal risiko dengan berkesan.

  4. Kaedah stop loss adalah trend memantau stop loss, yang boleh memaksimumkan kunci keuntungan.

Risiko dan Penambahbaikan

Terdapat juga beberapa risiko untuk strategi ini, terutamanya termasuk:

  1. Tetapan parameter Supertrend yang tidak betul boleh menyebabkan isyarat palsu.

  2. Isyarat pecah boleh menjadi isyarat pembalikan jangka pendek, yang mengakibatkan kerugian.

  3. Kaedah stop loss hanya trend tracking stop loss, yang boleh menghentikan kerugian lebih awal.

Langkah-langkah penambahbaikan yang sepadan termasuk:

  1. Uji data dari pasaran yang berbeza dan optimumkan parameter.

  2. Isyarat penapis dalam kombinasi dengan penunjuk lain.

  3. Menghakimi kebolehpercayaan isyarat pecah digabungkan dengan struktur harga.

  4. Meningkatkan kerugian berhenti latar belakang untuk mengawal risiko lebih lanjut.

Ringkasan

Secara umum, strategi ini adalah strategi trend yang agak mudah dan intuitif. Ia menggunakan saluran Supertrend untuk menentukan arah trend dengan jelas dan menghasilkan isyarat apabila saluran itu mengubah arah. Kemudian gunakan trend tracking stop loss untuk mengunci keuntungan.

Perbandingan dengan penunjuk lain, saluran Supertrend mempunyai toleransi yang lebih baik untuk turun naik harga. Tetapi masih ada ruang untuk keuntungan untuk strategi ini. Ia boleh dioptimumkan dari segi penapisan isyarat dan kaedah berhenti kerugian untuk meningkatkan kestabilan.


/*backtest
start: 2023-02-11 00:00:00
end: 2024-02-17 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Supertrend TEST Strategy", overlay = true, format=format.price, precision=2)

Periods = input(title="ATR Period", type=input.integer, defval=4)
src = input(hlc3, title="Source")
Multiplier = input(title="ATR Multiplier", type=input.float, step=0.1, defval=4.7)
changeATR= input(title="Change ATR Calculation Method ?", type=input.bool, defval=true)
showsignals = input(title="Show Buy/Sell Signals ?", type=input.bool, defval=true)
highlighting = input(title="Highlighter On/Off ?", type=input.bool, defval=true)
tp=close
sl=close

atr2 = sma(tr, Periods)
atr= changeATR ? atr(Periods) : atr2
up=src-(Multiplier*atr)
up1 = nz(up[1],up)
up := close[1] > up1 ? max(up,up1) : up
dn=src+(Multiplier*atr)
dn1 = nz(dn[1], dn)
dn := close[1] < dn1 ? min(dn, dn1) : dn
trend = 1
trend := nz(trend[1], trend)
trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend
upPlot = plot(trend == 1 ? up : na, title="Up Trend", style=plot.style_linebr, linewidth=2, color=color.green)
buySignal = trend == 1 and trend[1] == -1
plotshape(buySignal ? up : na, title="UpTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.green )
plotshape(buySignal and showsignals ? up : na, title="Лонг", text="Лонг", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.green, textcolor=color.white )
dnPlot = plot(trend == 1 ? na : dn, title="Down Trend", style=plot.style_linebr, linewidth=2, color=color.red)
sellSignal = trend == -1 and trend[1] == 1
plotshape(sellSignal ? dn : na, title="DownTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.red )
plotshape(sellSignal and showsignals ? dn : na, title="Шорт", text="Шорт", location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.red, textcolor=color.white )
mPlot = plot(ohlc4, title="", style=plot.style_circles, linewidth=0)
longFillColor = highlighting ? (trend == 1 ? color.green : color.white) : color.white
shortFillColor = highlighting ? (trend == -1 ? color.red : color.white) : color.white



if (strategy.position_size > 0)
	tp:=tp[1]
	sl:=up
	strategy.exit("Long_TP/SL","Long",limit=tp, stop=sl)
	
if (strategy.position_size < 0)
	tp:=tp[1]
	sl:=dn
	strategy.exit("Short_TP/SL","Short",limit=tp, stop=sl)



if buySignal 
	tp:=close+(close-up)*0.382
    strategy.entry("Long", strategy.long,  limit=tp, comment=tostring(round(tp)))
if sellSignal
	tp:=close-(dn-close)*0.382
    strategy.entry("Short", strategy.short, limit=tp, comment=tostring(round(tp)))




Lebih lanjut