Lógica Difusa em estratégias de negociação.
Introdução.
Os traders freqüentemente se perguntam como melhorar um sistema de negociação ou criar um novo através do aprendizado de máquina. Apesar da abundância de publicações, um método simples e intuitivo ainda é encontrado para criar modelos que não podem ser analiticamente estimados sem recorrer a cálculos auxiliados por computador. A lógica fuzzy é uma janela para o mundo do aprendizado de máquina. Combinado com algoritmos genéticos, é capaz de expandir as capacidades de criar sistemas de negociação de auto-aprendizagem ou facilmente otimizáveis. Ao mesmo tempo, a lógica fuzzy é intuitiva, pois encapsula informações numéricas nítidas em termos nebulosos (borrados), assim como uma pessoa faz no processo de pensar.
Aqui está um exemplo. Em termos de lógica nítida, a velocidade de um carro em movimento é determinada por dispositivos de medição: por exemplo, 60 km / h. Mas um observador casual sem dispositivos de medição só pode estimar aproximadamente a velocidade do carro, confiando em sua experiência ou base de conhecimento. Por exemplo, sabe-se que um carro pode ir rápido, e "rápido" é definido como aproximadamente 100 km / he acima. Sabe-se também que um carro pode ir devagar, o que é 5-10 km / h. E finalmente, a velocidade é visualmente estimada como média (cerca de 60 km / h) se o carro que se aproxima aumentar de tamanho a uma taxa moderada. Assim, é possível caracterizar 60 km / h com quatro diferentes expressões:
velocidade média; velocidade perto da média;
É assim que a informação é encapsulada em uma consciência humana, permitindo-lhe captar apenas as informações necessárias no momento atual, por exemplo: "terei tempo para atravessar a estrada se o carro não estiver se movendo muito rápido?". Pensar em tudo de uma vez e em grande detalhe forçaria uma pessoa a gastar quantias colossais de tempo e recursos energéticos antes de tomar qualquer decisão específica: atravessar a estrada ou deixar o carro passar. Ao mesmo tempo, a situação atual seria minuciosamente estudada, o que nunca poderá ser idêntico no futuro e teria apenas contornos semelhantes. No aprendizado de máquina, tais situações são chamadas de overfitting.
Este artigo não se aprofundará na teoria da lógica fuzzy. 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 difusa, 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 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 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. Este é 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.
Aplicando a lógica fuzzy na negociação por meio de 4.
Introdução.
A negociação moderna não pode ser imaginada sem sistemas de negociação automatizados, normalmente chamados Expert Advisors ou robôs. A maioria deles, se não todos, apresenta uma estratégia de negociação clara e codificada e um sistema de gerenciamento de dinheiro. Sua principal vantagem é um algoritmo rígido, excluindo o fator humano. No entanto, essa vantagem também é sua principal desvantagem, já que os robôs de negociação não têm flexibilidade. Independentemente das condições de mercado, um Expert Advisor sempre aplica a mesma estratégia de negociação com os mesmos parâmetros estritamente categorizados. Em outras palavras, o sistema sempre age rigidamente: tendência média & gt; entrar no mercado com um lote, forte tendência & gt; entrar no mercado com dois lotes. Nenhum desvio!
Ao contrário de um sistema automatizado, os comerciantes humanos pensam em categorias difusas e podem ter opiniões diferentes sobre sinais similares de entrada no mercado. Eles são muitas vezes duvidosos e continuam se perguntando se a tendência é moderada ou forte. E mesmo que a tendência seja significativa, é forte o suficiente para entrar em dois lotes? Essas categorias difusas podem ser manipuladas pela lógica fuzzy. A lógica difusa não define limites rígidos entre as categorias. Em vez disso, "os embaça" tornando-os mais flexíveis e combinando a rigidez de um robô comercial com a flexibilidade de uma mente humana. O artigo fornece exemplos de aplicação do sistema de lógica difusa na negociação por meio de 4.
Funções de associação
Leia o artigo "Uma Introdução à Lógica Difusa" para compreender os conceitos gerais da teoria da lógica difusa. Além disso, aprenda os conceitos básicos da biblioteca FuzzyNet para 4, pois ela é usada para a implementação dos exemplos.
Vamos descrever as funções de associação usadas no artigo.
Função de adesão triangular.
Como o próprio nome sugere, esta é uma função de associação em forma de triângulo. Esta é uma função simples e usada com mais frequência, definida pela seguinte fórmula analítica:
Geralmente é usado para especificar os seguintes tipos de incertezas: "aproximadamente igual", "valor médio", "localizado dentro do intervalo", "semelhante ao objeto", "se parece com o objeto" etc. Os parâmetros de função de associação triangular geralmente são interpretados da seguinte forma:
[a, c] - intervalo variável; b - valor variável mais provável.
Fig. 1. Função de associação triangular.
Função de participação trapezoidal.
A função de associação em forma de trapézio definida pela seguinte fórmula:
Os parâmetros da função de associação trapezoidal são interpretados da seguinte forma:
[a, d] - portadora do conjunto fuzzy, avaliação pessimista da variável; [b, c] - núcleo de um conjunto fuzzy, avaliação otimista da variável;
Fig. 2. Função de associação trapezoidal.
Função de associação em forma de sino.
A função de associação na forma de curva simétrica em forma de sino definida pela fórmula:
Os valores dos parâmetros são interpretados da seguinte forma:
a - razão de concentração de função de associação; b - razão de declive da função de associação; c - coordenada de ponto mais alto da função de associação.
Fig. 3. Função de adesão em forma de sino.
Função de adesão sigilo.
A função é calculada usando a seguinte fórmula e aplicada ao definir funções de associação monótonas:
Seus parâmetros devem ser interpretados da seguinte maneira:
a - razão de inclinação da função de associação; с - coordenada de inflexão da função de associação.
Fig. 4. Função de adesão sigmóide.
Amostra de implementação de um indicador por meio da biblioteca FuzzyNet para 4.
Fig. 5. Operação ADX e divisão implementada por um poder de tendência.
Essas três categorias rigidamente definidas apresentam alguns inconvenientes causados por sua lógica de classificação clara e estrita:
O primeiro inconveniente é a natureza subjetiva da classificação. De fato, por que escolhemos 30, 50 e 70 como valores de fronteira? Por que não escolhemos 25, 50 e 75 ou outros? Essas várias opiniões podem afetar muito a operação do ADX e até mesmo levar a resultados de negociações diametralmente opostos. A segunda questão são as áreas de fronteira das categorias selecionadas. Por exemplo, 50 é a fronteira entre tendência fraca e média. Se aplicarmos uma lógica estrita, temos que admitir que 48 e 49 ainda pertencem à área de tendência fraca, enquanto 50 e 51 já estão na área de tendência média. Mas e a transição de 49 para 50? Em ambos os casos (48-49 e 49-50), a diferença entre os valores é igual a um. No entanto, por algum motivo, o último caso é considerado uma transição de uma categoria para outra.
Então, como a lógica difusa pode resolver esses problemas?
Como já mencionado, a lógica difusa "desfoca" (fuzzifies) as bordas especificadas. Os valores de borda de categorias rigidamente definidas são atribuídos a ambas as categorias de uma só vez, mas com graus variados de associação. Uma descrição da amostra, nesse caso, pode ter a seguinte aparência: a tendência atual pode ser descrita como fraca (30%), mas muito provavelmente pode ser descrita como média (70%). Um comerciante humano descreveria isso da seguinte forma: a tendência é média e não fraca. Acredito que esta é a principal vantagem da lógica fuzzy. É flexível e variável ao lidar com parâmetros rigidamente especificados. Selecionei as seguintes funções de associação para nosso exemplo com o indicador ADX:
A função de associação trapezoidal para a descrição do conceito de tendência fraca. A função de associação em forma de sino para a descrição do conceito de tendência média. A função sigmóide para a descrição do forte conceito de tendência.
Sistemas mais complexos contendo várias categorias podem ser descritos usando outras funções disponíveis na biblioteca da FuzzyNet. Atualmente, a biblioteca contém mais de uma dúzia de funções. A representação gráfica do nosso exemplo é mostrada abaixo:
Fig. 6. Descrever uma tendência usando a lógica difusa.
Como podemos ver, o gráfico agora tem as áreas apresentando duas categorias de tendência simultaneamente. A tendência na área 50-60 é fraca e média, enquanto em 60-70 é média e forte. Assim, definimos um conjunto de termos com as funções de associação predeterminadas para as três categorias. Agora que temos as entradas ADX descritas pelas funções de associação, devemos definir o que consideramos um valor de saída e resultado de defuzzificação, bem como selecionar um algoritmo de saída lógica fuzzy.
Para nosso exemplo, selecionei a porcentagem de risco de depósito relativa à variável de força de tendência difusa inicialmente especificada. Em outras palavras, quanto mais forte a tendência, maior o percentual de risco e depósito aplicado nas negociações. Eu escolhi Mamdani como o algoritmo de saída lógica.
Como com a força da tendência, vamos introduzir três categorias distintas de acordo com o grau de risco:
Baixo risco - 2-4% do depósito. Risco normal (Normal) - 4-5%. Alto risco (alto) - de 5 até o valor máximo de 10% do depósito.
Agora, vamos definir categorias de risco usando as funções de associação:
Trapezoidal - para baixo risco. Triangular - para risco normal. Sigmoide - para alto risco.
Como resultado, obtemos a seguinte descrição gráfica por meio da lógica fuzzy:
Fig. 7. Descrever um grau de risco por meio da lógica difusa.
Vamos implementar os dados descritos usando a biblioteca FuzzyNet para 4:
Eu desenvolvi um indicador de histograma simples, visualizando o grau de risco / razão de tendência de tendência (tendência verde-alta, tendência vermelho-bearish). A altura das barras do histograma exibe um valor numérico de um grau de risco em várias forças de tendência dentro dos limites descritos acima. Vamos examinar o código em detalhes.
Primeiro, vamos definir os dois buffers para histogramas aplicados, bem como sua cor e intervalo no eixo vertical de zero para o maior risco especificado de 10%.
Em seguida, conecte a biblioteca para criar sistemas de acordo com o algoritmo Mamdani e adicione variáveis para visualizar a quantidade de barras começando do zero e ajustando o período ADX.
Ao inicializar, devemos definir o indicador para estar na forma de um histograma.
No código principal, definimos as leituras básicas do indicador ADX. A variável r é usada para encontrar a diferença entre os dois indicadores de direção da tendência + DI e - DI. Além disso, introduzimos o filtro de presença de tendência como uma diferença entre os valores absolutos + DI e - DI acima de 10 e a tendência principal de força acima de 30 (o limite inferior de uma tendência fraca). Em seguida, vamos definir uma direção de tendência com base no sinal de variável r e colocar a função mamdani () em um valor predeterminado.
Descrição da função Mamdani:
1. Vamos criar o novo sistema do sistema lógico fuzzy do tipo Mamdani * fsRisk.
2. Adicione a variável * fsTrend a ela com um nome de tendência especificado e os valores mínimo e máximo de 30 e 100.
3. Em seguida, devemos adicionar os termos fuzzy descritos acima (Fig. 6) com as funções de associação selecionadas para cada categoria.
4. Passe os passos 2-3 para o valor de saída: create * fvRisk variable named risk e os valores mínimo e máximo de risco de 2% e 10%.
5. Agora, vamos criar um conjunto de três regras fuzzy representando nosso sistema:
Se uma tendência é fraca, o risco é baixo. Se uma tendência é média, o risco é normal. Se uma tendência é forte, o risco é alto.
6. Vamos adicionar nossas regras ao sistema:
7. Crie as listas para variáveis de entrada e saída e adicione v input para ser o argumento da função mamdani. Assim, todo o sistema de lógica difusa com variáveis fuzzy de entrada e saída especificadas é definido para a função mamdani inteira, enquanto o valor do indicador ADX é usado como uma entrada.
8. O valor da função resultante é variável variável na qual o histograma é baseado.
Os resultados da operação do indicador visual são apresentados abaixo:
Fig. 8. Operação do indicador.
Como podemos ver, o indicador mostra a presença de uma tendência usando uma cor de histograma, enquanto uma altura de barra mostra uma porcentagem de risco recomendada do depósito. A questão óbvia surge - qual seria a diferença se o indicador fosse implementado com intervalos claros? Para respondê-lo, vamos considerar a seção a seguir com mais detalhes (Fig. 9). A seta verde mostra a barra do histograma, enquanto o valor numérico e a força da tendência ADX são exibidos à esquerda. Conforme definido anteriormente, o ADX superior a 70 é uma forte tendência, o que significa que o valor do risco deve exceder 5%. Como podemos ver claramente na Fig. 9, ADX = 69,7923. Assim, se aplicarmos regras estritas, esta ainda é uma tendência média e o risco não deve exceder 5%. No entanto, é igual a 5.6406, ou seja, é maior.
Fig. 9. Mostrando as diferenças entre a lógica fuzzy e a lógica padrão.
Aqui podemos ver a lógica difusa em ação. Definiu que, embora o valor seja inferior a 70, a tendência na área é bastante forte do que a média. Podemos ver isso por nós mesmos examinando a Fig. 6. Quando o valor do eixo X mostra 69.7923, a função de associação de uma tendência forte é maior que a função de tendência média. Portanto, nosso sistema ofereceu um valor de risco que excede 5% aproximando-se da área de fronteira entre a tendência forte e média de maneira mais flexível em comparação com o sistema lógico rígido.
Exemplo de implementação de um Expert Advisor por meio da biblioteca da FuzzyNet para 4.
Aqui quero mostrar a diferença na operação do Expert Advisor no caso de condições claramente definidas e elementos de lógica difusa. Para fazer a comparação o mais bem fundamentada possível, decidi usar o Expert Advisor do meu outro artigo "Negociando ideias com base na direção e velocidade de movimento dos preços", que descreve em detalhes a ideia do robô comercial. Para evitar repetições excessivas, usarei este EA como base com as seguintes alterações:
A lógica do EA baseia-se na ideia da persistência do movimento de preços. Os parâmetros de movimento são descritos pelos seguintes indicadores: RSI (indicador de velocidade) e AC (indicador de aceleração). Velocidade e aceleração são estimadas pela indexação das faixas de valores desses indicadores. Agora, vamos aplicar a teoria dos conjuntos fuzzy aos valores do índice RSI. Como resultado, os valores de RSI são usados como entradas, enquanto a saída é um índice de velocidade difusa que pode ter não apenas valores inteiros, como 1-4, mas também 1,3 ou 3,85. Por sua vez, o valor do índice difuso é usado como entrada para outro sistema, no qual a saída é um valor de lucro. Assim, o lucro permanece intacto no EA inicial.
A ideia por trás da conexão é simples. Se RSI e AC forem parâmetros de movimento, quanto maior a velocidade, maior a persistência do movimento e, portanto, é razoável colocar um maior lucro. Se a velocidade de movimento for baixa, um lucro-alvo deve ser ajustado com mais força para não ocorrer uma reversão ou reversão de tendência. A Fig. 10 mostra um diagrama de blocos para uma compreensão mais clara da aplicação da lógica difusa no EA.
Fig. 10. Aplicando a lógica difusa no EA.
Como é o caso do indicador, vamos descrever as funções de associação para ambos os modelos difusos. O primeiro é um modelo fuzzy de cálculo do índice RSI, onde a entrada é o valor do indicador. Vamos dividir os valores necessários em três categorias:
Fraco. A primeira categoria define a tendência fraca. RSI: 60-70. Média . A segunda categoria define a tendência média. RSI: 70-80. Forte . A terceira categoria está relacionada a uma forte tendência. RSI: 80-85.
Vamos selecionar a função de associação para descrever as categorias especificadas:
Fraco. A função sigmóide com a relação de inclinação de -0,75 e ponto de inflexão de 67,5. Média . A função gaussiana com a coordenada máxima de 72,5 e a razão de concentração de 2,2. Forte . A função gaussiana com a coordenada máxima de 80 e a razão de concentração de 1,4.
A apresentação visual é a seguinte:
Fig. 11. Usando as funções de associação para descrever as categorias de valores de RSI.
A saída desse modelo difuso é o índice RSI. The following categories and membership functions are used to describe it:
Low . Low index, range 1-2. The membership function is the sigmoid one with the slope of -11 and inflection point of 1.5. Normal . Average index, range 2-3. The membership function is the Gaussian one with the maximum point of 2 and the concentration ratio of 0.3. High . High index, range 3-4. The membership function is the sigmoid one with the slope of 6 and inflection point 3.
As a result, we obtain the following visualization:
Fig. 12. Using the membership functions to describe the categories of RSI index values.
Next, let's describe the second fuzzy model from Fig. 10 – fuzzy take profit calculation model. The model's inputs have already been described as the outputs of the first model (RSI fuzzy index). A take profit value is used as an output here. Let's define concise categories for it:
Minimal. Minimum take profit category within the range of 30-40. Média. Average take profit category within the range of 40-60. Maximal. High take profit category within the range of 60-70.
Now, let's make descriptions using the membership functions:
Minimal. The membership function is the sigmoid one with the slope of -0.8 and inflection point of 37.5. Média. The membership function is the Gaussian function with the maximum coordinate of 50 and the concentration ratio of 3. Maximal. The membership function is the sigmoid one with the slope of 0.8 and inflection point of 62.5.
The graphical implementation looks as follows:
Fig. 13. Using the membership functions to describe the categories of take profit values.
Now that all parameters are defined, it is time to implement the idea into the trading robot. We will add two fuzzy models for successive calculation of stop loss and take profit based on RSI readings.
Now, let's examine the major changes that have been made to the EA:
The most important change is implementation of the two fuzzy models as mamdani_rsi and mamdani_tp functions. Stop loss and take profit parameters have thus been removed. They are now calculated using the fuzzy logic. Here is how this calculation is implemented:
If there are no open orders with the EA magic, the system uses the depth_trend() and speed_ac() functions to track market movement parameters. An entry is performed if they match Buy() or Sell() . Next, if the conditions are met, the fuzzy model operation result is assigned to mdm parameter which uses the current RSI value as an input and a fuzzy index as an output. In turn, the fuzzy index value is used as an input for another system, in which the output is a take profit value in points. Take profit value is assigned to tkp variable.
The ratio of 0.43 is taken based on the maximum profit value of 70 points, while the appropriate stop loss is 30. In case of a successful order opening, our EA also shows the RSI value, at which the order was opened, as well as calculated stop loss and take profit parameters based on it. This is done purely for testing convenience.
Also, it is necessary to clarify the following:
In case of a sell condition, mamdani_rsi(100-rs) is assigned to mdm . This is done because their ranges and borders relative to RSI extreme values (0 and 100) are mirrored. Two additional conditions: when buying rs<=85 and similarly when selling rs>=15 . This is done because when creating the RSI index calculation fuzzy model inputs, the borders are set to 60-85. Thus, the value of 15 turns out to be the extreme one for selling.
The EA operation example is shown in Fig. 14. As we can see, stop loss and take profit values are re-calculated in case of different RSI values.
Fig. 14. Expert Advisor operation results.
Conclusão.
In this article, we have examined sample implementations of the fuzzy set theory using the FuzzyNet library by means of 4. We have shown that systems based on the fuzzy logic are more flexible when dealing with the strict category issues, like trend classification or risk differentiation. The Expert Advisor demonstrated how a fuzzy logic-based system analyzes a trading signal strength while applying its own trading strategy and defining appropriate stop loss and take profit values. I believe that trading systems based on the fuzzy logic are capable of combining the best qualities necessary for successful trading – discipline of a trading robot and flexibility of a human mind.
Traduzido do russo por MetaQuotes Software Corp.
Documentação.
Isso é tradução automática.
Para ver todos os materiais traduzidos, incluindo esta página, selecione País no navegador do país na parte inferior desta página.
De volta ao inglês.
Traduza esta página.
Tradução automática de MathWorks.
A tradução automatizada desta página é fornecida por uma ferramenta de tradução de terceiros.
A MathWorks não garante e se exime de qualquer responsabilidade pela precisão, adequação ou adequação ao propósito da tradução.
What Is Fuzzy Logic?
Description of Fuzzy Logic.
In recent years, the number and variety of applications of fuzzy logic have increased significantly. The applications range from consumer products such as cameras, camcorders, washing machines, and microwave ovens to industrial process control, medical instrumentation, decision-support systems, and portfolio selection.
To understand why use of fuzzy logic has grown, you must first understand what is meant by fuzzy logic.
Fuzzy logic has two different meanings. In a narrow sense, fuzzy logic is a logical system, which is an extension of multivalued logic. However, in a wider sense fuzzy logic (FL) is almost synonymous with the theory of fuzzy sets, a theory which relates to classes of objects with unsharp boundaries in which membership is a matter of degree. In this perspective, fuzzy logic in its narrow sense is a branch of FL. Even in its more narrow definition, fuzzy logic differs both in concept and substance from traditional multivalued logical systems.
In Fuzzy Logic Toolbox™ software, fuzzy logic should be interpreted as FL, that is, fuzzy logic in its wide sense. The basic ideas underlying FL are explained in Foundations of Fuzzy Logic. What might be added is that the basic concept underlying FL is that of a linguistic variable, that is, a variable whose values are words rather than numbers. In effect, much of FL may be viewed as a methodology for computing with words rather than numbers. Although words are inherently less precise than numbers, their use is closer to human intuition. Furthermore, computing with words exploits the tolerance for imprecision and thereby lowers the cost of solution.
Another basic concept in FL, which plays a central role in most of its applications, is that of a fuzzy if-then rule or, simply, fuzzy rule. Although rule-based systems have a long history of use in Artificial Intelligence (AI), what is missing in such systems is a mechanism for dealing with fuzzy consequents and fuzzy antecedents. In fuzzy logic, this mechanism is provided by the calculus of fuzzy rules. The calculus of fuzzy rules serves as a basis for what might be called the Fuzzy Dependency and Command Language (FDCL). Although FDCL is not used explicitly in the toolbox, it is effectively one of its principal constituents. In most of the applications of fuzzy logic, a fuzzy logic solution is, in reality, a translation of a human solution into FDCL.
A trend that is growing in visibility relates to the use of fuzzy logic in combination with neurocomputing and genetic algorithms. More generally, fuzzy logic, neurocomputing, and genetic algorithms may be viewed as the principal constituents of what might be called soft computing. Unlike the traditional, hard computing, soft computing accommodates the imprecision of the real world. The guiding principle of soft computing is: Exploit the tolerance for imprecision, uncertainty, and partial truth to achieve tractability, robustness, and low solution cost. In the future, soft computing could play an increasingly important role in the conception and design of systems whose MIQ (Machine IQ) is much higher than that of systems designed by conventional methods.
Among various combinations of methodologies in soft computing, the one that has highest visibility at this juncture is that of fuzzy logic and neurocomputing, leading to neuro-fuzzy systems. Within fuzzy logic, such systems play a particularly important role in the induction of rules from observations. An effective method developed by Dr. Roger Jang for this purpose is called ANFIS (Adaptive Neuro-Fuzzy Inference System). This method is an important component of the toolbox.
Fuzzy logic is all about the relative importance of precision: How important is it to be exactly right when a rough answer will do?
You can use Fuzzy Logic Toolbox software with MATLAB ® technical computing software as a tool for solving problems with fuzzy logic. Fuzzy logic is a fascinating area of research because it does a good job of trading off between significance and precision—something that humans have been managing for a very long time.
In this sense, fuzzy logic is both old and new because, although the modern and methodical science of fuzzy logic is still young, the concepts of fuzzy logic relies on age-old skills of human reasoning.
Fuzzy logic is a convenient way to map an input space to an output space. Mapping input to output is the starting point for everything. Consider the following examples:
With information about how good your service was at a restaurant, a fuzzy logic system can tell you what the tip should be.
With your specification of how hot you want the water, a fuzzy logic system can adjust the faucet valve to the right setting.
With information about how far away the subject of your photograph is, a fuzzy logic system can focus the lens for you.
With information about how fast the car is going and how hard the motor is working, a fuzzy logic system can shift gears for you.
A graphical example of an input-output map is shown in the following figure.
To determine the appropriate amount of tip requires mapping inputs to the appropriate outputs. Between the input and the output, the preceding figure shows a black box that can contain any number of things: fuzzy systems, linear systems, expert systems, neural networks, differential equations, interpolated multidimensional lookup tables, or even a spiritual advisor, just to name a few of the possible options. Clearly the list could go on and on.
Of the dozens of ways to make the black box work, it turns out that fuzzy is often the very best way. Why should that be? As Lotfi Zadeh, who is considered to be the father of fuzzy logic, once remarked: “In almost every case you can build the same product without fuzzy logic, but fuzzy is faster and cheaper.”
Why Use Fuzzy Logic?
Here is a list of general observations about fuzzy logic:
Fuzzy logic is conceptually easy to understand.
The mathematical concepts behind fuzzy reasoning are very simple. Fuzzy logic is a more intuitive approach without the far-reaching complexity.
Fuzzy logic is flexible.
With any given system, it is easy to layer on more functionality without starting again from scratch.
Fuzzy logic is tolerant of imprecise data.
Everything is imprecise if you look closely enough, but more than that, most things are imprecise even on careful inspection. Fuzzy reasoning builds this understanding into the process rather than tacking it onto the end.
Fuzzy logic can model nonlinear functions of arbitrary complexity.
You can create a fuzzy system to match any set of input-output data. This process is made particularly easy by adaptive technues like Adaptive Neuro-Fuzzy Inference Systems (ANFIS), which are available in Fuzzy Logic Toolbox software.
Fuzzy logic can be built on top of the experience of experts.
In direct contrast to neural networks, which take training data and generate opaque, impenetrable models, fuzzy logic lets you rely on the experience of people who already understand your system.
Fuzzy logic can be blended with conventional control technues.
Fuzzy systems don't necessarily replace conventional control methods. In many cases fuzzy systems augment them and simplify their implementation.
Fuzzy logic is based on natural language.
The basis for fuzzy logic is the basis for human communication. This observation underpins many of the other statements about fuzzy logic. Because fuzzy logic is built on the structures of qualitative description used in everyday language, fuzzy logic is easy to use.
The last statement is perhaps the most important one and deserves more discussion. Natural language, which is used by ordinary people on a daily basis, has been shaped by thousands of years of human history to be convenient and efficient. Sentences written in ordinary language represent a triumph of efficient communication.
When Not to Use Fuzzy Logic.
Fuzzy logic is not a cure-all. When should you not use fuzzy logic? The safest statement is the first one made in this introduction: fuzzy logic is a convenient way to map an input space to an output space. If you find it's not convenient, try something else. If a simpler solution already exists, use it. Fuzzy logic is the codification of common sense — use common sense when you implement it and you will probably make the right decision. Many controllers, for example, do a fine job without using fuzzy logic. However, if you take the time to become familiar with fuzzy logic, you'll see it can be a very powerful tool for dealing quickly and efficiently with imprecision and nonlinearity.
What Can Fuzzy Logic Toolbox Software Do?
You can create and edit fuzzy inference systems with Fuzzy Logic Toolbox software. You can create these systems using graphical tools or command-line functions, or you can generate them automatically using either clustering or adaptive neuro-fuzzy technues.
If you have access to Simulink ® software, you can easily test your fuzzy system in a block diagram simulation environment.
The toolbox also lets you run your own stand-alone C programs directly. This is made possible by a stand-alone Fuzzy Inference Engine that reads the fuzzy systems saved from a MATLAB session. You can customize the stand-alone engine to build fuzzy inference into your own code. All provided code is ANSI ® compliant.
Because of the integrated nature of the MATLAB environment, you can create your own tools to customize the toolbox or harness it with another toolbox, such as the Control System Toolbox™, Neural Network Toolbox™, or Optimization Toolbox™ Programas.
Fuzzy Logic Candlestick Trading System R Code I.
25 de fevereiro de 2017.
In this post I will discuss a fuzzy logic candlestick trading system. You might be wondering what is this fuzzy logic stuff. Fuzzy logic has been ignored by the mainstream finance for a long time despite the fact that it has been used in many industrial application. Did you read the post on how to make 100-800 pips per trade ? In trading, fuzzy logic is seldom used. In 5, there is a fuzzy logic library that we can use to code our indicators. But that library does basic stuff. What we need is the capability to build neural networks on our fuzzy logic variables. We also need to do data mining. This can be done using R language. R is a powerful scripting language that has more than 3000 packages or what you call libraries for doing data science and machine learning. Fuzzy logic is a powerful concept. If you are interested, I have developed a course on Fuzzy Logic For Traders. In this course I take you by hand and explain everything you need to know about fuzzy logic to start applying it to your trading. I develop a few trading systems based on fuzzy logic in the course.
Algorithmic Trading Is The Future.
Algorithmic trading is about to takeover the world of trading. Today more than 70% of the trades that are being placed at Wall Street are being placed through algorithmic trading systems. The days of manual trading are coming to an en. If you want, this is the time to learn algorithmic trading. You can take a look at our course Java For Algorithmic Trading . Java is a powerful system programming language. In this course we teach you how to do machine learning and data science using Java. Then we show you how to build your trading systems on Dukascopy JForex and Interactive Brokers Trader Work Station. So if you really want to master algorithmic trading, you should take this course as this course is full of practical examples and totally focuses on trading. This is unlike other courses that take their examples of other areas of interest. Java has got its powerful fuzzy logic library JFuzzyLogic. In this course we also teach you how to use this JFuzzyLogic library in developing your own fuzzy logic trading systems.
If you are into algorithmic trading, then you need to also master R language. In this post we are going to use R scripting language. R is the first language that we use to prototype our algorithmic trading system. Once we build the system using R and have thoroughly tested it and believe that we have a very good system, we can further develop the system using Python, Java or C++. Why we need to do that? We need to do that for the reason that R is a slow language. C++ is the fastest language. After that comes Java and Python. We would like to build the algorithmic system with a language that gets executed fastest. So once we have done the testing we then use Java or C++ to develop the final product. Did you read the post on British Pound Flash Crash ? This flash crash had been caused by a rogue algorithm. This is what a veteran trader of many decades told me. According to him markets have changed drastically in the last few years. Today algorithms are trading against algorithms and whoever wins the nuclear arms race bring the big bucks home.
What is Fuzzy Logic?
Now coming back to the topic of fuzzy logic. When we talk of traditional logic theory, there are only two values. Yes or No. True of False. However, in everyday life, things are fuzzy. Thing are never black and white. There are many shades of grey in between the black and white values. We thing it might rain. It is very likely that it will rain. It is somewhat likely that it will rain. It is possible that it will rain. It may rain. These are linguistic variables that we use to describe our degree of belief that it might rain today. When we use traditional logic, we can only say yes it will rain or no it will not rain. But when using fuzzy logic we can use our degree of belief to express ourselves more confidently by that I believe that it is somewhat likely that it will rain. This degree of belief that it will rain somewhat likely comes in between the black and while value of rain or no rain. We can express rain as 1 and no rain as 0. Somewhat likely to rain will come in between this 0 and 1 value. Did you read the post on how to use support vector machines in daily trading ?
Now most examples of fuzzy logic use MATLAB. MATLAB license is expensive so I cannot use it. We will be using R language to build our fuzzy logic trading system. Fuzzy logic controllers are being used widely in industry. You can well imagine from this how good fuzzy logic is in controlling industrial processes. The first application of fuzzy logic took place in Japan in controlling the Bullet trains. Watch the video below that explains how to develop a fuzzy logic controller. The video below explains how you are going to design an egg boiling fuzzy logic robot.
Developing a trading system is also like developing a fuzzy logic controller that boils an egg in the above video. A trading system also have two outputs buy and sell just like a fuzzy logic controller that has two outputs on and off. Candlestick patterns are vague and imprecise. It takes a lot of experience to decipher candlestick patterns. Doji, Harami, Engulfing patterns are good names that can mislead you into opening a losing trade. You need a lot of experience in dealing with candlestick patterns. Did you watch this video on one candlestick pattern that changed everything for me ? Below is a video on how to use fuzzy logic in air conditioning using MATLAB. Most of the literature that you will find will be in MATLAB. Wny? MATLAB is a powerful machine learning and data science language. The problem is MATLAB is not open source. You will have to buy a commercial license that can cose $2K to $3K per year. If you want modules added than you will have to pay for the modules as well that can cost $500 to $2000 over and above the basic license cost. Despite the heavy cost, there is no denying the fact that MATLAB is user friendly and very powerful.
Now after watching the above video you should get a fair idea of how these fuzzy logic controllers are designed. Now back to our fuzzy logic daily trading system. Before we continue watch this video on how to trade reversals naked . In trading we are trying to identify the reversal points. In essence this is what we are doing all the time in trading. Buy when the price hits a support and reverses and sell when the price hits resistance and reverses again and vice versa.
Fuzzy Logic Candlestick Pattern Prediction Algorithm.
What we want is a method that can predict the closing price for the next candle. It can be the weekly candle. It can be the daily candle. It can be the hourly candle. We will use fuzzy logic in predicting the next candle closing price. Did you read the post on how to make 400 pips with a 20 pips stop loss ? So trading is all about finding the turning points in the market. Let’s start now. First we need to load the weekly GBPUSD data in R. Data preprocessiong is very important.
In the above R code, we read the GBPUSD Weekly data csv. There are 1067 observations in the dataframe. The first data observation is from 1996,10.06 and the last data observation is from 2016,10,02. This data includes the Brexit that took place last year on June 22. The dataset contains both the Brexit weekly candle and the British Pound Flash Crash weekly candle. We will in the end try to predict both these candles and try to see how well our fuzzy logic candlestick trading system can predict these candles. These will be a series of posts. Então fique ligado. We will be using candlestick patterns and use fuzzy logic to model them and make predictions. We will see if our algorithm can predict the Brexit candle.
Below is the weekly candlestick chart. Can you see the two big weekly candles? The big candle on the left is the Brexit weekly candle and the last big candle is the Pound Flash Crash Candle.
We will follow the following steps:
1. In the first step we will fuzzify the candlestick patterns using Open, High, Low and Close. This is all we need to build our algorithm. We will use the closing price at times t and t+n to calculate the variation percentage of closing price. We will use this to calculate the minimum variation and maximum variation. We will use this minimum and maximum variation to define the Universe of Discourse (UoD.
2. We will divide this UoD into several intervals that can 5-10. It depends on our intuition.
3. We will define the fuzzy sets on this UoD.
4. We will fuzzify the candlestick patterns on this UoD.
5. We will use some data mining to extract the important attributes of these patterns.
So stay tuned for the next post in which we will carry out all these steps and then make the predictions and check if we can use those predictions in trading. Test of the pudding lies in eating it. First we build the algorithm. Then we use it in live trading. if we get good results, we then develop the final Fuzzy Logic Candlestick Trading System using Java language.
Invalid Identifier.
The identifier 123456789/15659/1/5186_0_A%20fuzzy%20approach%20to%20stock%20market%20timing. pdf does not correspond to a valid Bitstream in DSpace. Isso pode ser devido a um dos seguintes motivos:
The URL of the current page is incorrect - if you followed a link from outside of DSpace it may be mistyped or corrupt. Você inseriu um código inválido em um formulário. Tente novamente.
Se você está tendo problemas ou esperava que o ID funcionasse, sinta-se à vontade para entrar em contato com os administradores do site.
Advanced Automated Chart Pattern Recognition with Fuzzy Logic.
Reconhecimento de padrões.
Chart patterns provide a visual representation of trading. Similar to technical indicators, chart patterns offer a framework to analyze markets in a visual way.
You can think of a chart pattern as a complex variation of the trendline, typically with upper and lower boundaries which represent support and resistance levels.
Chart patterns are an important analysis tool. There are hundreds of different chart pattern types in existence, ranging from flags and pennants, to double top and double bottoms, Elliott waves, head and shoulders, wedges, channels, triangles and other patterns.
With so many different patterns it becomes difficult to identify them, especially in real-time when trading live, fast-moving markets. Our Advanced Pattern Recognition library allows developers the opportunity to program trading strategies which automatically detect patterns on charts.
Lógica Difusa.
Fuzzy logic is a form of multi-valued logic. It deals with reasoning which is approximate, rather than fixed and exact. Instead of true or false, the answer may be "maybe." Instead of 0 or 1, it may be 0.5. Fuzzy logic variables may have a truth value which sits between two extremes.
How does Fuzzy Logic help find chart patterns?
Like a fingerprint, no two chart patterns are exactly alike. That's where fuzzy logic comes in. Fuzzy logic helps PatternLogic find chart patterns that are "very close" to being perfect matches to a pre-defined ideal chart pattern.
PatternLogic allows you to design pre-defined chart pattern templates and then search through vast data supplies for multiple patterns with extreme speed. PatternLogic returns only the best results which most closely match your ideal patterns.
When we released PatternLogic in 2003, it was the first template-driven, fully dynamic pattern recognition engine for identifying patterns in financial data.
Expert Pattern Recognition.
Traders use implicit learning to identify patterns in price data. When traders are repeatedly exposed to certain price patterns, they eventually develop a personal understanding for the pattern, even though the pattern and predictive feeling cannot be explained in words.
PatternLogic identifies patterns as human traders do.
PatternLogic features several optimization parameters, which allow for the fine-tuning of the fuzzy logic pattern identification process based on the preferences of the trader.
Development Library.
PatternLogic is a development component designed for. NET programmers. As a programming library, it can be integrated into any. NET application. The license permits it to be compiled into a client-side desktop application or into a server-side application for use on websites or mobile applications.
Developer technical support is provided, along with example programming projects.
Pattern-Based Alerts and Back Testing.
PatternLogic can be used to create real-time pattern alerts or back testing strategies, based on pre-defined or custom pattern definitions. PatternLogic comes with several pre-defined patterns such as Channels, Double Bottoms, Double Tops, Flags, Head & Shoulders, Pennants, Trend, Triangles, Triple Bottoms, Triple Tops, Wedges and other patterns. Custom patterns can be created using the supplied pattern designer utility, which you may deploy to your end users.
PatternLogic is a numerical library, but it comes with integrated StockChartX examples for visual representation of the numerical data.
The Pattern Designer allows you to design patterns (WPF C# source code available).
Pattern Designer.
The included pattern designer allows you to draw patterns and modify fuzzy logic variables to optimize pattern searches. The designer utility was developed in WPF. Several properties, methods and events are provided with example C++ and C# code so that you may modify and ship the designer with your trading application.
O que está incluído.
1. Advanced Pattern Recognition library for. NET.
2. Pattern Designer to design custom pattern templates.
3. Example project with documentation (chart example requires StockChartX, licensed separately).
4. Developer technical support for API calls and integration into your software project.
Fuzzy Decision Making System for Stock Market.
International Conference on Sensors, Security, Software and Intelligent Systems, 8-10, January 2009.
4 Pages Posted: 3 Oct 2013.
M. Gunasekaran.
Department of MCA, Park College of Engineering and Technology.
K. S. Ramaswami.
Coimbatore Institute of Technology - Department of Mathematics.
Park College of Engineering and Technology.
Date Written: January 9, 2009.
This paper describes stock analysis method based on fuzzy decision-making system for predicting the stock price. The objective of this system is design an automated strategy that can maximize the profit. Fuzzy System resembles more closely the kind of common sense reasoning we use in decision-making. Benefits of Fuzzy Decision Making System are model based approach and knowledge management, which offers high quality, systematic predictions and interactive problem solving. The purpose of this study is to develop a fuzzy inference system for recognizing fuzzy rules of stock market trends and predicts upward and downward directions of stock market. Our proposed system was tested using data from National Stock Exchange (NSE).
Keywords: Fuzzy System, Stock Market, Trading system, Technical Analysis.
Fuzzy Logic as Agents’ Knowledge Representation in A-Trader System.
Jerzy Korczak Email author Marcin Hernes Maciej Bac.
The paper presents the application of a fuzzy logic in building the trading agents of the A-Trader system. A-Trader is a multi-agent system that supports investment decisions on the FOREX market. The first part of the article contains a discussion related to the use of fuzzy logic as representation of an agent’s knowledge. Next, the algorithms of the selected fuzzy logic buy-sell decision agents are presented. In the last part of the article the agent performance is evaluated on real FOREX data.
Комментариев нет:
Отправить комментарий