Estrategia de trading de cruces dorados


Fecha de creación: 2023-11-23 14:07:11 Última modificación: 2023-11-23 14:07:11
Copiar: 0 Número de Visitas: 611
1
Seguir
1617
Seguidores

Estrategia de trading de cruces dorados

Descripción general

La estrategia de negociación de cruce de oro es una estrategia de seguimiento de tendencias de línea media y larga. Identifica la dirección de la tendencia del precio de las acciones mediante el cálculo de los indicadores SR y los indicadores de señales SR, y en combinación con una red neuronal, traza un canal de tendencia para realizar operaciones de seguimiento de tendencias. Genera una señal de compra cuando el indicador SR pasa por encima de la señal SR; genera una señal de venta cuando el indicador SR pasa por debajo de la señal SR.

Principio de estrategia

El indicador central de la estrategia es el indicador SR y el indicador de la señal SR. El indicador SR es una síntesis secundaria de la media WMA con un parámetro de 8 períodos y la media SMA. El indicador de la señal SR es un indicador SR calculado con un parámetro de 20 períodos.

La estrategia utiliza un algoritmo de red neuronal para trazar automáticamente los límites superiores e inferiores de los precios de las acciones, formando un canal de adaptación. El límite superior es una entrada con el máximo histórico del indicador SR, el límite inferior es una entrada con el mínimo histórico, y luego se calcula la curva de regresión como el límite inferior superior del canal, respectivamente. La curva del canal es más suave después de pasar por una onda de retroceso lineal de adaptación.

Cuando se pasa la señal de SR en el indicador SR, se genera una señal de compra; cuando se pasa la señal de SR debajo del indicador SR, se genera una señal de venta. Después de emitir la señal de más o menos, la relación entre el precio de la acción y el límite superior o inferior del canal determina la posición de parada de pérdida.

Análisis de las ventajas

  • El uso de tecnología de síntesis bidireccional para eliminar el impacto de las fluctuaciones de precios y determinar con precisión la dirección de la tendencia.
  • La adaptación de los algoritmos de acceso para optimizar el tiempo de entrada y salida para evitar falsos avances;
  • La curva de la vía utiliza la técnica de filtración de regresión lineal adaptativa para evitar que la curva se vea afectada por los valores extremos.
  • La posición de la parada de pérdidas cambia con la dinámica del canal y sigue automáticamente la tendencia de ganancias.

Análisis de riesgos

La estrategia está basada en el seguimiento de tendencias, con los siguientes riesgos principales:

  • La mayoría de las señales falsas y las operaciones ineficaces se producen en la tendencia de temblores.
  • Los incidentes provocaron grandes pérdidas al romper el límite inferior de la vía hacia abajo.
  • La configuración incorrecta de los parámetros puede causar que la política falle.

Para controlar el riesgo, se recomienda combinar otras estrategias y evitar operaciones de una sola estrategia; al mismo tiempo, optimizar la configuración de los parámetros para adaptarse a diferentes entornos de mercado.

Dirección de optimización

La estrategia puede ser optimizada en los siguientes aspectos:

  1. Optimizar los parámetros de los indicadores de SR y de los indicadores de la señal para mejorar la estabilidad de la señal cruzada;

  2. Optimizar el ciclo de longitud de los canales de adaptación y suavizar la curva de los canales;

  3. Añadir otros indicadores de filtración para evitar errores, como indicadores de potencia, índices de fluctuación, etc.

  4. Optimización en tiempo real de la curva del canal combinada con algoritmos de aprendizaje profundo para mejorar la adaptabilidad.

Resumir

La estrategia de comercio cruzado de oro es una estrategia cuantitativa que sigue de manera efectiva las tendencias de la línea media larga. Tiene una alta probabilidad de determinar correctamente la dirección de la tendencia y un riesgo de operación bajo. Con un gran espacio para optimizar los modelos algorítmicos, la estrategia tiene la posibilidad de convertirse en una herramienta poderosa para seguir los cambios en la tendencia de las acciones.

