
La stratégie est un système de trading quantitatif combinant l’indicateur technique RSI, les écarts de prix et les points de résistance de soutien. La stratégie détermine les signaux de trading en identifiant les écarts entre le RSI et les prix, et en combinant les ruptures avec les points de résistance de soutien, tout en intégrant des mécanismes de stop-loss et de stop-loss pour contrôler les risques.
La stratégie repose sur les éléments fondamentaux suivants :
La stratégie a pour avantage de disposer d’un mécanisme de confirmation multiple et d’une maîtrise parfaite des risques, mais elle est également confrontée à des défis liés au choix des paramètres et à la dépendance des conditions du marché. La stabilité et l’adaptabilité de la stratégie sont susceptibles d’être encore améliorées grâce à l’orientation optimisée des recommandations.
/*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)