English Español Deutsch 日本語
preview
Estratégia de Bill Williams com e sem outros indicadores e previsões

Estratégia de Bill Williams com e sem outros indicadores e previsões

MetaTrader 5Exemplos | 9 outubro 2024, 10:30
54 0
Javier Santiago Gaston De Iriarte Cabrera
Javier Santiago Gaston De Iriarte Cabrera

Introdução

Bill Williams é um trader, escritor e psicólogo reconhecido dos EUA, que ganhou destaque por suas contribuições à negociação e análise financeira. Durante sua vida de trader, ele desenvolveu indicadores e várias estratégias de negociação que foram utilizadas por muitos traders.

Bill Williams possui um doutorado em Psicologia. Talvez por isso tenha estudado o sentimento do mercado. Assim, uma abordagem ampliada pode ser implementada com um script de análise de sentimento usando IA para avaliar o sentimento dos traders, coletando dados de mercados na web, como plataformas de redes sociais. No final do artigo, haverá um exemplo de análise de sentimento aplicada a notícias de mercado.

O histórico psicológico de Bill Williams o ajudou a adaptar conceitos psicológicos à negociação. Ele estudou os mercados sob uma perspectiva humana, tentando entender como as emoções afetam os traders e suas negociações. Tendo uma visão holística do mercado, Bill Williams acreditava que o mercado era caótico e que os mercados deveriam ser estudados e negociados levando isso em consideração. Para estudar o mercado, ele sugeriu certos indicadores, que estudaremos neste artigo.

Esta é uma imagem do EA com os indicadores e osciladores que usaremos:

Osciladores e Indicadores de Bill Williams

A imagem mostra três indicadores: O Indicador Alligator, o Oscilador Awesome (AO) e os Fractais. Todos esses indicadores juntos refletem o comportamento humano e o mercado caótico.


O Indicador Alligator

O Indicador Alligator é composto por três MAs, a Mandíbula (linha azul), Dentes (linha vermelha) e Lábios (linha verde). Este indicador foi projetado para identificar fases de sonolência e tempo de despertar, refletindo o comportamento humano, pois o mercado tem fases em que está adormecido (baixa atividade), seguidas por uma fase de despertar (atividade intensa). Os mercados têm fases de consolidação seguidas de fases de tendência. O Alligator ajuda a identificar quando o mercado está adormecido para evitar negociações, pois os traders obtêm benefícios da alta volatilidade do mercado.

Na fase de baixa atividade, o Indicador Alligator tem suas linhas muito próximas e entrelaçadas.

Na fase de alta atividade, o Indicador Alligator tem suas linhas separadas, indicando que o mercado despertou, seguido de uma tendência.

sono e despertar

Nota: Como você pode ver na imagem, a estratégia tenta obter uma posição vendida em uma tendência de alta para segui-la. Há também mais possibilidades de ajustar a estratégia; você pode fazer a ordem quando o Indicador Alligator cruza e quando o AO vai de abaixo para acima de 0 e obtém uma corrida mais longa.

Na fase de sono, os traders parecem relutantes em negociar, esperando novos dados ou o surgimento de algo que cause uma tendência de mercado. A fase de sono é quando os traders não devem tomar decisões até que possam ver claramente para onde o mercado está indo. Eles devem estar atentos às direções de movimento do mercado, que se tornam visíveis quando ele desperta e mostra a próxima tendência.

Assim, na fase de sono, as linhas tendem a ficar próximas umas das outras e mover-se lateralmente. Assim, o indicador diz que não há tendência, e é melhor não entrar em negociações.

Quando as linhas começam a se separar, isso significa maior atividade. Se a linha verde está acima da vermelha e da azul, há uma tendência de alta; se a linha verde está abaixo da vermelha e da azul, isso significa uma tendência de baixa. Ambas as situações significam que é o momento perfeito para entrar no mercado.

Verde == Lábios

Vermelho == Dentes

Azul == Mandíbula


O que o Indicador Alligator tem em comum com a Psicologia?

As MAs são a média dos preços médios (ex: 2+3 / 2 = 2.5), mas suavizando as flutuações dos preços e levando mais em consideração os preços mais recentes, para que as flutuações tenham menos peso. Isso permite ter uma visão melhor da tendência. Isso é muito humano, tentando ver com clareza as coisas mais importantes entre o ruído existente no mercado.


O Oscilador Awesome (AO)

O AO mostra a diferença entre a SMA de 5 períodos e a SMA de 34 períodos, usando os pontos médios de ((Máximo + Mínimo) / 2).

