Este artigo apresenta uma estratégia de negociação chamada
O núcleo desta estratégia é usar o indicador ZigZag para localizar pontos extremos dos preços e exibir tendências de preços.
Calcule a média móvel exponencial EMA dos preços de fechamento, incluindo três linhas médias móveis: linha rápida, linha média e linha lenta.
Julgue se os preços estão em uma tendência de alta, ou seja, se a linha média atual é superior à linha média da linha K anterior.
Se estiver atualmente em uma tendência ascendente, encontrar o preço mais baixo contado desde o início da onda anterior de pontos baixos dentro do ciclo detectado como o valor de ZigZag.
Se estiver atualmente em tendência descendente, encontrar o preço mais alto contado desde o início da onda anterior de pontos altos dentro do ciclo detectado como o valor de ZigZag.
Assim, o indicador ZigZag que reflete os pontos extremos de flutuações de preços é formado.
Com base nisso, usamos a linha ZigZag como referência para julgar a tendência do preço. Ou seja, quando o preço sobe e quebra a linha do indicador ZigZag, vamos longos; quando o preço cai e quebra a linha do indicador ZigZag, vamos curtos.
As vantagens de utilizar o indicador ZigZag para determinar as tendências de preços e acompanhar os extremos de preços enquanto se estabelecem posições são:
Pode filtrar eficazmente o ruído do mercado e captar as principais tendências.
Os sinais de negociação estabelecidos nas rupturas de novos máximos e mínimos podem lucrar de forma eficiente.
As linhas ZigZag são relativamente suaves, o que pode reduzir os sinais falsos.
Fácil de otimizar estratégias ajustando parâmetros ZigZag.
Os principais riscos desta estratégia são:
A corrida a longo prazo pode ficar presa devido a violentas flutuações no mercado.
Os indicadores ZigZag são sensíveis aos parâmetros. Configurações incorretas podem perder oportunidades de negociação ou gerar sinais falsos. Os parâmetros precisam ser testados e otimizados adequadamente.
As estratégias de rastreamento de tendências dependem mais dos mercados em tendência.
Em resposta aos riscos acima, podemos definir mecanismos de stop loss para controlar perdas individuais; ao mesmo tempo, ajustar o tamanho da posição em vez de procurar uma posição completa; finalmente, combinar diferentes tipos de carteira de estratégia.
Podemos optimizar ainda mais esta estratégia nos seguintes aspectos:
Adicione um mecanismo de stop loss, por exemplo, configure um stop loss móvel ou um stop loss para amplitude de retração do preço.
Combinar com outros indicadores para filtro de posição, por exemplo, melhorar os indicadores de impulso para garantir um impulso suficiente ou os indicadores de volume de negociação para garantir altos volumes de negociação.
Adotar diferentes configurações de parâmetros de acordo com os diferentes ambientes de mercado (como mercados de alta e baixa).
Teste diferentes parâmetros da linha EMA para encontrar a melhor combinação de parâmetros.
Esta estratégia usa o indicador ZigZag para determinar tendências de preços e estabelece posições de rastreamento perto de pontos extremos. Sua vantagem é seguir a tendência de forma eficiente para lucro. Também tem o risco de ser preso. Podemos definir stop loss, otimizar parâmetros e carteira de estratégia comercial para controlar riscos. Esta estratégia é mais adequada para negociação de tendências de médio a longo prazo. Se controlada e combinada adequadamente, pode obter retornos estáveis.
/*backtest start: 2023-12-31 00:00:00 end: 2024-01-07 00:00:00 period: 30m basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy(title = "Noro's ZigTrend Strategy v1.0", shorttitle = "ZigTrend 1.0", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0) //Settings needlong = input(true, defval = true, title = "Long") needshort = input(true, defval = true, title = "Short") capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %") length = input(4) ExtremeDetection = input(4) src = input(close) fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year") toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year") frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month") tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month") fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day") today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day") //ZigZag f_zz(_length, _detection)=> _hls = ema(ema(ema(src, _length), round(_length*0.66)), round(_length*0.33)) _isRising = _hls >= _hls[1] _zigzag = _isRising and not _isRising[1] ? lowest(_detection) : not _isRising and _isRising[1] ? highest(_detection) : na zigzag = f_zz(length, ExtremeDetection) plot(zigzag, color=black, linewidth=2) //Signals up = close > zigzag dn = close < zigzag //Trading lot = 0.0 lot := strategy.position_size != strategy.position_size[1] ? strategy.equity / close * capital / 100 : lot[1] if up strategy.entry("Long", strategy.long, needlong == false ? 0 : lot) if dn strategy.entry("Short", strategy.short, needshort == false ? 0 : lot)