Saturday, 19 May 2018

Sistema de negociação difusa


Lógica Difusa em estratégias de negociação.


Introdução.


Os traders freqüentemente se perguntam como melhorar um sistema de negociação ou criar um novo através do aprendizado de máquina. Apesar da abundância de publicações, um método simples e intuitivo ainda é encontrado para criar modelos que não podem ser analiticamente estimados sem recorrer a cálculos auxiliados por computador. A lógica fuzzy é uma janela para o mundo do aprendizado de máquina. Combinado com algoritmos genéticos, é capaz de expandir as capacidades de criar sistemas de negociação de auto-aprendizagem ou facilmente otimizáveis. Ao mesmo tempo, a lógica fuzzy é intuitiva, pois encapsula informações numéricas nítidas em termos nebulosos (borrados), assim como uma pessoa faz no processo de pensar.


Aqui está um exemplo. Em termos de lógica nítida, a velocidade de um carro em movimento é determinada por dispositivos de medição: por exemplo, 60 km / h. Mas um observador casual sem dispositivos de medição só pode estimar aproximadamente a velocidade do carro, confiando em sua experiência ou base de conhecimento. Por exemplo, sabe-se que um carro pode ir rápido, e "rápido" é definido como aproximadamente 100 km / he acima. Sabe-se também que um carro pode ir devagar, o que é 5-10 km / h. E finalmente, a velocidade é visualmente estimada como média (cerca de 60 km / h) se o carro que se aproxima aumentar de tamanho a uma taxa moderada. Assim, é possível caracterizar 60 km / h com quatro diferentes expressões:


velocidade média; velocidade perto da média;


É assim que a informação é encapsulada em uma consciência humana, permitindo-lhe captar apenas as informações necessárias no momento atual, por exemplo: "terei tempo para atravessar a estrada se o carro não estiver se movendo muito rápido?". Pensar em tudo de uma vez e em grande detalhe forçaria uma pessoa a gastar quantias colossais de tempo e recursos energéticos antes de tomar qualquer decisão específica: atravessar a estrada ou deixar o carro passar. Ao mesmo tempo, a situação atual seria minuciosamente estudada, o que nunca poderá ser idêntico no futuro e teria apenas contornos semelhantes. No aprendizado de máquina, tais situações são chamadas de overfitting.


Este artigo não se aprofundará na teoria da lógica fuzzy. Informações sobre este tópico estão amplamente disponíveis na Internet e no site MQL5. Vamos começar com a prática imediatamente, o que será explicado com trechos da teoria e fatos curiosos.


Para construir um modelo, a biblioteca Fuzzy é usada, disponível no pacote de terminais padrão do MetaTrader 5.


O resultado será um Expert Advisor pronto, baseado em lógica fuzzy, que pode ser tomado como um exemplo para a construção de sistemas personalizados.


Criando um protótipo do sistema de negociação.


Vamos seguir em frente para criar uma lógica TS nítida, que será usada como base em futuras pesquisas. Então dois sistemas idênticos podem ser comparados, onde o segundo utilizará a lógica fuzzy.


3 osciladores RSI com diferentes períodos serão usados ​​como base:


Vamos formular as condições nítidas dos sinais e defini-los na função:


Em seguida, vamos escrever todas as outras funções de serviço e testar o especialista a partir do início de 2017 no EURUSD, nos prazos М15 e М5 (o código completo do especialista é anexado no final do artigo):


Embora as condições nítidas para combinações dos três indicadores tenham sido definidas e as condições sejam lógicas e consistentes, essa abordagem se mostrou muito simples e inflexível. Em média, o sistema não perde nem ganha por um período de 8 meses. Para ganhar, seria necessário passar por várias combinações de condições e, possivelmente, adicionar mais osciladores. Mas não há muito o que otimizar, já que as condições são definidas com extrema precisão.


Vamos tentar desfazer as idéias sobre as condições para tornar lucrativo esse sistema de negociação usando a lógica fuzzy.


Criando um modelo lógico difuso.


Primeiro, é necessário incluir a biblioteca Fuzzy. Para ser exato, um dos dois modelos de lógica difusa disponíveis - Mamdani ou Sugeno. A diferença entre eles é que Sugeno produz um modelo linear sem criar uma variável de saída na forma de um conjunto de termos fuzzy, enquanto Mamdani fornece esse elemento. Desde que o artigo é escrito para comerciantes fuzzy, Mamdani será usado. Mas isso não implica que o modelo Sugeno seja inadequado para algumas tarefas específicas: é sempre possível e necessário experimentar com base na compreensão básica da lógica difusa.


A biblioteca está incluída, uma referência à classe Mamdani é declarada. Isso é tudo o que é necessário para começar.


Agora vamos considerar as principais etapas da construção da inferência fuzzy. Ocupa um lugar central em sistemas de modelagem fuzzy. O processo de inferência fuzzy é um procedimento específico ou um algoritmo para obter conclusões fuzzy baseadas em suposições difusas usando as operações básicas da lógica fuzzy.


Existem 7 estágios de construção da inferência fuzzy.


Determinando a estrutura do sistema de inferência difusa.


O número de entradas e saídas, assim como as funções de associação, são definidos no estágio de projeto. No nosso caso, haverá 4 entradas, 1 saída, e cada uma delas terá 3 funções de associação.


Formando a base de regras do sistema de inferência difusa.


Durante o processo de desenvolvimento, criamos regras personalizadas para inferência fuzzy, com base no nosso julgamento especializado do sistema de negociação.


