Esta estrategia es una estrategia de trading de tendencia basada en promedios móviles. Utiliza 3 promedios móviles con diferentes parámetros para generar señales de trading. Va largo cuando el precio cruza por encima del promedio móvil y va corto cuando el precio cruza por debajo.
La estrategia calcula la media móvil ma con longitud len utilizando la función sma. Luego calcula 3 líneas de media móvil adicionales longline1, longline2, longline3 que se desplazan en -4%, -5%, -6% respectivamente en función de ma.
Para la generación de señales largas, si la posición actual es plana, se hace largo con 1 lote cuando el precio cruza por encima de la línea larga1. Si ya es 1 lote largo, se agrega 1 lote más cuando el precio cruza por encima de la línea larga2. Si ya son 2 lotes largos, se agrega 1 lote más cuando el precio cruza por encima de la línea larga3. La posición larga máxima es de 3 lotes.
Para la generación de señal corta, si ya es larga, sale de todas las posiciones largas cuando el precio cruza por debajo de ma.
La entrada por etapas permite a la estrategia seguir la tendencia.
Soluciones de riesgos:
La estrategia se puede optimizar en los siguientes aspectos:
Añadir otros indicadores como el MACD para determinar la fuerza de la tendencia
Optimice los parámetros de la media móvil para encontrar la mejor combinación
Ajustar el tamaño y la proporción de los lotes de entrada por etapas para evitar perseguir precios altos
Añadir un mecanismo de stop loss en movimiento basado en ATR
Ajuste dinámico del tamaño de la posición en función de la volatilidad del mercado, reducción del tamaño cuando la volatilidad es alta
Parámetros de ensayo en diferentes productos para encontrar el símbolo óptimo
Desarrollar un módulo de salida para considerar obtener beneficios en ciertos patrones
En general, la estrategia opera en función de la dirección de la tendencia determinada por los promedios móviles y las ganancias de las tendencias a través de entradas escalonadas. Pero tiene algunos problemas rezagados y riesgos de perseguir precios altos. Podemos optimizarla agregando indicadores auxiliares, optimizando parámetros, ajustando el tamaño de la posición, agregando stop loss, etc., para adaptarse a diferentes condiciones de mercado y lograr ganancias constantes.
/*backtest start: 2022-10-02 00:00:00 end: 2023-10-08 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.0", shorttitle = "ShiftMA-multi", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 3) //Settings capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot") len = input(3, minval = 1, title = "MA Lenghs") src = input(ohlc4, title = "MA Source") longlevel1 = input(-4.0, title = "Long line 1") longlevel2 = input(-5.0, title = "Long line 2") longlevel3 = input(-6.0, title = "Long line 3") needoffset = input(true, title = "Offset") //Variables size = strategy.position_size mult = 1 / syminfo.mintick //MA ma = sma(src, len) longline1 = round(ma * ((100 + longlevel1) / 100) * mult) / mult longline2 = round(ma * ((100 + longlevel2) / 100) * mult) / mult longline3 = round(ma * ((100 + longlevel3) / 100) * mult) / mult //Lines offset = needoffset ? 1 : 0 plot(ma, color = color.blue) plot(longline1, offset = offset, color = color.lime) plot(longline2, offset = offset, color = color.lime) plot(longline3, offset = offset, color = color.lime) //Trading lot = 0.0 lot := size == 0 ? strategy.equity / close * capital / 100 : lot[1] lots = 0.0 if ma > 0 lots := round(size / lot) strategy.entry("L1", strategy.long, lot, limit = longline1, when = (lots == 0)) lots := round(size / lot) strategy.entry("L2", strategy.long, lot, limit = longline2, when = (lots <= 1)) lots := round(size / lot) strategy.entry("L3", strategy.long, lot, limit = longline3, when = (lots <= 2)) if size > 0 strategy.entry("TP", strategy.short, 0, limit = ma)