Estratégia dinâmica de equilíbrio intradiário de curto e longo prazo que combina média móvel e supertendência

Autora:ChaoZhang, Data: 2024-03-11 11:33:47
Tags:

img

Estratégia geral

A Estratégia Dinâmica de Equilíbrio Intradiário de Curto Prazo Combinando Média Móvel e Supertendência é uma estratégia quantitativa de negociação escrita em Pine ScriptTM 5. A estratégia utiliza o indicador MACD e o indicador Supertendência para capturar oportunidades de tendência no mercado, enquanto controla o risco por meio de comutação dinâmica de curto prazo e stop-loss/take-profit.

Princípios de estratégia

O núcleo desta estratégia é combinar o indicador MACD e o indicador Supertrend para determinar a direção da tendência do mercado.

  1. Utilize o indicador Supertrend para determinar a direção da tendência atual.
  2. Use o histograma do indicador MACD para julgar a mudança de momento. Quando o histograma MACD passa de negativo para positivo, ele indica um aumento no momento ascendente; quando o histograma MACD passa de positivo para negativo, ele indica um aumento no momento descendente.
  3. Abrir uma posição longa quando tanto o indicador Supertrend como o indicador MACD emitem um sinal longo; abrir uma posição curta quando tanto o indicador Supertrend como o indicador MACD emitem um sinal curto.
  4. Fechar todas as posições num horário fixo (por exemplo, às 15:15) em cada dia de negociação para evitar o risco overnight.
  5. Reabrir posições num novo dia de negociação (por exemplo, às 9h30), de acordo com as indicações do indicador Supertrend e do indicador MACD.

Através de uma comutação dinâmica longa-curta, a estratégia pode adaptar-se às mudanças no mercado e captar oportunidades de tendência.

Vantagens da estratégia

  1. Seguimento de tendências: Combinando o indicador Supertrend e o indicador MACD, a estratégia pode capturar efetivamente as oportunidades de tendências no mercado.
  2. Mudança dinâmica de longo-curto: A estratégia ajusta dinamicamente a direção da posição de acordo com as alterações dos indicadores, adaptando-se às alterações do mercado.
  3. Controle de risco: através do fechamento de posições a tempo fixo e da comutação dinâmica de long-short, a estratégia pode controlar o risco relativamente bem.
  4. Flexibilidade dos parâmetros: Os parâmetros da estratégia (como o período de ATR, o fator, etc.) podem ser ajustados de acordo com as características do mercado e as preferências pessoais, proporcionando uma certa flexibilidade.

Riscos estratégicos

  1. Risco de falha do indicador: em alguns ambientes de mercado, o indicador MACD e o indicador Supertrend podem dar sinais falsos, levando ao fracasso da estratégia.
  2. Risco de otimização de parâmetros: o desempenho da estratégia depende da escolha de parâmetros, e parâmetros inadequados podem levar a um desempenho fraco da estratégia.
  3. Risco de stop-loss: a estratégia não possui uma lógica de stop-loss explícita, o que pode conduzir a perdas significativas em ambientes de mercado extremos.
  4. Risco overnight: Embora a estratégia feche posições intradiárias, pode ainda enfrentar o risco de gaps overnight ao abrir posições overnight.

Orientações de otimização

  1. Adicionar uma lógica de stop-loss: adicionar uma lógica de stop-loss explícita à estratégia, como stop-loss de percentagem fixa ou ATR stop-loss, para controlar ainda mais o risco.
  2. Optimização de parâmetros: Otimização de parâmetros-chave da estratégia, tais como período ATR, fator, parâmetros MACD, etc., para melhorar a robustez e rentabilidade da estratégia.
  3. Filtragem de sinais: adicionar mais condições de filtragem de sinais, como ruptura de preço, volume de negociação, etc., para melhorar a confiabilidade dos sinais.
  4. Testes em vários mercados: testar a estratégia em diferentes mercados e instrumentos para avaliar a sua aplicabilidade e estabilidade.

Resumo

A estratégia de equilíbrio de curto prazo intradiário dinâmico combinando média móvel e supertrend é uma estratégia de negociação baseada no rastreamento de tendências e julgamento de momento. Ao combinar o indicador Supertrend e o indicador MACD e ajustar dinamicamente a direção da posição, a estratégia pode se adaptar às mudanças no mercado e capturar oportunidades de tendência.

No entanto, a estratégia também apresenta alguns riscos e deficiências, como risco de falha do indicador, risco de otimização de parâmetros, risco de stop-loss, etc. Para melhorar ainda mais a estratégia, pode-se considerar a adição de lógica de stop-loss, otimização de parâmetros, adição de mais condições de filtragem de sinal e testes em vários mercados.