A diferença entre duas SMAs com dois períodos diferentes mostra o impulso do mercado: a SMA curta mede os impulsos ou mudanças rápidas do mercado, e a SMA longa mede as tendências. Isso é semelhante aos humanos, que têm impulsos curtos e, no longo prazo, uma tendência.

O impulso: O AO mede a força do impulso do mercado; um AO positivo significa um impulso positivo, e a cruz para o negativo significa o oposto.



Os Fractais

Os fractais, como definidos por Bill Williams, são uma série de cinco velas que têm requisitos específicos para serem classificadas como Fractais de Alta ou Baixa.

  • Um Fractal de Alta é aquele que tem um valor mínimo inferior aos mínimos das duas velas anteriores e das duas velas seguintes.
  • Um Fractal de Baixa é o oposto; ele tem um valor máximo superior aos máximos das duas velas anteriores e das duas velas seguintes.

Os fractais identificam possíveis pontos onde o mercado pode mudar de direção. A psicologia por trás dos fractais é que eles refletem pontos-chave de suporte e resistência. Os traders identificam esses pontos para antecipar mudanças de direção com base no comportamento coletivo dos participantes do mercado.

Williams acreditava que os mercados financeiros eram sistemas caóticos influenciados pelo comportamento humano. Ele acreditava que os participantes do mercado agem com base em emoções e comportamentos psicológicos, que criam padrões que parecem aleatórios, mas que têm bases estruturais subjacentes e identificáveis.

Ao aplicar psicologia aos seus indicadores, isso ajudou os traders a entender emoções humanas como esperança, medo, ganância, entre outras, que afetam as decisões de negociação. Tendências e Consolidações refletem a psicologia humana de períodos de atividade e relaxamento.

Vamos para a estratégia usada. No primeiro código, usaremos fractais, AO e o Indicador Alligator.

As condições para fazer uma compra são mostradas abaixo (muito claras a partir do código). Lembre-se, [0] é o local atual naquele instante, e [1] é a posição menos 1:

alligatorLips[1] > alligatorTeeth[1] && alligatorTeeth[1] > alligatorJaw[1] && ao[1] > 0 && ao[1] > ao[2] && fractalsUp[1] != 0 && PositionsTotal()==0

As condições para venda são estas:

alligatorLips[1] < alligatorTeeth[1] && alligatorTeeth[1] < alligatorJaw[1] && ao[1] < 0 && ao[1] < ao[2] && fractalsDown[1] != 0 && PositionsTotal()==0

Como exemplo de estratégias baseadas nos indicadores de Bill Williams, podemos usar cruzamentos do AO de positivo para negativo e vice-versa. Você pode tentar mais possibilidades e modificar o código como quiser. Por favor, deixe um comentário na discussão do artigo se você conseguiu obter resultados muito melhores nos mesmos períodos usados no Testador de Estratégia MetaTrader 5.


As condições para fechar as ordens são as seguintes.

Para posições de compra:

ao[0] < 0 || (alligatorLips[1] < alligatorTeeth[1] && alligatorTeeth[1] < alligatorJaw[1])

Para posições de venda:

ao[0] > 0 || (alligatorLips[1] > alligatorTeeth[1] && alligatorTeeth[1] > alligatorJaw[1])

O código completo está disponível no arquivo Bill Williams Strategy.mq5 anexado ao artigo.

Aqui eu compartilho os resultados que recebi no testador.

Eu usei as seguintes entradas e configurações:

Configurações v1

entradas v1

gráfico v1

Teste de retaguarda v1


Ok, esses resultados não parecem muito bons, mas essa estratégia parece funcionar em outros períodos de tempo, então, manteremos essa estratégia e tentaremos obter melhores resultados adicionando outros indicadores ou/e previsões.

Como essa estratégia evoluiria se usássemos ADX junto com ela? Com ADX, ela deve "ver" melhor os padrões de tendência, então vamos ver o que precisamos mudar:

 ADXHandle = iADX(Symbol(), Period(), 14);
   if(ADXHandle == INVALID_HANDLE)
     {
      Print("Error initializing ADX indicator: ", GetLastError());
      return INIT_FAILED;
     }
   CopyBuffer(ADXHandle, 0, 0, 3, adx);
if(alligatorLips[1] > alligatorTeeth[1] && alligatorTeeth[1] > alligatorJaw[1] && ao[1] > 0 && ao[1] > ao[2] && fractalsUp[1] != 0 && adx[1] > ADXThreshold && PositionsTotal() == 0)

