
Данная стратегия представляет собой количественную торговую систему, основанную на линейных сигналах и нормализации Z-оценки. Он создает стандартизированные торговые сигналы, объединяя экзогенные переменные, такие как RSI, с ценовыми данными и использует пороговые значения для запуска транзакций. Эта стратегия подходит для внутридневных и высокочастотных торговых сценариев и обладает высокой адаптивностью и настраиваемостью.
Основные принципы стратегии включают следующие ключевые шаги:
Это количественная торговая стратегия с четкой структурой и строгой логикой. Надежная система торговых сигналов создается путем линейной комбинации и стандартизации обработки. Стратегия легко настраивается и обеспечивает идеальное управление рисками, но необходимо уделять внимание оптимизации параметров и адаптации к рынку. Стабильность и прибыльность стратегии могут быть дополнительно улучшены за счет рекомендуемых направлений оптимизации.
/*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)