Estabelecer correspondência entre o valor numérico da variável de entrada do sistema de inferência difusa e o valor da função de pertinência do termo correspondente da variável linguística.


O procedimento de determinar o grau de verdade das condições para cada regra do sistema de inferência difusa.


O processo de encontrar o grau de verdade de cada uma das proposições elementares (subcláusulas) constituindo os consequentes dos núcleos de todas as regras de produção difusas.


O processo de encontrar uma função de associação para cada uma das variáveis ​​lingüísticas de saída.


Deve-se notar que apenas os pontos 1 e 2 precisam ser realizados, todos os outros serão feitos pelo sistema sem intervenção. Os interessados ​​nas sutilezas da operação da lógica difusa em todos os estágios podem encontrar mais detalhes aqui.


Determinando a estrutura do sistema de inferência difusa.


Vamos continuar com a criação do modelo. Definir objetos de três entradas e uma saída, bem como objetos auxiliares do dicionário para facilitar o trabalho com a lógica:


Três RSI com diferentes períodos serão usados ​​como entradas. Como o oscilador RSI está sempre no intervalo de 0 a 100, é necessário criar uma variável para ele com a mesma dimensão. Mas, por conveniência, os valores do indicador serão normalizados para um intervalo de 0 a 1. Basta ter em mente que a variável criada deve ter uma dimensão igual à dimensão do vetor de entrada, ou seja, deve conter todos os valores. Um intervalo de 0 a 1 também é definido na saída.


De acordo com o ponto 1 da criação da lógica fuzzy, também é necessário definir e configurar as funções de associação. Isso será feito no manipulador de eventos OnInit ():


Agora vamos ver qual é a função de associação e qual a finalidade dela.


Três termos foram criados para cada variável de entrada (e uma saída): "comprar", "neutro", "vender", cada um com sua própria função de associação. Em outras palavras, os valores do oscilador agora podem ser divididos em 3 grupos fuzzy, e cada grupo pode receber um intervalo de valores usando a função de associação. Falando na linguagem da lógica difusa, 4 conjuntos de termos foram criados, cada um com 3 termos. Para ilustrar o acima, vamos escrever um script simples que pode ser usado para visualização dos termos e suas funções de associação:


Execute o script no gráfico:


Essas funções de associação foram selecionadas porque elas têm apenas dois parâmetros de entrada otimizáveis ​​(isso será feito posteriormente, durante o estágio de teste do sistema). Eles também descrevem bem as posições extrema e central do sistema. Você pode aplicar qualquer função de associação das disponíveis na biblioteca Fuzzy.


Adotamos a regra de que os valores extremos do oscilador indicam uma mudança futura em sua direção e, conseqüentemente, uma reversão de tendência futura. Portanto, o oscilador aproximando-se de zero sugere um possível começo de crescimento. O movimento do oscilador para a marca de 0,5 é acompanhado por uma diminuição gradual em CZ_ShapedMembershipFunction ou termo "Buy zone". Ao mesmo tempo, a incerteza em CNormalMembershipFunction de "Neutral zone" irá crescer, o que é eventualmente substituído por um aumento em CS_ShapedMembershipFunction ou "Sell zone" à medida que o oscilador se aproxima de 1. O mesmo princípio é usado em todas as entradas e saídas. se os valores do indicador pertencerem a uma zona específica com limites imprecisos.


Não há restrições quanto ao número de funções de associação para cada variável. Você pode definir 5, 7, 15 funções em vez de três, mas, é claro, dentro dos limites do senso comum e em nome da lógica difusa.


Formando a base de regras do sistema de inferência difusa.


Nesta fase, adicionamos uma base de conhecimento ao sistema a ser usada ao tomar decisões difusas.


Pelo menos uma condição lógica deve ser adicionada à base de conhecimento: ela é considerada incompleta se pelo menos um termo não estiver envolvido nas operações lógicas. Pode haver uma quantidade indefinida de condições lógicas.


O exemplo fornecido define 12 condições lógicas, que influenciam a inferência difusa quando satisfeitas. Assim, todos os termos participam de operações lógicas. Por padrão, todas as operações lógicas recebem os mesmos coeficientes de peso iguais a 1. Elas não serão alteradas neste exemplo.


Se todos os 3 indicadores estiverem dentro da área difusa para a compra, será emitido um sinal de compra difuso. O mesmo se aplica aos sinais de venda e neutros. (regras 1-3)


Se 2 indicadores mostrarem comprar e um mostrar vender, o valor de saída será neutro, isto é, incerto. (regras 4-6)


Se 2 indicadores mostrarem comprar ou vender, e um for neutro, então, comprar ou vender é atribuído ao valor de saída. (regras 7-12)


Obviamente, esta não é a única variante para criar uma base de regras, você está livre para experimentar. Essa base de regras baseia-se apenas no meu julgamento "especializado" e na visão de como o sistema deve funcionar.


Obtendo um valor de saída nítido após a defuzzificação.


Resta calcular o modelo e obter o resultado como um valor de 0 a 1. Valores próximos a 0 indicam um sinal de compra forte, aqueles próximos a 0,5 são neutros e valores próximos a 1 significam um sinal de venda forte.


Esta função obtém os valores de três osciladores RSI com diferentes períodos, normaliza-os para um intervalo de 0 a 1 (os valores podem ser simplesmente divididos por 100), atualiza a lista com objetos do dicionário Fuzzy (os últimos valores indicadores), envia para cálculos, cria uma lista para a variável de saída e pega o resultado na variável 'res'.


