четверг, 19 апреля 2018 г.

Um sistema de negociação baseado em lógica 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 pode nunca ser idêntico no futuro, e teria apenas contornos similares. 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. As informações sobre este tópico estão amplamente disponíveis na Internet e no site 5. 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 padrão de 5 terminais.


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 os principais estágios de 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 fuzzy 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 de 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 a partir 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). Isso dará 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 4Orders para facilitar o trabalho com pedidos e tornar o código facilmente conversível em 4.


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 que 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 das 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 4Orders e da biblioteca Fuzzy atualizada.


Traduzido do russo por MetaQuotes Software Corp.


ePublications na Regis University.


Todas as teses da Universidade Regis.


Primeiro conselheiro.


Segundo conselheiro.


Faculdade de Estudos Profissionais.


Nome da graduação.


Engenharia de Software MS e Tecnologias de Banco de Dados.


Escola de Computação e Ciência da Informação.


Tipo de documento.


Tese - Acesso Aberto.


Número de páginas.


A análise técnica dos mercados financeiros envolve a análise de movimentos passados ​​de preços, a fim de identificar oportunidades comerciais favoráveis. O objetivo desta pesquisa foi demonstrar que um sistema de negociação de ações fuzzy logic baseado em análise técnica pode ajudar 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 de negociação 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 fuzzy pode ter uma contribuição positiva para um sistema comercial bem sucedido, e que uma vez que um sistema de negociação bem sucedido tenha sido desenvolvido e verificado, um trader médio pode ser bem sucedido simplesmente seguindo os sinais de compra e venda do sistema de negociação. O profissional 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 tomadas pelo sistema de negociação, portanto, a única decisão que o trader médio precisa tomar é se há confiança suficiente no sistema para cometer dinheiro real em negociações ao vivo. Sugestões para pesquisas futuras incluem melhorias na precisão e flexibilidade e investigação de modelos comerciais e filtros adicionais.


Data do prêmio.


Localização (criação)


Declaração de direitos.


Todo o conteúdo desta coleção pertence e está sujeito ao controle exclusivo da Regis University e dos autores dos materiais. Está disponível apenas para fins de pesquisa e não pode ser usado em violação de leis de direitos autorais ou para fins ilegais. Os materiais não podem ser baixados no todo ou em parte sem a permissão do detentor dos direitos autorais ou de outra forma autorizada nos padrões de "uso justo" das leis e regulamentos de direitos autorais dos EUA.


Citação Recomendada.


Zeigenbein, Sammy, "Um sistema de negociação de ações de lógica fuzzy baseado em análise técnica" (2011). Todas as teses da Universidade Regis. 474


ePublications na Regis University.


Todas as teses da Universidade Regis.


Primeiro conselheiro.


Segundo conselheiro.


Faculdade de Estudos Profissionais.


Nome da graduação.


Engenharia de Software MS e Tecnologias de Banco de Dados.


Escola de Computação e Ciência da Informação.


Tipo de documento.


Tese - Acesso Aberto.


Número de páginas.


A análise técnica dos mercados financeiros envolve a análise de movimentos passados ​​de preços, a fim de identificar oportunidades comerciais favoráveis. O objetivo desta pesquisa foi demonstrar que um sistema de negociação de ações fuzzy logic baseado em análise técnica pode ajudar 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 de negociação 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 fuzzy pode ter uma contribuição positiva para um sistema comercial bem sucedido, e que uma vez que um sistema de negociação bem sucedido tenha sido desenvolvido e verificado, um trader médio pode ser bem sucedido simplesmente seguindo os sinais de compra e venda do sistema de negociação. O profissional 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 tomadas pelo sistema de negociação, portanto, a única decisão que o trader médio precisa tomar é se há confiança suficiente no sistema para cometer dinheiro real em negociações ao vivo. Sugestões para pesquisas futuras incluem melhorias na precisão e flexibilidade e investigação de modelos comerciais e filtros adicionais.


Data do prêmio.


Localização (criação)


Declaração de direitos.


Todo o conteúdo desta coleção pertence e está sujeito ao controle exclusivo da Regis University e dos autores dos materiais. Está disponível apenas para fins de pesquisa e não pode ser usado em violação de leis de direitos autorais ou para fins ilegais. Os materiais não podem ser baixados no todo ou em parte sem a permissão do detentor dos direitos autorais ou de outra forma autorizada nos padrões de "uso justo" das leis e regulamentos de direitos autorais dos EUA.


Citação Recomendada.


Zeigenbein, Sammy, "Um sistema de negociação de ações de lógica fuzzy baseado em análise técnica" (2011). Todas as teses da Universidade Regis. 474


Código de troca L de castiçal de lógica distorcida R Código I.


25 de fevereiro de 2017.


