STC MA ATR Estrategia de negociación de tendencias integrada

El autor:¿ Qué pasa?, Fecha: 2023-10-17 14:34:10
Las etiquetas:

img

Resumen general

Esta estrategia combina los indicadores técnicos STC, Moving Average MA y Average True Range ATR para juzgar las tendencias e implementar operaciones de seguimiento de tendencias relativamente estables.

Principio de la estrategia

  1. El indicador STC juzga la inversión de tendencia. Utiliza la línea rápida menos la línea lenta, luego procesa el suavizado secundario, formando señales de tendencia consistentes. La señal de compra viene cuando el indicador cruza por encima del eje 0 y la señal de venta por debajo del eje 0.

  2. Cuando el precio de una acción se cruza por encima de MA, indica una tendencia alcista, dando una señal de mantenimiento de posición larga.

  3. El indicador ATR establece el stop loss y el take profit. ATR puede ajustar dinámicamente el stop loss y el take profit en función de la volatilidad del mercado. Y ATR actúa como una señal para la dirección de la negociación en sí, subiendo en tendencia alcista y bajando en tendencia bajista.

  4. La estrategia toma las señales STC como el momento principal para la entrada, utiliza MA como juicio de tendencia auxiliar y ATR para detener la pérdida y obtener ganancias.

Análisis de ventajas

  1. La estrategia combina múltiples indicadores para juzgar las tendencias y los puntos de reversión, mejorando la precisión de las señales comerciales.

  2. STC puede capturar señales de reversión y evitar quedar atrapado en tendencias.

  3. El ATR establece un stop loss dinámico y toma ganancias basado en la volatilidad del mercado, evitando grandes pérdidas.

  4. La combinación de múltiples indicadores forma una fuerte capacidad de seguimiento de tendencias.

Análisis de riesgos

  1. El STC tiene un retraso de tiempo, que puede perder el momento óptimo para la reversión del precio.

  2. El MA tiende a retrasarse durante las violentas oscilaciones de precios, lo que puede generar señales erróneas.

  3. El multiplicador ATR debe aflojarse o desactivarse temporalmente durante las grandes tendencias.

  4. Los parámetros deben ajustarse para evitar pérdidas innecesarias.

Direcciones de optimización

  1. Ajuste los parámetros de STC para encontrar combinaciones de respuesta más rápidas para la inversión.

  2. Optimizar el parámetro del período de MA para un mejor seguimiento de la tendencia.

  3. Impactos de ensayo de diferentes múltiplos de ATR.

  4. Pruebe a reemplazar STC con otros indicadores para una mejor coincidencia.

  5. Introducir algoritmos de aprendizaje automático para la optimización automática de múltiples parámetros.

  6. Considere las grandes tendencias del ciclo y distinga las diferentes etapas.

Resumen de las actividades

La estrategia STC MA ATR combina 3 indicadores para capturar puntos de inversión de tendencia para un comercio estable de seguimiento de tendencia. Las combinaciones de indicadores filtran señales falsas y controlan los riesgos con stop loss / take profit. Tiene una fuerte robustez y estabilidad. Se pueden lograr mejoras adicionales a través de la optimización de parámetros e introducción de algoritmos. En general, es una opción de estrategia confiable y moderada.


/*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

Más.