Thursday, 22 March 2018

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 ser observado 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. Vamos definir a opção para encontrar o painel na janela do gráfico. Definiremos um buffer de indicador e sua cor (verde) para um indicador de seta da barra que analisamos.
Examinaremos o primeiro bloco de parâmetros de entrada em mais detalhes. Ele contém os seguintes elementos:
fontSize - tamanho da fonte das informações textuais (faixa recomendada 8 - 15). adx_period - período de operação do indicador ADX. num_bar - número de barras para o qual o sistema é calculado. Screen_corner - ângulo para exibir o painel. label_clr - cor do texto do cabeçalho. textColor - texto de cor do valor.
O segundo bloco de entrada Fuzzy Logic Parameters contém a maioria dos parâmetros para configurações flexíveis de todas as funções de associação que descrevem entrada (força de tendência ADX, índice RVI) e parâmetros de saída (valor recomendado de pontos de lucro).
No próximo bloco, declaramos variáveis, nomes de cabeçalhos, o modelo real do painel de informações (tamanho, localização, fonte e outros) e configura os parâmetros de exibição do elemento que indica a barra atual (a flecha no nosso caso).
Agora, dê uma olhada no bloco principal de sinais de processamento dos indicadores ADX e RVI.
As condições são definidas em que valores de indicadores satisfazem os sinais de compra e venda. Quando eles combinam, os valores são manipulados com a função mamdani (double t, double v) e exibidos no painel. Tudo isso tem a seguinte forma: valores atuais do indicador mostrando que recebemos um sinal de compra ou venda; Recomende Take Profit (em pontos e valor numérico).
A função cria o sistema de lógica difusa. Ele contém dois sinais de entrada dos indicadores - tendência e vigor (cada um deles é composto por quatro termos descritos por funções de associação) e um sinal de saída. Quatro regras com as quais os sinais de entrada e saída estão conectados também estão incluídas no sistema.
Passemos ao bloco final - "Funções adicionais". O primeiro - tp_prc (dupla captura) converte o valor Take Profit em pontos para um valor numérico do preço atual do instrumento monetário. O segundo define o número de sinais no instrumento monetário atual.
Gostaria também de chamar a atenção para a correção das configurações e re-verificação da correção dos parâmetros na seção Parâmetros da lógica difusa ao testar. Eu recomendo confiar na sua representação gráfica inicial na fig. 3, 5, 6, uma vez que valores incorretos podem causar erros e operação incorreta de todo o sistema. Por favor, seja cuidadoso!
Conclusão.
Em conclusão, vamos resumir o que aprendemos.
A primeira parte do trabalho para criar uma estratégia de negociação manual com lógica difusa reside no desenvolvimento de regras estritamente formalizadas desta estratégia. Este foi examinado nos estágios No1 - No3. Em seguida, é necessário encontrar desvantagens da formalização rigorosa onde se aplica uma categorização rigorosa de quaisquer blocos ou parâmetros estimados. No exemplo fornecido, uma parte da estratégia que não nos permitiu determinar o momento da entrada no mercado com flexibilidade suficiente foi encontrada. Além disso, todas as categorias claras são descritas usando a teoria do conjunto difuso e, assim, tornam-se mais flexíveis. Agora, nos valores do boarder, pode haver uma pertença a não apenas uma categoria específica como antes, mas ambas simultaneamente em uma extensão diferente. Esta estratégia é implementada na forma do indicador, painel ou alerta. Neste artigo, foi selecionado um painel no idioma MQL4. Consideramos a oportunidade de melhorar a estratégia de negociação manual aplicando a teoria dos setores difusos. O uso do exemplo revelou mais detalhes sobre como a estratégia de negociação já formada é modificada e complementada pela aplicação de lógica difusa e destruição das falhas descobertas.
Traduzido do russo pela MetaQuotes Software Corp.

