Estrategia de trading de tendencia combinada STC MA ATR


Fecha de creación: 2023-10-17 14:34:10 Última modificación: 2023-10-17 14:34:10
Copiar: 0 Número de Visitas: 845
1
Seguir
1617
Seguidores

Estrategia de trading de tendencia combinada STC MA ATR

Descripción general

La estrategia utiliza los indicadores técnicos de acciones STC, el promedio móvil MA y el promedio de fluctuación real ATR, combinado con varios indicadores técnicos para determinar la tendencia y lograr un comercio de seguimiento de tendencias más estable.

Principio de estrategia

  1. El indicador STC determina la reversión de la tendencia. El indicador utiliza la línea rápida para ralentizar la línea, luego se realiza un segundo proceso de suavización, formando una señal de tendencia consistente. Cuando el indicador cruza el eje 0 en la parte superior es una señal de compra, y cuando cruza el eje 0 en la parte inferior es una señal de venta.

  2. Los promedios móviles MA determinan la dirección de la tendencia. Cuando el precio de la acción pasa por MA, se considera que sigue en alza en el mercado, para tener una señal de más de una sola. Cuando el precio pasa por MA, se considera que es una tendencia a la baja, para tener una señal de una sola.

  3. El indicador ATR establece un stop loss. El ATR puede ajustar el punto de stop loss en función de la volatilidad del mercado. Y utiliza el ATR como señal de dirección comercial.

  4. La estrategia toma la oportunidad de invertir el juicio del STC como el punto de venta y venta principal, con la MA como la tendencia auxiliar de juicio, con el ATR para el stop loss. Cuando el STC emita una señal de compra, si el MA también es una tendencia alcista, el ATR es ascendente, abre una orden adicional; Si el STC emite una señal de venta, si la MA es una tendencia descendente, el ATR es descendente, abre una orden en blanco.

Análisis de las ventajas

  1. La estrategia utiliza un conjunto de indicadores para determinar tendencias y puntos de inflexión, lo que mejora la precisión de las señales de negociación.

  2. El indicador STC capta las señales de reversión y evita que las operaciones sean bloqueadas. El indicador MA filtra las señales de reversión inestables y asegura el seguimiento de la tendencia principal.

  3. El indicador ATR puede establecer un stop loss en función de la volatilidad del mercado para evitar grandes pérdidas. Y utiliza el ATR como una señal auxiliar para juzgar la tendencia.

  4. La combinación de múltiples indicadores puede generar una mayor capacidad de seguimiento de tendencias, y el retroceso histórico tiene una mejor capacidad de rentabilidad estable.

Análisis de riesgos

  1. El índice STC tiene un retraso de tiempo y puede perder el mejor momento para que el precio se invierta.

  2. El indicador MA tiende a retrasarse cuando los precios cambian drásticamente, lo que puede generar una señal errónea.

  3. Los paros ATR pueden ser sacados en segundos, con una relajación adecuada del multiplicador ATR, o cerrados temporalmente en una gran tendencia.

  4. Si bien la combinación de múltiples indicadores mejora la tasa de éxito, también aumenta la oportunidad de desencadenar un stop loss, se deben ajustar los parámetros de manera adecuada para reducir el stop loss innecesario.

Dirección de optimización

  1. Ajustar los parámetros STC para encontrar combinaciones de parámetros que respondan a la reversión más rápido

  2. Optimización de los parámetros del ciclo MA para un mejor seguimiento de las tendencias

  3. Efectos de los parámetros de prueba de diferentes multiplicadores de ATR en las estrategias

  4. Intentar sustituir el STC por otros indicadores en busca de mejores coincidencias

  5. Agrega algoritmos de aprendizaje automático para optimizar múltiples parámetros

  6. Aumentar el juicio sobre las tendencias del Gran Ciclo, diferenciando las diferentes etapas del Gran Ciclo

Resumir

La estrategia STC MA ATR utiliza un conjunto de tres indicadores para capturar el punto de inflexión de la tendencia y lograr un comercio de seguimiento de tendencia estable. La combinación de indicadores filtra las señales falsas y controla el riesgo de parada de pérdidas, con una mayor compatibilidad y estabilidad.

