
Strategi ini ialah sistem perdagangan kuantitatif berdasarkan isyarat linear dan normalisasi skor Z. Ia membina isyarat dagangan piawai dengan menggabungkan pembolehubah eksogen seperti RSI dengan data harga, dan menggunakan ambang untuk mencetuskan urus niaga. Strategi ini sesuai untuk senario perdagangan intrahari dan frekuensi tinggi serta mempunyai kebolehsuaian dan kebolehkonfigurasian yang kukuh.
Prinsip teras strategi termasuk langkah utama berikut:
Ini adalah strategi perdagangan kuantitatif dengan struktur yang jelas dan logik yang ketat. Sistem isyarat dagangan yang mantap dibina melalui kombinasi linear dan pemprosesan standardisasi. Strategi ini sangat boleh dikonfigurasikan dan mempunyai pengurusan risiko yang sempurna, tetapi perhatian perlu diberikan kepada pengoptimuman parameter dan kebolehsuaian pasaran. Kestabilan dan keuntungan strategi boleh dipertingkatkan lagi melalui arahan pengoptimuman yang disyorkan.
/*backtest
start: 2024-12-29 00:00:00
end: 2025-01-05 00:00:00
period: 15m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Linear Signal-Based Strategy", shorttitle = "LSB_V1", overlay=true)
// Inputs
lookback_period = input.int(14, title="Lookback Period for Moving Averages")
signal_alpha = input.float(0.5, title="Signal Weight Alpha (Exogenous Variable)")
take_profit_percent = input.float(0.02, title="Take Profit (%)")
stop_loss_percent = input.float(0.01, title="Stop Loss (%)")
risk_adjustment_factor = input.float(1.5, title="Risk Adjustment Factor")
// Fetch Exogenous Variable (Example: RSI as a Proxy)
rsi_value = ta.rsi(close, lookback_period)
// Linear Signal Calculation
linear_signal = signal_alpha * rsi_value + (1 - signal_alpha) * close
// Z-Score Normalization for Signal
mean_signal = ta.sma(linear_signal, lookback_period)
stddev_signal = ta.stdev(linear_signal, lookback_period)
z_score_signal = (linear_signal - mean_signal) / stddev_signal
// Entry Conditions
long_condition = z_score_signal < -risk_adjustment_factor
short_condition = z_score_signal > risk_adjustment_factor
// Risk Management
long_take_profit = close * (1 + take_profit_percent)
long_stop_loss = close * (1 - stop_loss_percent)
short_take_profit = close * (1 - take_profit_percent)
short_stop_loss = close * (1 + stop_loss_percent)
// Execute Trades
if (long_condition)
strategy.entry("Long", strategy.long, qty=1)
strategy.exit("Exit Long", "Long", stop=long_stop_loss, limit=long_take_profit)
if (short_condition)
strategy.entry("Short", strategy.short, qty=1)
strategy.exit("Exit Short", "Short", stop=short_stop_loss, limit=short_take_profit)