
Chiến lược này là một hệ thống giao dịch định lượng dựa trên tín hiệu tuyến tính và chuẩn hóa điểm Z. Nó xây dựng các tín hiệu giao dịch chuẩn hóa bằng cách kết hợp các biến ngoại sinh như RSI với dữ liệu giá và sử dụng ngưỡng để kích hoạt giao dịch. Chiến lược này phù hợp với các kịch bản giao dịch trong ngày và tần suất cao và có khả năng thích ứng và cấu hình mạnh mẽ.
Các nguyên tắc cốt lõi của chiến lược bao gồm các bước chính sau:
Đây là chiến lược giao dịch định lượng có cấu trúc rõ ràng và logic chặt chẽ. Hệ thống tín hiệu giao dịch mạnh mẽ được xây dựng thông qua quá trình kết hợp tuyến tính và xử lý chuẩn hóa. Chiến lược này có khả năng cấu hình cao và có khả năng quản lý rủi ro hoàn hảo, nhưng cần chú ý đến việc tối ưu hóa thông số và khả năng thích ứng với thị trường. Tính ổn định và lợi nhuận của chiến lược có thể được cải thiện hơn nữa thông qua các hướng tối ưu hóa được đề xuất.
/*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)