Estrategia de reversión a la media de Karobein basada en la tendencia


Fecha de creación: 2023-11-03 16:56:13 Última modificación: 2023-11-03 16:56:13
Copiar: 1 Número de Visitas: 752
1
Seguir
1617
Seguidores

Estrategia de reversión a la media de Karobein basada en la tendencia

Descripción general

La estrategia se basa en el indicador de retorno de la media de Karobein y el movimiento de los precios. Utiliza el indicador auxiliar de movimiento de los precios para juzgar la tendencia y se combina con el indicador de retorno de la media de Karobein para una entrada concreta. La estrategia se aplica a operaciones de líneas medianas y largas.

Principio de estrategia

La estrategia primero obtiene un indicador de movimiento de precios calculando la tasa de cambio en los precios de diferentes períodos. Cuando el indicador de movimiento de precios atraviesa la línea de descenso dinámico, produce una señal de cabeza vacía y cuando atraviesa la línea de descenso dinámica, produce una señal de cabeza vacía.

El indicador de retroceso promedio de Karobein se calcula basándose en la naturaleza de la retroceso de la línea media del precio, que refleja la aceleración y el camino de la fluctuación del precio. El indicador tiene una característica de onda positiva inherente que ayuda a determinar la dirección y el punto de tiempo del movimiento del precio.

Cuando el indicador de la dinámica de precios emite una señal, se produce una señal de entrada si el indicador de la regresión del promedio de Karobein está en la zona de la dirección correspondiente.

Ventajas estratégicas

  1. El análisis de la estrategia tiene en cuenta el movimiento de los precios y la regresión de la media, con una mayor capacidad de discernimiento de tendencias.

  2. El Karobein Mean Return Indicator permite determinar con precisión el punto de cambio de precio del bit, lo que mejora la precisión de la hora de entrada.

  3. Se puede ajustar el ciclo de tenencia de control libre a través de parámetros para diferentes períodos de tiempo.

  4. Puede ajustar los parámetros de depreciación dinámica en tiempo real para adaptarse a los cambios en el mercado.

Riesgo estratégico

  1. La estrategia es una estrategia de seguimiento de tendencias que puede ser engañosa en una tendencia de oscilación.

  2. El Karobein tiene un cierto grado de retraso en la regresión a la media y puede haber perdido el punto de inflexión de los precios.

  3. Se debe prestar atención a la configuración de los parámetros del ciclo de tenencia de posiciones, ya que el tiempo de tenencia de posiciones demasiado largo puede causar una expansión de las pérdidas.

  4. Se debe ajustar adecuadamente el parámetro de desvalorización dinámica, no se debe establecer demasiado grande, de lo contrario se perderá el tiempo de entrada en el campo.

Resolvemos el riesgo:

  1. Los indicadores de tendencia pueden predecir la llegada de una conmoción y detener la pérdida de posición en el momento oportuno.

  2. Seleccione un indicador de regresión del promedio de Karobein de un período adecuado y no se atrase demasiado.

  3. Prueba diferentes parámetros de tiempo de tenencia y selecciona el tiempo de tenencia adecuado para ti.

  4. Ajuste el rango de los valores de los umbrales dinámicos, que no debe ser demasiado amplio para evitar la pérdida de puntos de entrada.

Dirección de optimización de la estrategia

  1. Se pueden probar diferentes ciclos de cálculo de la dinámica de precios y parámetros de optimización.

  2. Se puede agregar un indicador de volatilidad para determinar la llegada de una sacudida y se puede configurar un stop loss.

  3. Se pueden optimizar los parámetros del indicador de regresión de la media de Karobein para que sea más sensible.

  4. Se pueden agregar condiciones de filtrado adicionales, como indicadores de volumen de transacciones, para mejorar la calidad de la señal.

  5. Los parámetros de optimización dinámica de los algoritmos de aprendizaje automático.

Resumir

Esta estrategia tiene en cuenta los factores de la dinámica de los precios y los factores de la regresión de la media, tiene una mayor capacidad para juzgar tendencias y generar señales. Puede ajustarse a sí mismo a través de parámetros para adaptarse a diferentes entornos de mercado.

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

//@version=4
// author: capissimo
strategy("Normalized Vector Strategy, ver.3 (sc)", precision=2, overlay=false)
// This is a scaled Normalized Vector Strategy with a Karobein Oscillator
// original: Drkhodakarami (https://www.tradingview.com/script/Fxv2xFWe-Normalized-Vector-Strategy-By-Drkhodakarami-Opensource/)

