Strategi ini ialah sistem perdagangan mengikut arah aliran maju berdasarkan penunjuk Supertrend, menggabungkan pelbagai mekanisme pengesahan isyarat dan pengurusan kedudukan dinamik. Teras strategi adalah untuk mengira garisan Supertrend melalui ATR (julat sebenar purata), dan menjana isyarat dagangan berdasarkan arah aliran harga dan tetingkap masa penahanan untuk mencapai tangkapan pintar arah aliran pasaran.
Strategi ini menggunakan mekanisme penapisan isyarat tiga lapisan:
Dari segi pengurusan modal, strategi menggunakan 15% daripada ekuiti akaun sebagai volum transaksi tunggal Kawalan kedudukan konservatif ini membantu pengurusan risiko.
Ini adalah strategi penjejakan arah aliran dengan struktur lengkap dan logik yang ketat Ia mempunyai nilai aplikasi praktikal yang baik melalui pelbagai mekanisme pengesahan isyarat dan sistem pengurusan risiko yang lengkap. Strategi ini sangat berskala, dan kestabilan serta keuntungannya boleh dipertingkatkan lagi melalui arahan pengoptimuman yang disyorkan.
/*backtest
start: 2024-12-06 00:00:00
end: 2025-01-04 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Supertrend Strategy", overlay=true)
atrPeriod = input(10, "ATR Length")
factor = input.float(3.0, "Factor", step=0.01)
// Compute supertrend values
[supertrendValue, supertrendDirection] = ta.supertrend(factor, atrPeriod)
var float direction = na
if not na(supertrendDirection[1]) and supertrendDirection[1] != supertrendDirection
direction := supertrendDirection > 0 ? 1 : -1
// Variables to track conditions
var int lastShortTime = na
var int lastLongTime = na
// Detecting short and long entries
if direction == -1
strategy.entry("My Short Entry Id", strategy.short)
lastShortTime := bar_index
if direction == 1
strategy.entry("My Long Entry Id", strategy.long)
lastLongTime := bar_index
// Custom signal logic
bool bullishSignal = false
bool bearishSignal = false
// Define bullish signal conditions
if not na(lastShortTime) and (bar_index - lastShortTime >= 15 and bar_index - lastShortTime <= 19)
if close > open and close[1] > open[1] and close[2] > open[2]
bullishSignal := true
// Define bearish signal conditions
if not na(lastLongTime) and (bar_index - lastLongTime >= 15 and bar_index - lastLongTime <= 19)
if close < open and close[1] < open[1] and close[2] < open[2]
bearishSignal := true
// Plot signals
if bullishSignal
strategy.entry("Bullish Upward Signal", strategy.long)
label.new(bar_index, close, text="Bullish", style=label.style_circle, color=color.green, textcolor=color.white)
if bearishSignal
strategy.entry("Bearish Downward Signal", strategy.short)
label.new(bar_index, close, text="Bearish", style=label.style_circle, color=color.red, textcolor=color.white)
// Optionally plot the strategy equity
//plot(strategy.equity, title="Equity", color=color.red, linewidth=2, style=plot.style_areabr)