Início Negociação Sistemática Postagem

Classificador K-Nearest Neighbors para MetaTrader 4: Aprenda a Implementar

Anexo
8645.zip (2.46 KB, Baixar 0 vezes)

Hoje vamos falar sobre a implementação de um classificador baseado no método dos k-nearest neighbors (k-vizinhos mais próximos) para o MetaTrader 4. Essa técnica, apesar de complicada, pode oferecer insights valiosos para suas operações no mercado. Vou compartilhar a minha experiência e espero que possamos discutir e aprimorar essa abordagem juntos.

A função Euclidean_Metric atua como um classificador. Ela utiliza uma base de vetores que descrevem as operações ou situações do mercado para determinar se um vetor de entrada pertence a algum dos grupos na base. Os vetores são agrupados pelo usuário; no exemplo que vou citar, se uma operação fechou com lucro, ela é classificada como classe 1, e se o resultado foi negativo, como classe 0. A busca pelos vizinhos mais próximos de um vetor multidimensional é realizada utilizando a distância Euclidiana. Depois, calcula-se quantos desses k-vetores pertencem à classe 1 e, em seguida, divide-se esse número pelo total de vizinhos (ou seja, por k) para obter a probabilidade de que o vetor dado pertença à classe 1.

Contudo, essa classificação pode não ser totalmente confiável devido à escolha das coordenadas dos vetores. Para contornar isso, incluímos um valor limiar adicional: se a probabilidade de uma operação futura ser lucrativa for superior a 0,7, por exemplo, então devemos entrar no mercado. As proporções das médias móveis foram utilizadas como medidas (coordenadas) dos vetores, supondo que essas proporções sejam estáticas. Após classificar os vetores (operações) uma vez, essa classificação poderia ser utilizada em testes futuros, mas a realidade é mais complexa :)

Mas por que escolher o k-nearest neighbors? Isso se dá porque, ao considerar o primeiro vizinho mais próximo, podemos acabar pegando um pico anômalo de um valor aleatório, sem considerar que há um cluster de vetores opostos nas proximidades. Para uma descrição mais detalhada, recomendo o livro S. Haykin - Neural Networks: A Comprehensive Foundation.

Os Desafios do Classificador

O classificador apresenta dois problemas principais:

  • 1) Encontrar dados estáticos que descrevam as situações do mercado (ou operações futuras) com a precisão necessária e o nível adequado de classificação correta.
  • 2) O volume elevado de operações matemáticas, que consequentemente torna o cálculo mais demorado (embora um pouco menos do que o PNN).

Esses problemas são semelhantes aos encontrados em sistemas de trading convencionais. A vantagem é que o classificador pode formalizar condições que o trader pode não perceber, mas que intuitivamente sabe que certos valores de indicadores influenciam a decisão de abrir uma operação.

Implementação do Classificador

Vamos falar sobre a implementação:

  • Base - true: grava um arquivo com a base de vetores; false: realiza operações com classificação.
  • buy_threshold = 0.6: limiar para todas as posições de Compra.
  • sell_threshold = 0.6: limiar para todas as posições de Venda.
  • inverse_position_open = true: se a probabilidade de uma operação lucrativa for muito baixa, por que não entrar no mercado com uma posição invertida? Este flag permite tais posições.
  • invers_buy_threshold = 0.3: limiar para quando a probabilidade de uma posição de Compra ser lucrativa for menor, abrir uma operação de venda.
  • invers_sell_threshold = 0.3: o mesmo se aplica.
  • fast = 12: parâmetros do MACD.
  • slow = 34.
  • tp = 40: Take Profit.
  • sl = 30: Stop Loss.
  • close_orders = false: flag para fechar apenas por um sinal oposto se a ordem estiver lucrativa.

Uso: Primeiro, defina o flag Base como true, ajuste sl = tp e execute na história (uma vez!). O arquivo de vetores será gravado. Na próxima vez, ajuste Base para false e é recomendável otimizar os limiares; escolho-os com base no primeiro relatório (sem classificação). Se a probabilidade de sucesso = 0,5, então os limiares são 0,6 e 0,4 (para inverter a posição).

Mais uma vez, isso é apenas um exemplo; o classificador pode ser aplicado a outros sistemas de trading da mesma forma, utilizando diferentes dados de entrada.

Imagens de Antes e Depois da Classificação

Antes da classificação:

Após a otimização dos limiares:

Publicações relacionadas

Comentário (0)