Em geral, a estratégia de equilíbrio de curto prazo intradiário dinâmico que combina média móvel e supertendência fornece uma maneira de pensar para rastreamento de tendências e controle de riscos. Na aplicação prática, os traders devem fazer ajustes e otimizações apropriadas à estratégia com base em suas próprias preferências de risco e características do mercado, e usá-la com cautela. As estratégias de negociação quantitativas podem fornecer ideias de negociação, mas o mercado está em constante mudança, e nenhuma estratégia pode garantir lucros. Os investidores devem entender os princípios e riscos da estratégia, controlar razoavelmente as posições, estritamente parar as perdas e sempre permanecer alertas para sobreviver no mercado a longo prazo.


/*backtest
start: 2023-03-05 00:00:00
end: 2024-03-10 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © smj31071995

//@version=5
strategy("EQ - INTRA - Samsuga supertrend prod", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, calc_on_every_tick = false)


atrPeriod = input.int(7,    "ATR Length", minval = 1)
factor =    input.float(1.0, "Factor",     minval = 0.01, step = 0.01)
st_tf = "3"
macd_tf="30"

[supertrend, direction] =request.security(symbol = syminfo.tickerid, timeframe = st_tf,expression =  ta.supertrend(factor, atrPeriod),lookahead=barmerge.lookahead_on)

supertrend := barstate.isfirst ? na : supertrend
upTrend =    plot(direction <= 0 ? supertrend : na, "Up Trend",   color = color.green, style = plot.style_linebr)
downTrend =  plot(direction <= 0 ? na : supertrend, "Down Trend", color = color.red,   style = plot.style_linebr)
bodyMiddle = plot(barstate.isfirst ? na : (open + close) / 2, "Body Middle",display = display.none)
longcondition = direction[1] > direction 
shortCondition = direction[1] < direction 

macdp1 = 2
macdp2=8
macdp3=4

[macdLine, signalLine, histLine] =request.security(symbol = syminfo.tickerid, timeframe = macd_tf,expression = ta.macd(close,macdp1,macdp2,macdp3),lookahead=barmerge.lookahead_on)
// log.info(str.tostring(syminfo.tickerid)+str.tostring(histLine[0]))
timezone_input = input("Asia/Kolkata", title="Timezone")
// log.info(timezone_input)
if(hour==15 and minute==15)
    strategy.close_all(comment = "DAY EXIT",alert_message = "X-D")
else if(hour==9 and minute==30)
    if(longcondition or histLine[1]>0)
        strategy.entry(id= "Long", direction=strategy.long,  comment = "DL",alert_message = "L")
    else if(shortCondition or histLine[1]<0) 
        strategy.entry(id= "Short", direction=strategy.short,  comment = "DS",alert_message = "S")
else
    if(longcondition)
        strategy.close("Short",comment = "X-S", alert_message = "X-S")
        if(histLine[1]>0)    
            strategy.entry(id= "Long", direction=strategy.long,  comment = "L",alert_message = "L")
    else if(shortCondition) 
        strategy.close("Long",comment = "X-L",alert_message = "X-L")
        if(histLine[1]<0)    
            strategy.entry(id= "Short", direction=strategy.short,  comment = "S",alert_message = "S")


// plot(macdLine,   title = "MACD",   color = #2962FF)
// plot(signalLine, title = "Signal", color = #FF6D00)
// 8, 21, 5
// 8,13,9
// 12,26,9
//  1--> 3, 17, 5
// 3, 10, 16
// log.info(str.tostring(syminfo.tickerid)+str.tostring(histLine[0]))
//  /////////----------------METHOD 1-----------------////////////////
// if(longcondition)
//     if(strategy.opentrades>0)
//         strategy.close("Long","Prev Exit", immediately = true)
//     if( histLine[0] > 0.1)
//         strategy.entry(id= "Long", direction=strategy.long,  comment = "update long")

    
// else if(shortCondition and strategy.openprofit<=0.1) 
//     strategy.close("Long",comment = "Close",immediately = true)
//  /////////----------------METHOD 2-----------------////////////////
// if(longcondition)
//     if(histLine[0] > 0)
//         strategy.entry(id= "Long", direction=strategy.long,  comment = "update long" )
//         strategy.exit("Long", loss = close*0.2)


    
// else if(shortCondition ) 
//     strategy.close("Long",comment = "Close",immediately = true)
//  /////////----------------METHOD 3-----------------////////////////



Mais.