Estratégia de negociação de tendências combinadas STC MA ATR


Data de criação: 2023-10-17 14:34:10 última modificação: 2023-10-17 14:34:10
cópia: 0 Cliques: 845
1
focar em
1617
Seguidores

Estratégia de negociação de tendências combinadas STC MA ATR

Visão geral

A estratégia utiliza um conjunto de indicadores técnicos de ações, STC, média móvel MA e média real de flutuação ATR, combinado com vários indicadores técnicos para determinar a tendência, permitindo uma negociação de seguimento de tendência mais estável.

Princípio da estratégia

  1. O indicador STC determina a reversão da tendência. O indicador usa a linha rápida para desacelerar a linha, depois faz um segundo processamento de suavização, formando um sinal de tendência consistente. Quando o indicador atravessa o eixo 0 é um sinal de compra e quando atravessa o eixo 0 é um sinal de venda.

  2. A média móvel MA determina a direção da tendência. Quando o preço da ação atravessa a MA acima, é considerado como ainda em alta no mercado, para um sinal de posse múltipla. Quando o preço atravessa a MA abaixo, é considerado como um movimento de queda, para um sinal de posse vazio.

  3. O indicador ATR define um stop loss. O ATR pode ser ajustado dinamicamente de acordo com a volatilidade do mercado. O ATR é usado como sinal de direção de negociação.

  4. A estratégia usa o STC para inverter o ponto principal de compra e venda, e o MA para auxiliar a determinação da tendência, e o ATR para fazer um stop loss. Quando o STC emite um sinal de compra, se o MA também estiver em alta tendência, o ATR estará em alta, e abrirá mais uma ordem. Se o STC emite um sinal de venda, se o MA estiver em baixa tendência, o ATR estará em baixa, e abrirá uma ordem vazia.

Análise de vantagens

  1. A estratégia usa vários indicadores para determinar tendências e pontos de reversão, aumentando a precisão dos sinais de negociação.

  2. O indicador STC capta os sinais de reversão, evitando que as negociações sejam bloqueadas. O indicador MA filtra os sinais de reversão instáveis, garantindo que as principais tendências sejam seguidas.

  3. O indicador ATR pode definir um stop loss baseado na volatilidade do mercado, evitando grandes perdas. E usa o ATR como um sinal auxiliar para julgar a tendência.

  4. A combinação de indicadores múltiplos pode gerar uma forte capacidade de rastreamento de tendências, e a retrospectiva histórica tem uma boa capacidade de lucratividade estável.

Análise de Riscos

  1. O indicador STC tem um atraso de tempo, podendo perder o melhor momento para a reversão de preços.

  2. O indicador MA tende a ficar para trás quando os preços mudam drasticamente, podendo gerar um sinal de erro.

  3. O ATR stop pode ser exibido em segundos e deve ser relaxado de acordo com o ATR multiplicador, ou temporariamente desligado em grandes tendências.

  4. Embora a combinação de vários indicadores aumente a taxa de vitória, ela também aumenta a chance de desencadear o stop loss. Os parâmetros devem ser adequadamente ajustados para reduzir o stop loss desnecessário.

Direção de otimização

  1. Ajustar os parâmetros do STC para encontrar combinações de parâmetros que respondam mais rapidamente à inversão

  2. Optimizar os parâmetros do ciclo MA para melhor acompanhar as tendências

  3. Efeitos de estratégias de testes com diferentes parâmetros de ATR

  4. Tentar substituir o STC por outros indicadores para encontrar melhores correspondências

  5. Adição de algoritmos de aprendizagem de máquina para otimizar automaticamente vários parâmetros

  6. Aumentar o julgamento sobre as tendências do grande ciclo, distinguindo as diferentes fases do grande ciclo

Resumir

A estratégia STC MA ATR usa três indicadores para capturar os pontos de reversão de tendência e manter a estabilidade de negociação. A combinação de indicadores filtra os falsos sinais e controla o risco de parada de perda.

Código-fonte da estratégia
/*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