Estrategia comercial de optimización de cruce de medias móviles


Fecha de creación: 2023-12-19 13:37:33 Última modificación: 2023-12-19 13:37:33
Copiar: 0 Número de Visitas: 683
1
Seguir
1621
Seguidores

Estrategia comercial de optimización de cruce de medias móviles

Descripción general

La estrategia utiliza una estrategia de cruce de medias móviles que optimiza la estrategia de cruce de medias móviles convencionales, estableciendo un promedio móvil de tres períodos diferentes, construyendo una forma de horquilla con medias móviles de 9 períodos, 50 períodos y 100 períodos. En condiciones de tendencia ascendente, la mediana de la mediana de la mediana de la mediana de la mediana de la mediana de la mediana de la mediana de la mediana de la mediana de la mediana de la mediana de la mediana de la mediana de la mediana de la mediana de la mediana de la mediana de la mediana de la mediana de la mediana de la mediana de la mediana de la mediana de la mediana de la mediana de la mediana de la mediana de la mediana de la mediana de la mediana de la mediana de la mediana de la mediana de la mediana de la mediana de la mediana de la mediana de la mediana de la mediana de la mediana de la mediana de la mediana de la

Principio de estrategia

La estrategia utiliza tres promedios móviles de 9 períodos, 50 períodos y 100 períodos. Entre ellos, el promedio móvil de 9 períodos es el promedio a corto plazo, el promedio móvil de 50 períodos es el promedio a mediano plazo y el promedio móvil de 100 períodos es el promedio a largo plazo. La señal de negociación de la estrategia proviene de la cruz de la media a corto plazo y la media a mediano plazo. La lógica específica es que, en condiciones en las que la media a largo plazo está en una tendencia ascendente (la media a largo plazo está más alta que la media a mediano plazo), la media a corto plazo genera una señal de compra cuando atraviesa la línea media; y la media a corto plazo genera una señal de venta cuando atraviesa la línea media.

Análisis de las ventajas

En comparación con las estrategias convencionales de cruce de líneas de dos medias móviles, esta estrategia agrega condiciones para el juicio de tendencias a medio y largo plazo antes de generar una señal de negociación, lo que puede filtrar de manera efectiva parte de las señales no válidas. En caso de que la tendencia a largo plazo no sea clara, la estrategia no generará señales y se puede evitar que se ajuste. Además, esta estrategia es adecuada para capturar comportamientos tendenciales en el corto y medio plazo, lo que reduce la probabilidad de entrar en la arena.

Análisis de riesgos

La estrategia requiere ajustar la combinación de ciclos de la línea media al establecer los parámetros, y las diferentes combinaciones de ciclos afectan la eficacia de la estrategia. Si la configuración de los parámetros de ciclo es incorrecta, se corre el riesgo de generar demasiadas señales falsas. Además, el comerciante debe estar alerta al potencial riesgo sistémico y detener las pérdidas a tiempo para evitar el riesgo.

Dirección de optimización

Se puede considerar el establecimiento de condiciones de entrada más estrictas en combinación con otros indicadores para ayudar a determinar las tendencias del mercado, como MACD, BOLL, etc., o la construcción de medias móviles adaptativas en combinación con los indicadores de volatilidad, lo que permite que los parámetros se ajusten automáticamente según el entorno del mercado para optimizar aún más la estrategia.

Resumir

La estrategia se basa en el cruce de las medias móviles dobles convencionales, la adición de la media a largo plazo juicio y condiciones de filtro, puede filtrar eficazmente las señales falsas, adecuado para la captura de corto plazo de la tendencia de la marcha, es una estrategia de seguimiento de la tendencia simple y práctico. Pero los comerciantes todavía tienen que prestar atención a la optimización de los parámetros y el riesgo sistemático, la elaboración de la ciencia de la estrategia de gestión de fondos.

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

//@version=4
strategy("Golden Cross, SMA 100, Moving Average Strategy (by Coinrule)", shorttitle="Golden_Cross_Strat_MA100_optimized", overlay=true, initial_capital = 1000,process_orders_on_close=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100)

// Input
switch1=input(true, title="Enable Bar Color?")
switch2=input(false, title="Show Fast Moving Average")
switch3=input(true, title="Show Slow Moving Average")

//Calculate Moving Averages
movingaverage_fast = sma(close, input(9))
movingaverage_slow = sma(close, input(100))
movingaverage_normal= sma(close, input(50))

//Backtest dates
fromMonth = input(defval = 1,    title = "From Month",      type = input.integer, minval = 1, maxval = 12)
fromDay   = input(defval = 1,    title = "From Day",        type = input.integer, minval = 1, maxval = 31)
fromYear  = input(defval = 2020, title = "From Year",       type = input.integer, minval = 1970)
thruMonth = input(defval = 1,    title = "Thru Month",      type = input.integer, minval = 1, maxval = 12)
thruDay   = input(defval = 1,    title = "Thru Day",        type = input.integer, minval = 1, maxval = 31)
thruYear  = input(defval = 2112, title = "Thru Year",       type = input.integer, minval = 1970)
showDate  = input(defval = true, title = "Show Date Range", type = input.bool)

start     = timestamp(fromYear, fromMonth, fromDay, 00, 00)        // backtest start window
finish    = timestamp(thruYear, thruMonth, thruDay, 23, 59)        // backtest finish window
window()  => time >= start and time <= finish ? true : false       // create function "within window of time"


// Calculation
bullish_cross = crossover(movingaverage_fast, movingaverage_normal)
bearish_cross = crossunder(movingaverage_fast, movingaverage_normal)

//Entry and Exit
if bullish_cross and window() and movingaverage_slow > movingaverage_normal
    strategy.entry("long", strategy.long)

strategy.close("long", when = bearish_cross and window())

// Colors
bartrendcolor = close > movingaverage_fast and close > movingaverage_slow and change(movingaverage_slow) > 0 ? color.green : close < movingaverage_fast and close < movingaverage_slow and change(movingaverage_slow) < 0 ? color.red : color.blue
barcolor(switch1?bartrendcolor:na)

// Output
plot(movingaverage_fast, color=color.orange, linewidth=2)
plot(movingaverage_slow, color=color.purple, linewidth=3)
plot(movingaverage_normal, color=color.blue, linewidth=2)

bgcolor(color = showDate and window() ? color.gray : na, transp = 90)