Adicionando funções de serviço e otimizando / testando o sistema resultante.


Como o aprendizado de máquina ou pelo menos seus fundamentos também estão sendo considerados, alguns parâmetros serão movidos para entradas e otimizados.


Os parâmetros do Gaussian (função de associação) serão submetidos à otimização na saída da lógica difusa. Terá seu centro ao longo do eixo X deslocado (parâmetro Gposition), seu sigma alterado (seu sino estreitado e comprimido, parâmetro Gsigma). Isto proporcionará um melhor ajuste do sistema caso os sinais de RSI para compra e venda sejam assimétricos.


Além disso, otimize as condições para abertura de ofertas: o valor mínimo de um sinal neutro e o valor máximo (novas posições não serão abertas no intervalo entre esses valores, pois o sinal não está definido).


O processamento de um sinal na saída da lógica difusa é mostrado na listagem a seguir:


Cálculos serão realizados na nova barra para acelerar a demonstração. Você é livre para personalizar a lógica a seu critério, por exemplo, negociar em cada tick simplesmente removendo a verificação de uma nova barra.


Se houver posições abertas e o sinal contradizer a posição atual ou não estiver definido, feche a posição. Se houver uma condição para abrir uma posição oposta, abra-a.


Este sistema não utiliza stop loss, pois não são reversões de negociação, e o fechamento / reabertura de negociações é baseado em sinais.


O Expert Advisor usa a biblioteca MT4Orders para facilitar o trabalho com pedidos e tornar o código facilmente conversível em MQL4.


Processo de teste.


Selecione o melhor resultado de otimização:


Compare com os resultados do teste do modelo estrito:


A associação resultante funciona na saída, após a otimização (as entradas permanecem inalteradas desde que não foram otimizadas):


Antes das mudanças:


Otimize o sistema com as mesmas configurações, mas no prazo do M5:


Compare com os resultados do teste do modelo estrito:


A associação resultante funciona na saída, após a otimização (as entradas permanecem inalteradas desde que não foram otimizadas):


Antes das mudanças:


Em ambos os casos, a Gaussiana (zona neutra) foi deslocada para compras e o número de posições longas prevalece sobre o número de posições curtas. Isso significa que os sinais de compra e venda se mostraram assimétricos nesse segmento particular da história, que não puderam ser descobertos sem essa experiência. É possível que o sistema consistindo de três RSIs estivesse na zona de sobrevenda (área 1) mais frequentemente do que na zona de sobrecompra (área 0), e a otimização do Gauss ajudou a suavizar esse desequilíbrio. Quanto à saída mais nítida, é analiticamente difícil imaginar por que essa configuração de saída contribuiu para a melhoria dos resultados do sistema comercial, porque o processo de defuzzificação usando o método do centro de gravidade, em conjunto com todo o mapeamento de entradas para conjuntos difusos , já é um sistema complexo por si só.


O sistema mostrou-se bastante estável por 8 meses, apesar de apenas 4 parâmetros terem sido otimizados. E eles podem ser facilmente reduzidos a dois (Gsigma e Gposition), já que os 2 restantes tiveram pouco impacto no resultado e estão sempre na vizinhança de 0,5. Isto é considerado um resultado satisfatório para um sistema experimental, cujo objetivo é mostrar como o número de parâmetros otimizados pode ser reduzido através da introdução de um elemento de lógica difusa no sistema de negociação. Em contraste, teria sido necessário criar vários critérios de otimização para regras estritas, o que aumentaria a complexidade do desenvolvimento do sistema e o número de parâmetros otimizados.


Também deve ser notado que este ainda é um exemplo muito grosseiro da construção de um sistema de negociação baseado na lógica fuzzy, já que ele usa uma estratégia primitiva baseada em RSI, mesmo sem usar stop loss. No entanto, isso deve ser suficiente para entender a aplicabilidade da lógica fuzzy à criação de sistemas de negociação.


Conclusão.


A lógica Fuzzy permite uma criação rápida de sistemas com regras difusas que são muito simples de otimizar. Ao mesmo tempo, o complexo processo de seleção dos parâmetros do sistema de negociação passa pela otimização genética, liberando o desenvolvedor da rotina de busca por uma estratégia de negociação, desenvolvendo e algoritmizando inúmeras regras do sistema de negociação. Juntamente com outros métodos de aprendizado de máquina (por exemplo, redes neurais), essa abordagem permite alcançar resultados impressionantes. Reduz as hipóteses de overfitting e a dimensão dos dados de entrada (3 indicadores RSI com diferentes períodos se reduziram a um único sinal, o que descreve a situação do mercado de forma mais completa e mais generalizada do que cada indicador em si).


Se você ainda tiver problemas para entender como a lógica difusa funciona, pergunte a si mesmo como você pensa, em quais termos você opera e em que base baseia sua tomada de decisão.


Aqui está um exemplo de reforço. Por exemplo, você tem três desejos: ir a uma festa, assistir a um filme em casa ou salvar o mundo. O termo "assistir a um filme em casa" tem o maior peso, porque você já está em casa e não é necessário nenhum esforço adicional. Ir a uma festa é viável se alguém te convida e te pega, mas como isso ainda não aconteceu, as chances de ir são medianas. E, finalmente, para salvar o mundo, você precisa mobilizar todas as suas habilidades sobrenaturais, vestir uma fantasia de super-homem e lutar contra um monstro alienígena. É improvável que você decida fazê-lo hoje e não o deixe até amanhã, então as chances são pequenas.


