English Русский
preview
Experiência no desenvolvimento de estratégias de negociação

Experiência no desenvolvimento de estratégias de negociação

MetaTrader 5Negociação | 9 agosto 2024, 16:44
30 0
Aleksej Poljakov
Aleksej Poljakov

Introdução

Uma estratégia de negociação é um certo conjunto de regras que orienta o operador. A variedade dessas regras e suas possíveis combinações permitem que o operador elabore sua própria estratégia.

Há tantas estratégias de negociação que, inclusive, classificá-las se torna uma tarefa difícil. Vamos ver que elementos uma estratégia de negociação deve incluir.

  • Instrumento a ser usado e timeframe.
  • Indicadores, filtros, etc.
  • Regras para abertura e fechamento de posições.
  • Gerenciamento de dinheiro e risco.

Além desses elementos, uma estratégia de negociação pode incluir outros parâmetros. Ela pode ter um limite de tempo de operações, por exemplo, com a abertura de posições sendo permitida das 9h às 13h, e os sinais de entrada fora desse intervalo sendo ignorados.

Quanto aos parâmetros da estratégia de negociação, o principal requisito é que sejam lógicos e não apresentem contradições em sua estrutura interna. Proponho supusermos que um operador tenha decidido usar determinado método de gerenciamento de dinheiro. Mais tarde, ele decidiu adicionar um trailing stop à sua estratégia. Esses dois elementos se contradizem. O gerenciamento de dinheiro envolve definir um stop loss e um take profit predeterminados. Com o trailing stop, a posição pode ser fechada antes de o preço atingir o take profit, e o lucro obtido será menor do que o esperado. Para resolver essa contradição, o operador terá de usar um volume de posição fixo ou desistir do trailing stop.

Uma estratégia de negociação deve ser construída com base em uma determinada vantagem estatística. E tal vantagem deve ser duradoura.

Nesse sentido, o teste da estratégia é uma etapa importante. O testador ajuda a avaliar os recursos da estratégia de negociação, suas vantagens e desvantagens e, se necessário, fazer as alterações necessárias. Além disso, ele permite selecionar os parâmetros ideais da estratégia, o que pode melhorar os resultados da negociação.


Estratégia simples

A estratégia de negociação mais simples é aquela baseada em uma média móvel simples. Seu princípio é muito simples: quando o preço cruza a linha do indicador, uma posição é aberta. O tipo de posição depende da direção em que ocorre o cruzamento: se o preço se move de baixo para cima - Buy (comprar), de cima para baixo - Sell (vender). 

Vejamos mais de perto essa estratégia. Primeiro, tentemos responder à dúvida sobre o que é um cruzamento em termos de matemática. Essencialmente, é o rastreamento do sinal da diferença:

Quando essa diferença muda de sinal para o inverso, ocorre o cruzamento.

Agora, tentemos ver essa diferença de uma maneira diferente. Então, o que é a SMA? É a soma dos preços, dividida pela quantidade deles. Por isso, o primeiro passo consiste em transformar a diferença em um denominador comum:

Vamos nos livrar do denominador. Não que ele seja um problema, mas, ao nos livrarmos dele, podemos converter a diferença em números inteiros. E trabalhar com números inteiros é fácil e agradável. Multipliquemos nossa diferença por um coeficiente de escala igual a N, e, em seguida, dividamos pelo valor do ponto. Assim, a forma final da nossa fórmula será a seguinte:

Mas não são as meras diferenças que nos interessam. O que nos interessa é a frequência com que essa diferença ocorre para um determinado símbolo e timeframe. Escolhi o par de moedas EURUSD e o timeframe H1. Assim, fica a estatística com N=24.

Você gosta dessa imagem? Se sua resposta for: "ah, já vi coisa mais bonita", então você não é um operador. Um verdadeiro operador ficará encantado com essa imagem. A primeira coisa que o operador gosta é da assimetria. A segunda é que a distribuição das diferenças não parece ser uniforme.

