Estrategia de trading con media móvil multinivel


Fecha de creación: 2023-09-23 15:55:20 Última modificación: 2023-09-23 15:55:20
Copiar: 0 Número de Visitas: 686
1
Seguir
1617
Seguidores

Descripción general

La estrategia de comercio de la línea media móvil de varios niveles, mediante la configuración de la línea media móvil de varios parámetros diferentes, para lograr la entrada de varios niveles y la parada de pérdidas. La estrategia primero calcula 3 líneas largas y 3 líneas cortas, hacer más cuando la línea larga está por debajo de la línea corta, y hacer vacío cuando la línea corta está por debajo de la línea larga. La estrategia puede configurar la longitud del ciclo de cálculo de la línea media móvil, el porcentaje de desviación, el rango de tiempo de negociación, etc.

Principio de estrategia

  1. La media móvil simple del ciclo len del precio de la fuente src en los parámetros de cálculo, como media de referencia.

  2. El número de líneas largas y cortas correspondientes según los parámetros long y short.

  3. Las líneas largas como longline1 se desvían en proporción a la línea media de referencia según los parámetros establecidos como longlevel1.

  4. En el tiempo de negociación, se puede determinar la relación entre el precio y la línea media para lograr una entrada de varios niveles.

  5. Se ejecuta un stop loss cuando el precio toca la media de referencia.

  6. La obligatoriedad de la liquidación en el momento de la finalización.

Análisis de las ventajas

La estrategia tiene las siguientes ventajas:

  1. La entrada es multi-nivel, con diferentes etapas para obtener tendencias y ganar dinero.

  2. Hay muchos parámetros que se pueden personalizar y adaptar a diferentes variedades y estilos de negociación.

  3. El sistema basado en la línea media es más fiable en el juicio de la brecha.

  4. Establezca un rango de tiempo de negociación para evitar períodos de gran impacto como la publicación de datos importantes.

  5. Hay un mecanismo de suspensión de pérdidas para controlar las pérdidas individuales.

Análisis de riesgos

La estrategia también tiene sus riesgos:

  1. El riesgo de una acumulación múltiple de activos es mayor y requiere un apoyo financiero adecuado.

  2. La configuración incorrecta de los parámetros puede causar operaciones de línea demasiado corta, los parámetros deben configurarse adecuadamente.

  3. El tiempo de salida fijo puede perderse en la última etapa de la tendencia de ganancias. Se puede configurar el seguimiento de las paradas para optimizar.

  4. No se tiene en cuenta el disco nocturno y el mantenimiento nocturno. Se puede agregar el control de los costos de mantenimiento.

  5. Sin tener en cuenta el control del número de posiciones, puede dar lugar a una posición unidireccional excesiva.

Dirección de optimización

La estrategia puede ser optimizada en los siguientes aspectos:

  1. Aumentar la pérdida móvil en lugar del tiempo de salida fijo.

  2. Tenga en cuenta la posibilidad de mantener una posición durante la noche, añadir las comisiones de mantenimiento y el control de puntos de deslizamiento.

  3. Unirse al seguimiento del stop loss para obtener ganancias de la fase final.

  4. Ajuste el número de manos individuales de acuerdo con la posición, y controle la posición unidireccional.

  5. Probar el efecto de diferentes parámetros en diferentes variedades y establecer mecanismos de optimización de parámetros.

  6. Optimización de los puntos de parada de prueba para reducir la pérdida innecesaria.

Resumir

La estrategia de la línea de paridad de movimiento de varios niveles de entrada de la línea de paridad, para lograr el seguimiento de la tendencia de ganar dinero. El tiempo de negociación y el punto de parada establecidos controlan mejor el riesgo. El efecto de la estrategia se puede mejorar aún más mediante el control de los costos de la posición, la optimización de los parámetros y la optimización de la parada.

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

//Noro
//2019

//@version=4
strategy(title = "Noro's ShiftMA-multi Strategy v1.1", shorttitle = "ShiftMA-multi", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 3)

//Settings
long = input(3, defval = 3, minval = 0, maxval = 3, title = "Lines for long")
short = input(3, defval = 3, minval = 0, maxval = 3, title = "Lines for short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot")
len = input(3, minval = 1, title = "MA Length")
src = input(ohlc4, title = "MA Source")
shortlevel3 = input(15.0, title = "Short line 3")
shortlevel2 = input(10.0, title = "Short line 2")
shortlevel1 = input(5.0, title = "Short line 1")
longlevel1 = input(-5.0, title = "Long line 1")
longlevel2 = input(-10.0, title = "Long line 2")
longlevel3 = input(-15.0, title = "Long line 3")
needoffset = input(true, title = "Offset")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//Variables
size = strategy.position_size
mult = 1 / syminfo.mintick

//MA
ma = sma(src, len)
longline1 = long >= 1 ? round(ma * ((100 + longlevel1) / 100) * mult) / mult : close
longline2 = long >= 2 ? round(ma * ((100 + longlevel2) / 100) * mult) / mult : close
longline3 = long >= 3 ? round(ma * ((100 + longlevel3) / 100) * mult) / mult : close
shortline1 = short >= 1 ? round(ma * ((100 + shortlevel1) / 100) * mult) / mult : close
shortline2 = short >= 2 ? round(ma * ((100 + shortlevel2) / 100) * mult) / mult : close
shortline3 = short >= 3 ? round(ma * ((100 + shortlevel3) / 100) * mult) / mult : close

//Lines
colorlong1 = long >= 1 ? color.lime : na
colorlong2 = long >= 2 ? color.lime : na
colorlong3 = long >= 3 ? color.lime : na
colorshort1 = short >= 1 ? color.red : na
colorshort2 = short >= 2 ? color.red : na
colorshort3 = short >= 3 ? color.red : na
offset = needoffset ? 1 : 0
plot(shortline3, offset = offset, color = colorshort1)
plot(shortline2, offset = offset, color = colorshort2)
plot(shortline1, offset = offset, color = colorshort3)
plot(ma, offset = offset, color = color.blue)
plot(longline1, offset = offset, color = colorlong1)
plot(longline2, offset = offset, color = colorlong2)
plot(longline3, offset = offset, color = colorlong3)

//Trading
lot = 0.0
lot := size == 0 ? strategy.equity / close * capital / 100 : lot[1]
lots = 0.0
needtime = time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)
if ma > 0
    lots := round(size / lot)
    strategy.entry("L1", strategy.long, lot, limit = longline1, when = (lots == 0 and long >= 1 and needtime))
    lots := round(size / lot)
    strategy.entry("L2", strategy.long, lot, limit = longline2, when = (lots <= 1 and long >= 2 and needtime))
    lots := round(size / lot)
    strategy.entry("L3", strategy.long, lot, limit = longline3, when = (lots <= 2 and long >= 3 and needtime))
    
    lots := round(size / lot)
    strategy.entry("S1", strategy.short, lot, limit = shortline1, when = (lots == 0 and short >= 1 and needtime))
    lots := round(size / lot)
    strategy.entry("S2", strategy.short, lot, limit = shortline2, when = (lots >= -1 and short >= 2 and needtime))
    lots := round(size / lot)
    strategy.entry("S3", strategy.short, lot, limit = shortline3, when = (lots >= -2 and short >= 3 and needtime))
if size > 0
    strategy.entry("TPL", strategy.short, 0, limit = ma)
if size < 0
    strategy.entry("TPS", strategy.long, 0, limit = ma)
if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()