Эта стратегия использует принципы перекупления и перепродажи индикатора RSI и сочетает в себе многоцикличный RSI для генерации сигналов, реализуя операции с пересечением цикла. Стратегия оценивает сигналы перекупления и перепродажи в соответствии с настройками цикла RSI и использует скользящую среднюю величину RSI для фильтрации, чтобы избежать неправильных сигналов. Она генерирует сигнал покупки, когда RSI пересекает свою скользящую среднюю величину, и сигнал продажи, когда пересекается ниже, образуя типичный режим работы с пересечением скользящей средней величины.
Стратегия в основном генерирует торговые сигналы через суждения о перекуплении и перепродаже индикатора RSI. RSI означает индекс относительной силы, его формула: RSI = 100 - (100 / (1 + RS)), где RS - это соотношение среднего закрытия прибыли к среднему закрытию убытков за период.
Стратегия устанавливает высокий параметр sobrecompra и низкий параметр sobreventa. Когда RSI выше, чем sobrecompra, он считается перекупленным. Когда RSI ниже, чем sobreventa, он считается перепроданным. По умолчанию значения sobrecompra и sobreventa в стратегии составляют 70 и 30 соответственно.
Для генерации сигналов покупки и продажи стратегия использует скользящую среднюю линию индикатора RSI для фильтрации. Когда RSI пересекает свою скользящую среднюю линию, генерируется сигнал покупки Es_compra. Когда RSI пересекает ниже своей скользящей средней линии, генерируется сигнал продажи Es_venta. Параметр скользящей средней periodos_media по умолчанию составляет 14 периодов.
После генерации сигналов покупки и продажи стратегия открывает позиции для длинной или короткой торговли. Кроме того, стратегия также устанавливает стоп-лосс и прибыль в процентах, чтобы предотвратить чрезмерные потери и блокировать прибыль.
Используйте индикатор RSI, чтобы оценить условия перекупки и перепродажи, избегая погони за максимумами и продажей минимумов.
Для фильтрации применяется скользящая средняя показателя RSI, чтобы избежать ложных сигналов.
Комбинировать многоциклические настройки индикатора RSI для получения более стабильных торговых сигналов.
Установите механизмы остановки потерь и получения прибыли для эффективного контроля рисков.
Логика стратегии проста и ясна, легко понять и изменить.
Настраиваемые параметры, адаптируемые к различным продуктам и циклам.
Индикатор RSI имеет эффект отставания, может пропустить лучшее время для переворота цен.
Движущаяся средняя приводит к задержке торгового сигнала, не способного вовремя зафиксировать изменение тренда.
Фиксированные параметры перекупленности и перепродажи недостаточно гибкие и требуют корректировки для различных циклов и продуктов.
Неправильные настройки стоп-лосса и прибыли могут привести к потерям или упущенной прибыли.
Долгие и короткие позиции составляют только один лот, не способный полностью использовать средства для торговли спредом.
Комбинировать другие индикаторы, такие как MACD, KD для оценки торговых сигналов.
Применение адаптивной скользящей средней для отслеживания тенденций.
Установите динамические параметры перекупленности и перепроданности, скорректируйте на основе волатильности рынка.
Оптимизируйте алгоритмы стоп-лосса и прибыли, такие как стоп-лосс.
Добавить механизм управления позициями, динамически корректировать позиции на основе размера капитала.
Добавьте фильтрацию трендов, чтобы избежать частой торговли на рынках с диапазоном.
Бактэст для оптимизации параметров и выбора оптимальной комбинации параметров.
Эта стратегия основана на принципах перекупленности и перепроданности индикатора RSI, использует скользящую среднюю для фильтрации для генерации торговых сигналов, реализуя типичную перекрестную торговлю. Стратегия имеет четкую логическую структуру и параметровые настройки, адаптируемые к различным продуктам и циклам посредством настройки параметров, что делает ее надежной и эффективной перекрестной торговой стратегией. Но также существуют ограничения в таких инструментах, как RSI и скользящая средняя, требующие дальнейшей оптимизации, чтобы сделать параметры стратегии более адаптивными, эффективными для фильтрации, а также снизить риск и увеличить прибыль в максимальной степени.
/*backtest start: 2023-09-01 00:00:00 end: 2023-09-30 23:59:59 period: 3m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © samuelkanneman //@version=4 strategy("RSI KANNEMAN") //////Entrada/////// i_startTime = input(title="Start Date Filter", defval=timestamp("01 Nov 2020 13:30 +0000"), type=input.time, tooltip="Date & time to begin trading from") i_endTime = input(title="End Date Filter", defval=timestamp("1 Nov 2022 19:30 +0000"), type=input.time, tooltip="Date & time to stop trading") sobrecompra= input(70, title="Sobre Compra", type=input.integer ,minval=50, maxval=100 ) sobreventa= input(30, title="Sobre Venta", type=input.integer ,minval=0, maxval=50 ) l1=hline(sobrecompra) l2=hline(sobreventa, color=color.purple) periodos= input(14, title="Periodos", type=input.integer ,minval=1, maxval=50 ) periodos_media= input(14, title="Logintud media movil", type=input.integer ,minval=1, maxval=200 ) var SL =0.0 var TP=0.0 StopLoss = input(2.0, title="SL %", step=0.2) TakeProfit = input(5.0, title="TP %", step=0.2) //////Proceso/////// mi_rsi=rsi(close,periodos) mm_rsi=sma(mi_rsi,periodos_media) Es_compra= crossover(mm_rsi,sobreventa) Es_venta= crossunder(mm_rsi,sobrecompra) comprado= strategy.position_size > 0 vendido = strategy.position_size < 0 //time to test dateFilter = true //timePeriod = time >= timestamp(syminfo.timezone, 2020, 11, 1, 0, 0) // long if (not comprado and Es_compra and dateFilter ) // realizar long cantidad = strategy.equity/hlc3 strategy.entry ("compra", strategy.long , cantidad) SL := close*(1-(StopLoss/100)) TP := close*(1+(TakeProfit/100)) if close >= TP strategy.close ("compra" , comment="Salto TP") if (comprado and Es_venta ) strategy.close ("compra" , comment="Sobre Venta") if close <= SL strategy.close ("compra" , comment="Salto SL") // short if (not vendido and Es_venta and dateFilter ) // realizar short cantidad = strategy.equity/hlc3 strategy.entry ("venta", strategy.short , cantidad) SL := close*(1+(StopLoss/100)) TP := close*(1-(TakeProfit/100)) if close <= TP strategy.close ("venta" , comment="Salto TP") if (vendido and Es_compra ) strategy.close ("venta" , comment="Sobre Compra") if close >= SL strategy.close ("venta" , comment="Salto SL") ///////Salida////// fill(l1,l2) plot(mi_rsi) plot(mm_rsi, color=color.yellow) bgcolor(Es_compra ? color.blue : na , transp=0) bgcolor(Es_venta ? color.red : na , transp=0) // 1d 70 22 5 4 3 15 6 meses //1h 70 20 6 4 5 7 1 mese //15m 70 20 5 4 4 7 1 semana