A inferência fuzzy será algo assim: eu provavelmente ficarei em casa, e talvez eu vá para a festa, mas definitivamente não vou salvar o mundo hoje. Após a defuzzificação, nossas chances podem ser avaliadas em uma escala de 0 a 10, onde 0 é "ficar em casa", 5 é "ir para a festa", 10 é "lutar contra um monstro". Obviamente, o resultado nítido estaria no intervalo de 0 a 3, ou seja, é mais provável que você fique em casa. O mesmo princípio é usado no sistema de negociação apresentado: ele compara os valores de três indicadores e usa condições lógicas para determinar a opção mais preferida no momento atual - comprar, vender ou não fazer nada.


Possíveis maneiras de melhorar este exemplo (para estudo autônomo):


Aumentando o número de entradas e condições lógicas. Isso aumenta a capacidade do sistema e o torna mais adaptável ao mercado. Otimizando não apenas a saída Gaussiana, mas também todas as funções de associação de entradas e saídas. Otimizando a base de regras. Otimize os pesos de expressões lógicas. Criação de um comitê de vários modelos fuzzy responsáveis ​​por diferentes aspectos do sistema de negociação. Usando inferências fuzzy como preditores ("features") e / ou variáveis ​​de destino para redes neurais.


Se houver interesse suficiente no artigo, e eu receber feedback suficiente, eu poderia considerar a possibilidade de escrever um novo artigo dedicado à combinação de lógica difusa e uma rede neural.


Abaixo estão os códigos-fonte dos especialistas e um script de teste para as funções de associação. Para o especialista compilar e trabalhar, é necessário fazer o download da biblioteca MT4Orders e da biblioteca Fuzzy atualizada.


Traduzido do russo por MetaQuotes Software Corp.


Lógica fuzzy para criar estratégias de negociação manual.


Introdução.


Um rápido desenvolvimento de tecnologia levou a uma tendência mais forte de utilização de sistemas de negociação automatizados em mercados de câmbio modernos. No entanto, muitos traders ainda continuam usando o comércio manual. Prós e contras de ambas as abordagens de negociação são bem conhecidos: o comércio automatizado carece de flexibilidade para mudanças constantes de mercado, e o comércio manual, pelo contrário, pode ser muito flexível devido a um frequente fator de interferência humana. De fato, nessa comparação, esses são dois extremos da mesma essência.


Em meu artigo anterior, dei exemplos, nos quais tentei compensar as desvantagens do comércio automatizado aplicando a teoria da lógica fuzzy, por exemplo, obscurecendo a formalização excessivamente rígida da estratégia, aplicada em um robô comercial ou em um indicador. Neste artigo, será considerada uma oportunidade para melhorar a estratégia de negociação manual. O uso de tecnologia moderna, mesmo no regime de negociação manual, onde a decisão final sempre cabe aos comerciantes, traz mais benefícios do que danos.


Selecionando estratégia manual com uma formalização específica de condições.


Muitos comerciantes modernos escolhem assumir a responsabilidade de entrar e sair de posições, em vez de confiar em sistemas automatizados. Eles precisam desenvolver sua própria estratégia de negociação que levaria em conta todos os resultados possíveis do comportamento do mercado. Depois, seria preciso segui-lo estritamente e resistir a quaisquer impulsos que pudessem ser provocados pelo medo e pela ganância.


Portanto, primeiro precisamos criar uma estratégia de negociação. Deixe-me descrever as três etapas de como vamos construí-lo.


Estágio No1. Encontrar e identificar instrumentos que serão usados ​​em nossa estratégia. Estágio No2. Definir condições específicas utilizadas por um comerciante para abrir uma posição no mercado. Estágio No3. Definir condições específicas quando uma posição terá que ser fechada com resultado positivo ou negativo.


Na primeira etapa, selecionei três indicadores para construir uma estratégia de negociação como exemplo:


Visão geral e configurações selecionadas do terminal de negociação MQL4:


Fig. 1. Visão geral das configurações da estratégia.


Na segunda etapa, descobriremos uma maneira de usar instrumentos selecionados, condições para sua operação e também os parâmetros de posição para entrada no mercado.


Vamos começar do começo.


Nosso primeiro indicador é o ADX. Como visto da fig. 1, o período do indicador especificado é igual a 10. Além disso, um nível para a linha de tendência principal (cor verde) que é igual a 30 foi definido especificamente. Qualquer valor que iguala ou exceda, será considerado como um sinal positivo para entrada no mercado. Vale a pena notar que o sinal de compra deste indicador será o caso quando + DI (linha tracejada a verde) for maior que - DI (linha tracejada vermelha). Consequentemente, o sinal de venda enfrenta uma situação inversa quando - DI é maior que + DI. O segundo indicador é AC. Aqui vamos usar os sinais descritos na documentação oficial. Especificamente, se o valor do indicador estiver abaixo de 0 e crescer nas barras analisadas e nas duas anteriores, é um sinal de compra. Portanto, se o valor do indicador estiver acima de 0 e ele cair nas barras analisadas e nas duas anteriores, receberemos um sinal de venda. O terceiro indicador é o RVI. Vamos definir o período de sua operação igual a 10. Como condição para a compra, vamos determinar o momento em que a linha de sinal (vermelho fino) cruza a linha principal (verde). Nesta interseção, o valor da linha na barra analisada deve estar abaixo do ponto zero. Da mesma forma, definiremos condições para a venda: a linha de sinal cruza a linha principal, mas os valores são posicionados acima de zero. A próxima condição para uma operação será um período de tempo de hora em hora (H1). A condição para entrada de posição implica passar sinais semelhantes de todos os três indicadores selecionados. E, finalmente, vamos decidir sobre o tamanho da posição. Como exemplo, o seguinte será definido: lote 0,01, Take Profit de 50 pontos, Stop Loss de 30 pontos.


