Parabolik SAR Trend Tracking Stop Loss Reversal Strategi

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

img

Gambaran umum

Parabolic SAR Trend Tracking Stop Loss Reversal Strategy adalah strategi yang menggunakan indikator Parabolic SAR untuk mengidentifikasi tren dan memasuki posisi kontra tren ketika tren berbalik.

Logika Strategi

Strategi ini menggunakan indikator Parabolic SAR untuk menilai tren pasar saat ini. Parabolic SAR adalah singkatan dari Parabolic Stop and Reverse. Garis indikatornya membentuk serangkaian parabola pada grafik harga, dan titik-titik parabola ini mewakili titik-titik pembalikan potensial.

Ketika titik SAR turun dan di bawah harga, itu mewakili tren bullish; ketika titik SAR naik dan di atas harga, itu mewakili tren bearish. Strategi menilai arah tren saat ini berdasarkan lokasi titik SAR.

Secara khusus, ketika titik SAR menunjukkan tren naik dan berada di atas harga, strategi akan menjadi pendek; ketika titik SAR menunjukkan tren turun dan berada di bawah harga, strategi akan menjadi panjang.

Selain itu, strategi juga menetapkan mekanisme stop loss dan take profit. Ketika pergi panjang, itu dapat menetapkan harga stop loss untuk membatasi kerugian; pada saat yang sama, itu dapat menetapkan harga take profit untuk menutup posisi setelah mencapai keuntungan target tertentu.

Analisis Keuntungan

Keuntungan utama dari kombinasi indikator tren dan mekanisme stop loss/take profit adalah:

  1. Menangkap peluang reverse trend untuk trading counter trend.
  2. Mengontrol risiko dan keuntungan secara aktif dengan mengatur stop loss dan mengambil keuntungan.
  3. SAR parabolik adalah indikator terbalik yang banyak digunakan dan efektif.
  4. Aturan strategi yang sederhana dan jelas, mudah dimengerti dan diterapkan.

Analisis Risiko

Ada juga beberapa risiko yang harus diperhatikan untuk strategi:

  1. Indikator SAR parabola tidak sempurna, kadang-kadang menghasilkan sinyal yang salah.
  2. Harga stop loss dan take profit harus ditetapkan secara wajar, jika tidak, hal itu dapat menghentikan atau mengambil keuntungan lebih awal.
  3. Komisi perdagangan juga mempengaruhi total keuntungan.
  4. Tren baru setelah pembalikan mungkin berlangsung singkat.

Risiko ini dapat diselesaikan dengan mengoptimalkan parameter, menggunakan indikator filter lainnya dll.

Arahan Optimasi

Strategi dapat dioptimalkan dalam aspek berikut:

  1. Optimalkan parameter SAR Parabolik untuk menemukan kombinasi terbaik.
  2. Coba stop loss yang berbeda dan ambil strategi keuntungan seperti trailing stop loss.
  3. Tambahkan indikator atau kondisi untuk menyaring sinyal perdagangan terbalik.
  4. Tambahkan kontrol posisi berdasarkan kondisi pasar.
  5. Sesuaikan parameter untuk instrumen perdagangan yang berbeda.

Kesimpulan

Secara umum, ini adalah strategi pembalikan stop loss yang cukup klasik untuk melacak tren. Ini mengidentifikasi pembalikan tren dan juga mengendalikan risiko dengan stop loss dan take profit. Setelah optimasi, ini bisa menjadi strategi yang bermanfaat 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 banyak