Façamos uma pequena pausa. Quais pesadelos, na sua opinião, as pessoas comuns têm? Imagino que sejam coisas como vampiros, lobisomens, zumbis, no final das contas. E você sabe o que é o mais terrível para um operador? Distribuição uniforme.

Imagine que proponho um jogo: se cair cara, eu te pago uma quantia; se cair coroa, você me paga. E aí jogamos a moeda com entusiasmo e... esse jogo perde a graça. A moeda é justa, pois cara e coroa aparecem com a mesma frequência (distribuição uniforme). E, portanto, nem você nem eu enriqueceremos com esse jogo. A única solução para essa situação é quebrar a moeda para que um dos lados caia com mais frequência.  Essa manipulação nos permitirá escapar da distribuição uniforme e obter uma mudança nos lucros, alguém começará a ganhar com mais frequência.

Voltemos à nossa estratégia. Bem, as diferenças não se distribuem uniformemente e tendem a valores negativos. Podemos concluir que uma estratégia que usa cruzamentos entre a média móvel e o preço não funciona muito bem. Na versão clássica dessa estratégia, a posição é aberta quando o sinal da diferença muda, ou seja, usa-se o zero como referência. Mas, devido às características da distribuição, em vez de zero, é melhor usar a mediana. Portanto, as posições devem ser abertas apenas quando a diferença ultrapassar o valor mediano.

Essa versão é viável, mas ainda não nos satisfaz completamente. Lembremos que a mediana divide a amostra ao meio, logo, metade da amostra está abaixo da mediana e a outra metade acima dela. Isso significa que, ao atingir a mediana, a diferença pode tanto aumentar quanto diminuir com probabilidade aproximadamente igual.

Procedemos de maneira um pouco diferente e abrimos posições quando a diferença atingir o máximo ou o mínimo. Esses momentos corresponderão ao máximo desvio do preço em relação à SMA. É provável que, depois disso, o preço e a SMA comecem a se aproximar. E, como o indicador é mais inercial ("atrasado", como dizem os operadores), podemos esperar que o preço percorra uma grande distância, o que nos trará lucro.

Primeiro, coletamos os valores das diferenças históricas. Definimos um limite de disparo — por exemplo, usarei os 15% dos valores mais altos e mais baixos. Se a diferença atual for menor que o limite inferior, abro uma posição de Buy. Se a diferença atual for maior que o limite superior, abro uma posição de Sell. O fechamento das posições segue o mesmo princípio, mas com limites ajustados para 45%

(um pouco abaixo da mediana, que é 50%). Se a diferença ultrapassar o limite inferior, fechamos posições Buy. Se a diferença cair abaixo do limite superior, fechamos posições Sell.

As regras da estratégia estão claras. Proponho testarmos no simulador. Escolhi o par EURUSD, timeframe H1, e o período de teste de 01/01/2023 a 31/12/2023. Parâmetros do EA (Expert Advisor) estão no padrão.

Esse é o gráfico de saldo.

Um resultado decente para uma estratégia tão simples, mas você pode melhorar. Primeiro, estabeleça limites separados para posições Buy e Sell. Como a distribuição não é simétrica, isso pode gerar um efeito positivo.

Talvez seja necessário observar não só a diferença, mas também a variação dos valores da média móvel. Por exemplo, se a diferença aumenta enquanto a média móvel diminui, o sinal para abrir a posição pode ser mais forte.


Estratégia mais complexa:

Para gerar sinais de abertura de posições, podemos usar duas SMA com períodos diferentes. No exemplo anterior, usamos o preço atual, que pode ser considerado uma SMA com período 1. A ideia é simples: uma SMA com período maior identifica a tendência principal, enquanto a com período menor identifica mudanças de tendência.

Os cálculos necessários são feitos da mesma forma que na estratégia anterior, mas usamos o valor da SMA com menor período em vez do preço.

O uso de duas SMA permite um ajuste mais preciso dos parâmetros da estratégia. Intuitivamente, a rentabilidade depende não apenas dos níveis de abertura e fechamento das posições, mas também dos períodos das médias. Aqui está o gráfico de saldo para uma das variações.