Termos serão formalizados para uma melhor clareza.


Inserindo uma posição longa (sinal de compra)


A linha verde principal do indicador ADX mantém um valor maior ou igual a 30, enquanto o valor + DI é maior que - DI. O valor AC cresce na barra atual e é maior que nas duas barras anteriores, que também crescem consistentemente. Visualmente, estas são três colunas do histograma verde, onde cada coluna é menor que a anterior, e todas as três estão posicionadas na área negativa. A linha do sinal RVI (vermelho fino) cruza a linha principal (verde), ambos crescem, mas ainda permanecem abaixo do ponto zero. Compramos com 0,01 lote, colocamos Take Profit de 50 pontos e Stop Loss de 30 pontos. Inserindo uma posição curta (sinal de venda) A linha verde principal do indicador ADX mantém um valor que excede ou é igual a 30, enquanto o valor + DI está abaixo de - DI. O valor CA cai na barra atual e é menor do que nas duas barras anteriores que continuam caindo de forma consistente. Visualmente, estas são três colunas do histograma vermelho, onde cada coluna é menor do que a anterior, e os valores de todos os três estão acima de zero. A linha de sinal RVI (vermelho fino) cruza a linha principal (verde), ambos declinam, mas permanecem na área positiva. Vendemos com 0,01 lote, colocamos Take Profit de 50 pontos e Stop Loss de 30 pontos.


Tudo o que precisamos fazer é determinar como sair da posição. Como condição para sair, definiremos a meta de preço que obtivemos anteriormente: atingir um lucro de 50 pontos ou executar o Stop Loss de 30 pontos.


Então, nossa estratégia de negociação está agora definida. Definimos as condições para abertura e fechamento de posições, selecionamos os indicadores e definimos seus parâmetros operacionais, definimos os tamanhos de entrada de posição e seus objetivos. E, finalmente, decidimos sobre os eventos para sair do mercado.


Na próxima etapa, vamos verificar a estratégia de negociação criada em condições reais. A primeira coisa que precisamos entender é que não há estratégias ideais em uma perspectiva de longo prazo e absolutamente todos os estágios do mercado. E os operadores que usam negociações automatizadas e aqueles que negociam manualmente observam com frequência que o sistema deles se prova de maneira diferente em várias condições. Além disso, não é incomum quando as condições iniciais no sistema comercial já especificado poderiam ter mostrado melhores resultados.


Por exemplo, com relação ao nosso sistema, um trader pode ter percebido que o set Take Profit poderia ter sido aumentado. Isto não é porque ele simplesmente deseja ganhar mais, mas porque ele constantemente analisa seu sistema, e suas estatísticas mostraram que depois de fechar comércios bem sucedidos, o preço continuou se movendo na direção desejada por algum tempo. Portanto, um comerciante pode ter uma pergunta razoável: como aplicar dados estatísticos e observações obtidas para o seu sistema de negociação, a fim de melhorar os resultados?


Remediando as deficiências da formalização estrita com lógica difusa.


Vejamos os indicadores usados ​​em nosso sistema a partir da perspectiva da teoria da lógica difusa. Em meu artigo anterior, tentei transmitir sua principal vantagem - a flexibilidade de analisar as partes da estratégia de negociação em que se aplica a categorização estrita. A lógica fuzzy estava borrando limites rígidos, dando um quadro mais amplo de avaliação e reação do sistema nas seções de fronteira de sua operação. Houve também um exemplo de uma abordagem mais adaptável à operação do indicador ADX que usamos. Primeiro, foi aplicada uma divisão rígida entre tendências fracas, médias e fortes, mas essas categorias ficaram confusas e a determinação da força da tendência já não estava estritamente vinculada à subjetividade dos valores dos indicadores.


Mas voltemos ao nosso sistema e nos perguntemos: como tudo isso pode nos ajudar?


Imagine que o nosso trader observe o mercado e veja o sinal do seu primeiro indicador: o ADX chegou a 32, por exemplo. Ele marca isso e aguarda a confirmação de outros dois indicadores. Logo o sinal de CA chega, enquanto ADX mostra aumento para até 40. A linha de sinal RVI cruza a linha principal depois de algum tempo, o que significa que todas as três condições para entrar na posição foram finalmente atendidas. ADX já atingiu o ponto 45. Mas o valor absoluto do ADX em nosso sistema não é tão importante. O principal é que excede 30. Portanto, um comerciante segue suas regras e entra no mercado com 0,01 lote, Take Profit em 50 pontos e Stop Loss em 30.


Agora, vamos simular outro cenário possível. No começo, a situação se desenvolve da mesma forma que no primeiro caso. ADX = 32, o sinal chega de AC, ADX atinge simultaneamente o ponto 40. Mas quando o último sinal perdido para abrir a posição chega de RVI, então os foguetes ADX para 55, em vez de 45. Ao comparar as duas opções descritas, mostra que o segundo sinal é mais forte que o anterior, mas nosso comerciante ainda abre o posição com o mesmo lote e os mesmos valores de Take Profit e Stop Loss.


