Эта стратегия основана на классической идее Ларри Коннорса, использующей двойную систему скользящих сред, чтобы улавливать среднесрочные колебания рынка и получать прибыль, когда он перекуплен или перепродан.
Используйте 2-периодический RSI, чтобы определить, находится ли цена в регионе перепроданности.
Для определения основного направления тренда используйте длительную скользящую среднюю (200 периодов).
Когда цена выше длинной MA и RSI ниже линии перепродажи, открыть длинную позицию по рыночной цене.
Когда цена проходит через короткий период MA (5 периодов) вверх, закрыть длинную позицию по рыночной цене, чтобы получить прибыль.
Кроме того, стратегия предусматривает следующие варианты конфигурации:
Параметры RSI: длина периода, уровни перекупленности/перепроданности.
Параметры МО: длительный и короткий период.
Фильтр RSI MA: добавьте RSI MA, чтобы избежать колебаний RSI.
Стоп-потеря: настраивается для добавления стоп-потерь или нет.
Система двойного MA может эффективно отслеживать средне- и долгосрочные тенденции.
РСИ не позволяет пропустить лучшее время входа во время сильных колебаний.
Гибкая конфигурация, подходящая для оптимизации параметров.
Прорывная стратегия, не исключено, что вы пропустите сигналы.
Стратегия двойного MA чувствительна к параметрам, что требует оптимизации для достижения наилучшей производительности.
Неиспользование стоп-лосса несет в себе риск увеличения потерь.
Ложный прорыв рискует потерями на колеблющемся рынке.
Риск чрезмерной адаптации к тесту. Требует валидации на рынках и временных периодах.
Испытать и оптимизировать комбинации параметров RSI и MA для поиска оптимального.
Проверьте дополнительные фильтры входа, такие как пик громкости, чтобы уменьшить ложные сигналы.
Добавьте остаточный стоп-лосс, чтобы контролировать потерю одной сделки.
Оценить влияние различных периодов хранения для определения оптимального.
Проверяйте прочность в более длительные периоды времени, например, ежедневно.
Эта стратегия сочетает в себе двойной отслеживание тренда MA и RSI перекупленный / перепроданный, чтобы сформировать типичную систему прорыва. С оптимизацией параметров, строгим управлением рисками и проверкой надежности она может стать мощным количественным торговым инструментом.
/*backtest start: 2023-09-26 00:00:00 end: 2023-10-26 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy("RSI Strategy", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100) //Starter Parameters length = input(title="RSI Lenght", defval=2) overBoughtRSI = input(title="OverBought Level for RSI", defval=10) shortLength = input(title="Short MA Length", defval=5) longLength = input(title="Long MA Length", defval=200) RuleMRSI=input(title="RSI Moving Average Filter", defval= true) lengthmrsi=input(title="RSI Moving Average Length", defval=4) overBoughtMRSI=input(title="OverBought Level for the Moving Average of the RSI", defval=30) Rulestop=input(title="Apply Stop Loss", defval=false) stop_percentual=input(title="% Stop Loss", defval=10) //RSI vrsi = rsi(close, length) //Moving Averages longma = sma(close,longLength) shortma = sma(close,shortLength) mrsi=sma(vrsi,lengthmrsi) //Stop Loss stop_level = strategy.position_avg_price*((100-stop_percentual)/100) //Backtest Period testStartYear = input(2009, "Backtest Start Year") testStartMonth = input(1, "Backtest Start Month") testStartDay = input(2, "Backtest Start Day") testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0) testStopYear = input(2020, "Backtest Stop Year") testStopMonth = input(12, "Backtest Stop Month") testStopDay = input(30, "Backtest Stop Day") testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0) testPeriod() => true //Strategy if testPeriod() and (not na(vrsi)) if (RuleMRSI==false) and (Rulestop==false) if (vrsi<overBoughtRSI) and (close>longma) strategy.entry("RsiLE", strategy.long , comment="Open") if (close>shortma) strategy.close_all() if (RuleMRSI==true) and (Rulestop==false) if (vrsi<overBoughtRSI) and (close>longma) and (mrsi<overBoughtMRSI) strategy.entry("RsiLE", strategy.long , comment="Open") if (close>shortma) strategy.close_all() if (RuleMRSI==false) and (Rulestop==true) if (vrsi<overBoughtRSI) and (close>longma) strategy.entry("RsiLE", strategy.long , comment="Open") strategy.exit("RsiLE", stop = stop_level) if (close>shortma) strategy.close_all() if (RuleMRSI==true) and (Rulestop==true) if (vrsi<overBoughtRSI) and (close>longma) and (mrsi<overBoughtMRSI) strategy.entry("RsiLE", strategy.long , comment="Open") strategy.exit("RsiLE", stop = stop_level) if (close>shortma) strategy.close_all()