Parabolik SAR Trend Tracking Stop Loss Reversal Strategi

Penulis:ChaoZhang, Tarikh: 2024-02-01 14:54:09
Tag:

img

Ringkasan

Strategi Pembalikan Stop Loss Pengesanan Trend Parabolic SAR adalah strategi yang menggunakan penunjuk Parabolic SAR untuk mengenal pasti trend dan memasuki kedudukan kontra trend apabila trend berbalik. Strategi ini juga menggabungkan mekanisme stop loss dan mengambil keuntungan untuk mengawal risiko.

Logika Strategi

Strategi ini menggunakan penunjuk Parabolic SAR untuk menilai trend pasaran semasa. Parabolic SAR bermaksud Parabolic Stop and Reverse. Garis penunjuknya membentuk satu siri parabola pada carta harga, dan titik-titik parabola ini mewakili titik pembalikan yang berpotensi.

Apabila titik SAR jatuh dan di bawah harga, ia mewakili trend menaik; apabila titik SAR naik dan di atas harga, ia mewakili trend menurun. Strategi menilai arah trend semasa berdasarkan lokasi titik SAR.

Secara khusus, apabila titik SAR menunjukkan trend menaik dan berada di atas harga, strategi akan menjadi pendek; apabila titik SAR menunjukkan trend menurun dan berada di bawah harga, strategi akan menjadi panjang.

Selain itu, strategi ini juga menetapkan mekanisme stop loss dan mengambil keuntungan. Apabila pergi panjang, ia boleh menetapkan harga stop loss untuk mengehadkan kerugian; pada masa yang sama, ia boleh menetapkan harga mengambil keuntungan untuk menutup kedudukan selepas mencapai keuntungan sasaran tertentu.

Analisis Kelebihan

Kelebihan utama menggabungkan penunjuk trend dan mekanisme henti rugi / mengambil keuntungan adalah:

  1. Menangkap peluang trend terbalik untuk perdagangan kontra-trend.
  2. Mengendalikan risiko dan keuntungan secara aktif dengan menetapkan stop loss dan mengambil keuntungan.
  3. SAR parabolik adalah penunjuk terbalik yang digunakan secara meluas dan berkesan.
  4. Peraturan strategi yang mudah dan jelas, mudah difahami dan dilaksanakan.

Analisis Risiko

Terdapat juga beberapa risiko yang perlu diperhatikan untuk strategi:

  1. Indikator SAR Parabolik tidak sempurna, kadang-kadang ia menghasilkan isyarat yang salah.
  2. Harga stop loss dan mengambil keuntungan perlu ditetapkan dengan munasabah, jika tidak ia boleh berhenti atau mengambil keuntungan lebih awal.
  3. Komisen dagangan juga mempengaruhi jumlah keuntungan.
  4. Trend baru selepas pembalikan mungkin jangka pendek.

Risiko ini boleh diselesaikan dengan pengoptimuman parameter, menggunakan penunjuk penapis lain dan sebagainya.

Arahan pengoptimuman

Strategi ini boleh dioptimumkan dalam aspek berikut:

  1. Mengoptimumkan parameter SAR Parabolik untuk mencari kombinasi terbaik.
  2. Cuba stop loss yang berbeza dan ambil strategi keuntungan seperti trailing stop loss.
  3. Tambah penunjuk atau syarat untuk menapis isyarat perdagangan terbalik.
  4. Tambah kawalan kedudukan berdasarkan keadaan pasaran.
  5. Sesuaikan parameter untuk instrumen dagangan yang berbeza.

Kesimpulan

Secara umum, ini adalah strategi pembalikan stop loss yang agak klasik. Ia mengenal pasti pembalikan trend dan juga mengawal risiko dengan means stop loss dan take profit. Selepas pengoptimuman, ia boleh menjadi strategi yang berbaloi untuk perdagangan langsung.


