
Стратегия представляет собой систему отслеживания тенденций, объединяющую несколько технических показателей, чтобы создать целостную рамку для принятия решений о торговле путем интеграции таких показателей, как движущиеся средние ((EMA), относительно сильные показатели ((RSI), движущиеся средние показатели сходства дисперсии ((MACD) и бриндовые полосы ((BB)). Стратегия использует динамический подход к управлению рисками, включая стоп-убытки на основе процентов и стоп-установки на основе прибыли на основе риска, чтобы обеспечить стабильную прибыль после корректировки риска.
Основная логика стратегии основана на многоуровневом анализе рынка:
Стратегия создает целостную торговую систему для отслеживания тенденций с помощью комбинированного использования нескольких технических показателей. Благодаря строгому управлению рисками и многомерному анализу рынка стратегия обладает хорошей адаптивностью и стабильностью. Хотя есть определенный простор для оптимизации, общая конструкция рациональна и подходит для основы среднесрочной и долгосрочной торговой стратегии.
/*backtest
start: 2025-01-10 00:00:00
end: 2025-02-09 00:00:00
period: 2h
basePeriod: 2h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Altcoin Long/Short Strategy", overlay=true, initial_capital=1000, default_qty_type=strategy.percent_of_equity, default_qty_value=200, commission_type=strategy.commission.percent, commission_value=0.1)
// —————— Inputs ——————
emaFastLength = input.int(20, "Fast EMA")
emaSlowLength = input.int(50, "Slow EMA")
rsiLength = input.int(14, "RSI Length")
bbLength = input.int(20, "Bollinger Bands Length")
riskRewardRatio = input.float(1.5, "Risk/Reward Ratio")
stopLossPerc = input.float(2, "Stop Loss %") / 100
// —————— Indicators ——————
// Trend: EMAs
emaFast = ta.ema(close, emaFastLength)
emaSlow = ta.ema(close, emaSlowLength)
ema200 = ta.ema(close, 200)
// Momentum: RSI & MACD
rsi = ta.rsi(close, rsiLength)
[macdLine, signalLine, _] = ta.macd(close, 12, 26, 9)
// Volatility: Bollinger Bands
basis = ta.sma(close, bbLength)
dev = ta.stdev(close, bbLength)
upperBand = basis + 2 * dev
lowerBand = basis - 2 * dev
// —————— Strategy Logic ——————
// Long Conditions
longCondition =
close > ema200 and // Long-term bullish
ta.crossover(emaFast, emaSlow) and // EMA crossover
rsi > 50 and // Momentum rising
close > lowerBand and // Bounce from lower Bollinger Band
macdLine > signalLine // MACD bullish
// Short Conditions
shortCondition =
close < ema200 and // Long-term bearish
ta.crossunder(emaFast, emaSlow) and // EMA crossunder
rsi < 50 and // Momentum weakening
close < upperBand and // Rejection from upper Bollinger Band
macdLine < signalLine // MACD bearish
// —————— Risk Management ——————
stopLoss = strategy.position_avg_price * (1 - stopLossPerc)
takeProfit = strategy.position_avg_price * (1 + (riskRewardRatio * stopLossPerc))
// —————— Execute Trades ——————
if (longCondition)
strategy.entry("Long", strategy.long)
strategy.exit("Exit Long", "Long", stop=stopLoss, limit=takeProfit)
if (shortCondition)
strategy.entry("Short", strategy.short)
strategy.exit("Exit Short", "Short", stop=stopLoss, limit=takeProfit)
// —————— Plotting ——————
plot(emaFast, "Fast EMA", color=color.blue)
plot(emaSlow, "Slow EMA", color=color.orange)
plot(ema200, "200 EMA", color=color.gray)
plot(upperBand, "Upper Bollinger", color=color.red)
plot(lowerBand, "Lower Bollinger", color=color.green)