Sistema de Negociação de Especialista Fuzzy Genético para o Nasdaq Stock Market Timing.
Sze Sing Lam Kai Pui Lam Hoi Shing Ng.
Os indicadores técnicos são desenvolvidos para monitorar o movimento dos preços das ações de diferentes perspectivas. Eles são amplamente utilizados para definir as regras de negociação para ajudar os investidores a tomarem a decisão de compra e venda. A maioria dessas regras comerciais são de natureza vaga e difusa. Uma vez que os preços das ações são afetados pelos fatores de notícias artificiais de tempos em tempos, os investidores não podem ser o vencedor o tempo todo usando o mesmo conjunto de regras de negociação. O peso (ou seja, o significado) de uma regra de negociação para os investidores está variando com o tempo. O problema de determinar o peso das regras de negociação pode ser modelado como um problema de otimização. Neste artigo, propomos um Sistema de Negociação de Especialistas em Fuzzy Genética (GFETS) para o timing do mercado. Nós aplicamos o sistema especializado fuzzy para simular regras de negociação vagas e difusas e dar o sinal de compra-venda. O conjunto de regras comerciais adotadas no sistema variará com o tempo e será otimizado usando Algoritmo Genético (GA). Duas abordagens de treinamento - incrementais e dinâmicas - são projetadas e estudadas. O sistema foi avaliado com as ações no mercado NASDAQ. Os resultados experimentais mostraram que o sistema pode fornecer sinais confiáveis ​​de compra-venda e o uso do sistema para realizar compra-venda pode produzir lucros significativos.
Preview.
Referências.
Informações sobre direitos autorais.
Autores e afiliações.
Sze Sing Lam 1 Kai Pui Lam 2 Hoi Shing Ng 2 1. Escola de Negócios e Administração A Universidade Aberta de Hong Kong Homantin, Kowloon Hong Kong 2. Departamento de Engenharia de Sistemas & amp; Gestão de Engenharia A Universidade Chinesa de Hong Kong Shatin, N. T. Hong Kong.
Sobre este capítulo.
Recomendações personalizadas.
Cite o capítulo.
.RIS Papers Reference Manager RefWorks Zotero.
.BIB BibTeX JabRef Mendeley.
Compartilhe o capítulo.
Download instantâneo legível em todos os dispositivos Possuí-lo para sempre Imposto de venda local incluído, se aplicável.
Cite o capítulo.
.RIS Papers Reference Manager RefWorks Zotero.
.BIB BibTeX JabRef Mendeley.
Compartilhe o capítulo.
Mais de 10 milhões de documentos científicos ao seu alcance.
Switch Edition.
&cópia de; 2017 Springer International Publishing AG. Parte de Springer Nature.

Um Sistema de Negociação Inteligente com Regras Fuzzy e Fuzzy Capital Management.
Rodrigo Naranjo,
Instalaciones Inabensa, Abengoa, Sevilha, Espanha Procure mais artigos deste autor.
Albert Meco,
Materia Works S. L, Madrid, Espanha Procure por mais artigos deste autor.
Javier Arroyo,
Facultad de Informação e Ação, Universidade Complutense de Madrid, Espanha Procure por mais artigos deste autor.
Matilde Santos.
Autor a quem toda a correspondência deve ser endereçada; E-mail: msantos@ucm. es.
Primeira publicação: 11 de abril de 2018 Histórico completo de publicação DOI: 10.1002 / int.21734 Ver / salvar citação Citado por (CrossRef): 3 artigos Verifique se há atualizações.
Neste trabalho, estamos propondo um sistema comercial onde a lógica difusa é aplicada não só para definir as regras de negociação, mas também para administrar o capital para investir. Na verdade, dois sistemas de suporte a decisões difusas são desenvolvidos. O primeiro usa lógica difusa 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 negociar. Além disso, um novo indicador de mercado técnico que produz sinais de entrada curtos e longos é introduzido. Baseia-se no indicador de divergência de convergência média móvel. Seus parâmetros foram otimizados por algoritmos genéticos. As propostas são comparadas com uma versão clássica não fuzzy dos sistemas de negociação propostos e com a estratégia de compra e retenção. Os resultados favorecem o nosso sistema de negociação difuso nos dois mercados considerados, NASDAQ100 e EUROSTOXX. As conclusões sugerem que o uso de lógica difusa para gerenciamento de capital é promissor e merece maior exploração.
Informações do artigo.
Formato disponível.
&cópia de; 2018 Wiley Periodicals, Inc.
História da publicação.
Emissão on-line: 4 de junho de 2018 Versão do registro on-line: 11 de abril de 2018.
Ministério da Ciência e Inovação do espanhol (MICINN). Número do subsídio: DPI2018-46665-C2-1-R.
Conteúdo Relacionado.
Artigos relacionados ao que você está visualizando.
Citando Literatura.
Número de vezes citado: 3.
1 Rodrigo Naranjo, Javier Arroyo, Matilde Santos, modelo fuzzy de negociação de ações com castiçal fuzzy, Sistemas Expert com Aplicações, 2018, 93, 15 CrossRef 2 Rodrigo Naranjo, Matilde Santos, International Joint Conference SOCO 16-CISIS & rsquo; 16-ICEUTE & rsquo; 16, 2017, 527, 323 CrossRef 3 Vince Vella, Wing Lon Ng, Melhorando o desempenho ajustado ao risco em negociação de alta freqüência usando o intervalo de tipo 2 lógica fuzzy, Sistemas Expert com Aplicações, 2018, 55, 70 CrossRef.
Direitos autorais e cópia; 1999 - 2017 John Wiley & amp; Sons, Inc. Todos os direitos reservados.