Agora os resultados são:

gráfico v6

Ainda ruim. Vamos ver se usamos stops baseados em ATR.

gráfico v6 com ATR

backtesting v6 atr


OK, isso parece estar melhor. Agora, e se usarmos deep learning e previsões? Vamos ver os resultados:

gráfico v7 com stops e DL

backtesting v7 with stops and DL

Leve em consideração que o modelo usa 120 valores como passos, então, eu refaria o modelo a cada 120 dias. Assim, os resultados podem ser melhores se o modelo for atualizado com os últimos dias.

A estratégia usa períodos de 8 horas, e o modelo ONNX é configurado para valores de 1 dia. Então, lembre-se, ao alterar o script, aplique Períodos de 1D ao que for necessário. 

Com otimizações ao aplicar previsões de deep learning, temos os seguintes resultados gerais, e quase todos parecem muito bons:

Otimização

Como você pode ver neste gráfico, quase todas as otimizações apresentam Sharpe positivo, isso significa que a estratégia é muito confiável e tem um bom desempenho.

 

Otimizado

Gráfico Otimizado

Note que usamos o período de 8 horas para todos os testes e simulações, mas usamos um período de 1 dia para previsões. O objetivo disso é ter uma previsão nem muito distante nem muito próxima, para que possamos entrar nas tendências. Se você usar previsões muito distantes, ainda entrará nas tendências, mas não entrará nas tendências curtas, então terá menos ordens no teste, o que não é útil para saber se toda a estratégia é boa ou não. Para Stop Losses, usamos ATR. Também adicionamos ADX à estratégia.

O que podemos ver nesta versão otimizada do EA:

  • A estratégia é lucrativa com um lucro líquido total de $847,70 e um alto fator de lucro de 3,85, indicando que a estratégia gera significativamente mais dinheiro em negociações vencedoras do que perde em negociações perdedoras.
  • O fator de recuperação de 4,59 sugere que a estratégia pode se recuperar de perdas relativamente rápido.
  • Tanto AHPR quanto GHPR são 1.0000, indicando nenhuma desvio significativo nos retornos médios e geométricos.
  • O Índice de Sharpe de 3,52 é bastante forte, sugerindo bons retornos ajustados ao risco.
  • As porcentagens de drawdown de saldo e capital são muito baixas, o que implica um risco mínimo de perdas significativas.
No geral, a estratégia parece estar funcionando bem, mantendo a lucratividade com risco controlado.



O que usaremos para criar os modelos ONNX?

Usaremos o script recorrente do Python que sempre uso para esta série de artigos. Está anexado no final do artigo. Só precisamos modificar o símbolo e, se soubermos o que estamos fazendo, podemos modificar o período de tempo ou outras coisas.

Também vou anexar o modelo usado, para que você possa reproduzir meus resultados.

Além disso, vou anexar outro script .py para criar modelos ONNX com correlação e métricas, para saber se o modelo está correto para uso. Os resultados deste script estão aqui:

train_mse=0.000
test_mse=0.000
train_r2=0.994
test_r2=0.970
train_corr=0.997
test_corr=0.989

Com o R² de 97% e uma correlação de teste de 98,9%, agora sabemos que podemos usar este modelo para o EA.

Essas estatísticas significam que, por exemplo, com a correlação de 98,9%, o modelo tem uma precisão de previsão sobre os testes de 1 erro contra 99 previsões corretas. O R² de 97% é o coeficiente de determinação, que é a medida estatística da proporção de variância sobre a variável dependente (neste caso, os preços de fechamento) que é explicada pela variável independente (o modelo). Em outras palavras, o R² expressa o quão bem os valores da previsão do modelo estão ajustados em comparação aos valores reais dos preços.

Um bom resultado para R² é 85%, e um bom resultado para correlação é 95%. Qualquer valor acima disso é considerado um bom resultado, mas você deve tomar cuidado para evitar o overfitting (superajuste).


Se você quiser saber mais sobre Bill Williams, recomendo que leia alguns de seus melhores livros, como:

  • "Trading Chaos" (1995): Este é um de seus livros mais conhecidos, onde ele introduz a teoria do caos nos mercados financeiros e explica os indicadores que usamos neste artigo e como eles podem ser usados como oportunidades para identificar pontos de investimento em negociação.
  • "New Trading Dimensions: How to Profit from Chaos in Stocks, Bonds, and Commodities" (1998): Este livro aprofunda seus métodos e explica novas estratégias mais complexas e avançadas. Ele introduz seus indicadores e mostra como usá-los e combiná-los para obter uma abordagem melhor para os sinais de negociação.
  • "Trading Chaos: Maximize Profits with Proven Technical Techniques" (Segunda edição, 2004): Esta é uma atualização de seu livro original e inclui novas estratégias e novos focos baseados em sua experiência e feedback adicional de traders que usaram suas técnicas.
