
Стратегия является многоголовой стратегией, использующей RSI для определения тенденции в сочетании с MACD для выхода на рынок. Стратегия одновременно использует EMA-сравнительную линию в качестве фильтра на тенденцию и механизм экстренного остановки для контроля риска.
Эта стратегия основывается на RSI, который определяет направление тренда. Когда RSI проходит по установленной RSI-длинной линии (по умолчанию 21), считается, что ситуация может обернуться лихорадкой. Если MACD уже находится в нисходящем тренде, то можно определить, что в настоящее время находится в точке переворота, и это хорошее время, чтобы сделать больше.
Кроме того, стратегия также вводит среднюю линию EMA (по умолчанию 200 циклов) в качестве фильтра тренда. Только если цена выше средней линии EMA, то следует рассматривать дополнительные действия. Это может эффективно отфильтровать неопределенную тенденцию или ложную реверсию в нисходящей тенденции.
С точки зрения остановки убытков, стратегия устанавливает одновременно регулярную и экстренную остановки убытков. При прохождении регулярной остановки убытков (по умолчанию 86) при RSI, при прохождении экстренной остановки убытков (по умолчанию 73) при RSI без условного прохождения, чтобы контролировать максимальные убытки.
В целом, эта стратегия является более традиционной многоглавой стратегией отслеживания тенденций. Используя RSI для идентификации обратных точек, MACD для фильтрации ошибочных суждений, EMA для определения больших тенденций и контроля риска. Эта стратегия является простой, интуитивной, легко понятной, имеет определенное преимущество в определении обратных тенденций, и может использоваться в качестве одной из входных стратегий количественной торговли.
/*backtest
start: 2022-12-28 00:00:00
end: 2024-01-03 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © dravitch
//@version=4
strategy("RSI - BULL RUN (Improved)", overlay=true)
// Input
UseEmergency = input(true, "Use Emergency Exit?")
RSIlong = input(21, "RSI Long Cross")
RSIcloseLong = input(86, "RSI Close Long Position")
EmergencycloseLong = input(73, "RSI Emergency Close Long Position")
UseEMAFilter = input(true, "Use EMA Trend Filter")
EMAlength = input(200, "EMA Length for Trend Filter") // Utiliser 200 pour SMMA
// RSI
rsiValue = rsi(close, 14)
// MACD
[macdLine, signalLine, _] = macd(close, 12, 26, 9)
// EMA Trend Filter
emaTrend = sma(close, EMAlength) // Utiliser sma pour la SMMA (Simple Moving Average)
// Conditions pour les trades longs
trendUp = close > emaTrend
trendDown = close < emaTrend
longCondition = crossover(rsiValue, RSIlong) and trendDown or crossunder(macdLine, signalLine) and crossover(rsiValue, RSIlong)
longCloseCondition = crossunder(rsiValue, RSIcloseLong) and trendUp
emergencyLongCondition = crossunder(rsiValue, EmergencycloseLong)
// Plots
plot(rsiValue, color=color.white, linewidth=2, title="RSI")
// Strategy
if (longCondition)
strategy.entry("Long", strategy.long, alert_message='RSI Long Cross: LONG')
if (longCloseCondition)
strategy.close("Long", alert_message='RSI Close Long Position')
if (emergencyLongCondition and UseEmergency)
strategy.close("Long", alert_message='RSI Emergency Close Long')
// Plot EMA Trend Filter in a separate pane
plot(emaTrend, color=color.rgb(163, 0, 122), title="EMA Trend Filter", linewidth=2, style=plot.style_line, transp=0)
hline(0, "Zero Line", color=color.gray)