Estrategia de trading con desviación de volatilidad de la media móvil simple (SMA)


Fecha de creación: 2023-12-19 10:52:10 Última modificación: 2023-12-19 10:52:10
Copiar: 1 Número de Visitas: 786
1
Seguir
1621
Seguidores

Estrategia de trading con desviación de volatilidad de la media móvil simple (SMA)

Estrategia de trading con desviación de volatilidad de la media móvil simple (SMA)

Descripción general de la estrategia

La estrategia utiliza un promedio móvil simple y algunos cálculos matemáticos para determinar el punto de compra/venta. Utilizamos el SMA de 100 días como línea de referencia. Si el precio de cierre está por debajo de esa línea, elegimos el punto de apertura en función de lo bajo que está, este valor (el desvío bajo) es un porcentaje configurable. Para la posición cerrada, si el precio de cierre está por encima de nuestro SMA de 100 días, determinamos el desvío antes de vender.

Principio de estrategia

La estrategia utiliza tres líneas SMA: la línea rápida (de 14 días por defecto), la línea lenta (de 100 días por defecto) y la línea de referencia (de 30 días por defecto).

Cuando el precio de cierre está por debajo de la línea de referencia, y el desplazamiento bajo de la línea lenta es mayor que el desplazamiento bajo de la configuración, y la línea rápida sube y la línea lenta baja, entra en el polinomio. Cuando se cumplen estas condiciones, es muy probable que la línea rápida y la línea lenta se crucen, por lo que es un buen punto de entrada.

Cuando el precio de cierre está por encima de la línea de referencia, y el desplazamiento alto de la línea lenta es mayor que el desplazamiento alto de la configuración, y el precio de cierre ha subido 3 líneas K consecutivas, ha logrado ganancias, y la línea rápida está por encima de la línea lenta, la posición llena es simple. Si el precio continúa subiendo, se iniciará el seguimiento de la parada.

Las posiciones de cada operación entran en función de una proporción de derechos y intereses, controlando así la posición.

Análisis de las ventajas estratégicas

  1. Aprovechar el SMA para suavizar la curva de precios y filtrar el ruido del mercado.
  2. El SMA cruzado tiene cierta capacidad de predicción de tendencias.
  3. Se establece el desplazamiento respecto a la línea SMA para evitar falsas rupturas.
  4. La combinación de tendencias y indicadores cruzados para mejorar la precisión de la toma de decisiones
  5. El uso de trazabilidad para bloquear ganancias y evitar retiros.

Análisis de riesgos estratégicos

  1. El SMA es muy retrasado y puede haber perdido el punto de inflexión.
  2. La configuración incorrecta de la desviación puede conducir a ser demasiado radical o demasiado cauteloso.
  3. La configuración incorrecta de los parámetros de seguimiento de la parada de pérdidas puede detenerse prematuramente o detenerse demasiado.
  4. No puede hacer frente a la fuerte fluctuación de los precios.

Las medidas de optimización correspondientes:

  1. En combinación con otros indicadores previos, se filtró la entrada.
  2. Optimización de las pruebas repetitivas para el desplazamiento.
  3. El parámetro de repetición de los parámetros de pérdida para encontrar el parámetro óptimo.
  4. Bajar posiciones en momentos de alta volatilidad.

Dirección de optimización de la estrategia

  1. Pruebas de SMA de diferentes períodos para encontrar el parámetro óptimo
  2. Adición de otros indicadores para determinar la estructura y tendencias del mercado
  3. Optimizar el seguimiento de los parámetros de stop loss para obtener más ganancias
  4. Ajuste de posiciones en función de las fluctuaciones del mercado
  5. Aplicación simultánea en varias variedades y combinaciones

Resumir

La estrategia de negociación de desviación de la SMA se basa en la configuración de la desviación en referencia a las diferentes medias de la SMA, para buscar el mejor momento de entrada. Al mismo tiempo, el mecanismo de salida establece el seguimiento de los paros para bloquear los beneficios. La estrategia es simple de entender y fácil de implementar.

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
// Author: Sonny Parlin (highschool dropout)
strategy(shorttitle="SMA+Strategy", title="SMA Offset Strategy",
                                      overlay=true,  currency=currency.USD,
                                      initial_capital=10000)

// Inputs and variables
ss = input(14, minval=10, maxval=50, title="SMA Fast (days)")
ff = input(100, minval=55, maxval=200, title="SMA Slow (days)")
ref = input(30, minval=20, maxval=50, title="SMA Reference (days)")
lowOffset = input(0.001, "Low Offset (%)", minval=0, step=0.001)
highOffset = input(0.0164, "High Offset (%)", minval=0, step=0.0001)
orderStake = input(0.96, "Order Stake (%)", minval=0, step=0.01)

// SMA
smaFast = sma(close, ss)
smaSlow = sma(close, ff)
smaRef = sma(close, ref)
distanceLow = (close - smaSlow) / close
distanceHigh = (close - smaSlow) / close

// Set up SMA plot but don't show by default
plot(smaFast, "smaFast", color=#00ff00, display = 0)
plot(smaSlow, "smaSlow", color=#ff0000, display = 0)
plot(smaRef, "smaRef", color=#ffffff, display = 0)

// The buy stratey:
// guard that the low is under our sma low reference line by our lowOffset %, 
// default is 0.001. (low < smaRef) and (distanceLow > lowOffset)
// SMA fast is on the rise and SMA slow is falling and they are very likely
// to cross. (rising(smaFast,1)) and (falling(smaSlow, 1)) 
enterLong = (low < smaRef) and (distanceLow > lowOffset) and (rising(smaFast,1)) and (falling(smaSlow, 1)) 

// The sell Strategy:
// Guard that close is higher than our sma high reference line by our 
// highOffset %, default is 0.0164. (close > smaRef) and (distanceHigh > highOffset)
// Guard that close has risen by 3 candles in a row (rising(close,3)) 
// Guard that we currently have profit (strategy.openprofit > 0)
// Guard that SMA fast is higher than smaSlow (smaFast > smaSlow)
// If it keeps going up past our close position the trailing stoploss will kick in!
enterShort = (close > smaRef) and (distanceHigh > highOffset) and (rising(close,3)) and (strategy.openprofit > 0) and (smaFast > smaSlow)

// Order size is based on total equity
// Example 1:
// startingEquity = 2000
// close = 47434.93
// orderStake = 0.45
// (2,000 × orderStake) / close = orderSize = 0.0189733599 = approx $900

// Example 2:
// startingEquity = 2000
// close = 1.272
// orderStake = 0.45
// (startingEquity × orderStake) / close = orderSize = 707.5471698113 = approx $900
orderSize = (strategy.equity * orderStake) / close

// Trailing Stoploss
// I'm using 1.35 as my default value, play with this for different results.
longTrailPerc = input(title="Trailing Stoploss (%)",
     type=input.float, minval=0.0, step=0.1, defval=1.35) * 0.01
     
longStopPrice = 0.0

longStopPrice := if (strategy.position_size > 0)
    stopValue = close * (1 - longTrailPerc)
    max(stopValue, longStopPrice[1])
else
    0

if (enterLong)
    strategy.entry("Open Long Position", strategy.long, orderSize, when=strategy.position_size <= 0)
    
if (enterShort)
    strategy.exit(id="Close Long Position", stop=longStopPrice)


//plot(strategy.equity)