/*backtest
start: 2024-01-24 00:00:00
end: 2024-01-31 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Parabolic SAR Strategy", overlay=true)
start = input(0.02)
increment = input(0.02)
maximum = input(0.2)
var bool uptrend = na
var float EP = na
var float SAR = na
var float AF = start
var float nextBarSAR = na
if bar_index > 0
	firstTrendBar = false
	SAR := nextBarSAR
	if bar_index == 1
		float prevSAR = na
		float prevEP = na
		lowPrev = low[1]
		highPrev = high[1]
		closeCur = close
		closePrev = close[1]
		if closeCur > closePrev
			uptrend := true
			EP := high
			prevSAR := lowPrev
			prevEP := high
		else
			uptrend := false
			EP := low
			prevSAR := highPrev
			prevEP := low
		firstTrendBar := true
		SAR := prevSAR + start * (prevEP - prevSAR)
	if uptrend
		if SAR > low
			firstTrendBar := true
			uptrend := false
			SAR := max(EP, high)
			EP := low
			AF := start
	else
		if SAR < high
			firstTrendBar := true
			uptrend := true
			SAR := min(EP, low)
			EP := high
			AF := start
	if not firstTrendBar
		if uptrend
			if high > EP
				EP := high
				AF := min(AF + increment, maximum)
		else
			if low < EP
				EP := low
				AF := min(AF + increment, maximum)
	if uptrend
		SAR := min(SAR, low[1])
		if bar_index > 1
			SAR := min(SAR, low[2])
	else
		SAR := max(SAR, high[1])
		if bar_index > 1
			SAR := max(SAR, high[2])
	nextBarSAR := SAR + AF * (EP - SAR)
	if barstate.isconfirmed
		if uptrend
			strategy.entry("ParSE", strategy.short, stop=nextBarSAR, comment="ParSE")
			strategy.cancel("ParLE")
		else
			strategy.entry("ParLE", strategy.long, stop=nextBarSAR, comment="ParLE")
			strategy.cancel("ParSE")
plot(SAR, style=plot.style_cross, linewidth=3, color=color.orange)
plot(nextBarSAR, style=plot.style_cross, linewidth=3, color=color.aqua)
//Stop Loss Inputs
use_short_stop_loss = input(false, title="Short Stop Loss", group="Stop Loss and Take Profit", inline="Short_SL")
short_stop_loss = input(title="(%)", type=input.float, minval=0.0, step=0.1, 
     defval=5, group="Stop Loss and Take Profit", inline="Short_SL") * 0.01
use_long_stop_loss = input(false, title="Long Stop Loss", group="Stop Loss and Take Profit", inline="Long_SL")
long_stop_loss = input(title="(%)", type=input.float, minval=0.0, step=0.1, 
     defval=5, group="Stop Loss and Take Profit", inline="Long_SL") * 0.01

//Take Profit Inputs     
use_short_take_profit = input(false, title="Short Take Profit", group="Stop Loss and Take Profit", inline="Short_TP")
short_take_profit = input(title="(%)", type=input.float, minval=0.0, step=0.1,
     defval = 20, group="Stop Loss and Take Profit", inline="Short_TP") * .01
use_long_take_profit = input(false, title="Long Take Profit", group="Stop Loss and Take Profit", inline="Long_TP")
long_take_profit = input(title="(%)", type=input.float, minval=0.0, step=0.1,
     defval = 20, group="Stop Loss and Take Profit", inline="Long_TP") * .01


longStopPrice  = strategy.position_avg_price * (1 - long_stop_loss)
shortStopPrice = strategy.position_avg_price * (1 + short_stop_loss)
longLimitPrice = strategy.position_avg_price * (1 + long_take_profit)
shortLimitPrice = strategy.position_avg_price * (1 - short_take_profit)


if (strategy.position_size > 0.0)
    if (use_long_stop_loss and not use_long_take_profit)
        strategy.exit("Long", stop = longStopPrice)
    if (use_long_take_profit and not use_long_stop_loss)
        strategy.exit("Long", limit = longLimitPrice)
    if (use_long_take_profit and use_long_stop_loss)
        strategy.exit("Long", stop = longStopPrice, limit=longLimitPrice)
if (strategy.position_size < 0.0)
    if (use_short_stop_loss and not use_short_take_profit)
        strategy.exit("Short", stop = shortStopPrice)
    if (use_short_take_profit and not use_short_stop_loss)
        strategy.exit("Short", limit = shortLimitPrice)
    if (use_short_take_profit and use_short_stop_loss)
        strategy.exit("Short", stop = shortStopPrice, limit = shortLimitPrice)

//plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr)

Lebih lanjut