Neste post vou discutir um sistema de negociação candlestick fuzzy logic. Você pode estar se perguntando o que é essa coisa de lógica difusa. A lógica fuzzy tem sido ignorada pelas principais finanças há muito tempo, apesar do fato de ter sido usada em muitas aplicações industriais. Você leu o post sobre como fazer 100-800 pips por negociação? Na negociação, a lógica difusa é raramente usada. Em 5, há uma biblioteca de lógica difusa que podemos usar para codificar nossos indicadores. Mas essa biblioteca faz coisas básicas. O que precisamos é a capacidade de construir redes neurais em nossas variáveis ​​lógicas difusas. Também precisamos fazer mineração de dados. Isso pode ser feito usando R language. R é uma poderosa linguagem de script que tem mais de 3000 pacotes ou o que você chama de bibliotecas para fazer ciência de dados e aprendizado de máquina. A lógica difusa é um conceito poderoso. Se você estiver interessado, eu desenvolvi um curso sobre Fuzzy Logic For Traders. Neste curso, tomo-o à mão e explico tudo o que você precisa saber sobre a lógica difusa para começar a aplicá-la à sua negociação. Eu desenvolvo alguns sistemas de negociação baseados em lógica difusa no curso.


A negociação algorítmica é o futuro.


O comércio algorítmico está prestes a dominar o mundo das negociações. Hoje, mais de 70% dos negócios que estão sendo colocados em Wall Street estão sendo colocados através de sistemas de negociação algorítmica. Os dias de negociação manual estão chegando a um en. Se você quiser, este é o momento de aprender a negociação algorítmica. Você pode dar uma olhada no nosso curso Java For Algorithmic Trading. Java é uma poderosa linguagem de programação de sistema. Neste curso, ensinamos a você como fazer aprendizado de máquina e ciência de dados usando Java. Em seguida, mostramos como construir seus sistemas de negociação na Dukascopy JForex e na Interactive Interkers Trader Work Station. Então, se você realmente deseja dominar a negociação algorítmica, você deve fazer este curso, pois este curso é repleto de exemplos práticos e foca totalmente na negociação. Isso é diferente de outros cursos que levam seus exemplos de outras áreas de interesse. Java tem sua poderosa biblioteca de lógica difusa JFuzzyLogic. Neste curso, também ensinamos como usar essa biblioteca JFuzzyLogic no desenvolvimento de seus próprios sistemas de negociação de lógica fuzzy.


Se você estiver em negociação algorítmica, então também precisa dominar a linguagem R. Neste post, vamos usar a linguagem de script R. R é a primeira linguagem que usamos para prototipar nosso sistema de negociação algorítmica. Uma vez que construímos o sistema usando R e testamos completamente e acreditamos que temos um sistema muito bom, podemos desenvolver o sistema usando Python, Java ou C ++. Por que precisamos fazer isso? Precisamos fazer isso porque R é uma linguagem lenta. C ++ é o idioma mais rápido. Depois disso vem Java e Python. Gostaríamos de construir o sistema algorítmico com uma linguagem que seja executada mais rapidamente. Então, depois de termos feito o teste, usamos Java ou C ++ para desenvolver o produto final. Você leu o post sobre British Pound Flash Crash? Esse flash crash foi causado por um algoritmo desonesto. Isto é o que um veterano comerciante de muitas décadas me disse. Segundo ele, os mercados mudaram drasticamente nos últimos anos. Hoje os algoritmos estão negociando contra algoritmos e quem vence a corrida armamentista nuclear traz o dinheiro para casa.


O que é a lógica difusa?


Agora voltando ao tópico da lógica fuzzy. Quando falamos de teoria lógica tradicional, existem apenas dois valores. Sim ou Não. Verdadeiro de Falso. No entanto, na vida cotidiana, as coisas são confusas. A coisa nunca é preto e branco. Existem muitos tons de cinza entre os valores em preto e branco. Nós podemos chover. É muito provável que chova. É um pouco provável que chova. É possível que chova. Pode chover. Estas são variáveis ​​lingüísticas que usamos para descrever nosso grau de crença de que pode chover hoje. Quando usamos a lógica tradicional, só podemos dizer que sim vai chover ou não, não vai chover. Mas, ao usar a lógica difusa, podemos usar nosso grau de crença para nos expressarmos com mais confiança, pois acredito que é provável que chova. Esse grau de crença de que choverá provavelmente está entre o valor preto e o valor da chuva ou da chuva. Podemos expressar chuva como 1 e sem chuva como 0. Um pouco provável que a chuva caia entre este valor 0 e 1. Você leu o post sobre como usar máquinas de vetores de suporte na negociação diária?


Agora, a maioria dos exemplos de lógica difusa usam o MATLAB. A licença do MATLAB é cara, então não posso usá-la. Nós estaremos usando a linguagem R para construir nosso sistema de negociação de lógica fuzzy. Os controladores lógicos difusos estão sendo amplamente utilizados na indústria. Você pode imaginar como essa lógica fuzzy é boa no controle de processos industriais. A primeira aplicação da lógica fuzzy ocorreu no Japão no controle dos trens Bullet. Assista ao vídeo abaixo que explica como desenvolver um controlador lógico difuso. O vídeo abaixo explica como você vai projetar um robô de lógica fuzzy de ebulição de ovo.