Aqui encontramos a primeira desvantagem da nossa estratégia. Apenas a existência do sinal de entrada é avaliada, sem prestar muita atenção à qualidade. E mesmo que consigamos avaliar e definir a categoria, a precisão da avaliação ainda será perdida nas áreas de transição.


Então, como podemos aprovar um caso específico com indicadores ADX, RVI e vincular seus parâmetros à posição que usamos para entrar no mercado? Para isso, precisamos realizar as seguintes etapas:


Estabelecer categorias claras de avaliação da força de tendência (ADX) e do Índice de Vigor Relativo (RVI). Este será um sinal de entrada, com base no qual tomaremos uma decisão adicional. Estabelecer categorias claras dos objetivos da nossa posição (Take Profit ou Stop Loss na nossa estratégia, embora possamos definir aqui um lote de tamanho). Este é um sinal de saída que irá corrigir a nossa posição no mercado, dada a força da tendência. Descrever categorias de sinais de entrada e saída com funções de pertinência da teoria dos conjuntos fuzzy. Criar uma interface que exiba recomendações para alterar uma posição da estratégia inicial com base nos novos termos. Criar configurações flexíveis para alterar as funções de associação que permitiriam corrigir esse sistema de recomendação quando necessário.


Para começar, vamos descrever a primeira variável de entrada - valor da força da tendência.


1. Vamos definir 4 categorias de força de tendência: baixa, moderada, média e alta. É assim que vai ficar:


Fig. 2. Força da tendência visual dividida em categorias.


2. Para definir as categorias do sinal de saída, é necessário determinar como a categoria ADX influenciará nossa posição. Normalmente, quanto maior a tendência, maior a duração. Portanto, procederemos de acordo: dependendo de onde o ADX está no momento em que os três sinais estratégicos são recebidos, aumentaremos o Take Profit em 10 - 50 pontos.


As seguintes categorias serão inseridas para o valor da meta de lucro que será adicionado aos 50 pontos iniciais de nossa estratégia.


low_take categoria: baixa tendência, adicionar 10 - 20 pontos às metas. mod_take categoria: tendência moderada, adicione 20 - 30 pontos às metas. categoria med_take: tendência média, some 30 - 40 pontos às metas. high_take categoria: alta tendência, adicionar 40 - 50 pontos às metas.


3. Na etapa seguinte, descreveremos as condições estabelecidas anteriormente com as funções de associação da teoria dos conjuntos fuzzy. A descrição de quatro categorias de tendências é a seguinte:


Fig. 3. Descrição de quatro categorias de tendência de lógica difusa.


Como mostrado na fig. 3, cada categoria foi definida pela função de associação, tais como: baixa tendência e alta tendência com duas funções de trapézio e moderada e média com duas funções triangulares.


Agora, vamos definir o mesmo para o RVI.


1. Vamos definir as categorias para o Índice de Vigor Relativo. Haverá quatro: baixo, médio, alto e alto. É assim que vai ficar:


Fig. 4. Divisão visual do Índice de Vigor Relativo por categoria.


2. Agora, descreveremos as categorias introduzidas com as funções de associação. As funções do trapézio serão usadas para descrever as categorias baixa e alta, e as funções triangulares serão aplicadas às categorias média e alta.


Fig. 5. Descrição das categorias do índice RVI


Similarmente, descreveremos quatro categorias para valores de objetivos de lucro: primeira e quarta categorias (10-20 e 40-50 pontos) usando funções de trapézio, e duas restantes (20-30 e 30-40 pontos) - com funções triangulares. É assim que a descrição do nosso sinal de entrada se parece.


Fig. 6. Descrição das categorias para valores de metas de lucro.


Implementação da interface do painel para exibir recomendações para alterar a posição.


Ao construir o painel de informações, selecionamos quatro parâmetros para observações:


Valor ADX. Somente quando critérios especificados são satisfeitos, por exemplo - 30 ou acima. Valor RVI. Apenas desde que seja maior que 0,1 (para sinal de venda), ou abaixo de -0,1 (para sinal de compra). O número recomendado de pontos que devem ser adicionados à meta inicial de 50. Obtenha o valor do Lucro no formato do preço do instrumento de negociação (levando em conta o preço inicial e as recomendações sobre como aumentá-lo).


A aparência geral da estratégia de negociação em plena implementação será a seguinte (fig.6).


Fig. 7. Implementação completa, aparência geral e definição da estratégia de negociação.


Agora vamos examinar a implementação deste painel usando as ferramentas MQL4 e a biblioteca FuzzyNet.


Implementamos e analisamos os principais blocos lógicos deste painel informativo com ferramentas MQL4.


Definimos as propriedades iniciais e conectamos a biblioteca para operar com lógica difusa. We will set the option to find the panel in the chart's window. We will define one indicator buffer and its color (green) for an arrow indicator of the bar we analyzed.


We will look into the first block of input Parameters in more details. It contains the following elements:


fontSize — font size of textual information (recommended range 8 — 15). adx_period — operation period of ADX indicator. num_bar — number of bar for which the system is calculated. Screen_corner — angle for displaying the panel. label_clr — color of header text. textColor — color of value text.


The second block of input Fuzzy Logic Parameters contains the majority of parameters for flexible settings of all membership functions describing both input (ADX trend strength, RVI index) and output parameters (recommended value of profit goal points).