Código Fuente de la Estrategia
/*backtest
start: 2023-11-15 00:00:00
end: 2023-11-22 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
//
// ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ //

strategy(title = " Strategy PyramiCover",
         shorttitle = "S-PC",
         overlay = true,
         precision = 8,
         calc_on_order_fills = true,
         calc_on_every_tick = true,
         backtest_fill_limits_assumption = 0,
         default_qty_type = strategy.fixed,
         default_qty_value = 2,
         initial_capital = 10000,
         pyramiding=50,
         currency = currency.USD,
         linktoseries = true)

//
// ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ //

backTestSectionFrom = input(title = "═══════════════ From ═══════════════", defval = true, type = input.bool)

FromMonth         = input(defval = 1, title = "Month", minval = 1)
FromDay           = input(defval = 1, title = "Day", minval = 1)
FromYear          = input(defval = 2014, title = "Year", minval = 2014)

backTestSectionTo = input(title = "════════════════ To ════════════════", defval = true, type = input.bool)
ToMonth           = input(defval = 31, title = "Month", minval = 1)
ToDay             = input(defval = 12, title = "Day", minval = 1)
ToYear            = input(defval = 9999, title = "Year", minval = 2014)

backTestPeriod() => (time > timestamp(FromYear, FromMonth, FromDay, 00, 00)) and (time < timestamp(ToYear, ToMonth, ToDay, 23, 59))

//
// ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ //

per = input(14,title="🔹 Length")
//
up = 0.0
nup= 0.0
lowl = 0.0
nin = 0.0
//
srl=wma(close,8)
srr = sma(close,8)
sr = 2*srl - srr
//
srsl=wma(close,20)
srsr= sma(close,20)
srsignal = 2*srsl - srsr
//
if sr>srsignal
    up := highest(sr,round(150))
    nup :=highest(srsignal,round(20))
else
    up := highest(srsignal,round(150))
    nup := highest(sr,round(20))
//
if sr<srsignal
    lowl := lowest(sr,round(150))
    nin := lowest(srsignal,round(20))
else
    lowl := lowest(sr,round(150))
    nin := lowest(srsignal,round(20))
//reg alexgrover
f_reg(src,length)=>
    x = bar_index
    y = src
    x_ = sma(x, length)
    y_ = sma(y, length)
    mx = stdev(x, length)
    my = stdev(y, length)
    c = correlation(x, y, length)
    slope = c * (my / mx)
    inter = y_ - slope * x_
    reg = x * slope + inter
    reg
//
up_=f_reg(up,per)
lowl_=f_reg(lowl,per)
nup_=f_reg(nup,per)
nin_=f_reg(nin,per)
//
plot(sr, title='SR', color=color.green, linewidth=2, style=plot.style_line,transp=0)
plot(srsignal, title='SR-Signal', color=color.red, linewidth=2, style=plot.style_line,transp=0)
plot(up_, title='Upper limit', color=color.blue, linewidth=3, style=plot.style_line,transp=0)
plot(lowl_, title='Lower limit', color=color.blue, linewidth=3, style=plot.style_line,transp=0)
a=plot(nup_, title='Neuronal Upper', color=color.gray, linewidth=1, style=plot.style_line,transp=0)
b=plot(nin_, title='Neuronal Lower', color=color.gray, linewidth=1, style=plot.style_line,transp=0)
fill(a, b, color=color.gray)
plotshape(crossunder(sr,nup_)? sr+atr(20):na, title="Sell", text="🐻", location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.red, textcolor=color.black,transp=0)
plotshape(crossover(sr,nin_)? sr-atr(20):na, title="Buy", text="🐂", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.green, textcolor=color.black,transp=0)

//
// ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ //

if backTestPeriod()

    strategy.entry("Buy", true, 1, when = crossover(sr,nin_)) 
    strategy.entry("Short", false, 1, when = crossunder(sr,nup_))