Estrategia de trading con inversión de media móvil doble


Fecha de creación: 2023-10-16 15:50:35 Última modificación: 2023-10-16 15:50:35
Copiar: 1 Número de Visitas: 671
1
Seguir
1617
Seguidores

Estrategia de trading con inversión de media móvil doble

Descripción general

La estrategia de inversión de la línea de paridad binaria genera una señal de negociación en función de la relación entre el precio y la media móvil, calculando un promedio móvil simple de dos períodos diferentes, a corto plazo y largo plazo. Haga más cuando atraviesa la media de largo plazo por encima de la línea de paridad corto plazo; y haga menos cuando atraviesa la media de largo plazo por debajo de la línea de paridad corto plazo. Esta estrategia es una estrategia de seguimiento de tendencias.

Principio de estrategia

La estrategia utiliza parámetros de entrada para establecer dos promedios móviles simples de diferentes longitudes de ciclo. La línea de ciclo corto se llama línea rápida y la línea de ciclo largo se llama línea lenta. La línea rápida responde a los cambios de precio más rápidamente, capturando las tendencias a corto plazo; la línea lenta responde a los cambios de precio más lentamente, filtrando el ruido del mercado a corto plazo y capturando las tendencias principales.

En concreto, la estrategia calcula dos medias a través de la función sma (), y asigna el resultado del cálculo a xSMA (la línea lenta) y a la línea rápida. La estrategia utiliza el precio cerrado para calcular la media. Cuando el precio cerrado atraviesa xSMA, haga más; cuando el precio cerrado atraviesa xSMA, haga vacío.

Para cada operación, se establece un punto de parada y se detiene inmediatamente cuando se alcanza el punto de parada. Al mismo tiempo, la estrategia muestra la relación entre el precio y la línea lenta en la línea K a través de la función barcolor: la línea K es verde cuando se hace una ventaja; la línea K es roja cuando está vacía; la línea K es azul cuando está en posición baja.

Análisis de las ventajas

  • Utiliza un sistema de doble línea para seguir las tendencias de manera efectiva y evitar ser engañado por el ruido del mercado a corto plazo
  • La combinación de línea media y lenta mejora la calidad de las señales de negociación
  • Establezca un punto de parada para controlar el riesgo de una sola transacción
  • Limitar el rango de tiempo de negociación para evitar grandes fluctuaciones en eventos importantes
  • Marcar las señales de transacción en línea K, para formar un auxiliar visual y mejorar la intuitividad

Análisis de riesgos

  • Los sistemas de doble línea son propensos a generar más señales falsas, y la frecuencia de las transacciones genera presión sobre los costos de las transacciones.
  • Necesidad de ajustes razonables de los parámetros de la línea media, de lo contrario, el efecto de la suavización no es bueno o produce demasiados problemas de tiempo de espera
  • El sistema lineal está en un momento de retraso y puede haber perdido el punto de inflexión de la tendencia
  • El punto de parada fijo puede ser demasiado arbitrario y no se puede ajustar dinámicamente
  • El rango de tiempo de negociación limitado puede perder oportunidades de negociación en otros períodos de tiempo

Se puede reducir el riesgo ajustando los parámetros de la línea media, optimizando las estrategias de stop-loss, eliminando los límites de tiempo o estableciendo períodos de tiempo de negociación más razonables. También se puede considerar la combinación de otros indicadores como condiciones de filtración para evitar demasiadas señales falsas.

Dirección de optimización

  • Se puede probar una combinación de diferentes períodos equilíneos para encontrar el parámetro óptimo
  • Se puede considerar cambiar el stop loss a un seguimiento dinámico, como enlazado con el ATR
  • Se pueden introducir otros indicadores como MACD, KD, etc. como señales de filtración
  • Se puede optimizar el rango de tiempo de negociación para capturar más oportunidades de negociación
  • Se puede combinar con estrategias de ruptura para buscar señales de ruptura cerca de la línea media.
  • Se puede establecer un mecanismo de salida dinámica, que detiene activamente los pérdidas cuando los precios entran en el intervalo

Resumir

La estrategia de inversión de la línea de paridad general es una estrategia de seguimiento de tendencias sencilla y práctica. Aprovecha el efecto suave de la línea de paridad para identificar la dirección de la tendencia y se combina con la línea de paridad para generar señales de comercio. La estrategia es fácil de implementar, clara de pensamiento y adecuada para los principiantes.

Código Fuente de la Estrategia
/*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)