Стратегия HistoAlert с двойной реверсией RSI

Автор:Чао Чжан, Дата: 2024-01-04 17:17:24
Тэги:

img

Обзор

Стратегия двойного реверсии RSI HistoAlert генерирует более точные торговые сигналы путем объединения стратегии 123 Reversion и стратегии RSI HistoAlert. Стратегия 123 Reversion оценивает точки переворота цены, а стратегия RSI HistoAlert оценивает точки перекупа и перепродажи. Интегрированные сигналы обеих стратегий могут производить более надежные торговые сигналы.

Логика стратегии

123 Стратегия реверсии

Стратегия 123 Reversion основана на гипотезе, что: сигналы об изменениях цены часто появляются за 2 дня до фактического изменения цены.

Специфическими правилами являются:

  • Сигнал покупки: Предыдущее закрытие < 2 дня назад закрытие И текущее закрытие > Предыдущее закрытие И 9-дневная медленная K-линия ниже 50
  • Сигнал продажи: Предыдущее закрытие > 2 дня назад закрытие И текущее закрытие < Предыдущее закрытие И 9-дневная быстрая линия K выше 50

Он использует ценовое соотношение за 2 дня до переворота для оценки потенциальных точек переворота.

Стратегия HistoAlert по РСИ

Стратегия RSI HistoAlert изменяет индикатор RSI:

  • Склейка значений RSI до -100 до 100
  • Создание торговых сигналов, когда RSI превышает заданные линии предупреждения о покупке/продаже

Он использует абсолютное значение RSI для обозначения состояния перекупленности/перепроданности и запускает сигналы.

Преимущества

Эта стратегия объединяет две разные стратегии, чтобы дополнить сильные стороны и генерировать более надежные сигналы:

  1. 123 Стратегия реверсии хорошо улавливает точки переворота цены. Стратегия RSI HistoAlert хорошо улавливает точки перекупа/перепродажи. Комбинация приводит к более всеобъемлющим оценкам шансов торговли.
  2. Эти две стратегии используют разные показатели ввода, что снижает вероятность ложных сигналов и повышает надежность.
  3. Обе стратегии имеют пространство для оптимизации.

Риски

Основными рисками являются:

  1. Перевертывание цен не гарантировано. Цены могут продолжать тенденцию даже при соблюдении правил сигналов 123 Reversion.
  2. Индикатор RSI может иметь высокий уровень ложных сигналов. Превышение линии тревоги не всегда действительно представляет собой состояние перекупленности / перепроданности.
  3. Обе стратегии могут одновременно давать неправильные сигналы, что удваивает риск неправильного направления.

Решения:

  1. Минимальная настройка 123 Параметры обратного движения, чтобы гарантировать сигналы только в точках обратного движения с высокой вероятностью.
  2. Настройка позиции линии оповещения RSI HistoAlert для снижения частоты ложных сигналов.
  3. Добавьте другие подтверждения показателей, чтобы избежать чрезмерного риска неправильного направления.

Руководство по оптимизации

Стратегия может быть оптимизирована в следующих аспектах:

  1. Испытайте различные комбинации параметров обеих стратегий, чтобы найти оптимальные значения.
  2. Введите больше факторов, таких как MA, индикаторы волатильности для многофакторной проверки, чтобы отфильтровать больше ложных сигналов.
  3. Проверьте различные схемы периода хранения. В текущей стратегии используется импульсное удержание.
  4. Отдельные параметры для долгосрочных и краткосрочных.

Заключение

Стратегия HistoAlert с двойным отклонением RSI сочетает в себе стратегии перемены цены и стратегию суждения о перекупе / перепродаже для более надежных торговых сигналов по сравнению с использованием одной стратегии. У нее меньшая вероятность ложного сигнала и более всеобъемлющее суждение.


/*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"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 28/06/2021
// This is combo strategies for get a cumulative signal. 
//
// First strategy
// This System was created from the Book "How I Tripled My Money In The 
// Futures Market" by Ulf Jensen, Page 183. This is reverse type of strategies.
// The strategy buys at market, if close price is higher than the previous close 
// during 2 days and the meaning of 9-days Stochastic Slow Oscillator is lower than 50. 
// The strategy sells at market, if close price is lower than the previous close price 
// during 2 days and the meaning of 9-days Stochastic Fast Oscillator is higher than 50.
//
// Second strategy
// This simple indicator modified RSI
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
Reversal123(Length, KSmoothing, DLength, Level) =>
    vFast = sma(stoch(close, high, low, Length), KSmoothing) 
    vSlow = sma(vFast, DLength)
    pos = 0.0
    pos := iff(close[2] < close[1] and close > close[1] and vFast < vSlow and vFast > Level, 1,
	         iff(close[2] > close[1] and close < close[1] and vFast > vSlow and vFast < Level, -1, nz(pos[1], 0))) 
	pos


RSI_Hist(RSIPeriod,BuyAlertLevel,SellAlertLevel,RSIHistoModify) =>
    pos = 0.0
    xPrice = close
    RSIMain = (rsi(xPrice, RSIPeriod) - 50) * RSIHistoModify
    pos:= iff(RSIMain > BuyAlertLevel, 1,
    	     iff(RSIMain < SellAlertLevel, -1, nz(pos[1], 0)))
    pos

strategy(title="Combo Backtest 123 Reversal & RSI HistoAlert", shorttitle="Combo", overlay = true)
line1 = input(true, "---- 123 Reversal ----")
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
line2 = input(true, "---- RSI HistoAlert ----")
RSIPeriod = input(13, minval=1)
BuyAlertLevel = input(-10)
SellAlertLevel = input(10)
RSIHistoModify = input(1.5)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posRSI_Hist = RSI_Hist(RSIPeriod,BuyAlertLevel,SellAlertLevel,RSIHistoModify)
pos = iff(posReversal123 == 1 and posRSI_Hist == 1 , 1,
	   iff(posReversal123 == -1 and posRSI_Hist == -1, -1, 0)) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1 , 1, pos))	   
if (possig == 1 ) 
    strategy.entry("Long", strategy.long)
if (possig == -1 )
    strategy.entry("Short", strategy.short)	 
if (possig == 0) 
    strategy.close_all()
barcolor(possig == -1 ? #b50404: possig == 1 ? #079605 : #0536b3 )

Больше