
Стратегия представляет собой количественную торговую систему, объединяющую технические показатели RSI, отклонения от цены и поддерживающие устойчивые позиции. Стратегия определяет торговые сигналы, идентифицируя отклонения от цены в сочетании с прорывом от поддерживающих устойчивых позиций, а также интегрирует механизмы остановки и остановки для управления риском.
Стратегия основана на следующих основных компонентах:
Эта стратегия, объединяя несколько важных концепций из технического анализа, создает относительно целостную торговую систему. Преимущества стратегии заключаются в многократном подтверждении механизмов и совершенном контроле риска, но в то же время она также сталкивается с проблемами выбора параметров и зависимости от рыночной среды.
/*backtest
start: 2024-12-12 00:00:00
end: 2024-12-19 00:00:00
period: 10m
basePeriod: 10m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=6
strategy("Агрессивная стратегия с дивергенциями по RSI и уровнями поддержки/сопротивления", overlay=true)
// Параметры для RSI
rsiLength = input.int(14, title="Период для RSI", minval=1) // Период для расчета RSI
rsiOverbought = input.int(70, title="Уровень перекупленности", minval=1, maxval=100)
rsiOversold = input.int(30, title="Уровень перепроданности", minval=1, maxval=100)
// Параметры для стоп-лосса и тейк-профита
stopLossPercent = input.float(1, title="Стоп-лосс (%)", minval=0.1) / 100
takeProfitPercent = input.float(2, title="Тейк-профит (%)", minval=0.1) / 100
// Период для уровней поддержки и сопротивления
supportResistanceLength = input.int(50, title="Период для уровней поддержки и сопротивления", minval=1)
// Рассчитываем RSI
rsi = ta.rsi(close, rsiLength)
// Рассчитываем уровни поддержки и сопротивления
support = ta.lowest(close, supportResistanceLength) // Находим минимумы за период для поддержки
resistance = ta.highest(close, supportResistanceLength) // Находим максимумы за период для сопротивления
// Определяем дивергенцию RSI с ценой
priceHigh = ta.highest(close, rsiLength)
priceLow = ta.lowest(close, rsiLength)
rsiHigh = ta.highest(rsi, rsiLength)
rsiLow = ta.lowest(rsi, rsiLength)
// Дивергенция на покупку (бычья): цена делает новый минимум, а RSI этого не делает
bullishDivergence = priceLow < priceLow[1] and rsiLow > rsiLow[1] and close > support
// Дивергенция на продажу (медвежья): цена делает новый максимум, а RSI этого не делает
bearishDivergence = priceHigh > priceHigh[1] and rsiHigh < rsiHigh[1] and close < resistance
// Отображаем уровни поддержки и сопротивления
plot(support, title="Поддержка", color=color.green, linewidth=2, style=plot.style_line)
plot(resistance, title="Сопротивление", color=color.red, linewidth=2, style=plot.style_line)
// Условия для покупки по бычьей дивергенции
if (bullishDivergence)
strategy.entry("Long", strategy.long)
stopLoss = close * (1 - stopLossPercent) // Стоп-лосс
takeProfit = close * (1 + takeProfitPercent) // Тейк-профит
strategy.exit("Exit Long", from_entry="Long", stop=stopLoss, limit=takeProfit)
// Условия для продажи по медвежьей дивергенции
if (bearishDivergence)
strategy.entry("Short", strategy.short)
stopLoss = close * (1 + stopLossPercent) // Стоп-лосс для шорта
takeProfit = close * (1 - takeProfitPercent) // Тейк-профит для шорта
strategy.exit("Exit Short", from_entry="Short", stop=stopLoss, limit=takeProfit)
// Отображаем RSI на отдельном графике
plot(rsi, title="RSI", color=color.blue, linewidth=2)
hline(rsiOverbought, "Перекупленность", color=color.red)
hline(rsiOversold, "Перепроданность", color=color.green)