Estrategias de cuantificación de seguimiento de tendencias basadas en Stoch y EMA

El autor:¿ Qué pasa?, Fecha: 2024-02-05 15:27:03
Las etiquetas:

基于Stoch和EMA指标的趋势跟踪量化策略

Resumen

La estrategia utiliza principalmente el cruce del índice de Stoch en la zona de sobreventa y sobreventa como señal de entrada, junto con el indicador EMA para determinar la dirección de la tendencia actual. La operación múltiple solo se realiza en una tendencia ascendente continua del EMA, y la operación nula en una tendencia descendente continua del EMA es una estrategia típica de seguimiento de tendencias.

Principios estratégicos

La estrategia tiene tres partes principales:

  1. El indicador EMA determina la dirección de la tendencia

Utilizando dos parámetros diferentes de EMA rápido y lento, cuando el EMA rápido está por encima de la EMA lenta se considera una tendencia al alza y cuando el EMA rápido está por debajo de la EMA lenta se considera una tendencia a la baja.

  1. El índice de Stoch determina las señales de compra y venta

El índice de Stoch se compone de una línea %K y una línea %D, que generan una señal de compra cuando la línea %K se cruza con el oro por encima de la zona de sobreventa y una señal de venta cuando la línea %K se cruza con la línea %D por debajo de la zona de sobreventa. Esta estrategia solo emite una señal de negociación cuando el índice de Stoch se cruza con la zona de sobreventa.

  1. Mecanismos de gestión de riesgos

La estrategia establece un mecanismo de stop loss y stop loss simultáneamente. Cuando se mantiene una posición de más, se detiene el equilibrio si el precio cae al límite del límite del límite del límite del límite del límite del límite del límite del límite del límite del límite del límite del límite del límite del límite del límite del límite del límite del límite del límite del límite del límite del límite del límite del límite del límite del límite del límite del límite del límite del límite del límite del límite del límite del límite.

En general, la estrategia es una estrategia de negociación cuantificada, que utiliza una combinación de indicadores para determinar la dirección de la tendencia y las señales de negociación, junto con reglas estrictas de gestión de riesgos, para reducir eficazmente el riesgo de negociación.

Análisis de ventajas

La estrategia tiene las siguientes ventajas:

  1. Utiliza la EMA para determinar las tendencias de los niveles primarios y evitar caer en un mercado inestable.

  2. La característica del indicador del Stoch es que refleja bien si se encuentra actualmente en una zona de sobrecompra o sobreventa, por lo que se puede negociar en una zona de sobrecompra o sobreventa en combinación con la generación de señales cruzadas.

  3. La estrategia define el entorno en el que pueden producirse los grandes y pequeños, lo que permite que las señales generadas sean filtradas aún más, reduciendo la probabilidad de señales erróneas, y al mismo tiempo evitando abrirse a ciegas en mercados complejos.

  4. Los mecanismos estrictos de gestión de riesgos ayudan a controlar las pérdidas de un solo comercio, controlando el máximo retiro en general y dejando suficiente espacio para operaciones rentables.

Análisis de riesgos

La estrategia también presenta ciertos riesgos:

  1. Los indicadores EMA, Stoch y otros tienen un cierto atraso, lo que dificulta la estrategia y la oportunidad de aprovechar los cambios en el mercado.

  2. Dependiendo únicamente de los indicadores, es fácil formar juicios preconcebidos sobre el mercado y perder las oportunidades comerciales que realmente ofrece el mercado.

  3. Los mecanismos de gestión de riesgos en sí mismos también pueden ser un límite para el espacio de ganancia estratégica, y la configuración de suspensión de pérdidas y parada de posiciones en grandes tendencias requiere especial precaución.

  4. También existe un cierto riesgo en la selección de parámetros, ya que la influencia de los diferentes parámetros en los resultados requiere una gran cantidad de repeticiones y optimizaciones para obtener la mejor combinación de parámetros.

Dirección de optimización

La estrategia puede ser optimizada en los siguientes aspectos:

  1. Pruebe diferentes tipos de EMA, como una media móvil ponderada, un Hull MA, etc., para determinar la tendencia y hacer un análisis comparativo.

  2. Intentar combinar otros indicadores para generar señales de negociación, como el MACD, el KDJ, etc., para construir un sistema de negociación de múltiples indicadores.

  3. Optimizar la configuración del stop loss y el stop profit para adaptarlo mejor a las fluctuaciones reales del mercado. Se pueden establecer niveles de stop loss más flexibles y niveles de stop profit más estrictos.

  4. Prueba la diferencia en el rendimiento de la estrategia en diferentes variedades y en diferentes ciclos para encontrar la mejor combinación de variedades y ciclos.

  5. Considere incorporar modelos de aprendizaje automático o de redes neuronales para ayudar a determinar la dirección de la tendencia y las señales de negociación, para lograr la inteligencia de la estrategia.

Resumen

En general, la estrategia utiliza la combinación de indicadores comunes y construye un conjunto de estrategias de seguimiento de tendencias más maduras. Considera tanto el juicio de tendencias y la generación de señales comerciales específicas, como también establece un mecanismo de gestión de riesgos. Con la continua optimización, creemos que la estrategia puede obtener mejores resultados reales.


