
Strategi ini adalah sistem perdagangan kuantitatif berdasarkan sinyal linear dan normalisasi skor Z. Ia membangun sinyal perdagangan standar dengan menggabungkan variabel eksogen seperti RSI dengan data harga, dan menggunakan ambang batas untuk memicu transaksi. Strategi ini cocok untuk skenario perdagangan intraday dan frekuensi tinggi dan memiliki kemampuan beradaptasi dan konfigurasi yang kuat.
Prinsip inti dari strategi ini mencakup langkah-langkah kunci berikut:
Ini adalah strategi perdagangan kuantitatif dengan struktur yang jelas dan logika yang ketat. Sistem sinyal perdagangan yang kuat dibangun melalui kombinasi linier dan pemrosesan standarisasi. Strategi ini sangat dapat dikonfigurasi dan memiliki manajemen risiko yang sempurna, tetapi perhatian perlu diberikan pada optimalisasi parameter dan kemampuan beradaptasi pasar. Stabilitas dan profitabilitas strategi dapat lebih ditingkatkan melalui arahan pengoptimalan yang direkomendasikan.
/*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)