Basado en una sencilla estrategia de negociación de cruce de medias móviles dobles


Fecha de creación: 2023-12-25 16:03:48 Última modificación: 2023-12-25 16:03:48
Copiar: 0 Número de Visitas: 643
1
Seguir
1623
Seguidores

Basado en una sencilla estrategia de negociación de cruce de medias móviles dobles

Descripción general

Esta estrategia se basa en el principio de la horquilla de oro de la media móvil simple (SMA). La estrategia utiliza dos SMA, es decir, el SMA rápido y el SMA lento, que genera una señal de compra cuando el SMA rápido rompe el SMA lento desde abajo; cuando el SMA rápido cae desde arriba y rompe el SMA lento, genera una señal de venta.

Principio de estrategia

La estrategia se basa principalmente en dos líneas de indicadores SMA. Entre ellas, la configuración más corta durante el SMA rápido, puede capturar los cambios en los precios más rápidamente; la configuración más larga durante el SMA lento, puede filtrar parte del ruido. Cuando el SMA rápido cruza el SMA lento desde abajo, indica que el precio a corto plazo sube más rápido, produciendo una señal de compra.

Al configurar diferentes parámetros de ciclo SMA, se puede ajustar los parámetros de la estrategia hasta cierto punto para adaptarse a diferentes condiciones de mercado. Al mismo tiempo, la estrategia también permite configurar el rango de tiempo de retroceso para facilitar la prueba de los parámetros de la estrategia en datos históricos.

Análisis de las ventajas

  • Utilizando el conocido índice SMA, el principio es simple y fácil de entender.
  • Parámetros personalizados para el ciclo SMA, de gran adaptabilidad
  • Se puede configurar el rango de tiempo de respuesta para optimizar los parámetros
  • La generación de señales de manera cruzada tiene un cierto efecto de filtrado sobre las señales de ruptura, lo que reduce las transacciones erróneas

Análisis de riesgos

  • El SMA en sí mismo está rezagado y puede haber perdido oportunidades de cortocircuito
  • No se puede determinar la intensidad de la tendencia y el efecto de la señal puede ser inestable
  • Los parámetros del ciclo SMA están mal configurados, lo que aumenta la señal de error

Las siguientes medidas pueden ser tomadas para hacer frente a los riesgos mencionados:

  • Reducir adecuadamente el ciclo SMA y aumentar la sensibilidad
  • La fuerza de la tendencia en combinación con otros indicadores
  • Buscar la mejor combinación de parámetros con la herramienta de optimización de parámetros

Dirección de optimización

  • Aumentar las estrategias de stop loss y controlar las pérdidas individuales
  • Mecanismo de gestión de posiciones
  • Combinación con otros indicadores técnicos
  • Aumentar el algoritmo de aprendizaje automático para optimizar los parámetros dinámicos

Resumir

Esta estrategia es una estrategia típica de seguimiento de tendencias. Se utiliza un simple principio de doble recorrido uniforme, con la configuración adecuada de los parámetros, se puede obtener un mejor efecto de seguimiento. Sin embargo, la propia SMA tiene un cierto retraso y no puede juzgar la fuerza de la tendencia.

Código Fuente de la Estrategia
/*backtest
start: 2023-12-17 00:00:00
end: 2023-12-18 19:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
//strategy(title="MA Cross Entry & Exit w/Date Range", overlay=true, initial_capital=10000, currency='USD')

strategy(title="SMA Cross Entry & Exit Strategy", overlay=true)

// Credit goes to this developer for the "Date Range Code"
// https://www.tradingview.com/script/62hUcP6O-How-To-Set-Backtest-Date-Range/


// === GENERAL INPUTS ===
// short ma
maFastSource   = input(defval = open, title = "Fast MA Source")
maFastLength   = input(defval = 36, title = "Fast MA Period", minval = 1)
// long ma
maSlowSource   = input(defval = open , title = "Slow MA Source")
maSlowLength   = input(defval = 46, title = "Slow MA Period", minval = 1)

// === SERIES SETUP ===
// a couple of ma's..
maFast = sma(maFastSource, maFastLength)
maSlow = sma(maSlowSource, maSlowLength)


// === PLOTTING ===
fast = plot(maFast, title = "Fast MA", color = red, linewidth = 2, style = line, transp = 30)
slow = plot(maSlow, title = "Slow MA", color = green, linewidth = 2, style = line, transp = 30)

// === INPUT BACKTEST RANGE ===
FromMonth = input(defval = 9, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear  = input(defval = 2018, title = "From Year", minval = 2017)
ToMonth   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear    = input(defval = 9999, title = "To Year", minval = 2017)

// === FUNCTION EXAMPLE ===
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest finish window
window()  => time >= start and time <= finish ? true : false // create function "within window of time"

// === LOGIC ===
//enterLong = crossover(maFast, maSlow)
//exitLong = crossover(maSlow, maFast)
enterLong = crossover(maSlow, maFast)
exitLong = crossover(maFast, maSlow)


// Entry //
strategy.entry(id="Long Entry", long=true, when=window() and enterLong)
strategy.entry(id="Short Entry", long=false, when=window() and exitLong)

// === FILL ====

fill(fast, slow, color = maFast > maSlow ? green : red)