Sistema de comércio fuzzy
Lógica difusa nas estratégias de negociação.
Introdução.
Os comerciantes geralmente se perguntam como melhorar um sistema comercial ou criar um novo através da aprendizagem por máquinas. Apesar da abundância de publicações, um método simples e intuitivo ainda não foi encontrado para criar modelos que não podem ser estimados analiticamente sem recorrer a cálculos auxiliados por computador. A lógica difusa é uma janela para o mundo da aprendizagem de máquinas. Combinado com algoritmos genéticos, é capaz de expandir as capacidades de criação de sistemas de auto-aprendizagem ou fácil de otimizar. Ao mesmo tempo, a lógica difusa é intuitiva, pois encapsula informações numéricas nítidas em termos difusos (desfocados), 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 a velocidade do carro com base em sua experiência ou base de conhecimento. Por exemplo, é sabido que um carro pode ser rápido e "rápido" é definido aproximadamente como 100 km / h e acima. Também se sabe que um carro pode ser lento, 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 aumenta em tamanho a uma taxa moderada. Assim, é possível caracterizar 60 km / h com quatro expressões diferentes:
velocidade média; velocidade próxima da média;
É assim que a informação é encapsulada em uma consciência humana, permitindo-lhe compreender apenas as informações necessárias no momento atual, por exemplo: "Será que eu tenho tempo para percorrer a estrada se o carro estiver em movimento não muito rápido?". Pensar em tudo ao mesmo tempo e em grande detalhe forçaria uma pessoa a gastar quantidades colossais de tempo e recursos energéticos antes de tomar qualquer decisão específica: atravesse a estrada ou deixe o carro passar. Ao mesmo tempo, a situação atual seria minuciosamente estudada, o que talvez nunca mais seja repetido de forma idêntica no futuro e teria apenas contornos semelhantes. Na aprendizagem em máquina, tais situações são chamadas de superposição.
Este artigo não aprofundará a teoria da lógica difusa. As informações sobre este tópico estão amplamente disponíveis na Internet e no site MQL5. Comecemos com a prática imediatamente, o que será explicado com excertos teóricos e fatos curiosos.
Para construir um modelo, a biblioteca Fuzzy é usada, disponível no pacote de terminais MetaTrader 5 padrão.
O resultado será um consultor especialista pronto baseado em lógica difusa, que pode ser tomado como um exemplo para a construção de sistemas personalizados.
Criando um protótipo do sistema comercial.
Vamos seguir avançando para criar uma lógica TS nítida, que será usada como base para novas pesquisas. Então, dois sistemas idênticos podem ser comparados, onde o segundo utilizará a lógica difusa.
3 osciladores RSI com diferentes períodos serão utilizados 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 em EURUSD, prazos М15 e М5 (o código completo do especialista está anexado no final do artigo):
Mesmo que 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 revelou-se muito direta e inflexível. Em média, o sistema não perde nem ganha por um período de 8 meses. Para fazê-lo ganhar, seria necessário recorrer a uma infinidade de combinações de condições, e possivelmente adicionar mais osciladores. Mas não há muito a ser otimizado, uma vez que as condições são definidas de forma extremamente precisa.
Procuremos borrar as idéias sobre as condições para tornar esse sistema comercial rentável usando a lógica difusa.
Criando um modelo de lógica difusa.
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 o Sugeno produz um modelo linear sem criar uma variável de saída na forma de um conjunto de termos difusos, enquanto o Mamdani fornece esse elemento. Como o artigo está escrito para comerciantes difusos, Mamdani será usado. Mas isso não implica que o modelo de Sugeno não seja adequado para algumas tarefas específicas: sempre é possível e necessário experimentar confiar 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, consideremos os principais estágios de construção da inferência difusa. Ele ocupa um lugar central em sistemas de modelagem difusa. O processo de inferência difusa é um procedimento específico ou um algoritmo para a obtenção de conclusões difusas com base em premissas difusas usando as operações básicas da lógica difusa.
Existem 7 estágios de construção de inferência difusa.
Determinando a estrutura do sistema de inferência difusa.
O número de entradas e saídas, bem como as funções de associação, são definidas 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 a inferência difusa, com base no nosso julgamento especializado do sistema de negociação.
Definindo a 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 associação do termo correspondente da variável linguística.
O procedimento para determinar o grau de verdade de 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) que constituem os conseqüentes de kernels de todas as regras de produção difusa.
O processo de encontrar uma função de associação para cada uma das variáveis linguísticas de saída.
Note-se que somente os pontos 1 e 2 precisam ser realizados, todos os outros serão feitos pelo sistema sem intervenção. Aqueles interessados nas sutilezas da operação da lógica difusa em todas as etapas podem encontrar mais detalhes aqui.
Determinando a estrutura do sistema de inferência difusa.
Continuemos com a criação do modelo. Defina 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 utilizados como entradas. Como o oscilador RSI está sempre na faixa de 0-100, é necessário criar uma variável para ele com a mesma dimensão. Mas por conveniência, os valores dos indicadores serão normalizados para um intervalo de 0-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 está definido na saída.
De acordo com o ponto 1 da criação da lógica difusa, também é necessário definir e configurar as funções de associação. Isso será feito no manipulador de eventos OnInit ():
Agora, deixe-nos ver qual é a função de membro e a que serve.
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 dos osciladores agora podem ser divididos em 3 grupos difusos, e cada grupo pode ter 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 dos quais tem 3 termos. Para ilustrar o acima, escreveremos 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 possuem apenas 2 parâmetros de entrada otimizados (isso será feito mais tarde, durante a fase 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 dos disponíveis na biblioteca Fuzzy.
Vamos adotar uma regra de que os valores extremos do oscilador indicam uma mudança futura em sua direção e, conseqüentemente, uma próxima inversão de tendência. Portanto, o oscilador que se aproxima de zero sugere um possível início 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 da "Zona Neutral" crescerá, que eventualmente será substituída por um aumento na CS_ShapedMembershipFunction ou "Sell zone" à medida que o oscilador se aproximar 1. O mesmo princípio é usado em todas as entradas e saídas, que verificam se os valores do indicador pertencem a uma determinada zona com limites difusos.
Não há restrições sobre o 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 usado 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 em operações lógicas. Pode haver uma quantidade indefinida de condições lógicas.
O exemplo fornecido estabelece 12 condições lógicas, que influenciam a inferência difusa quando encontrada. 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. Eles não serão alterados neste exemplo.
Se todos os 3 indicadores estiverem dentro da área difusa para comprar, um sinal de compra difuso será gerado. O mesmo se aplica aos sinais de venda e neutros. (regras 1-3)
Se 2 indicadores mostrem compra e um mostra vender, o valor de saída será neutro, ou seja, incerto. (regras 4-6)
Se 2 indicadores mostrarem comprar ou vender e um é neutro, então a compra ou venda é atribuída ao valor de saída. (regras 7-12)
Obviamente, esta não é a única variante para criar uma base de regras, você pode experimentar. Esta base de regras baseia-se apenas no meu julgamento "perito" e na visão de como o sistema deve funcionar.
Obtendo um valor de saída nítido depois da defuzzificação.
Resta calcular o modelo e obter o resultado como um valor de 0 a 1. Valores próximos de 0 indicará um sinal de compra forte, aqueles próximos a 0,5 são neutros e valores próximos de 1 significa 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 valores dos indicadores mais recentes), o envia para cálculos, cria uma lista para a variável de saída e leva o resultado na variável 'res'.
Adicionando funções de serviço e otimizando / testando o sistema resultante.
Uma vez que a aprendizagem de máquinas ou, pelo menos, o básico também estão sendo consideradas, alguns parâmetros serão movidos para entradas e otimizados.
Os parâmetros do gaussiano (função de membro) serão submetidos a otimização na saída da lógica difusa. Ele terá seu centro ao longo do eixo X deslocado (parâmetro Gposition), seu sigma mudou (seu sino estreitado e comprimido, parâmetro Gsigma). Isso dará um melhor ajuste do sistema no caso de os sinais RSI para compra e venda serem assimétricos.
Além disso, otimize as condições para abrir promoções: o valor mínimo de um sinal neutro e o valor máximo (as 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 seguinte lista:
Os cálculos serão realizados na barra nova para acelerar a demonstração. Você é livre para personalizar a lógica a seu critério, por exemplo, trocar em todos os tiques simplesmente removendo o cheque para 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 comerciais, e o encerramento / reabertura de negócios é baseado em sinais.
O Expert Advisor usa a biblioteca MT4Orders para facilitar o trabalho com pedidos e para tornar o código facilmente conversível em MQL4.
Processo de teste.
Selecione o melhor resultado de otimização:
Compare com os resultados de teste do modelo rígido:
As funções de associação resultantes na saída, após a otimização (as entradas permanecem inalteradas uma vez que não foram otimizadas):
Antes das mudanças:
Otimize o sistema com as mesmas configurações, mas no cronograma M5:
Compare com os resultados de teste do modelo rígido:
As funções de associação resultantes na saída, após a otimização (as entradas permanecem inalteradas uma vez que não foram otimizadas):
Antes das mudanças:
Em ambos os casos, o gaussiano (zona neutra) foi deslocado em direção às 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 tornaram assimétricos neste segmento específico da história, que não poderia ser descoberto sem essa experiência. É possível que o sistema que consiste em três RSI foi na zona de sobrevenda (área 1) mais frequentemente do que na zona de sobrecompra (área 0) e a otimização do gaussiano ajudou a suavizar esse desequilíbrio. Quanto à saída mais nítida, é consistentemente difícil imaginar por que tal 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 durante 8 meses, embora apenas 4 parâmetros foram otimizados. E eles podem ser facilmente reduzidos a dois (Gsigma e Gposition), uma vez que os restantes 2 tiveram pouco impacto no resultado e estão sempre próximos de 0,5. Isto é assumido como um resultado satisfatório para um sistema experimental, visando 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 comercial. Em contraste, teria sido necessário criar numerosos critérios de otimização para regras rígidas, o que aumentaria a complexidade do desenvolvimento do sistema e o número de parâmetros otimizados.
Também deve notar-se que este ainda é um exemplo muito grosseiro de construir um sistema de negociação baseado em lógica difusa, pois usa uma estratégia primitiva baseada em RSI sem sequer usar perdas de parada. No entanto, isso deve ser suficiente para entender a aplicabilidade da lógica difusa à criação de sistemas de negociação.
Conclusão.
A lógica fuzzy permite uma rápida criação de sistemas com regras difusas que são muito simples de otimizar. Ao mesmo tempo, o processo complexo de seleção dos parâmetros do sistema comercial passa pela otimização genética, liberando o desenvolvedor da rotina de busca de uma estratégia comercial, desenvolvendo e algoritmo de inúmeras regras do sistema comercial. Juntamente com outros métodos de aprendizagem de máquinas (por exemplo, redes neurais), esta abordagem permite alcançar resultados impressionantes. Isso reduz a chance de superação e a dimensão dos dados de entrada (3 indicadores RSI com diferentes períodos reduzidos a um único sinal, que descreve a situação do mercado de forma mais completa e mais generalizada do que cada indicador por conta própria).
Se você ainda tem problemas para entender como funciona a lógica difusa, pergunte-se sobre como você pensa, quais os termos que você opera e quais as bases de regras em que sua tomada de decisão se baseia.
Aqui está um exemplo de reforço. Por exemplo, você tem 3 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 nenhum esforço adicional é necessário. Ir para uma festa é viável se alguém o convide e o pega, mas, como ainda não aconteceu, as chances de ir são médias. E, finalmente, para salvar o mundo, você precisa mobilizar todas as suas habilidades sobrenaturais, colocar uma fantasia de superman e lutar contra um monstro alienígena. É improvável que você decida fazer isso hoje e não deixá-lo até amanhã, então as chances são escassas.
A inferência difusa será algo assim: provavelmente vou ficar em casa, e talvez eu vá à 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, a saída nítida ficaria na faixa 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 preferível no momento atual: comprar, vender ou não fazer nada.
Possíveis maneiras de melhorar este exemplo (para auto-estudo):
Aumentando o número de entradas e condições lógicas. Isso aumenta a capacidade do sistema e torna-o mais adaptável ao mercado. Otimizando não apenas o Gaussiano de saída, mas também todas as funções de associação de entradas e saídas. Otimizando a base da regra. Otimização dos pesos das expressões lógicas. Criando um comitê de vários modelos difusos responsáveis por diferentes aspectos do sistema de negociação. Usando inferências difusas como preditores ("recursos") e / ou variáveis alvo para redes neurais.
Se houver interesse suficiente no artigo, e recebo 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 que o especialista compile e trabalhe, é necessário baixar a biblioteca MT4Orders e a biblioteca Fuzzy atualizada.
Traduzido do russo pela MetaQuotes Software Corp.
Lógica difusa para criar estratégias de negociação manuais.
Introdução.
Um rápido desenvolvimento da tecnologia levou a uma maior tendência de usar sistemas de negociação automatizados em mercados cambiais modernos. No entanto, muitos comerciantes continuam usando o comércio manual. Prós e contras de ambas as abordagens comerciais são muito conhecidos: o comércio automatizado não possui flexibilidade para mudanças constantes do mercado e o comércio manual, pelo contrário, pode ser muito flexível devido a um fator de interferência humano freqüente. De fato, nesta comparação, estes são dois extremos da mesma essência.
No meu artigo anterior, eu dediquei exemplos, onde tentei compensar as desvantagens do comércio automatizado, aplicando a teoria da lógica difusa, por exemplo, por meio de uma formalização de estratégia excessivamente rígida, aplicada em um robô comercial ou um indicador. Neste artigo, será considerada uma oportunidade para melhorar a estratégia de negociação manual. O uso da tecnologia moderna, mesmo no regime de negociação manual, onde uma decisão final sempre depende dos comerciantes, traz mais benefícios do que danos.
Selecionando estratégia manual com uma formalização específica de condições.
Muitos comerciantes modernos optam por assumir a responsabilidade de entrar e sair de posições, em vez de confiar em sistemas automatizados. Eles exigem desenvolver sua própria estratégia comercial que leve em consideração todos os resultados possíveis do comportamento do mercado. Depois, um teria que segui-lo estritamente e resistir a quaisquer impulsos que pudessem ser provocados pelo medo e pela ganância.
Portanto, primeiro precisamos de uma estratégia de negociação. Deixe-me descrever-lhe três estágios de como vamos construí-lo.
Stage No1. Encontrando e identificando instrumentos que serão usados para nossa estratégia. Stage No2. Definindo condições específicas usadas por um comerciante para abrir uma posição no mercado. Stage No3. Definindo 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:
Vista geral selecionada e configurações do terminal de negociação MQL4:
Fig. 1. Visão geral das configurações de estratégia.
Na segunda etapa, descobriremos uma maneira de usar instrumentos selecionados, condições para o seu funcionamento e também os parâmetros de posição para a entrada no mercado.
Vamos começar do começo.
Nosso primeiro indicador é ADX. Como se vê a partir do 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) igual a 30 foi definido especificamente. Qualquer valor que seja igual ou superior, será considerado como um sinal positivo para a entrada no mercado. Vale a pena notar que o sinal de compra deste indicador será o caso quando + DI (linha tracejada verde) for maior que - DI (linha tracejada vermelha). Consequentemente, o sinal de venda enfrenta uma situação inversa quando - DI é superior a + DI. O segundo indicador é AC. Aqui vamos usar os sinais descritos na documentação oficial. Especificamente, se o valor do indicador for inferior a 0 e cresce nas barras analisadas e duas anteriores, então é um sinal de compra. Portanto, se o valor do indicador estiver acima de 0 e cai nas barras analisadas e duas anteriores, obtemos um sinal de venda. O terceiro indicador é RVI. Vamos definir o período de operação igual a 10. Como condição para a compra, determinaremos o momento em que a linha de sinal (vermelho fino) cruza a linha principal (verde). Nessa interseção, o valor da linha na barra analisada deve estar abaixo do ponto zero. Da mesma forma, estabelecemos condições de venda: a linha de sinal cruza a linha principal, mas os valores estão posicionados acima de zero. A próxima condição para uma operação será um cronograma horário (H1). A condição para a entrada de posição implica a passagem de sinais semelhantes dos três indicadores selecionados. E, finalmente, vamos decidir sobre o tamanho da posição. Por exemplo, o seguinte será definido: 0,01 lote, tire lucro de 50 pontos, pare a perda de 30 pontos.
Os termos serão formalizados para melhor clareza.
Entrando em uma posição longa (sinal de compra)
A linha verde principal do indicador ADX mantém o valor maior ou igual a 30, enquanto que o valor DI é superior a - DI. O valor AC cresce na barra atual e é maior do que nas duas barras anteriores, que também crescem consistentemente. Visualmente, estas são três colunas do histograma verde, onde cada coluna é menor do que a anterior, e as três estão posicionadas na área negativa. A linha do sinal RVI (vermelho fino) cruza a linha principal (verde), ambas crescem, mas ainda permanecem abaixo do ponto zero. Compramos com 0,01 lote, coloque Take Beneit de 50 pontos e Stop Loss de 30 pontos. Inserindo uma posição curta (sinal de venda) A linha verde principal do indicador ADX possui valor que excede ou igual a 30, enquanto que o valor DI é inferior a - DI. O valor AC cai na barra atual e é menor do que nas duas barras anteriores que continuam a cair consistentemente. Visualmente, estas são três colunas do histograma vermelho, onde cada coluna é menor do que a anterior, e os valores dos três estão acima de zero. A linha de sinal RVI (vermelho fino) cruza a linha principal (verde), ambas diminuem, mas permanecem na área positiva. Nós vendemos com 0,01 lote, coloque Take Beneit 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, estabelecemos o preço alvo que obtivemos anteriormente: alcançar lucro de 50 pontos ou executar a Stop Loss de 30 pontos.
Então, nossa estratégia de negociação agora está definida. Nós estabelecemos as condições para abrir e fechar posições, selecionar os indicadores e definir seus parâmetros operacionais, definir os tamanhos de entrada de posição e seus objetivos. E, finalmente, decidimos 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 existem estratégias ideais em uma perspectiva de longo prazo e absolutamente todas as etapas do mercado. E os comerciantes que usam negociação automatizada e aqueles que comercializam manualmente observam com freqüência que seu sistema prova-se de forma diferente em várias condições. Além disso, não é incomum quando as condições iniciais no sistema comercial já especificado poderiam ter apresentado melhores resultados.
Por exemplo, em relação ao nosso sistema, um comerciante pode ter percebido que o set Take Profit poderia ter sido feito mais alto. Isso não é porque ele simplesmente deseja ganhar mais, mas porque ele constantemente analisa seu sistema, e suas estatísticas mostram que depois de fechar negociações bem sucedidas, o preço continuou se movendo na direção desejada por algum tempo. Por conseguinte, 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?
Remédio às deficiências da formalização rigorosa com lógica difusa.
Vejamos os indicadores usados em nosso sistema na perspectiva da teoria da lógica difusa. No meu artigo anterior, tentei transmitir a sua principal vantagem: a flexibilidade na análise das partes da estratégia de negociação em que se aplica categorização rigorosa. A lógica difusa estava desfocando limites rigorosos, dando uma imagem mais ampla 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. Em primeiro lugar, uma estrita divisão entre tendências fracas, médias e fortes foi aplicada, mas essas categorias foram borradas e a determinação da força da tendência ainda 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 nosso comerciante observa o mercado e vê o sinal de seu primeiro indicador: ADX chegou a 32, por exemplo. Ele marca isso e aguarda confirmação de outros dois indicadores. Em breve, o sinal da CA chega, enquanto o ADX mostra um aumento de até 40. A linha de sinal RVI atravessa a linha principal após algum tempo, o que significa que as três condições para entrar na posição foram finalmente atendidas. ADX já alcançou o ponto 45. Mas o valor absoluto do ADX em nosso sistema não é tão importante. O principal é que ele excede 30. Portanto, um comerciante segue suas regras e entra no mercado com 0,01 lotes, Tire o Lucro em 50 pontos e Stop Loss em 30.
Agora, vamos simular outro cenário possível. No início, a situação se desenvolve da mesma maneira que no primeiro caso. ADX = 32, o sinal chega de AC, ADX atinge simultaneamente o ponto 40. Mas quando o último sinal faltando para a abertura da posição chega do 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 do que o anterior, mas nosso comerciante ainda abre o posicione com o mesmo lote e os mesmos valores de Take Profit e Stop Loss.
Aqui encontramos a primeira desvantagem de nossa estratégia. Somente a existência do sinal recebido é avaliada, sem prestar muita atenção à qualidade. E mesmo se conseguimos avaliar e definir a categoria, a precisão da avaliação ainda será perdida em áreas de transição.
Então, como podemos aprovar um caso particular com os indicadores ADX, RVI e vincular seus parâmetros à posição que usamos para a entrada no mercado? Para isso, precisamos realizar as seguintes etapas:
Para estabelecer categorias claras de avaliação da força da tendência (ADX) e Índice de Vigor Relativo (RVI). Este será um sinal de entrada, com base no qual tomaremos uma decisão adicional. Para estabelecer categorias claras dos objetivos de nossa posição (Take Profit ou Stop Loss em nossa estratégia, embora possamos definir aqui muito tamanho). Este é um sinal de saída que irá corrigir nossa posição no mercado, dada a força da tendência. Para descrever as categorias de sinais de entrada e saída com funções de associação da teoria dos conjuntos difusos. Para criar uma interface que exiba recomendações para alterar uma posição da estratégia inicial com base nos novos termos. Para criar configurações flexíveis para alterar as funções de associação que permitiriam corrigir este sistema de recomendação quando necessário.
Para começar, descreveremos a primeira variável de entrada - valor da força da tendência.
1. Vamos definir 4 categorias de força da tendência: baixa, moderada, média e alta. É assim que vai olhar:
Fig. 2. Força de 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, mais dura. Portanto, procederemos em conformidade: dependendo de onde ADX é no momento em que os três sinais de estratégia são recebidos, vamos aumentar Take Profit de 10 a 50 pontos.
As seguintes categorias serão inseridas para o valor do objetivo de lucro que será adicionado aos 50 pontos iniciais de nossa estratégia.
categoria low_take: baixa tendência, adicione 10 a 20 pontos aos objetivos. categoria mod_take: tendência moderada, adicione 20 a 30 pontos aos objetivos. categoria med_take: tendência média, adicione 30 a 40 pontos para os objetivos. categoria high_take: alta tendência, adicione 40 a 50 pontos aos objetivos.
3. Na etapa seguinte, descreveremos as condições estabelecidas anteriormente com as funções de associação da teoria dos conjuntos difusos. A descrição de quatro categorias de tendências é a seguinte:
Fig. 3. Descrição de quatro categorias de tendências da lógica difusa.
Conforme mostrado na fig. 3, cada categoria foi definida pela função de associação, como: tendência baixa e alta tendência com duas funções de trapézio e categorias moderadas e médias com duas funções triangulares.
Agora, vamos definir o mesmo para o RVI.
1. Vamos definir as categorias para Relative Vigor Index. Haverá quatro: baixo, médio, alto e alto. É assim que vai olhar:
Fig. 4. Divisão visual do Índice de Vigor Relativo por categoria.
2. Agora, descreveremos as categorias apresentadas com as funções de associação. As funções do trapézio serão usadas para descrever categorias baixas e superiores, e funções triangulares serão aplicadas como para categorias médias e altas.
Fig. 5. Descrição das categorias do índice RVI.
Da mesma forma, descreveremos quatro categorias para valores de metas 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 pareceria.
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 os critérios especificados são satisfeitos, por exemplo - 30 ou acima. Valor RVI. Apenas desde que seja superior a 0,1 (sinal de venda), ou abaixo de -0,1 (para sinal de compra). O número recomendado de pontos que devem ser adicionados ao objetivo inicial de 50. Tire o valor do lucro no formato do preço do instrumento de negociação (tendo 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 configuração da estratégia de negociação.
Agora vamos analisar esta implementação de painel usando ferramentas MQL4 e 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 pela MetaQuotes Software Corp.
An Intelligent Trading System with Fuzzy Rules and Fuzzy Capital Management.
Rodrigo Naranjo,
Instalaciones Inabensa, Abengoa, Seville, Spain Search for more papers by this author.
Albert Meco,
Materia Works S. L, Madrid, Spain Search for more papers by this author.
Javier Arroyo,
Facultad de Informática, Universidad Complutense de Madrid, Spain Search for more papers by this author.
Matilde Santos.
Author to whom all correspondence should be addressed; e-mail: msantos@ucm. es.
First published: 11 April 2018 Full publication history DOI: 10.1002/int.21734 View/save citation Cited by (CrossRef): 3 articles Check for updates.
In this work, we are proposing a trading system where fuzzy logic is applied not only for defining the trading rules, but also for managing the capital to invest. In fact, two fuzzy decision support systems are developed. The first one uses fuzzy logic to design the trading rules and to apply the stock market technical indicators. The second one enhances this fuzzy trading system adding a fuzzy strategy to manage the capital to trade. Additionally, a new technical market indicator that produces short and long entry signals is introduced. It is based on the moving average convergence divergence indicator. Its parameters have been optimized by genetic algorithms. The proposals are compared to a classical nonfuzzy version of the proposed trading systems and to the buy-and-hold strategy. Results favor our fuzzy trading system in the two markets considered, NASDAQ100 and EUROSTOXX. Conclusions suggest that the use of fuzzy logic for capital management is promising and deserves further exploration.
Informações do artigo.
Formato disponível.
&cópia de; 2018 Wiley Periodicals, Inc.
História da publicação.
Issue online: 4 June 2018 Version of record online: 11 April 2018.
Spanish Ministry of Science and Innovation (MICINN). Grant Number: DPI2018-46665-C2-1-R.
Conteúdo Relacionado.
Artigos relacionados ao que você está visualizando.
Citando Literatura.
Number of times cited : 3.
1 Rodrigo Naranjo , Javier Arroyo , Matilde Santos , Fuzzy modeling of stock trading with fuzzy candlesticks, Expert Systems with Applications , 2018 , 93 , 15 CrossRef 2 Rodrigo Naranjo , Matilde Santos , International Joint Conference SOCO’16-CISIS’16-ICEUTE’16, 2017 , 527 , 323 CrossRef 3 Vince Vella , Wing Lon Ng , Improving risk-adjusted performance in high frequency trading using interval type-2 fuzzy logic, Expert Systems with Applications , 2018 , 55 , 70 CrossRef.
Direitos autorais e cópia; 1999 - 2018 John Wiley & amp; Sons, Inc. Todos os direitos reservados.
ePublicações na Universidade Regis.
Todas as teses da Universidade Regis.
Autor.
Primeiro conselheiro.
Segundo Conselheiro.
Faculdade de Estudos Profissionais.
Nome da graduação.
MS Software Engineering and Database Technologies.
Escola de Informática e Ciência da Informação.
Document Type.
Tese - Acesso aberto.
Número de páginas.
A análise técnica dos mercados financeiros envolve a análise dos movimentos dos preços passados, a fim de identificar oportunidades comerciais favoráveis. O objetivo desta pesquisa foi demonstrar que um sistema de negociação de estoque de lógica difusa baseado em análises técnicas pode ajudar os comerciantes médios a se tornarem bem sucedidos otimizando o uso de indicadores técnicos e regras comerciais que os especialistas usam para identificar quando comprar e vender ações. A pesquisa de literatura relevante explorou o estado atual do conhecimento em metodologias para desenvolver e validar sistemas comerciais usando indicadores técnicos e sistemas de negociação de lógica difusa, fornecendo diretrizes para o desenvolvimento e avaliação do sistema. A avaliação do sistema confirmou que a lógica difusa pode ter uma contribuição positiva para um sistema de negociação bem-sucedido e que, uma vez que o sistema de negociação bem-sucedido foi desenvolvido e verificado, um comerciante médio pode ser bem sucedido simplesmente seguindo os sinais de compra e venda do sistema comercial. O comerciante não precisa ser um especialista em interpretar os indicadores técnicos subjacentes ou reagir emocionalmente aos movimentos de preços. As decisões de negociação são feitas pelo sistema comercial, de modo que a única decisão que o comerciante médio precisa fazer é se existe confiança suficiente no sistema para cometer dinheiro real na negociação ao vivo. As sugestões para futuras pesquisas incluem melhorias na precisão e flexibilidade e na investigação de modelos e filtros comerciais adicionais.
Data do prêmio.
Localização (Criação)
Declaração de direitos.
Todo o conteúdo desta coleção é de propriedade e sujeito ao controle exclusivo da Universidade Regis e dos autores dos materiais. Está disponível apenas para fins de pesquisa e não pode ser usado em violação das leis de direitos autorais ou para fins ilícitos. Os materiais não podem ser baixados no todo ou em parte sem a permissão do titular dos direitos autorais ou, de outra forma, autorizados nos padrões de "uso justo" das leis e regulamentos de direitos autorais dos EUA.
Citação recomendada.
Zeigenbein, Sammy, "A Fuzzy Logic Stock Trading System Based On Technical Analysis" (2018). Todas as teses da Universidade Regis. 474.
New article: Applying fuzzy logic in trading by means of MQL4.
The article deals with examples of applying fuzzy set theory in trading by means of MQL4. The use of FuzzyNet library for MQL4 in the development of an indicator and an Expert Advisor is described as well.
The modern-day trading cannot be imagined without automated trading systems usually called Expert Advisors or robots. Most, if not all, of them feature a clear, hard-coded trading strategy and money management system. Their main advantage is a rigid algorithm excluding the human factor. However, this advantage is also their main drawback since trading robots lack flexibility. Regardless of the market conditions, an Expert Advisor always applies the same trading strategy with the same strictly categorized parameters. In other words, the system always acts rigidly: average trend > enter the market with one lot, strong trend > enter the market with two lots. No deviations!
Unlike an automated system, human traders think in fuzzy categories and may have different opinions on similar market entry signals. They are often doubtful and keep asking themselves if the trend is moderate or strong. And even if the trend is significant, is it strong enough to enter in two lots? Such fuzzy categories can be handled by the fuzzy logic. The fuzzy logic does not set rigid boundaries between the categories. Instead, it "blurs" them making a trading system more flexible and combining the rigidness of a trading robot with the flexibility of a human mind. The article provides examples of applying the fuzzy logic system in trading by means of MQL4.
Comments
Post a Comment