
Стратегия представляет собой высокочастотную торговую систему, основанную на краткосрочных сигналах пересечения экспоненциальной скользящей средней (EMA). Он сочетает в себе адаптивный механизм отслеживания волатильности с динамическим управлением позициями и строгим контролем рисков для быстрого отслеживания краткосрочных колебаний рынка. Стратегия работает на более коротких временных интервалах, таких как 1 минута или 5 минут, и подходит для активных трейдеров, которые ищут частые торговые возможности.
Основная логика стратегии основана на перекрестных сигналах быстрой EMA (3-периодной) и медленной EMA (8-периодной). Когда быстрая линия пересекает медленную линию снизу, генерируется длинный сигнал; когда быстрая линия пересекает медленную линию снизу, генерируется короткий сигнал. Стратегия использует индикатор ATR для измерения волатильности рынка и динамически устанавливает соответствующие уровни стоп-лосса и прибыли. Система поддерживает два режима: торговля фиксированным количеством контрактов и динамическое управление позициями на основе баланса счета. В режиме динамической позиции риск каждой сделки контролируется в пределах 0,5% от остатка на счете. Стратегия использует соотношение риска к прибыли 1,2 и объединяет 1,5-кратный ATR в качестве расстояния отслеживания для скользящего стоп-лосса.
Эта стратегия создает полноценную высокочастотную торговую систему, объединяя краткосрочные сигналы пересечения EMA и динамическое управление рисками. Преимуществами этой стратегии являются быстрое реагирование и строгий контроль рисков, но также необходимо обращать внимание на такие вопросы, как ложные сигналы и транзакционные издержки. Благодаря постоянной оптимизации и корректировке параметров стратегии могут лучше адаптироваться к различным рыночным условиям и повышать эффективность и стабильность торговли.
/*backtest
start: 2019-12-23 08:00:00
end: 2025-01-04 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("High-Frequency EMA Scalping Strategy - Adjustable Contracts", overlay=true, default_qty_type=strategy.fixed, default_qty_value=1)
// Input parameters
fastEmaLength = input.int(3, title="Fast EMA Length", minval=1)
slowEmaLength = input.int(8, title="Slow EMA Length", minval=1)
atrLength = input.int(10, title="ATR Length", minval=1)
riskRewardRatio = input.float(1.2, title="Risk/Reward Ratio", minval=1)
useDynamicPositionSizing = input.bool(false, title="Use Dynamic Position Sizing?")
fixedContracts = input.int(1, title="Number of Contracts (if Fixed)", minval=1) // Fixed number of contracts
// Calculate EMA values
fastEma = ta.ema(close, fastEmaLength)
slowEma = ta.ema(close, slowEmaLength)
// Calculate ATR for dynamic stop-loss and take-profit
atr = ta.atr(atrLength)
// Dynamic position sizing (if enabled)
capital = strategy.equity
riskPerTrade = capital * 0.005 // Risk 0.5% per trade
dynamicTradeQty = riskPerTrade / (atr * 1.5)
// Use fixed or dynamic position sizing
tradeQty = useDynamicPositionSizing ? dynamicTradeQty : fixedContracts
// Entry conditions
longCondition = ta.crossover(fastEma, slowEma)
shortCondition = ta.crossunder(fastEma, slowEma)
// Long trade execution
if longCondition
risk = atr * 1.0
reward = risk * riskRewardRatio
strategy.entry("Long", strategy.long, qty=tradeQty)
strategy.exit("Trailing Stop Long", from_entry="Long", trail_points=atr * 1.5, trail_offset=atr * 1.0)
strategy.exit("Take Profit", from_entry="Long", limit=close + reward, stop=close - risk)
// Short trade execution
if shortCondition
risk = atr * 1.0
reward = risk * riskRewardRatio
strategy.entry("Short", strategy.short, qty=tradeQty)
strategy.exit("Trailing Stop Short", from_entry="Short", trail_points=atr * 1.5, trail_offset=atr * 1.0)
strategy.exit("Take Profit", from_entry="Short", limit=close - reward, stop=close + risk)
// Plot EMA lines for reference
plot(fastEma, color=color.blue, title="Fast EMA")
plot(slowEma, color=color.red, title="Slow EMA")