Adicionar outro parâmetro permite incluir um filtro adicional na estratégia, que atuará apenas na abertura de posições. Por exemplo, abrir posições Buy somente se a SMA de curto período estiver subindo. E abrir posições Sell somente se a SMA estiver caindo. Qual o efeito desse filtro? Certamente, reduzirá o número de posições abertas, ajudando a aliviar a carga sobre o depósito. Verifiquemos o funcionamento desse filtro.

Filter Tot. Net Prof. Gross Profit Gross Loss Profit Factor Expected Payoff Recovery Factor Sharpe Ratio Z-Score
false 1 670.84 2 039.73 -368.89 5.53 4.49 1.78 2.91 -17.52
true 379.20 607.75 -228.55 2.66 2.92 0.92 1.95 -10.26

Sim, o filtro impactou significativamente os resultados do trading. É importante lembrar que nesta estratégia usamos duas SMA. Cada uma delas pode funcionar como filtro independente ou em conjunto. E os filtros podem ser aplicados tanto na abertura quanto no fechamento de posições.


A complexidade aumenta.

Já vimos o uso de duas SMA. Mas é possível usar três médias? Sim, é possível. Na verdade, podemos usar quantas médias quisermos em uma estratégia. Vejamos como isso pode ser implementado na prática.

Tomamos várias médias com diferentes períodos, e calculamos a soma, que geralmente é:

Para que a soma dos coeficientes k seja igual a zero, podemos usar várias abordagens, mas a mais simples é utilizar as diferenças finitas. A diferença finita de qualquer ordem é obtida subtraindo a versão deslocada da diferença anterior.

Por exemplo, a diferença de 1ª ordem é k1-k2.

Daqui, podemos derivar a diferença de 2ª ordem: (k1-k2)-(k2-k3)=k1-2*k2+k3.

Seguindo essa lógica, a diferença de 3ª ordem seria: (k1-2*k2+k3)-(k2-2*k3+k4)=k1-3*k2+3*k3-k4. E assim por diante.

Se preferir não fazer os cálculos manualmente, pode simplesmente usar a linha correspondente do triângulo de Pascal. Lembrando de alternar os sinais dos coeficientes.

Como exemplo, usarei três SMA. Aplicaremos a elas os coeficientes da diferença de 2ª ordem, ou seja, todos os cálculos serão feitos com base na seguinte fórmula:

O resultado do trading dessa estratégia depende de três parâmetros. A mudança no período de qualquer SMA pode impactar significativamente o resultado. Aqui está um exemplo de como essa estratégia funciona.

Podemos continuar aumentando o número de médias, o que, à primeira vista, parece uma boa ideia. No entanto, esse caminho leva a um beco. Podemos usar qualquer quantidade de SMA, mas, no final, sempre acabaremos com um oscilador. Cada nova SMA adicionada altera apenas os coeficientes e características desse oscilador, nada mais. Seria mais eficiente começar diretamente a busca pelos coeficientes ótimos de um oscilador ideal. Infelizmente, essa tarefa não é tão simples quanto gostaríamos.


Um novo nível de complexidade.

Ao desenvolver uma estratégia de negociação, a regra principal é nunca desanimar e sempre buscar novas oportunidades. Já vimos o que pode ser feito com um único indicador. Agora, exploremos como criar uma estratégia utilizando vários indicadores.

Usarei médias móveis clássicas como indicadores. Com base em cada indicador, podemos construir um oscilador na forma da diferença entre os valores atuais do preço e do indicador. Já vimos como fazer isso com a SMA, mas outros indicadores podem apresentar desafios.

Os indicadores técnicos lineares são, essencialmente, um conjunto de coeficientes multiplicados pelos valores correspondentes do preço. O valor final do indicador é a soma dessas multiplicações. A SMA pode ser representada da seguinte maneira:

A EMA (Média Móvel Exponencial) pode apresentar alguns desafios. Primeiro, o cálculo dos coeficientes usa uma progressão geométrica com um coeficiente inicial entre 0 e 1. Segundo, o período da EMA é tecnicamente infinito. Para os perfeccionistas, o período da EMA corresponde ao número de pontos de preço que o indicador processou.

