Sistema de Pontos de Equilíbrio de Tendência de Welles Wilder

Autora:ChaoZhang, Data: 23 de Fevereiro de 2023 15:30:58
Tags:

Resumo

Este é o sistema de ponto de equilíbrio de tendência original criado por Welles Wilder em 1978, com regras encontradas em seu livro New Concepts in Technical Trading Systems.

Estratégia lógica

Os principais componentes e regras são:

  1. Indicador de impulso: Calcula a variação de preços ao longo de N períodos para determinar a tendência.

  2. Condição longa: aumento do ímpeto em relação ao período corrente e aos dois períodos anteriores.

  3. Condição curta: queda do ímpeto em dois períodos, atual e anterior.

  4. Stop loss: preço médio do dia anterior ± intervalo do dia anterior.

  5. Tome lucro: 2 * preço médio do dia anterior - baixo (longo) ou alto (curto) do dia anterior.

  6. Saídas com parada ou alvo após a entrada.

A estratégia utiliza diretamente o ímpeto para a identificação de tendências e uma abordagem estruturada stop/target para controlar o risco e formar um sistema robusto de tendência.

Vantagens

Em comparação com outras estratégias de tendência, as principais vantagens são:

  1. Calculo de momento simples, fácil de implementar.

  2. Combo de filtros de ruído multi-período.

  3. A estrutura de parada/alvo é robusta.

  4. Limites de perdas por transacção.

  5. A retirada é controlada, a captação de lucro é clara.

  6. Fácil de operar com flexibilidade.

  7. Parâmetros ajustáveis para diferentes mercados.

  8. Intuitiva e lógica simples.

  9. Estabilidade geral e controlo de riscos.

Riscos

No entanto, os riscos são:

  1. O atraso de impulso pode deixar de virar.

  2. O desempenho depende do ajuste dos parâmetros.

  3. Sem filtro de volume, o risco de ficar preso.

  4. As configurações de parada/alvo são rígidas, podem falhar na prática.

  5. Período de backtest limitado, necessária verificação da robustez a longo prazo.

  6. O tamanho fixo carece de ajuste dinâmico.

  7. Espaço de otimização limitado, alfa incerto.

  8. Precisa de monitorizar as relações recompensa/risco e a adequação da curva.

Melhorias

À luz da análise, as melhorias podem incluir:

  1. A testar diferentes cálculos de momento.

  2. Adicionando confirmação de volume.

  3. Otimizando parâmetros de parada/alvo.

  4. Introdução de aprendizagem de máquina para sinais dinâmicos.

  5. Avaliação da robustez em todos os produtos e prazos.

  6. Construção de modelos dinâmicos de dimensionamento de posição.

  7. Estabelecimento do limite máximo tolerável de utilização.

  8. Otimizar as estratégias de gestão de riscos.

  9. Testes posteriores contínuos para evitar a sobreajuste.

Conclusão

Em resumo, este é um sistema relativamente simples e direto de tendência, mas as otimizações contínuas e testes de robustez são fundamentais para qualquer estratégia permanecer adaptável.


/*backtest
start: 2023-09-15 00:00:00
end: 2023-09-22 00:00:00
period: 5m
basePeriod: 1m
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/
// © 2020 X-Trader.net

//@version=3
strategy("Trend Balance Point System by Welles Wilder", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, initial_capital = 10000)

MomPer = input(2, "Momentum Period")

isLong = strategy.position_size > 0
isShort = strategy.position_size < 0

longTrigger = mom(close, MomPer)[1] > mom(close, MomPer)[2] and mom(close, MomPer)[1] > mom(close, MomPer)[3]
shortTrigger = mom(close, MomPer)[1] < mom(close, MomPer)[2] and mom(close, MomPer)[1] < mom(close, MomPer)[3]

longEntry = (not isLong) and longTrigger 
shortEntry = (not isShort) and shortTrigger

longStop = valuewhen(longEntry, ((high[1]+low[1]+close[1])/3 - (high[1]-low[1])), 0)
longTP = valuewhen(longEntry, (2*(high[1]+low[1]+close[1])/3 - low[1]), 0)
shortStop = valuewhen(shortEntry, ((high[1]+low[1]+close[1])/3 + (high[1]-low[1])), 0)
shortTP = valuewhen(shortEntry, (2*(high[1]+low[1]+close[1])/3 - high[1]), 0)

strategy.entry(id = "Long", long = true, when = longEntry)
strategy.exit("Exit Long", "Long", profit = longTP, loss = longStop, when = isLong) 

strategy.entry(id = "Short", long = false, when = shortEntry)
strategy.exit("Exit Short", "Short", profit = shortTP, loss = shortStop, when = isShort) 



Mais.