In the next block we declare variables, names of headings, the actual template of the info panel (size, location, font and other), and set the parameters of displaying the element indicating the current bar (the arrow in our case).


Now, let's have a look at the main block of processing signals from the ADX and RVI indicators.


The conditions are set under which indicator values satisfy the buy and sell signals. When they match, values are handled with the mamdani(double t, double v) function and displayed in the panel. All this has the following form: current indicator values showing that we received a buy or sell signal; recommended Take Profit (in points and numerical value).


The function creates the fuzzy logic system. It contains two input signals from the indicators — trend and vigor (each of them consists of four terms described by membership functions), and one output signal . Four rules that input and output signals are connected with are also included in the system.


Let's proceed to the final block — "Additional functions". The first one — tp_prc(double take) converts Take Profit value in points to a numerical value of the current currency instrument price. The second one defines the number of signs in the current currency instrument.


I would also like to draw your attention to the correctness of settings and re-verification of the parameter correctness in the section Fuzzy Logic Parameters while testing. I recommend to rely on their initial graphic representation in the fig. 3, 5, 6, since incorrect values can lead to errors and wrong operation of the entire system. Please be careful!


Conclusão.


In conclusion, we are going to summarize what we've learned.


The first part of work for creating a manual trading strategy with fuzzy logic lies in the development of strictly formalized rules of this strategy. This was examined at the stages No1 — No3. Then it is necessary to find disadvantages of the strict formalization where strict categorization of any estimated blocks or parameters applies. In the example provided, a part of the strategy that didn't allow us to determine the moment of market entry with enough flexibility was found. Further, all clear categories are described using fuzzy set theory and, thus, become more flexible. Now, in the boarder values there may be a belonging to not just one specific category as before, but to both simultaneously to a different extent. This strategy is implemented in the form of the indicator, panel or alert. In this article, a panel in MQL4 language was selected. We have considered the opportunity to improve the manual trading strategy by applying fuzzy set theory. Using the example revealed more details on how the already formed trading strategy is modified and complemented by applying fuzzy logic and getting rid of the flaws discovered.


Traduzido do russo por MetaQuotes Software Corp.


Modelagem fuzzy de negociação de ações com castiçais fuzzy.


Destaques.


Uma metodologia para modelar regras de negociação para padrões candlestick usando lógica fuzzy.


O sistema de negociação difuso adapta três padrões candlestick bem conhecidos a regras fuzzy.


O desempenho do sistema fuzzy é testado em dois portfólios de diferentes mercados de ações.


O sistema fuzzy é mais lucrativo do que uma versão nítida das regras candlestick.


A negociação difusa é mais avessa ao risco do que a estratégia Buy and Hold (B & amp; H) usada como referência.


Este trabalho propõe uma metodologia para detectar padrões candlestick em um sistema de negociação de ações usando lógica fuzzy. A abordagem difusa torna possível explicar a imprecisão e a incerteza das características do padrão. Ainda mais, o uso de regras nebulosas permite incluir essa incerteza em um sistema de decisão comercial que não apenas aconselha o investidor sobre quando, mas também quanto capital investir. Desta forma, o sistema inteligente ajuda os especialistas a usar seus conhecimentos, ou seja, as regras baseadas em castiçal, de uma maneira mais natural e realista do que o padrão baseado em regras nítidas. No artigo, ilustramos essa metodologia com a geração de um sistema de negociação fuzzy que usa três padrões bem conhecidos de castiçal que foram fuzzificados. O desempenho deste sistema inteligente de negociação de ações é testado em dois portfólios de diferentes mercados de ações, Nasdaq-100 e Eurostoxx, e é comparado com sua contraparte nítida e a clássica estratégia de negociação Buy-and-Hold. Nosso sistema de comércio fuzzy baseado em castiçais não apenas melhora o reconhecimento de padrões em relação à sua versão nítida, mas também fornece resultados promissores, pois exibe um comportamento mais estável nos mercados analisados ​​e obtém mais lucros de uma maneira menos arriscada do que os outros. sistemas de negociação considerados.


Escolha uma opção para localizar / acessar este artigo:


Verifique se você tem acesso através de suas credenciais de login ou de sua instituição.


Lógica fuzzy, incerteza de negociação e negociação técnica.


Do ponto de vista da microestrutura de mercado, a análise técnica pode ser lucrativa quando os operadores informados cometem erros sistemáticos ou quando os comerciantes desinformados têm impactos previsíveis sobre os preços. No entanto, os gráficos enfrentam um grau considerável de incerteza de negociação porque os indicadores técnicos, como as médias móveis, são essencialmente filtros imperfeitos com uma mudança de fase diferente de zero. Consequentemente, a negociação técnica pode resultar em recomendações errôneas de negociação e perdas substanciais. Este artigo apresenta uma abordagem de redução de incerteza baseada na lógica fuzzy que aborda dois problemas relacionados à incerteza embutida nas estratégias técnicas de negociação: market timing e order size. Os resultados de nossos exercícios de alta frequência mostram que os "indicadores técnicos difusos" dominam os indicadores técnicos médios móveis padrão e as regras de filtragem para as taxas de câmbio do dólar europeu (EUR-USD), especialmente em dias de alta volatilidade.


Destaques.


► Propomos uma abordagem de redução da incerteza de negociação baseada na lógica fuzzy. ► O foco está em duas escolhas que os traders enfrentam: market timing e order size. ► Nossos indicadores técnicos melhoram a rentabilidade em dias de alta volatilidade. ► Relacionamos nossos resultados com a microestrutura de mercado.


