La estrategia de cruce de media móvil es una estrategia comercial cuantitativa muy común. Utiliza la cruz de oro y la cruz de muerte de las medias móviles para determinar tendencias y ganancias. Cuando el promedio móvil a corto plazo cruza por encima del promedio móvil a largo plazo, indica una tendencia alcista y se puede tomar una posición larga. Cuando el promedio móvil a corto plazo cruza por debajo del promedio móvil a largo plazo, indica una tendencia bajista y se puede tomar una posición corta.
Esta estrategia se basa en la cruz de oro y la cruz de muerte de las medias móviles para determinar los puntos de entrada y salida.upOrDown
ylongOrShort
para determinar el largo o el corto;percentInput
fijar el porcentaje umbral de variación de precios;closePositionDays
establecer el número de días para mantener la posición.
La lógica básica es: calcular el aumento/disminución de hoy en relación con ayer. Si alcanza el porcentaje de umbral de entrada, se activa una señal de negociación. Si es una señal larga, cuando el precio de hoy aumenta más que el umbral en relación con ayer, vaya largo. Si es una señal corta, cuando el precio de hoy disminuye más que el umbral en relación con ayer, vaya corto.
Después de ir largo / corto, el día de entrada y los próximos 4 días se marcarán con colores en el gráfico.
Gestión de riesgos:
La estrategia de cruce de promedios móviles es una estrategia de negociación cuantitativa muy simple y práctica. Al juzgar la relación entre las tendencias a corto y largo plazo, se beneficia de la naturaleza de tendencia de los precios de los activos. Esta estrategia es fácil de implementar con una lógica clara, y forma la base de muchas estrategias de negociación cuantitativas. Podemos obtener un mejor rendimiento a través de ajustes y optimizaciones de parámetros. Pero también necesitamos gestionar los riesgos y evitar el uso indebido.
/*backtest start: 2023-01-01 00:00:00 end: 2023-10-11 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 // Created by Leon Ross strategy(title = "DaysAfterCertainPercentChangev1", shorttitle = "DACPCv1", overlay = true, pyramiding = 0, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, calc_on_every_tick=true, initial_capital=100000) //Inputs longOrShort = input(title="Long=Checked Short=Unchecked", type=bool, defval=true) //long=true, down=false upOrDown = input(title="Direction of Today vs. Previous day: Up=Checked Down=Unchecked", type=bool, defval=true) //up=true, down=false: this is the direction of days vs previous day percentInput = input(title="Percent", type=float, defval=4.5) closePositionDays = input(title="How Many Days to Close Position", defval=4) //Conditions //percentUpValue = (close / close[1]) - 1 //percentUp = percentUpValue >= (percentInput/100.0) //upConditions = percentUp //percentDownValue = 1- (close / close[1]) //percentDown = percentDownValue >= (percentInput/100.0) //downConditions = percentDown upValue = (close / close[1]) - 1 downValue = 1 - (close / close[1]) allConditions = if(upOrDown) upValue >= (percentInput/100.0) else downValue >= (percentInput/100.0) //Plots bgcolor(allConditions ? (upOrDown ? green : red) : na, transp=70) bgcolor(allConditions ? silver : na, transp=70, offset=1) bgcolor(allConditions ? silver : na, transp=70, offset=2) bgcolor(allConditions ? silver : na, transp=70, offset=3) bgcolor(allConditions ? silver : na, transp=70, offset=4) //bgcolor(downConditions == 1 ? red : na, transp=70) //bgcolor(downConditions == 1 ? silver : na, transp=70, offset=1) //bgcolor(downConditions == 1 ? silver : na, transp=70, offset=2) //bgcolor(downConditions == 1 ? silver : na, transp=70, offset=3) //bgcolor(downConditions == 1 ? silver : na, transp=70, offset=4) //Entires if(longOrShort) strategy.entry(id = "Long", long = true, when = allConditions) else strategy.entry(id = "Short", long = false, when = allConditions) //Exits if (barssince(allConditions) == closePositionDays) if(longOrShort) strategy.close("Long") else strategy.close("Short")