Sistema de negociação fuzzy
O ACSIS é uma série de estilo diário em linha que reporta resultados de pesquisa teórica e aplicada em ciência da computação e sistemas de informação. A série publica contribuições em uma ampla área que atravessa as fronteiras entre ciência (incluindo ciências sociais), engenharia e gerenciamento. Aceita publicações resultantes do mercado comercial, desde que os problemas industriais discutidos estimulem as ciências relacionadas e possam impactar a profissão de engenharia.
O ACSIS se originou de uma necessidade percebida para estabelecer a continuidade da presença eletrônica de volumes resultantes da série de conferências FedCSIS (Federated Computer Science and Information Systems, fedcsis). Como resultado de acordos entre a Polish Information Processig Society e o IEEE, os documentos da série de conferências FedCSIS são publicados sob um direito autoral conjunto e também fazem parte da Biblioteca Digital IEEE Xplore®.
A publicação eletrônica em tempo oportuno de procedimentos de conferência rigorosamente revisados ​​é um importante, mas não o único, tipo de material publicado pelo ACSIS. Algumas outras possibilidades incluem volumes temáticos pós-conferência (constituídos por documentos revisados ​​e ampliados em pelo menos 30%), relatórios de pesquisa de grandes projetos, monografias convidadas, edições especiais sobre temas quentes em ciência da computação e sistemas de informação, etc.
O ACSIS é indexado na Web of Science, SCOPUS, DBLP, CrossRef, BazEkon, Open Access Library, Index Copernicus, AcademicKeys, PBN, ARIANTE e iniciou o processo de abstração / indexação do conteúdo em mais.
Revista eletrônica.
O ACSIS fornece acesso aberto on-line imediato ao seu conteúdo que pode ser distribuído de acordo com os termos e condições estabelecidos na Licença de Atribuição de Creative Commons (CC BY). Sob esta licença, os autores mantêm a propriedade dos direitos autorais do seu conteúdo, mas permitem que qualquer pessoa baixe, reutilize, reimprima, modifique, distribua e / ou copie o conteúdo, desde que os autores e fontes originais sejam citados. Não é necessária nenhuma autorização dos autores ou dos editores. A atribuição apropriada pode ser fornecida simplesmente citando o artigo original. Os autores concedem o direito de publicação da primeira publicação.
Não são solicitadas taxas de publicação ou acesso.
Editores de séries.
Ganzha, Maria, Instituto de Pesquisa de Sistemas, Academia Polaca de Ciências, Varsóvia e Universidade de Gdansk, Gdańsk, Polônia.
Maciaszek, Leszek A., Universidade de Economia de Wrocław, Polônia e Macquarie University, Sydney, Austrália.
Paprzycki, Marcin, Instituto de Pesquisa de Sistemas, Academia Polaca de Ciências, Varsóvia e Academia de Gestão, Varsóvia, Polônia.
Editor Associado:
Katarzyna Wasielewska-Michniewska, Instituto de Pesquisa de Sistemas, Academia Polonês das Ciências, Varsóvia, Polônia.
Paweł Sitek, Kielce University of Technology, Kielce, Polônia.
Editor Técnico:
Para propor um volume, entre em contato com Maria Ganzha em: maria. ganzha [em] ibspan. lei. pl.

No comments:

Post a Comment