Modificaremos a EMA: em vez de usar coeficientes padrão, utilizaremos potências de 2, e o período do indicador será definido arbitrariamente. Assim, a fórmula do indicador será:

Nosso indicador será semelhante à EMA padrão com um período de 3, e quanto maior o período, mais próximos eles serão.

Com essa modificação, podemos construir um oscilador que gera valores inteiros. Os próximos passos incluem normalizar a diferença, aplicar um coeficiente de escala, etc.

A média SMMA é construída da seguinte forma: primeiro, calculamos os valores da SMA, e depois aplicamos outra média a esses valores, resultando em uma função janela triangular, que usaremos para construir o oscilador.

Os coeficientes da LWMA (Média Móvel Ponderada Linear) vêm de uma progressão aritmética com um passo igual a 1. A EMA e a LWMA são diferentes modelos de "esquecimento" dos dados passados, onde a EMA "esquece" mais rápido que a LWMA.

Os próximos passos são muito simples. Agora, construiremos um oscilador baseado em cada indicador. Cada um desses osciladores fornecerá sua própria estatística. Usaremos essas estatísticas para gerar sinais de abertura e fechamento de posições.

Aqui, precisamos definir a essência da nossa estratégia de negociação. Cada um dos quatro osciladores pode emitir um dos quatro sinais possíveis:

  • Abrir posição Buy;

  • Abrir posição Sell;

  • Fechar posição Buy;

  • Fechar posição Sell.

Há também um quinto sinal que consiste em "não fazer nada", mas como é o padrão, não o consideramos.

Pode acontecer que cada indicador dê um sinal diferente, e esses sinais podem se contradizer. Por exemplo:

  • A SMA sinaliza abrir posições Buy;

  • A EMA sinaliza fechar posições Sell;

  • A SMMA sinaliza abrir posições Sell;

  • A LWMA sinaliza fechar posições Buy.

O que o operador deve fazer nesse caso? Primeiro, o operador deve lembrar do problema dos generais bizantinos. O problema envolve receber sinais contraditórios de várias fontes. Alguns sinais podem ser falsos, outros verdadeiros. Para determinar qual sinal é verdadeiro, siga uma regra simples: um sinal pode ser considerado confiável se for emitido por mais de dois terços das fontes.

Suponha que N seja o número total de indicadores. O número mínimo de indicadores que devem emitir o mesmo sinal pode ser calculado pela fórmula:

Temos um total de quatro indicadores. Isso significa que o operador só pode agir se o mesmo sinal for emitido por pelo menos três dos indicadores.

A teoria está clara. Descrevamos o funcionamento da nossa estratégia de negociação. Primeiro, precisamos coletar estatísticas separadas para cada indicador. Com base nessas estatísticas, cada indicador gera seu próprio sinal. Se houver coincidência de pelo menos três sinais, o EA considera o sinal válido e o executa.

Agora, verifiquemos se os generais bizantinos podem gerar lucro.

Sim, essa abordagem pode ser usada no trading. Além disso, essa estratégia de negociação permite aumentar a quantidade de parâmetros. Para cada indicador, podemos definir níveis próprios de abertura e fechamento de posições. Isso tornará a estratégia mais flexível e pode impactar positivamente o desempenho da negociação.

Uma estratégia de negociação baseada em múltiplos indicadores pode ser construída de outra forma. 

Após coletar as estatísticas, podemos avaliar com que frequência cada valor de um indicador ocorre. A partir dessa frequência, podemos construir uma função de distribuição empírica.

Suponha que N seja o tamanho total da amostra e f[i], a frequência de cada valor i do indicador. Então, a função de distribuição empírica pode ser encontrada pela fórmula:

A função encontrada descreve a probabilidade de que o próximo valor do indicador seja menor que o atual. Graficamente, ela se apresenta assim.