/*backtest
start: 2024-01-05 00:00:00
end: 2024-02-04 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
//by Wugamlo
//Strategy combining Stochastic Crosses in the Overbought/Oversold Area with a trend determined by two EMAs
//Default setup seems to work best on 4HR timeframe for BTC 

strategy(title = "Strategy Stoch/EMA Cross", shorttitle = "Strategy Stoch/EMA Cross", overlay = true, pyramiding = 0, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, currency = currency.USD, commission_value=0.01,commission_type=strategy.commission.percent, initial_capital=1000)

// === GENERAL INPUTS ===
SectionInd      = input(defval = true ,title = "════════════ INDICATORS ════════════")
maFastLength    = input(defval = 55,   title = "Fast MA Period", minval = 1)
maSlowLength    = input(defval = 89,   title = "Slow MA Period", minval = 1)
StochLength     = input(defval = 14,   title = "Stochastic Length", minval=1)
smoothK         = input(defval = 6,    title = "%K Smooth", minval=1)
smoothD         = input(defval = 3,    title = "%D Smooth", minval=1)
overbought      = 80
oversold        = 20
HighlightOBOS   = input(defval = true, title = "Highlight Stoch Cross?")
HighlightTrend  = input(defval = true, title = "Highlight Trend?")

//DATE AND TIME
SectionFrom     = input(defval = true ,title = "═══════════════ FROM ═══════════════")
fromDay         = input(defval = 01,   title = "From day", minval=1)
fromMonth       = input(defval = 1,    title = "From month", minval=1)
fromYear        = input(defval = 2019, title = "From year", minval=2014)
SectionTo       = input(defval = true, title = "════════════════ TO ════════════════")
toDay           = input(defval = 31,   title = "To day", minval=1)
toMonth         = input(defval = 12,    title = "To month", minval=1)
toYear          = input(defval = 2020, title = "To year", minval=2014)

// === STRATEGY RELATED INPUTS ===
SectionStra     = input(defval = true ,title = "═════════════ STRATEGY ═════════════")

// Include Shorts or only trade Long Positions?
includeShorts   = input(defval = true, title = "Include Short Positions?")


// Risk Management inputs
useTakeProfit   = input(defval = true,  title = "User Take Profit?")
inpTakeProfit   = input(defval = 8,     title = "Take Profit (%)", minval = 0)
useStopLoss     = input(defval = false, title = "User Stop Loss?")
inpStopLoss     = input(defval = 2,     title = "Stop Loss (%)", minval = 0)

StopLossPerc    = inpStopLoss * 0.01
TakeProfitPerc  = inpTakeProfit * 0.01


// === EMA SERIES SETUP ===
maFast = ema(close, maFastLength)
maSlow = ema(close, maSlowLength)
diff   = maFast - maSlow

// === STOCHASTIC SETUP ===
k      = sma(stoch(close, high, low, StochLength), smoothK)
d      = sma(k, smoothD)

// Stochastic Long/Short Entry determination
stochLong  = crossover(k,d)  and (k < oversold)
stochShort = crossunder(k,d) and (k > overbought)

// Stochastic Long/Short Exit determination
stochLongEx  = crossover (k, overbought)
stochShortEx = crossunder(k, oversold)


// === PLOTTING EMAs ===
fast = plot(maFast, title = "Fast MA", color = yellow, linewidth = 1, style = line, transp = 10)
slow = plot(maSlow, title = "Slow MA", color = white,  linewidth = 1, style = line, transp = 10)


// === Vertical Coloring for Crosses in Overbought/Oversold zone and for MA Trend Zones ===
b_color = stochLong ? green : stochShort ? red : na
bgcolor(HighlightOBOS ? b_color : na, title="Overbought / Oversold", transp=65)   //Highlight the Overbought/Oversold Stoch Crossings
t_color = diff>=0 ? green : diff<0 ? red : na
bgcolor(HighlightTrend ? t_color : na, title="Trend up / Trend down", transp=75)  //Highlight the EMA Trend


// === STRATEGY LOGIC ===
// Time Restriction
timeInRange = true


// === STRATEGY - LONG POSITION EXECUTION ===
if stochLong and (diff >=0) and timeInRange    //Open Long when Stoch crossing in Oversold area and EMATrend is up
    strategy.entry(id = "Long", long = true)
if stochLong and (diff <0) and timeInRange     //Close Long when another Long Stoch cross signal is given after Trend has changed to down (avoid fake signals)
    strategy.close(id = "Long")
if stochLongEx and timeInRange                 //Close Long when Stoch is getting Overbought 
    strategy.close(id = "Long")


// === STRATEGY - SHORT POSITION EXECUTION ===
if stochShort and (diff <0) and timeInRange and includeShorts  //Open Short when Stoch crossing in Overbought area and EMA Trend is down
    strategy.entry(id = "Short", long = false)
if stochShort and (diff >=0) and timeInRange                   //Close Short when another Short Stoch cross signal is given after Trend has changed to up (avoid fake signals)
    strategy.close(id = "Short")
if stochShortEx and timeInRange                                //Close Short when Stoch is getting Oversold 
    strategy.close(id = "Short")

        
// === STRATEGY RISK MANAGEMENT EXECUTION ===
//Stop Loss
if useStopLoss    //Exit when Stop Loss is hit
    strategy.exit("Exit Long SL",   from_entry = "Long",  loss = close * StopLossPerc / syminfo.mintick )
    strategy.exit("Exit Short SL",  from_entry = "Short", loss = close * StopLossPerc / syminfo.mintick )

//Take Profit
if useTakeProfit  //Exit when Take Profit Limit is hit
    strategy.exit("Exit Long TP",   from_entry = "Long",  profit = close * TakeProfitPerc / syminfo.mintick)
    strategy.exit("Exit Short TP",  from_entry = "Short", profit = close * TakeProfitPerc / syminfo.mintick)




Más contenido