Código Fuente de la Estrategia
/*backtest
start: 2023-09-16 00:00:00
end: 2023-10-16 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/
// © Romedius

//@version=5
strategy("My Strategy", overlay=true, margin_long=100, margin_short=100)

// STC
EEEEEE=input(12,"Length",group="STC")
BBBB=input(26,"FastLength",group="STC")
BBBBB=input(50,"SlowLength",group="STC")

AAAA(BBB, BBBB, BBBBB) =>
    fastMA = ta.ema(BBB, BBBB)
    slowMA = ta.ema(BBB, BBBBB)
    AAAA = fastMA - slowMA
    AAAA
    
AAAAA(EEEEEE, BBBB, BBBBB) => 
    //AAA=input(0.5)
    var AAA = 0.5
    var CCCCC = 0.0
    var DDD = 0.0
    var DDDDDD = 0.0
    var EEEEE = 0.0
    BBBBBB = AAAA(close,BBBB,BBBBB)     
    CCC = ta.lowest(BBBBBB, EEEEEE)
    CCCC = ta.highest(BBBBBB, EEEEEE) - CCC    
    CCCCC := (CCCC > 0 ? ((BBBBBB - CCC) / CCCC) * 100 : nz(CCCCC[1])) 
    DDD := (na(DDD[1]) ? CCCCC : DDD[1] + (AAA * (CCCCC - DDD[1]))) 
    DDDD = ta.lowest(DDD, EEEEEE) 
    DDDDD = ta.highest(DDD, EEEEEE) - DDDD     
    DDDDDD := (DDDDD > 0 ? ((DDD - DDDD) / DDDDD) * 100 : nz(DDDDDD[1])) 
    EEEEE := (na(EEEEE[1]) ? DDDDDD : EEEEE[1] + (AAA * (DDDDDD - EEEEE[1])))
    EEEEE

mAAAAA = AAAAA(EEEEEE,BBBB,BBBBB)
stc = mAAAAA > mAAAAA[1] ? true : false
stc_sig = stc == true and stc[1] == false ? 1 : stc == false and stc[1] == true ? -1 : 0
stc_long = stc_sig == 1
stc_short = stc_sig == -1
// STC end

// ATR stops
nATRPeriod = input(5,group="ATR Stops")
nATRMultip = input(3.5,group="ATR Stops")

xATR = ta.atr(nATRPeriod)
nLoss = nATRMultip * xATR

xATRTrailingStop = 0.0
xATRTrailingStop := close > nz(xATRTrailingStop[1], 0) and close[1] > nz(xATRTrailingStop[1], 0) ? math.max(nz(xATRTrailingStop[1]), close - nLoss) : close < nz(xATRTrailingStop[1], 0) and close[1] < nz(xATRTrailingStop[1], 0) ? math.min(nz(xATRTrailingStop[1]), close + nLoss) : close > nz(xATRTrailingStop[1], 0) ? close - nLoss : close + nLoss

pos = 0
pos := close[1] < nz(xATRTrailingStop[1], 0) and close > nz(xATRTrailingStop[1], 0) ? 1 : close[1] > nz(xATRTrailingStop[1], 0) and close < nz(xATRTrailingStop[1], 0) ? -1 : nz(pos[1], 0)

atr_sig = pos == -1 ? false : true
// ATR stops end

// ma
ma_len = input(200, title="MA Length", group="Moving Average")
ma = ta.sma(close, 200)
ma_sig = close < ma ? false : true
// ma end

// strategy entries
tp_mult = input(2, title="Take Profit ATR Multiplier", group="Strategy")
sl_mult = input(1, title="Stop Loss ATR Multiplier", group="Strategy")
early_stop = input(true, title="Close position when ATR changes color")

atr_stop = if close < xATRTrailingStop
    close - (close - xATRTrailingStop) * sl_mult
else
    close + (xATRTrailingStop - close) * sl_mult

longCondition = atr_sig == true and stc_sig == 1 and ma_sig == true
shortCondition = atr_sig == false and stc_sig == -1 and ma_sig == false

if (longCondition)
    strategy.entry("Long", strategy.long)
    strategy.exit("Exit Long", "Long", limit=close + xATR * tp_mult, stop=atr_stop)
else if atr_sig == false and early_stop
    strategy.close("Long")

if (shortCondition)
    strategy.entry("Short", strategy.short)
    strategy.exit("Exit Short", "Short", limit=close - xATR * tp_mult, stop=atr_stop)
else if atr_sig == true and early_stop
    strategy.close("Short")
    
// plot stuff
atr_color = pos == -1 ? color.red: pos == 1 ? color.green : color.blue
plot(atr_stop, title="ATR Stop", color=atr_color)

ma_color = ma_sig ? color.green : color.red
plot(ma, title="Moving Average", color=ma_color)

stc_color = stc_long ? color.green : color.red
plotshape(stc_long, style=shape.triangleup, color=stc_color, title="STC Long Signal", size=size.tiny)
plotshape(stc_short, style=shape.triangledown, color=stc_color, title="STC Short Signal", size=size.tiny)
// plot stuff end