// Repainting: in general there two types of repainting:
// * when the last candle is constantly being redrawn
// * when the indicator draws a different configuration after it has been deactivated/reactivated, i.e. refreshed

// The former is a natural behaviour, which presents a constant source of frustration, 
// when a signal directly depends on the current market situation and can be overcome 
// with various indirect techniques like divergence.

// The latter suggests a flaw in the indicator design.
// Unfortunately, the Normalized Vector Strategy is repainting in the latter sense, although being
// really promising. Would be nice if our community suggests a solution to this problem ))

// This strat consistently performs with high accuracy, showing up to 96% scores
// Here are some of the best parameters:
// TF     Lookback   Performance (ca.)
// 1m     13         92%
// 3m     34         92%
// 5m     85         92%
// 15m    210        90%
// 30m    360        89%
// 1H     1440,720   94%, 87%

// The Karobein Oscillator has an intrinsic sinusoidal behaviour that helps in determining direction and timing.
// It does not repaint.
// original: alexgrover (https://www.tradingview.com/script/JiNi0f62-Karobein-Oscillator/)

scaleMinimax(X, p, min, max) => 
    hi = highest(X, p), lo = lowest(X, p)
    (max - min) * (X - lo)/(hi - lo) + min

price    = input(close,  "Price Data")
tf       = input(34,     "Timeframe", minval=1, maxval=1440)
thresh   = input(14.,    "Threshold", minval=.1, step=.1) 
div      = input(1000000,"Divisor", options=[1,10,100,1000,10000,100000,1000000,10000000,100000000])
showVol  = input(false,  "Volume")
useold   = input(true,   "Use Old System")

lime  = color.new(color.lime, 10), fuchsia = color.new(color.fuchsia, 10), 
black = color.new(color.black, 100), gray = color.new(color.gray, 50)

vol  = useold ? security(syminfo.tickerid, tostring(tf), volume, barmerge.gaps_off, barmerge.lookahead_on) 
              : security(syminfo.tickerid, tostring(tf), volume)
obv  = cum(change(price) > 0 ? vol : change(price) < 0 ? -vol : 0*vol)
prix = showVol ? obv : price
    
getdiff(prc, tf) =>
    prev  = useold ? security(syminfo.tickerid, tostring(tf), prc[1], barmerge.gaps_off, barmerge.lookahead_on) :
                     security(syminfo.tickerid, tostring(tf), prc[1])
    curr  = useold ? security(syminfo.tickerid, tostring(tf), prc, barmerge.gaps_off, barmerge.lookahead_on) : 
                     security(syminfo.tickerid, tostring(tf), prc)
    (curr/prev) - 1
    
p  = getdiff(prix, tf)
up = thresh/div, dn = -thresh/div
longCondition  = crossover(p, up)
shortCondition = crossunder(p, dn)

bg = longCondition ? lime : shortCondition ? fuchsia : black
cl = p > up ? color.green : p < dn ? color.red : color.silver

bgcolor(bg, editable=false)
plot(scaleMinimax(up, 2500, -1, 1), color=lime, editable=false, transp=0)
hline(0, linestyle=hline.style_dotted, title="base line", color=gray, editable=false)
plot(scaleMinimax(dn, 2500, -1, 1), color=fuchsia, editable=false, transp=0)
plot(scaleMinimax(p, 2500, -1, 1), color=cl, style=plot.style_histogram, transp=70, editable=false)
plot(scaleMinimax(p, 2500, -1, 1), color=cl, style=plot.style_linebr, title="prediction", transp=0, editable=false)

strategy.entry("L", true, 1, when=longCondition)
strategy.entry("S", false, 1, when=shortCondition)

alertcondition(longCondition, title='Long', message='Long Signal!')
alertcondition(shortCondition, title='Short', message='Short Signal!')

//*** Karobein Oscillator
per  = input(8, "Karobein Osc Lookback")

prix2  = ema(price, per)
a = ema(prix2 < prix2[1] ? prix2/prix2[1] : 0, per)
b = ema(prix2 > prix2[1] ? prix2/prix2[1] : 0, per)
c = (prix2/prix2[1])/(prix2/prix2[1] + b)
d = 2*((prix2/prix2[1])/(prix2/prix2[1] + c*a)) - 1

plot(scaleMinimax(d, 2500, -1, 1), color=color.orange, transp=0)