Strategi ini merancang trend yang mudah mengikuti sistem perdagangan berdasarkan garis regresi linear dan garis purata bergerak. Ia pergi panjang apabila garis regresi linear melintasi di atas purata bergerak dan pergi pendek apabila garis regresi linear melintasi di bawah. Sementara itu, ia menggunakan kemiringan garis regresi untuk menapis beberapa isyarat perdagangan dan hanya memasuki apabila arah trend sepadan.
Trend Berikutan Strategi Dagangan Regresi
Komponen utama strategi ini termasuk:
Garis regresi linear boleh sesuai dengan arah trend dengan baik dalam tempoh baru-baru ini. Ia boleh membantu menilai arah trend keseluruhan. Apabila harga memecahkan melalui garis SMA, kita perlu menentukan lebih lanjut sama ada arah garis regresi linear konsisten dengan pecah ini. Hanya apabila kedua-dua arah konsisten, isyarat perdagangan dihasilkan. Ini boleh menapis beberapa pecah palsu.
Selain itu, strategi ini juga menetapkan mekanisme stop loss. Apabila harga mencapai garis stop loss, tutup kedudukan untuk menghentikan kerugian. Ia juga menetapkan garis mengambil keuntungan untuk mengunci beberapa keuntungan.
Strategi ini mempunyai kelebihan berikut:
Strategi ini juga mempunyai beberapa risiko:
Mengenai risiko ini, kita boleh mengoptimumkan dari aspek berikut:
Aspek utama untuk mengoptimumkan lagi strategi termasuk:
Strategi ini mengintegrasikan fungsi trend berikut purata bergerak dan keupayaan menilai trend regresi linear, membentuk sistem perdagangan trend berikut yang agak mudah. Ia boleh mencapai hasil yang baik dalam pasaran trend yang kuat. Kita masih memerlukan pengujian balik dan pengoptimuman yang luas pada parameter dan peraturan, dan kawalan risiko yang betul. Kemudian strategi ini harus dapat memperoleh pulangan pelaburan yang stabil.
/*backtest start: 2023-11-17 00:00:00 end: 2023-12-05 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy(title="Regression Trading Strategy", shorttitle="RTS", overlay=true) // Input parameters n = input(14, title="SMA Period") stop_loss_percentage = input(2, title="Stop Loss Percentage") take_profit_percentage = input(2, title="Take Profit Percentage") // Calculate the SMA sma = sma(close, n) // Linear regression function linear_regression(src, length) => sumX = 0.0 sumY = 0.0 sumXY = 0.0 sumX2 = 0.0 for i = 0 to length - 1 sumX := sumX + i sumY := sumY + src[i] sumXY := sumXY + i * src[i] sumX2 := sumX2 + i * i slope = (length * sumXY - sumX * sumY) / (length * sumX2 - sumX * sumX) intercept = (sumY - slope * sumX) / length line = slope * length + intercept line // Calculate the linear regression regression_line = linear_regression(close, n) // Plot the SMA and regression line plot(sma, title="SMA", color=color.blue) plot(regression_line, title="Regression Line", color=color.red) // Trading strategy conditions long_condition = crossover(close, sma) and close > regression_line short_condition = crossunder(close, sma) and close < regression_line // Exit conditions stop_loss_price = close * (1 - stop_loss_percentage / 100) take_profit_price = close * (1 + take_profit_percentage / 100) // Plot entry and exit points on the chart plotshape(series=long_condition, title="Long Entry", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small) plotshape(series=short_condition, title="Short Entry", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small) plotshape(series=crossunder(close, stop_loss_price), title="Stop Loss", location=location.abovebar, color=color.red, style=shape.labeldown, text="SL") plotshape(series=crossover(close, take_profit_price), title="Take Profit", location=location.belowbar, color=color.green, style=shape.labelup, text="TP") // Strategy orders strategy.entry("Long", strategy.long, when = long_condition) strategy.entry("Short", strategy.short, when = short_condition) strategy.exit("Exit", from_entry = "Long", when = crossover(close, stop_loss_price) or crossover(close, take_profit_price)) strategy.exit("Exit", from_entry = "Short", when = crossunder(close, stop_loss_price) or crossunder(close, take_profit_price))