Estrategia de negociación de inversión de media móvil doble

El autor:¿ Qué pasa?, Fecha: 2023-10-16 15:50:35
Las etiquetas:

img

Resumen general

La estrategia de inversión de promedio móvil dual genera señales de negociación mediante el cálculo de promedios móviles simples de dos períodos diferentes: corto plazo y largo plazo.

Estrategia lógica

Esta estrategia establece dos promedios móviles simples con diferentes períodos de duración a través de los parámetros de entrada, con el MA de corto período conocido como la línea rápida y el MA de largo período conocido como la línea lenta. La línea rápida reacciona más rápido a los cambios de precios y captura tendencias a corto plazo, mientras que la línea lenta reacciona más lentamente a los cambios de precios y filtra el ruido del mercado a corto plazo, capturando la tendencia principal. Cuando la línea rápida cruza por encima de la línea lenta, indica que la tendencia alcista se está fortaleciendo y se toma una posición larga. Cuando la línea rápida cruza por debajo de la línea lenta, indica que la tendencia bajista se está fortaleciendo y se toma una posición corta.

Específicamente, la estrategia calcula los dos MAs utilizando la función sma(), asignando el resultado a xSMA (línea lenta) y línea rápida. Los MAs se calculan en función del precio de cierre. Cuando el precio de cierre cruza por encima de xSMA, se toma una posición larga. Cuando el precio de cierre cruza por debajo de xSMA, se toma una posición corta. La estrategia también establece un límite de rango de tiempo de negociación, por lo que las señales de negociación solo se generan dentro del rango de tiempo especificado.

Los puntos de take profit y stop loss se establecen para cada operación, y el beneficio se toma o la stop loss se activa inmediatamente cuando el precio alcanza el nivel de take profit o stop loss. Mientras tanto, la estrategia traza la relación precio vs MA en las barras utilizando la función barcolor - las barras son de color verde durante posiciones largas, rojo durante posiciones cortas y azul cuando son planas.

Análisis de ventajas

  • El uso de un sistema de doble OMA puede hacer un seguimiento eficaz de las tendencias y evitar ser engañado por el ruido del mercado a corto plazo
  • La combinación de MAs rápidos y lentos puede mejorar la calidad de las señales de negociación
  • Control del riesgo de puntos de toma de ganancias y de pérdidas por operación
  • Limitar el rango de tiempo de negociación evita grandes oscilaciones en torno a los eventos importantes
  • Trazar señales comerciales en barras crea ayuda visual y mejora la intuitividad

Análisis de riesgos

  • Los sistemas de doble MA tienden a generar más señales falsas, aumentando la frecuencia y los costes de negociación
  • Los parámetros de la OA deben fijarse de manera razonable, de lo contrario el efecto suavizador se verá afectado o se perderán demasiadas oportunidades
  • Los sistemas MA tienen retraso y pueden perder puntos de inflexión de tendencia
  • Las pérdidas fijas de toma de ganancias/detención de pérdidas pueden ser demasiado contundentes y no pueden ajustarse dinámicamente.
  • La limitación del intervalo de tiempo de negociación puede perder oportunidades en otros períodos

El riesgo puede reducirse ajustando los parámetros de MA, optimizando la estrategia take profit/stop loss, eliminando las limitaciones de tiempo o estableciendo períodos de tiempo de negociación más razonables.

Direcciones de optimización

  • Prueba de diferentes combinaciones de períodos MA para encontrar parámetros óptimos
  • Se considerará un stop loss/beneficio dinámico, por ejemplo basado en ATR.
  • Incorporar otros indicadores como MACD, KD, etc. como señales de filtro
  • Optimice el rango de tiempo de negociación para aprovechar más oportunidades
  • Combinar con la estrategia de fuga, buscando señales de fuga alrededor de los MAs
  • Construir mecanismos de salida dinámicos, deteniéndose activamente cuando el precio entra en el rango

Resumen de las actividades

