Estrategia de reversión de mínimos en marcos temporales múltiples


Fecha de creación: 2023-10-18 12:27:29 Última modificación: 2023-10-18 12:27:29
Copiar: 0 Número de Visitas: 642
1
Seguir
1617
Seguidores

Estrategia de reversión de mínimos en marcos temporales múltiples

Descripción general

La estrategia utiliza una combinación de varios indicadores de la forma de la base para identificar el momento de una reversión drástica, y adopta una estrategia de seguimiento de tendencias para detener los daños, con el objetivo de obtener ganancias por encima de los daños.

El principio

La estrategia se basa principalmente en los siguientes indicadores para determinar la reversión del fondo:

  1. Noro’s BottomSensivity: determina si la línea K tiene una forma de fondo específica.

  2. Índice de voluntad de determinación (CVI): juzgar que la psicología holística se enfrenta a una transformación.

  3. Indicador final ((UCS): para determinar si el exceso de caída está fuera de la línea media.

  4. Indicador de rentabilidad (RSI): para determinar si hay sobreventa.

  5. Combinación de formas: incluye varias formas de base, como el pico, el pico, etc.

La estrategia utiliza una combinación de varios indicadores de la base y genera una señal de compra cuando se cumple con la cantidad de formas de la base establecida por los parámetros de la estrategia. Para filtrar las brechas falsas, la estrategia también incluye el criterio del indicador RSI, que solo activa la compra cuando se sobreventa.

El usuario puede configurar el uso y los parámetros de los diferentes indicadores de juicio básicos, lo que permite una gran flexibilidad. Al mismo tiempo, la estrategia incluye un filtro de línea media SMA para evitar hacer más por debajo de la tendencia.

Las ventajas

  • Utilizando varios indicadores para mejorar la certeza

  • Parámetros de indicadores personalizables para diferentes variedades

  • El SMA se filtra de forma uniforme y evita el tope.

  • Se puede configurar para que solo se acceda a la línea roja K, reduciendo el riesgo

  • Alarma de ventana de emergente y monitoreo en tiempo real

El riesgo

  • La combinación de varios indicadores podría haber perdido el fondo

  • La forma de la base no tiene por qué ser constante.

  • La necesidad de centrarse en si el volumen de transacciones apoyará la inversión

Dirección de optimización

  • Optimización de la configuración de los parámetros del indicador para adaptarse a las diferentes variedades

  • Aumentar la gestión de las posiciones y reducir los costos a través de la adquisición de las mismas

  • Aumentar las estrategias para detener pérdidas y seguir las tendencias para detener pérdidas

Resumir

La estrategia aprovecha el juicio de múltiples indicadores para mejorar la precisión de la identificación de la base, y el seguimiento de la tendencia para bloquear los ganancias y los pérdidas para controlar el riesgo de manera efectiva. Sin embargo, se debe prestar atención a si el volumen de transacciones puede apoyar la tendencia de reversión.

Código Fuente de la Estrategia
/*backtest
start: 2022-10-11 00:00:00
end: 2023-10-17 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// the original indicator is Noro's BottomSensivity v0.6
//@version=4
strategy("Noro's BottomSensivity v0.6 strategy + rsi + Alarm", shorttitle="Bottom 0.6 StRsiAlarm", overlay=true)

overSold = input(35)
overBought = input(70)
botsens = input(defval = 3, minval = 1, maxval = 4, title = "Bottom-Sensivity")
smalen = input(defval = 25, minval = 20, maxval = 200, title = "SMA Length")
bars = input(defval = 3, minval = 2, maxval = 4, title = "Bars of Locomotive")
useloc = input(true, title = "Use bottom-pattern Locomotive?")
usepin = input(true, title = "Use bottom-pattern Pin-bar?")
usecvi = input(true, title = "Use bottom-indicator CVI?")
useucs = input(true, title = "Use bottom-indicator UCS?")
usevix = input(true, title = "Use bottom-indicator WVF?")
usersi = input(true, title = "Use bottom-indicator RSI?")
usered = input(false, title = "Only red candles?")
usesma = input(true, title = "Use SMA Filter?")
showsma = input(false, title = "Show SMA Filter?")

//SMA Filter
sma = sma(close, smalen)
colsma = showsma == true ? red : na
plot(sma, color = colsma)

//VixFix method
//Start of ChrisMoody's code
pd = 22
bbl = 20
mult = 2
lb = 50
ph = .85
pl = 1.01
hp = false
sd = false
wvf = ((highest(close, pd)-low)/(highest(close, pd)))*100
sDev = mult * stdev(wvf, bbl)
midLine = sma(wvf, bbl)
lowerBand = midLine - sDev
upperBand = midLine + sDev
rangeHigh = (highest(wvf, lb)) * ph
rangeLow = (lowest(wvf, lb)) * pl
//End of ChrisMoody's code

//Locomotive mmethod
bar = close > open ? 1 : close < open ? -1 : 0
locob = bar == 1 and bar[1] == -1 and bar[2] == -1 and (bar[3] == -1 or bars < 3) and (bar[4] == -1 or bars < 4) ? 1 : 0

//PIN BAR
body = abs(close - open)
upshadow = open > close? (high - open) : (high - close)
downshadow = open > close ? (close - low) : (open - low)
pinbar = open[1] > close[1] ? (body[1] > body ? (downshadow > 0.5 * body ? (downshadow > 2 * upshadow ? 1 : 0 ) : 0 ) : 0 ) : 0

//CVI method
//Start of LazyBear's code
ValC=sma(hl2, 3)
bull=-.51
bear=.43
vol=sma(atr(3), 3)
cvi = (close-ValC) / (vol*sqrt(3))
cb= cvi <= bull ? green : cvi >=bear ? red : cvi > bull ? blue : cvi < bear ? blue : na
bull1 = cvi <= bull
bear1 = cvi >= bear
bull2 = bull1[1] and not bull1
bear2 = bear1[1] and not bear1
//End of LazyBear's code

//UCS method
//Start of UCS's code
ll = lowest(low, 5)
hh = highest(high, 5)
diff = hh - ll
rdiff = close - (hh+ll)/2
avgrel = ema(ema(rdiff,3),3)
avgdiff = ema(ema(diff,3),3)
mom = ((close - close[3])/close[3])*1000
SMI = avgdiff != 0 ? (avgrel/(avgdiff/2)*100) : 0
SMIsignal = ema(SMI,3)
ucslong = SMI < -35  and mom > 0 and mom[1] < 0 ? 1 : 0
//End of UCS's code

//RSI method
//Chris Moody's code
up = rma(max(change(close), 0), 2)
down = rma(-min(change(close), 0), 2)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
rsib = rsi < 10 ? 1 : 0
//Chris Moody's code

//sum
locobot = useloc == false ? 0 : locob
vixfixbot = usevix == false ? 0 : wvf >= upperBand or wvf >= rangeHigh ? 1 : 0
cvibot = usecvi == false ? 0 : bull2 == true ? 1 : 0
ucsbot = useucs == false ? 0 : ucslong == 1 ? 1 : 0
rsibot = usersi == false ? 0 : rsib
pinbot = usepin == false ? 0 : pinbar
score = vixfixbot + locobot + cvibot + ucsbot + rsibot + pinbot

//arrows
bottom = usered == false ? usesma == false ? score >= botsens ? 1 : 0 : high < sma and score >= botsens ? 1 : 0 : usesma == false ? score >= botsens and close < open ? 1 : 0 : high < sma and score >= botsens and close < open ? 1 : 0
plotarrow(bottom == 1 ? 1 : na, title="Buy arrow", colorup=lime, maxheight=60, minheight=50, transp=0)
data = bottom == 1
plotchar(data, char=" ", text="BUY!", location=location.belowbar, color=green, size=size.small)


//Market buy and exit
strategy.entry("BUY!", strategy.long, when =(bottom == 1) and(rsi(close,14)<overSold))
strategy.close("BUY!", when = (crossunder(rsi(close,14), overBought)))
alarm = bottom == 1 and(rsi(close,14)<overSold)
alertcondition(alarm == 1,title="BUY+RSI",message="BUY+RSI")