Ele também deu seminários e cursos que você pode encontrar na internet.


Exemplo de Análise de Sentimento de Notícias de Mercado

Agora, vamos considerar uma análise de sentimento de notícias de mercado usando um exemplo em Python.

Primeiro, você deve instalar essas bibliotecas para Python:

pip install requests beautifulsoup4 textblob

Crie um novo script Python e copie e cole este código:

import requests
from bs4 import BeautifulSoup
from textblob import TextBlob

def get_eurusd_news():
    url = 'https://www.investing.com/currencies/eur-usd-news'
    headers = {'User-Agent': 'Mozilla/5.0'}
    response = requests.get(url, headers=headers)
    soup = BeautifulSoup(response.content, 'html.parser')

    # Encontrar todos los elementos <li> que contienen artículos de noticias
    articles = soup.find_all('li', class_='border-b')
    
    news = []
    for article in articles:
        title_tag = article.find('a', class_='mb-2 inline-block text-sm font-bold leading-5 hover:underline sm:text-base sm:leading-6 md:text-lg md:leading-7')
        
        if title_tag:
            title = title_tag.get_text(strip=True)
            news.append(title)
    
    return news

def analyze_sentiment(news):
    sentiment_results = []
    for article in news:
        analysis = TextBlob(article)
        sentiment = analysis.sentiment.polarity
        sentiment_results.append((article, sentiment))
    
    return sentiment_results

def summarize_sentiment(sentiments):
    positive = sum(1 for _, sentiment in sentiments if sentiment > 0)
    negative = sum(1 for _, sentiment in sentiments if sentiment < 0)
    neutral = len(sentiments) - positive - negative
    
    total = len(sentiments)
    summary = {
        'total': total,
        'positive': positive,
        'negative': negative,
        'neutral': neutral
    }
    
    return summary

news = get_eurusd_news()
if news:
    sentiments = analyze_sentiment(news)
    summary = summarize_sentiment(sentiments)

    for i, (article, sentiment) in enumerate(sentiments, 1):
        sentiment_type = 'Positive' if sentiment > 0 else 'Negative' if sentiment < 0 else 'Neutral'
        print(f"{i}. {article}\n   Sentiment: {sentiment_type} (Polarity: {sentiment})\n")

    print(f"Sentiment Summary: {summary}")
    print(f"Total articles: {summary['total']}, Positive: {summary['positive']}, Negative: {summary['negative']}, Neutral: {summary['neutral']}")
else:
    print("No news articles found for EUR/USD.")

Este script coleta as notícias do Investing.com, lê os títulos e analisa os dados, dando uma pontuação. Todas as notícias se somam e acabam dando uma pontuação total dos artigos, assim, com isso, você pode ver como o mercado se sente sobre um símbolo e isso pode lhe dar uma ideia se está adormecido, em uma tendência ou despertando.

1. O dólar cai levemente, mas permanece no caminho para ganhos semanais significativos
   Sentimento: Neutro (Polaridade: 0.0)

2. Ações europeias são impactadas por sentimento global fraco; Vendas no varejo do Reino Unido despencam
   Sentimento: Negativo (Polaridade: -0.125)

3. Dólar sobe com impulso da atividade empresarial dos EUA
   Sentimento: Positivo (Polaridade: 0.25)

4. Dólar estabiliza após ganhos acentuados pós-atas do Fed; libra mantém força
   Sentimento: Negativo (Polaridade: -0.125)

5. Ações europeias em alta; foco nos lucros da Nvidia e dados do PMI
   Sentimento: Positivo (Polaridade: 0.125)

6. Dólar sobe contra euro à medida que atas do Fed sustentam
   Sentimento: Positivo (Polaridade: 0.25)

7. Dólar estável antes das atas do Fed, libra ganha força com a divulgação do CPI
   Sentimento: Positivo (Polaridade: 0.16666666666666666)

8. Espera-se que a recuperação do EUR/USD persista, diz BofA
   Sentimento: Negativo (Polaridade: -0.1)

9. Dólar firme à medida que autoridades do Fed pedem paciência nos cortes de juros
   Sentimento: Negativo (Polaridade: -0.2)