Portanto, temos quatro probabilidades diferentes. No entanto, precisamos de um único valor. Podemos obtê-lo usando o classificador ingênuo de Bayes. A probabilidade final é obtida a partir das probabilidades de cada indicador pela fórmula:

Usaremos essa probabilidade para gerar sinais. Abertura e fechamento de posições ocorrerão apenas quando a probabilidade atingir um determinado valor.

Vejamos se essa abordagem pode ser usada no trading.

Agora, tentemos adicionar um filtro à estratégia para abertura de posições. A regra de operação desse filtro é bastante simples:

  • a abertura de posições Buy é permitida apenas quando a probabilidade final começa a aumentar;

  • a abertura de posições Sell é permitida apenas quando a probabilidade começa a diminuir.

Como resultado, podemos reduzir o número de posições e diminuir a carga sobre o depósito.

Um filtro semelhante pode ser adicionado ao fechamento de posições. É possível que isso aumente um pouco a lucratividade dessa estratégia.

Analisamos a possibilidade de criar uma estratégia de negociação com base em múltiplos indicadores não relacionados. A principal característica dessa abordagem é que todos os indicadores devem ser o mais diferentes possível entre si. Por exemplo, se usarmos SMA e SMMA com períodos iguais a 2, os coeficientes serão iguais. Basicamente, obteremos duas cópias do mesmo indicador, o que não pode ser permitido, pois isso causaria um deslocamento dos sinais e a estratégia funcionaria incorretamente.


Elevemos o nível de complexidade.

Voltemos ao ponto de partida – o desenvolvimento de uma estratégia com base em um único indicador. Mas desta vez, proponho aumentarmos a complexidade da estratégia. Usaremos como base o indicador CCI.

O CCI clássico é calculado de forma simples – a diferença entre o preço e a média móvel é normalizada pelo desvio padrão.

Com essa abordagem, é um pouco difícil obter números inteiros para coletar estatísticas. Por isso, faremos pequenas modificações nesse indicador. Em vez de SMA e desvio padrão, usaremos as medianas dos preços e dos desvios absolutos.

Encontrar a mediana é relativamente simples. Precisamos ordenar o conjunto de valores em ordem crescente. O valor que ficar no centro será a mediana. A principal vantagem da mediana é sua resistência a outliers.

Nosso algoritmo de ações será o seguinte. Primeiro, pegamos a quantidade necessária de preços e encontramos a mediana. Devido às características do nosso método, a quantidade de preços deve ser ímpar – apenas assim poderemos obter um número inteiro. Em seguida, encontramos a diferença entre o preço atual e a mediana – essa será a primeira estatística. Excluí a mediana mais frequente para que as características do gráfico fiquem mais visíveis.

Agora precisamos encontrar o valor absoluto da diferença entre os preços e a mediana. Em seguida, encontramos a mediana dessas diferenças – essa será nossa estimativa do desvio padrão e a segunda estatística.

As distribuições ficaram muito interessantes – assimetria e nenhum indício de uniformidade. Vejamos se elas nos ajudam no trading.

Nossa estratégia de negociação será bastante simples. Utilizaremos a estatística da diferença entre o preço e a mediana para gerar sinais de abertura e fechamento de posições. Se a diferença atual se desviar muito de zero, abriremos posições esperando um retorno à média.

A estatística do desvio padrão será usada como filtro. Um grande desvio pode indicar movimentos fortes no mercado. Nesses momentos, proibiremos a abertura de posições.

Vejamos se essa estratégia é viável.

Usamos o filtro de desvio na sua forma mais simples. Na verdade, grandes desvios podem significar que é necessário mudar a direção da entrada no mercado. Por exemplo, o sinal indica que devemos abrir uma posição Buy, mas o desvio sugere que deveríamos mudar o tipo de posição para Sell.

Outro possível filtro pode ser baseado na mediana. O valor da mediana pode coincidir com qualquer valor de preço. É por isso que a mediana é considerada um indicador não linear. Vamos estabelecer a seguinte condição – o trading só ocorre se a mediana e o preço com um determinado índice coincidirem. Por exemplo, assim é como a linha de saldo se apresenta, se a mediana deve ser igual ao preço com índice 5.