Desenvolver um sistema de negociação também é como desenvolver um controlador lógico difuso que ferve um ovo no vídeo acima. Um sistema de negociação também tem duas saídas, comprar e vender, exatamente como um controlador lógico difuso que tem duas saídas ativadas e desativadas. Padrões de velas são vagos e imprecisos. É preciso muita experiência para decifrar padrões de velas. Doji, Harami, padrões engolfantes são bons nomes que podem induzir você a abrir uma negociação perdedora. Você precisa de muita experiência para lidar com padrões de velas. Você assistiu a este vídeo em um padrão de velas que mudou tudo para mim? Abaixo está um vídeo sobre como usar a lógica fuzzy no ar condicionado usando o MATLAB. A maior parte da literatura que você encontrará será no MATLAB. Wny O MATLAB é uma poderosa linguagem de aprendizado de máquina e ciência de dados. O problema é que o MATLAB não é open source. Você terá que comprar uma licença comercial que pode custar entre US $ 2 mil e US $ 3 mil por ano. Se você quiser adicionar módulos do que terá que pagar pelos módulos, isso pode custar de US $ 500 a US $ 2000 além do custo básico de licença. Apesar do alto custo, não há como negar o fato de que o MATLAB é amigável e muito poderoso.


Agora, depois de assistir ao vídeo acima, você deve ter uma boa idéia de como esses controladores lógicos difusos são projetados. Agora de volta ao nosso sistema de negociação diária lógica fuzzy. Antes de continuarmos, assista a este vídeo sobre como trocar reversões nuas. Na negociação, estamos tentando identificar os pontos de reversão. Em essência, é isso que estamos fazendo o tempo todo na negociação. Compre quando o preço atingir um suporte e inverta e venda quando o preço atingir a resistência e inverter novamente e vice-versa.


Algoritmo de Predição de Padrão de Castiçal Lógica Difusa.


O que queremos é um método que possa prever o preço de fechamento da próxima vela. Pode ser a vela semanal. Pode ser a vela diária. Pode ser a vela de hora em hora. Usaremos a lógica fuzzy para prever o preço de fechamento da próxima vela. Você leu o post sobre como fazer 400 pips com um stop loss de 20 pips? Então, a negociação é sobre encontrar os pontos de virada no mercado. Vamos começar agora. Primeiro, precisamos carregar os dados semanais do GBPUSD em R. O pré-processamento de dados é muito importante.


No código R acima, lemos o csv do GBPUSD Weekly data. Existem 1067 observações no dataframe. A primeira observação de dados é de 1996,10,06 e a última observação de dados é de 2016,10,02. Esses dados incluem o Brexit que ocorreu no ano passado em 22 de junho. O conjunto de dados contém a vela semanal Brexit e a vela semanal British Pound Flash Crash. No final, tentaremos prever essas duas velas e tentar ver quão bem nosso sistema de troca de velas de lógica fuzzy pode prever essas velas. Estas serão uma série de posts. Então fique ligado. Nós usaremos padrões candlestick e usaremos a lógica fuzzy para modelá-los e fazer previsões. Vamos ver se o nosso algoritmo pode prever a vela do Brexit.


Abaixo está o gráfico de velas semanal. Você consegue ver as duas grandes velas semanais? A grande vela à esquerda é a vela semanal do Brexit e a última grande vela é a Pound Flash Crash Candle.


Vamos seguir os seguintes passos:


1. Na primeira etapa, iremos fuzzificar os padrões de velas usando Abrir, Alto, Baixo e Fechar. Isso é tudo que precisamos para construir nosso algoritmo. Usaremos o preço de fechamento nos tempos t e t + n para calcular a porcentagem de variação do preço de fechamento. Usaremos isso para calcular a variação mínima e a variação máxima. Usaremos essa variação mínima e máxima para definir o Universo do Discurso (UoD).


2. Vamos dividir este UoD em vários intervalos que podem 5-10. Depende da nossa intuição.


3. Vamos definir os conjuntos fuzzy neste UoD.


4. Nós vamos fuzzify os padrões de velas neste UoD.


5. Usaremos alguma mineração de dados para extrair os atributos importantes desses padrões.


Então, fique atento para o próximo post em que realizaremos todas essas etapas e, em seguida, fazer as previsões e verificar se podemos usar essas previsões na negociação. Teste do pudim está em comê-lo. Primeiro nós construímos o algoritmo. Então nós o usamos em negociação ao vivo. Se obtivermos bons resultados, então desenvolveremos o sistema final Fuzzy Logic Candlestick Trading System usando a linguagem Java.


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.

Комментариев нет:

Отправить комментарий