Classificação JEL.


Escolha uma opção para localizar / acessar este artigo:


Verifique se você tem acesso através de suas credenciais de login ou de sua instituição.


Um sistema de negociação inteligente com regras difusas e gerenciamento de capital fuzzy.


Rodrigo Naranjo,


Instalaciones Inabensa, Abengoa, Seville, Spain Procurar por mais artigos deste autor.


Albert Meco,


Materia Works S. L, Madrid, Spain Procurar por mais artigos deste autor.


Javier Arroyo,


Facultad de Inform tica, Universidad Complutense de Madrid, Spain Search for more papers by this author.


Matilde Santos.


Autor a quem toda a correspondência deve ser endereçada; e-mail: msantos@ucm. es.


Publicado pela primeira vez em: 11 abril 2015 Histórico de publicação completo DOI: 10.1002 / int.21734 Ver / salvar citações Citado por (CrossRef): 3 articles Check for updates.


Neste trabalho, estamos propondo um sistema de negociação onde a lógica fuzzy é aplicada não apenas para definir as regras de negociação, mas também para gerenciar o capital para investir. In fact, two fuzzy decision support systems are developed. O primeiro utiliza a lógica fuzzy para projetar as regras de negociação e aplicar os indicadores técnicos do mercado de ações. O segundo aprimora esse sistema de negociação difuso, adicionando uma estratégia difusa para gerenciar o capital para o comércio. Além disso, um novo indicador técnico de mercado que produz sinais de entrada curtos e longos é introduzido. Baseia-se no indicador de divergência de convergência da média móvel. Seus parâmetros foram otimizados por algoritmos genéticos. As propostas são comparadas com uma versão não fuzzy clássica dos sistemas de negociação propostos e com a estratégia buy-and-hold. Os resultados favorecem o nosso sistema de negociação fuzzy nos dois mercados considerados, NASDAQ100 e EUROSTOXX. As conclusões sugerem que o uso da lógica fuzzy para gerenciamento de capital é promissor e merece maior exploração.


Informações sobre o artigo.


Formato disponível.


&cópia de; 2015 Wiley Periodicals, Inc.


Histórico de Publicações.


Emissão online: 4 de junho de 2015 Versão do registro online: 11 de abril de 2015.


Ministério Espanhol da Ciência e Inovação (MICINN). Número da concessão: DPI2013-46665-C2-1-R.


Conteúdo Relacionado.


Artigos relacionados ao que você está vendo.


Citando Literatura.


Número de vezes citadas: 3.


1 Rodrigo Naranjo, Javier Arroyo, Matilde Santos, Modelagem Fuzzy de negociação de ações com castiçais fuzzy, Sistemas especialistas com aplicações, 2018, 93, 15 CrossRef 2 Rodrigo Naranjo, Matilde Santos, Conferência Internacional Conjunta SOCO 16-CISIS 16-ICEUTE & rsquo; 16, 2017, 527, 323 CrossRef 3 Vince Vella, Wing Lon Ng, Melhorando o desempenho ajustado ao risco na negociação de alta frequência usando a lógica fuzzy do intervalo tipo 2, Sistemas especialistas com aplicativos, 2016, 55, 70 CrossRef.


Direitos autorais & copy; 1999 - 2018 John Wiley & amp; Sons, Inc. Todos os direitos reservados.


Robust Technical Trading with Fuzzy Knowledge-Based Systems.


16 Pages Posted: 6 Jul 2017.


Masafumi Nakano.


Universidade de Tóquio - Graduate School of Economics.


Akihiko Takahashi.


University of Tokyo - Faculty of Economics.


Soichiro Takahashi.


Universidade de Tóquio - Graduate School of Economics.


Data de gravação: 1º de julho de 2017.


This paper proposes a framework of robust technical trading with fuzzy knowledge-based systems (KBSs).


Keywords: knowledge-based system, fuzzy logic, technical trading, market phase, Japanese stock market.


Masafumi Nakano.


Universidade de Tóquio - Graduate School of Economics (email)


Akihiko Takahashi.


University of Tokyo - Faculty of Economics ( email )


7-3-1 Hongo, Bunkyo-ku.


Soichiro Takahashi (Contact Author)


Universidade de Tóquio - Graduate School of Economics (email)


Estatísticas de papel.


EJournals relacionados.


Fundos Mútuos, Fundos de Hedge, e Investimento eJournal da Indústria de Investimento.


Inscreva-se neste diário de taxas para obter mais artigos selecionados sobre este tópico.


Modelagem Econométrica: Mercado de Capitais - Teoria da Carteira eJournal.


Inscreva-se neste diário de taxas para obter mais artigos selecionados sobre este tópico.


Modelagem Econométrica: Mercados Financeiros Internacionais - eJournal de Mercados Desenvolvidos.


Inscreva-se neste diário de taxas para obter mais artigos selecionados sobre este tópico.


Econometria: Métodos Matemáticos e Programação eJournal.


Inscreva-se neste diário de taxas para obter mais artigos selecionados sobre este tópico.


Links Rápidos do SSRN.


Rankings SSRN.


Sobre o SSRN.


Os cookies são usados ​​por este site. Para recusar ou aprender mais, visite nossa página de Cookies. Esta página foi processada por apollo6 em 0.156 segundos.

No comments:

Post a Comment