Como podemos ver, mesmo um único indicador pode oferecer muitas variações. A principal tarefa do operador é analisar todas as possibilidades e usar as melhores na negociação.


Considerações finais

A elaboração de uma estratégia de negociação pode não ser tão complicada quanto parece à primeira vista. No entanto, para uma implementação bem-sucedida, é crucial considerar diversos fatores e abordar o processo com entendimento e experiência. Este artigo apresentou apenas algumas das possíveis soluções e abordagens que podem ser úteis no desenvolvimento de uma estratégia de negociação. O operador deve ser muito criterioso na escolha de filtros, fontes de sinais, etc. Desenvolver sua própria estratégia é uma atividade fascinante, que oferece um vasto espaço para a criatividade.


Durante a elaboração deste artigo, foram utilizados os seguintes programas:

Nome Tipo Características
scr SMA1 script Calcula e exibe a distribuição das diferenças entre o preço e a SMA.
  • iPeriod - período da SMA
EA SMA1 EA Executa negociações com base na estratégia preço - SMA.
  • iPeriod - período da SMA
  • LvlOpen - nível no qual ocorre a abertura de posições.
  • LvlClose - nível de fechamento de posições
EA SMA2 EA
Negocia com base na estratégia de duas SMAs.
  • PeriodM e PeriodN - períodos das SMAs.
  • Filter - filtro por SMA
EA SMA3 EA Executa negociações com base em três SMAs
EA Byzantine Generals EA Negocia com base em quatro indicadores, com sinais gerados de acordo com o problema dos generais bizantinos
EA NBC EA Negocia com base em quatro indicadores, com sinais calculados pelo método bayesiano
scr CCI script Coleta estatísticas do indicador CCI
EA CCI EA Negocia com base nas estatísticas do indicador CCI
  • LvlStDev - nível de corte pelo desvio padrão
  • Filter - número não negativo que define o índice do preço que deve coincidir com a mediana


Traduzido do russo pela MetaQuotes Ltd.
Artigo original: https://www.mql5.com/ru/articles/14494

Arquivos anexados |
scr_SMA1.mq5 (5.28 KB)
EA_SMA1.mq5 (4.52 KB)
EA_SMA2.mq5 (5.15 KB)
EA_SMA3.mq5 (5.71 KB)
EA_NBC.mq5 (7.07 KB)
scr_CCI.mq5 (3.14 KB)
EA_CCI.mq5 (5.69 KB)
Redes neurais de maneira fácil (Parte 81): Análise da dinâmica dos dados considerando o contexto (CCMR) Redes neurais de maneira fácil (Parte 81): Análise da dinâmica dos dados considerando o contexto (CCMR)
Em trabalhos anteriores, sempre avaliamos o estado atual do ambiente. No entanto, a dinâmica das mudanças dos indicadores sempre ficou "nos bastidores". Neste artigo, quero apresentar a vocês um algoritmo que permite avaliar a mudança direta dos dados entre dois estados consecutivos do ambiente.
DoEasy. Funções de serviço (Parte 1): Padrões de preços DoEasy. Funções de serviço (Parte 1): Padrões de preços
Neste artigo, começaremos a desenvolver métodos para buscar padrões de preço usando dados de séries temporais. Um padrão tem um certo conjunto de parâmetros, comuns a qualquer tipo de padrão. Todos os dados desse tipo serão concentrados na classe de objetos do padrão abstrato base. No artigo atual, criaremos uma classe de padrão abstrato e uma classe de padrão Pin Bar.
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.
Desenvolvendo um EA multimoeda (Parte 5): tamanho de posição variável Desenvolvendo um EA multimoeda (Parte 5): tamanho de posição variável
Nos capítulos anteriores, o EA desenvolvido só podia usar um tamanho de posição fixo para negociações. Isso é adequado para testes, mas não é aconselhável ao negociar mediante uma conta real. Vamos adicionar a capacidade de operar com tamanhos de posição variáveis.