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.
Strategi ini menggunakan penunjuk Parabolic SAR untuk menilai trend pasaran semasa. Parabolic SAR bermaksud
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.
Kelebihan utama menggabungkan penunjuk trend dan mekanisme henti rugi / mengambil keuntungan adalah:
Terdapat juga beberapa risiko yang perlu diperhatikan untuk strategi:
Risiko ini boleh diselesaikan dengan pengoptimuman parameter, menggunakan penunjuk penapis lain dan sebagainya.
Strategi ini boleh dioptimumkan dalam aspek berikut:
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)