La estrategia de inversión de promedio móvil dual es una estrategia simple y práctica de seguimiento de tendencias. Se aprovecha al máximo el efecto suavizador de los MAs para identificar la dirección de la tendencia y utiliza MAs rápidos / lentos para generar señales comerciales. La estrategia es fácil de implementar con una lógica clara, adecuada para que los principiantes la comprendan. Sin embargo, puede generar señales falsas excesivas y problemas de retraso. Se pueden hacer mejoras a través de la optimización de parámetros, la adición de indicadores auxiliares, etc. para hacer que la estrategia sea más robusta. Si se usa correctamente, esta estrategia puede ofrecer ganancias constantes y vale la pena una prueba y optimización integrales.


/*backtest
start: 2023-09-15 00:00:00
end: 2023-10-15 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © HPotter
//  Simple SMA strategy
//
// WARNING:
//      - For purpose educate only
//      - This script to change bars colors
//@version=4
timeinrange(res, sess) => not na(time(res, sess)) ? 1 : 0

strategy(title="Simple SMA Strategy Backtest", shorttitle="SMA Backtest", precision=6, overlay=true)
Resolution = input(title="Resolution", type=input.resolution, defval="D")
Source = input(title="Source", type=input.source, defval=close)
xSeries = security(syminfo.tickerid, Resolution, Source)
Length = input(title="Length", type=input.integer, defval=14, minval=2)
TriggerPrice = input(title="Trigger Price", type=input.source, defval=close)
TakeProfit = input(50, title="Take Profit", step=0.01)
StopLoss = input(20, title="Stop Loss", step=0.01)
UseTPSL = input(title="Use Take\Stop", type=input.bool, defval=false)
BarColors = input(title="Painting bars", type=input.bool, defval=true)
ShowLine = input(title="Show Line", type=input.bool, defval=true)
UseAlerts = input(title="Use Alerts", type=input.bool, defval=false)
timeframe = input(title="Time Frame", defval="15")
timerange = input(title="Time Range", defval="2300-0800")
reverse = input(title="Trade Reverse", type=input.bool, defval=false)
pos = 0
xSMA = sma(xSeries, Length)
pos := iff(TriggerPrice > xSMA, 1,
         iff(TriggerPrice < xSMA, -1, nz(pos[1], 0)))
nRes = ShowLine ? xSMA : na
alertcondition(UseAlerts == true and pos != pos[1] and pos == 1, title='Signal Buy', message='Strategy to change to BUY')
alertcondition(UseAlerts == true and pos != pos[1] and pos == -1, title='Signal Sell', message='Strategy to change to SELL')
alertcondition(UseAlerts == true and pos != pos[1] and pos == 0, title='FLAT', message='Strategy get out from position')
possig =iff(pos[1] != pos,
         iff(reverse and pos == 1, -1,
           iff(reverse and pos == -1, 1, pos)), 0)
if (possig == 1 and timeinrange(timeframe, timerange))
    strategy.entry("Long", strategy.long)
if (possig == -1 and timeinrange(timeframe, timerange))
    strategy.entry("Short", strategy.short)
if (timeinrange(timeframe, timerange) == 0) 
    strategy.close_all()

if (UseTPSL)    
    strategy.close("Long", when = high > strategy.position_avg_price + TakeProfit, comment = "close buy take profit")
    strategy.close("Long", when = low < strategy.position_avg_price - StopLoss, comment = "close buy stop loss")
    strategy.close("Short", when = low < strategy.position_avg_price - TakeProfit, comment = "close buy take profit")
    strategy.close("Short", when = high > strategy.position_avg_price + StopLoss, comment = "close buy stop loss")
nColor = BarColors ? strategy.position_avg_price != 0  and pos == 1 ? color.green :strategy.position_avg_price != 0 and pos == -1 ? color.red : color.blue : na
barcolor(nColor)
plot(nRes, title='SMA', color=#00ffaa, linewidth=2, style=plot.style_line)

Más.