10. Dólar estável; falas do Fed podem fornecer impulso
   Sentimento: Positivo (Polaridade: 0.16666666666666666)

Resumo do Sentimento: {'total': 10, 'positivo': 5, 'negativo': 4, 'neutro': 1}
Total de artigos: 10, Positivo: 5, Negativo: 4, Neutro: 1


Conclusão

Embora a Estratégia de Bill Williams seja conhecida por ser mais lucrativa do que podemos ver neste teste, conseguimos obter melhores resultados com algumas modificações e adicionando previsões de deep learning com outro período. Ao adicionar previsões à estratégia, conseguimos torná-la mais estável e reduzir erros ao tentar determinar se o mercado está em alta ou em baixa. Com o ADX adicionado, ajudamos o EA a tomar decisões para tendências de longo prazo, e ao adicionar ATR, conseguimos tomar melhores decisões com os riscos de lote.

Este não é um EA completo, então, se você quiser ou precisar negociar com ele, deve finalizá-lo ou pedir a alguém, por exemplo no Freelance, para finalizá-lo.

Em seguida, estudarei as estratégias e tentarei levá-las ao próximo nível, se possível, usando outros indicadores ou até mesmo deep learning. Se você achar isso interessante, por favor, me avise e dê feedback sobre este artigo ou outros dos quais queira saber.

Provavelmente farei outro artigo com os indicadores de Bill Williams usando as estratégias de seu segundo livro: "New Trading Dimensions: How to Profit from Chaos in Stocks, Bonds, and Commodities" (1998). Por favor, me avise se achar isso interessante ou se deseja que outras coisas sejam implementadas como um EA.

Além disso, se quiser um artigo sobre uma estratégia específica, por favor, me avise escrevendo para mim ou deixando um comentário nas discussões do artigo. Mais cedo ou mais tarde, criarei esse artigo (se os editores também acharem interessante).

Espero que tenha gostado deste artigo.


Traduzido do Inglês pela MetaQuotes Ltd.
Artigo original: https://www.mql5.com/en/articles/14975

Caminhe em novos trilhos: Personalize indicadores no MQL5 Caminhe em novos trilhos: Personalize indicadores no MQL5
Vou agora listar todas as possibilidades novas e recursos do novo terminal e linguagem. Elas são várias, e algumas novidades valem a discussão em um artigo separado. Além disso, não há códigos aqui escritos com programação orientada ao objeto, é um tópico muito importante para ser simplesmente mencionado em um contexto como vantagens adicionais para os desenvolvedores. Neste artigo vamos considerar os indicadores, sua estrutura, desenho, tipos e seus detalhes de programação em comparação com o MQL4. Espero que este artigo seja útil tanto para desenvolvedores iniciantes quanto para experientes, talvez alguns deles encontrem algo novo.
Integre seu próprio LLM no EA (Parte 3): Treinando seu próprio LLM com CPU Integre seu próprio LLM no EA (Parte 3): Treinando seu próprio LLM com CPU
Com o rápido desenvolvimento da inteligência artificial hoje em dia, os modelos de linguagem (LLMs) são uma parte importante da IA, então devemos pensar em como integrar LLMs poderosos ao nosso trading algorítmico. Para a maioria das pessoas, é difícil ajustar esses modelos poderosos de acordo com suas necessidades, implantá-los localmente e depois aplicá-los ao trading algorítmico. Esta série de artigos adotará uma abordagem passo a passo para alcançar esse objetivo.
Está chegando o novo MetaTrader 5 e MQL5 Está chegando o novo MetaTrader 5 e MQL5
Esta é apenas uma breve resenha do MetaTrader 5. Eu não posso descrever todos os novos recursos do sistema por um período tão curto de tempo - os testes começaram em 09.09.2009. Esta é uma data simbólica, e tenho certeza que será um número de sorte. Alguns dias passaram-se desde que eu obtive a versão beta do terminal MetaTrader 5 e MQL5. Eu ainda não consegui testar todos os seus recursos, mas já estou impressionado.
Reimaginando Estratégias Clássicas: Petróleo Bruto Reimaginando Estratégias Clássicas: Petróleo Bruto
Neste artigo, revisitamos uma estratégia clássica de negociação de petróleo bruto com o objetivo de aprimorá-la, utilizando algoritmos de aprendizado de máquina supervisionado. Vamos construir um modelo de mínimos quadrados para prever os preços futuros do petróleo Brent, com base na diferença entre os preços do Brent e do WTI. Nosso objetivo é identificar um indicador líder de futuras mudanças nos preços do Brent.