Sistema de negociação sequencial da demark
Sistema de negociação sequencial da Demark
Abordagem de Thomas DeMark - Parte V - Sistema Sequencial de Negociação Mecânica.
Sequencial - sistema de negociação mecânico da Demark.
Qualquer sinal nesta tática de negociação começa com a formação de configuração para comprar ou vender.
Supõe-se que a configuração para comprar (vender) é formada, se por pelo menos nove barras consecutivas os preços de fechamento fossem menores (mais altos) do que o preço de fechamento de quatro barras antes para cada barra da seqüência.
Na configuração, deve haver pelo menos nove barras.
Intersecção é o processo de determinar a verdade da configuração.
Para a configuração de compra (venda) a intersecção ocorre quando o preço alto (baixo) da oitava ou nona barra será maior (menor) ou igual ao preço baixo (alto) de terceiro, quarto, quinto, sexto ou sétimo bar .
Se a interseção na oitava ou na nona barra não aconteceu, a próxima fase da "contagem regressiva" é adiada até o momento em que a interseção ocorre. Isto é, deve-se esperar pela próxima barra, na qual acontece a intersecção das barras correspondentes.
A configuração é cancelada em dois casos: Loop (discutido abaixo); Se um dos preços de fechamento subseqüentes for maior do que o preço mais alto na configuração de compra ou menor o preço mais baixo na configuração de venda.
Contagem regressiva e a posição de abertura no sequente - o sistema de negociação mecânico da Demark.
Quando a interseção de configuração é realizada (mas não antes da nona barra da configuração), inicia o processo de contagem regressiva.
Para a configuração de venda (compra), a contagem regressiva reflete a relação entre o preço de fechamento e o preço alto (baixo) de dois bares atrás. O preço de fechamento deve ser maior (menor) do que o maior (menor) preço de dois bares atrás. Assim que os 13 registrados tais preços (não necessariamente consecutivos), o sinal ocorre.
A fase de contagem regressiva não pode ser concluída antes de 12 barras após a configuração (presume-se que a nona barra também inclua uma referência de fase), mas geralmente há de 15 a 30 barras entre a configuração e a conclusão da contagem regressiva.
A contagem regressiva e a configuração são canceladas em dois casos: Configuração da direção oposta foi formada Há um "loop", ou seja, uma nova configuração na mesma direção.
Entrando no mercado (entrada)
Existem três maneiras de abrir uma posição: no preço de fechamento da barra, que completou a contagem regressiva. Essa é a maneira mais arriscada, já que um loop pode acontecer. depois de um "flip": no caso de compra (venda), o preço de fechamento deve ser maior (menor) no preço de fechamento de quatro barras atrás; após 2-bar "jump": no caso de compra (venda), o preço de fechamento deve ser maior (menor) que o preço máximo (mínimo) de dois bares atrás.
A terceira maneira é um compromisso entre o primeiro e o segundo.
Sequencial: fechando a posição.
Para determinar os níveis de Stop Loss, o autor usou o intervalo de preços verdadeiro do dia com o mínimo mais baixo (máximo máximo) para todo o período de configuração e formação de contagem regressiva para o sinal de compra (venda).
Existem dois métodos de saída por Stop Loss: O intervalo verdadeiro é calculado da seguinte forma: o preço baixo de uma barra é subtraído do preço alto da barra ou do preço de fechamento da barra anterior, se esta for maior. No caso de um sinal para comprar (vender), o nível de Stop Loss é determinado subtraindo (adicionando) o valor obtido do preço baixo (alto) da barra. Mais conservador é o segundo método. Barra para o cálculo de Stop Loss é escolhido da mesma maneira. No entanto, ao comprar um nível de Stop Loss é determinado pela subtração da diferença entre o preço de fechamento e o preço baixo do preço baixo, no caso de venda o Stop Loss é determinado pela adição da diferença entre o preço alto e o preço de fechamento ao preço alto.
Desde que o comerciante entrar no mercado, espera receber lucro, é importante determinar os níveis de lucro-alvo, no caso de um movimento favorável de preços.
Existem duas maneiras de sair do mercado com lucro: uma nova formação de configuração é concluída e o preço não alcança o nível extremo de preço registrado durante a formação da configuração não ativa mais próxima. Há um sinal de inversão de tendência.
Seqüencial é usado com sucesso não apenas nos gráficos diários, mas o autor é aconselhado a aplicá-lo apenas neste intervalo de tempo.
Sequential de Thomas DeMark (TD SEQUENTIAL) usando a inteligência artificial.
1. Introdução.
Os sistemas de inteligência artificial se espalham pelas atividades diárias do homem. Os comerciantes foram os primeiros a adotá-los. Vamos discutir como um sistema de inteligência artificial baseado em redes neurais pode ser usado no comércio.
Primeiro, vamos estabelecer que uma rede neural não pode negociar sozinha. Ou seja, se houver uma rede neural, ela pode ser fornecida com uma quantidade indefinida de dados de preços, indicadores e outras iguarias - nenhum resultado final será obtido, então essa ideia pode ser descartada imediatamente. Uma rede neural só pode ficar ao lado de uma estratégia, "servir": auxiliar na tomada de decisões, filtragem, previsão. Uma rede neural que representa uma estratégia completa é um absurdo (pelo menos eu pessoalmente nunca vi nenhuma).
Neste artigo, vou dizer-lhe como negociar com sucesso, fundindo uma estratégia muito conhecida e uma rede neural. Será sobre a estratégia Seqüencial de Thomas DeMark com o uso de um sistema de inteligência artificial. Seqüencial é bem descrito por DeMark no livro "A nova ciência da análise técnica", que será útil para a leitura de qualquer comerciante. Você pode encontrar mais detalhes sobre o livro aqui.
Primeiro, algumas palavras sobre a estratégia. Seqüencial é uma estratégia de contra-tendência. Sinais que aparecem nele não dependem um do outro. Em outras palavras, os sinais de compra e venda podem ser recebidos sucessivamente, o que complica muito o uso do Sequential. Como qualquer outra estratégia, gera sinais falsos, os quais procuramos. O princípio de gerar sinais baseado em Sequential é bem descrito pelo próprio autor. Sua interpretação será ligeiramente modificada aqui. Somente a primeira parte da estratégia será aplicada, usando os sinais Setup e Intersection. Eles foram escolhidos por duas razões: em primeiro lugar, esses sinais estão localizados nos topos e fundos; em segundo lugar, eles ocorrem com muito mais freqüência do que a contagem regressiva e a entrada.
Por favor note: uma inteligência artificial pode ser incorporada em qualquer estratégia de negociação, até mesmo no crossover convencional do MA. Em ambos os casos, o momento para tomar uma decisão será o mais importante em qualquer estratégia. O ponto é que analisar cada barra é uma utopia. Portanto, é necessário determinar os momentos, as barras para analisar a situação do mercado. É precisamente para isso que uma estratégia comercial se destina. Novamente, os métodos de análise podem ser absolutamente arbitrários, desde o crossover MA até as formações fractais, desde que um sinal seja recebido. No caso do Sequential, estamos interessados em uma janela de pontos verdes, durante a qual a situação do mercado deve ser identificada e a validade de um sinal deve ser determinada.
Fig. 1. O indicador TDSEQUENTA by nikelodeon. mql5.
Vamos analisar a figura que mostra a operação da estratégia de negociação Seqüencial sem uma rede neural. Na figura, você pode ver a aparência de pontos verdes. Uma versão adaptativa da estratégia é mostrada aqui - não usando um número específico de barras (por exemplo, 9 barras consecutivas), mas sim enquanto uma condição é atendida. Assim que a condição da estratégia deixar de ser cumprida, aparece um sinal. Assim, cada sinal aparece após seu próprio número de pontos, dependendo da situação atual do mercado. É aqui que o Sequential se adapta ao mercado. Esse efeito fornece a capacidade de analisar a janela que consiste em pontos verdes. Esta janela tem uma duração diferente para cada sinal. Isso dá uma certa vantagem ao usar um AI. O seguinte esquema de cores foi selecionado: um ponto azul após pontos verdes indica um sinal de compra, ponto vermelho - sinal de venda.
Pode ser visto que o primeiro sinal de venda (ponto vermelho) acabou sendo falso, porque o sinal seguinte foi maior. Ao trabalhar de sinal a sinal, entrar no mercado usando esse ponto vermelho certamente resultaria em perda de dinheiro. O primeiro ponto azul também foi enganoso: comprar a esse preço traria um rebaixamento significativo. Como separar os sinais em falso e válido? Essa tarefa pode ser resolvida pela inteligência artificial, ou seja, uma rede neural (NN).
2. Contexto de mercado.
Um sistema de negociação funcionou perfeitamente anteontem. Ontem, estragou tudo. Hoje tudo é tolerável novamente. Soa familiar? Naturalmente, cada comerciante enfrenta o fato de que a qualidade do sistema de negociação varia de dia para dia. O problema não está no próprio sistema. O chamado contexto do dia de negociação é o culpado. É formado com base na mudança anterior no volume negociado, juros em aberto e flutuações de preços. Simplificando, o histórico de negociação é determinado precisamente por esses dados, que são diferentes no final de cada dia. Isso nos leva a uma recomendação importante: otimizar seus robôs nos dias que têm condições semelhantes aos dias em que deveriam negociar. A tarefa mais difícil ao otimizar o NN é garantir que a amostra de treinamento não inclua os padrões que serão formados durante o dia atual. O contexto diário é uma dessas inclusões.
Vamos considerar o seguinte exemplo. Hoje, o volume de comércio e os juros em aberto caíram, enquanto as taxas subiram. Aparentemente, o mercado está enfraquecendo, e uma reversão para baixo é esperada. Ao treinar o NN usando SOMENTE os dias que têm volume decrescente e interesse aberto com um aumento simultâneo nas taxas, há uma maior probabilidade de fornecer os insumos do NN com os padrões que têm maior chance de ocorrer ao longo do dia. Isso terá o NN treinado em termos do contexto do mercado. É mais provável que o mercado reaja da mesma forma que no dia com parâmetros semelhantes. É fácil calcular que existem apenas nove variantes das combinações de volume, preço e juros em aberto. Ao treinar a rede para cada contexto separadamente, todo o mercado será coberto. Nove modelos treinados trabalham por duas semanas em média e mais em alguns casos.
É muito fácil organizar o trabalho dentro do contexto diário com a ajuda do indicador eVOLution-dvoid.1.3 (1). Este indicador basicamente lê os dados do arquivo dvoid-BP. csv localizado no diretório. \ Arquivos \ evolução-dvoid \. Pode ser visto que as cotações da libra britânica em relação ao dólar americano são usadas aqui. Para exibir corretamente os dados e poder usá-los subseqüentemente exatamente no contexto do dia, é necessário visitar o local da Bolsa de Valores de Chicago todas as manhãs às 7:30 da noite, horário de Moscou. Faça o download do Boletim Diário (número 27 da libra esterlina), que indica o volume e o interesse em aberto no fechamento do dia anterior. Esses dados devem ser adicionados ao "dvoid-BP. csv" todos os dias antes do início da negociação. Durante o dia, o indicador mostrará as alterações no volume em comparação com o valor anterior. Ou seja, não é necessário o valor real do volume de mercado, mas sua mudança. O mesmo vale para o interesse aberto: seu movimento relativo é importante.
3. Abordagem para organizar o modelo.
Para aumentar a amostra de treinamento e fornecer o nível adequado de generalização, é necessário introduzir uma condição importante. Os sinais serão separados em válidos e falsos separadamente para compra e venda. Desta forma, os recursos do próprio NN não serão desperdiçados na classificação dos sinais. Vamos separar esses sinais antecipadamente e construir dois modelos: um será responsável pelos sinais de compra e o outro pelos sinais de venda. Esse truque simples dobra o tamanho da amostra de treinamento. Fato conhecido: quanto maior a amostra de treinamento e quanto maior o seu nível de generalização, mais tempo o modelo permanece adequado ao mercado.
Vamos introduzir o conceito de intervalo de confiança: o intervalo em que o modelo é confiável e considerado adequado para uso. Suponha que o intervalo de confiança para um modelo calculado inclua 1/3 do intervalo de treinamento. Ou seja, após o treinamento do modelo em 30 sinais, assumimos que seu período de operação adequado será de 10 sinais. No entanto, não é incomum que um modelo dure três vezes mais do que o intervalo de treinamento.
Observa-se (e bastante natural) que, quando o intervalo de treinamento aumenta, a capacidade de generalização do modelo diminui. Isso confirma a teoria de que o Santo Graal não existe. Se pudéssemos treinar um NN em toda a história do mercado com 100% de generalização, obteríamos um modelo ideal capaz de funcionar indefinidamente. Infelizmente, a prática mostra que isso é uma utopia. Mas construir um bom modelo de longo prazo ainda é possível. O segredo está nos dados passados para a rede como entrada. Se eles refletem a essência da variável de saída e são a causa para ela, então construir um modelo não será problema.
By the way, sobre a variável de saída. É tão difícil escolher como encontrar os dados de entrada para construir uma rede. Ao olhar para os dados históricos dos sinais, é possível determinar com precisão quais deles eram válidos e quais eram falsos. Como regra, ao construir a variável de saída, cada sinal é interpretado sem ambiguidade, tornando a saída da rede ideal. Ou seja, a saída não contém um único erro e isso faz com que o NN busque os mesmos resultados ideais em aprendizado. Naturalmente, obter um modelo com um nível de generalização de 100% em um longo intervalo é praticamente impossível. Afinal, é improvável que existam dados que interpretem os sinais da variável de saída sem erros por tempo suficiente. Além disso, se tais dados estiverem presentes, o uso de uma rede neural torna-se completamente desnecessário.
Devido a isso, a variável de saída deve ser formada com pequenos erros, onde pequenas perdas de sinais são cobertas por lucros significativos. Isso resulta em uma variável de saída que não é ideal, mas tem o potencial de aumentar o depósito. Em outras palavras, os erros causam perdas insignificantes, que são mais do que cobertos por outros sinais lucrativos. Isso permite obter um modelo com um alto nível de generalização para a variável de saída. Neste caso, é muito importante que o grau de erro desse modelo seja conhecido. Portanto, a confiança no sinal terá essa correção.
E, finalmente, o aspecto mais importante ao criar modelos é escolher um significado para a variável de saída. Naturalmente, o lucro vem à mente primeiro. Os sinais lucrativos no passado serão denotados como 1 e os perdidos como 0. No entanto, existem muitas outras variáveis semânticas para a saída, que fornecerão informações valiosas adicionais sobre o mercado. Por exemplo: haverá uma reversão após um sinal, um certo lucro será alcançado, será que a barra após o sinal será de baixa ou alta? Portanto, uma variável de saída pode receber um significado de diversas maneiras, usando os mesmos dados de entrada. Isso produz mais informações sobre o mercado e, se vários modelos se confirmarem, a probabilidade de lucro aumenta.
Muitas vezes encontro comerciantes que tentam receber 100 ou mais sinais durante um longo intervalo. Então, eu não compartilho desse desejo. Na minha opinião, 10-15 sinais são suficientes para ganhar a vida, mas seu erro não deve exceder 20%. Isso se deve ao fato de que, mesmo que dois sinais em dez apresentem a perda máxima, ainda temos oito corretos. Pelo menos dois deles gerarão lucro suficiente para cobrir as perdas.
Então, como alguém faz um modelo que funcionará por tempo suficiente? Por exemplo, exigimos uma operação estável do sistema no M5 durante uma ou duas semanas - um bom resultado, se estiver trabalhando sem otimização excessiva. Suponha que o principal indicador, o principal sistema de negociação (no nosso caso, o Sequencial) gere uma média de 5 sinais por dia. 10 sinais serão dados para cada um dos nove modelos do contexto de mercado. Com isso, há apenas cinco dias de negociação em uma semana. Isso significa que alguns modelos não funcionarão, enquanto outros funcionarão. A prática mostra que cada modelo é acionado não mais do que duas vezes por semana e muito raramente - três vezes por semana. Isso indica que um NN Generalizado funcionará por mais de uma semana, considerando o intervalo de confiança por um período fora da amostra de 10 sinais.
4. Teoria das Redes Neurais.
Agora vamos passar para a teoria das redes neurais. Você pode ter pensado que eu estaria ensinando a você topologias, nomes e métodos de treinamento? Você está errado.
Vamos discutir o seguinte. Existem duas direções no uso de redes neurais, que diferem na topologia. Um deles está prevendo, o outro está classificando.
Uma rede de previsão gera um valor futuro da variável de saída. Acredita-se que também gere o grau de direção das cotações (para cima ou para baixo), além da própria direção. Por exemplo, a taxa atual de EUR é de 1.0600, e a rede gera que ela subirá para 1.0700 em uma hora - a rede prevê esses +100 pontos. Por favor, note que eu não aprove tal abordagem para redes neurais, porque o futuro não está definido. Pessoalmente, acho esse argumento filosófico suficiente para abandonar esse método de trabalho com o NN. Claro, eu percebo que isso é apenas uma questão de gosto, e vale a pena mencionar que as redes de previsão fazem bem seu trabalho.
No entanto, eu prefiro redes de classificação. Eles dão a idéia do estado atual do mercado, e quanto mais precisamente ele é determinado, mais sucessivas serão as negociações. Em ambos os casos, receber uma resposta da rede faz com que tomemos alguma ação. No primeiro caso, compramos em 1.0600 e vendemos quando o preço atinge 1.0700. No segundo caso, simplesmente compre e saia da negociação no próximo sinal, mas o nível de preço preciso não pode ser previsto.
Para revelar a essência dessa abordagem, veja uma anedota histórica. Um dia, o campeão mundial de xadrez Garry Kasparov foi questionado sobre quantos movimentos para frente em um jogo ele pensa ao planejar o próximo movimento. Todos pensaram que Kasparov diria alguma grande figura. No entanto, o que o jogador de xadrez disse prova que longe de todos entende até mesmo a essência do jogo: "A coisa mais importante no xadrez não é quantos passos adiante você pensa, mas quão bem você analisa a situação atual". O mesmo se aplica ao mercado de câmbio: para entender a essência do jogo, não é necessário olhar várias barras à frente. É o suficiente para determinar o estado atual do mercado em um determinado momento e fazer o movimento certo.
Essa é a ideologia que eu mais prefiro, mas, novamente, é uma questão de gosto. Prever as redes neurais também é bastante popular, não se pode negar o direito de existir.
5. Organização interna do sistema de inteligência artificial.
Juntamente com a existência de duas abordagens para a construção e uso de redes neurais (previsão e classificação), este assunto inclui dois tipos de especialistas - desenvolvedores de sistemas de IA e seus usuários. Tenho certeza de que Stradivari tocara muito bem seus violinos, embora não se tornasse famoso como um grande virtuoso. O criador do instrumento é certamente capaz de usá-lo, mas nem sempre o mestre consegue realizar plenamente o potencial do que ele criou. Infelizmente, não consegui entrar em contato com o autor do otimizador descrito aqui: ele não responde a e-mails. No entanto, ele é conhecido por muitos frequentadores do fórum. Seu nome é Yury Reshetov.
Eu usei sua abordagem no trabalho e, como resultado da comunicação com ele, descobri a estrutura interna do otimizador, sobre a qual gostaria de falar. Espero que o autor não se importe: o produto foi publicado em código aberto. Como usuário de sistemas AI, não preciso entender o código do programa, mas é necessário conhecer a estrutura interna do otimizador. Eu destaquei este produto principalmente porque o otimizador usa um método de treinamento diferente dos clássicos. O ponto fraco no treinamento de redes neurais é o seu overtraining. É praticamente impossível determinar se isso aconteceu e em que medida. O otimizador de Reshetov usa uma abordagem diferente: uma rede não pode ser overtraining, só pode ser undertrained. Essa abordagem permite avaliar a qualidade da aprendizagem em rede como uma porcentagem. Existe um limite superior de 100%, ao qual aspiramos (é muito difícil alcançar tal resultado). Quando obtivermos uma rede treinada no nível de 80%, por exemplo, saberemos que a rede produz um erro em 20% dos casos e pode estar pronta para isso. Essa é uma das principais vantagens do método.
A operação do otimizador resulta em um arquivo com código. Ele contém duas redes, cada uma delas é uma equação não linear. Cada uma das funções primeiro normaliza os dados, que são subsequentemente alimentados à entrada da equação não linear. Um "comitê" composto de duas redes foi implementado para aumentar a capacidade de generalização. Se ambos disserem "sim", o sinal é válido; se ambos disserem "não" - falso. Se os valores de duas redes forem diferentes, uma resposta "não segura" será recebida. Por favor note: não há nenhum estado "não seguro" no passado, porque é sempre possível categorizar o sinal em dados passados. Assim, aqui, "inseguro" implica a possibilidade simultânea de sinais falsos e válidos. Isso dá uma transição de cálculos binários para cálculos quânticos. Como uma analogia, considere um qubit: ele pode pegar os valores 1 e 0. O mesmo que "não tenho certeza": essa resposta pode ser uma e zero na história. Um pequeno truque oculto aqui será usado na negociação. Será discutido um pouco mais tarde.
Vamos passar para a preparação de dados. Os dados em si são representados como uma tabela do Excel. As colunas aqui são as entradas da rede. A última coluna é a variável de saída. De acordo com o seu significado, esta coluna contém uns e zeros. No nosso caso, um sinal que recebeu lucro é denotado por 1, e aquele com uma perda é 0. As linhas desta tabela representam os dados armazenados quando o sinal aparece. Quando carregada no otimizador, essa tabela é dividida em duas amostras - treinamento e teste, com as duas redes treinando de forma cruzada. Mas o cálculo e a otimização são realizados com o comitê dessas redes. Assim, o treinamento de cada rede é realizado separadamente, mas com a consideração do resultado geral.
No final da seção, eu enfatizo: o sistema de IA ou o ambiente de programação usados não importam. Mesmo o perceptron mais primitivo pode ser treinado usando o método de propagação reversa do erro e não ser overtraining, graças a bons dados na entrada da rede. O componente essencial não é o sistema de IA, mas a qualidade dos dados usados. Portanto, o otimizador normaliza os dados primeiro e, depois disso, os dados são enviados para uma equação não linear convencional. E se os dados de entrada são a razão para a variável de saída, então esta simples equação com cerca de 20 coeficientes produzirá 10 sinais com um erro de 20% no futuro próximo. Tem sido repetidamente observado, no entanto, que qualquer transformação de preço leva a um atraso. Portanto, qualquer indicador geralmente dá um atraso, o que afeta o funcionamento dos sistemas de IA. As variáveis de entrada e saída serão discutidas em detalhes no próximo artigo.
6. TD Sequencial e NN.
Agora vamos passar para a aplicação prática da teoria descrita acima.
Vamos analisar um intervalo com negociação ao vivo. A operação NN será demonstrada por setas azuis. Quando a seta aponta para um ponto vermelho, isso significa que o sinal de venda é válido; quando a seta aponta para cima, o sinal é falso. Se a flecha estiver faltando, indica a resposta "não segura". Os sinais de compra (ponto azul) são opostos: uma seta para cima significa um sinal válido, enquanto uma seta para baixo indica um sinal falso.
Vamos considerar o funcionamento do modelo durante o dia. À primeira vista, seria difícil ganhar dinheiro, mas na verdade não é esse o caso. Compreensão do princípio da separação vem para ajudar. Por exemplo, existem dois sinais diferentes uns dos outros. De acordo com a AI, um deles é um sinal falso de venda, que na verdade gerou lucro. Depois de receber o próximo sinal de venda "falso" do AI, é necessário verificar se ambos os sinais se referem à mesma área de separação ou se são simplesmente os mesmos. Se assim for, para que o sinal leve ao lucro, é necessário orientar o indicador para que a seta fique alinhada com a direção do mercado, ou seja, para o lucro do sinal.
Dê uma olhada na figura. O primeiro sinal de venda (ponto vermelho) revelou-se não rentável. Mas quando a flecha é virada para baixo, ela se torna lucrativa, pois o sinal de venda # 2 caiu na mesma área com o sinal # 1. Ao virar a flecha, o segundo sinal também se tornou lucrativo, o que poderia ser negociado. Agora considere um sinal de compra. Como pode ser visto, neste caso a IA cometeu um erro novamente, assumindo que um sinal lucrativo é falso. Só resta consertar a situação e inverter a flecha do sinal de compra # 3. Como resultado, o sinal nº 4 começou a indicar a direção correta. Mas o sinal # 5 entrou em outra área, diferente do sinal anterior, e levou a uma reversão do mercado em geral.
Em outras palavras, obtivemos um anti-modelo em constante perda, invertemo-lo e conseguimos um modelo lucrativo! Eu chamo este método de orientação do modelo. Por via de regra, realiza-se durante um sinal. É suficiente esperar que um sinal de compra e um sinal de venda apareçam no início do dia, orientá-los e usá-los para o trabalho. Desta forma, pelo menos 3-4 sinais são obtidos em um dia. O objetivo não é verificar os sinais passados e seu desempenho. Em vez disso, é necessário comparar dois sinais mais recentes entre si, verificar se eles pertencem ou não a um grupo e ver que ação deve ser tomada, se o resultado do sinal anterior for conhecido. Ao mesmo tempo, não esqueça que a rede neural pode produzir um erro.
Fig. 2. Indicadores BuyVOLDOWNOPNDOWN. mq5 e SellVOLDOWNOPNDOWN. mq5.
Fig. 3. Indicadores orientados BuyVOLDOWNOPNDOWN. mq5 e SellVOLDOWNOPNDOWN. mq5.
As duas figuras seguintes mostram o funcionamento da rede durante 4 dias. Deve-se notar que apenas o segundo sinal é usado em operação. Todos os sinais que receberam lucro são marcados com uma linha verde, aqueles com perda são vermelhos. A primeira figura demonstra uma operação pura da rede, a segunda mostra a operação orientada de acordo com o primeiro sinal do dia. O primeiro não é definitivamente impressionante. Mas se você olhar para a segunda figura e começar a processar negociações a partir do segundo sinal de cada dia, com o sistema de negociação orientado, a imagem ficará muito mais bonita. Não esqueça que a técnica de reversão deve ser aplicada com cautela.
Fig. 4. Indicadores de acordo com o nome de cada dia, não orientados na direção correta.
Fig. 5. Indicadores para cada dia, orientados de acordo com o primeiro sinal do dia (comprar e vender separadamente)
Nesta forma, os modelos não parecem mais um fracasso, mas sim bastante capazes. Como eles não esgotaram seu recurso de intervalo de confiança, provavelmente serão válidos por mais alguns dias.
A essência da classificação é que um espaço de dados multidimensional é dividido por uma linha universal, que classifica os sinais em grupos "válidos" e "falsos". Os sinais "válidos" estão acima de zero, enquanto os "falsos" estão abaixo. O principal aqui é a estabilidade na separação de alguns sinais de outros. Um conceito de orientação TS é introduzido. É importante determinar quando a rede começa a perder de forma constante, gerando sinais invertidos. Por via de regra, neste caso, o primeiro sinal do dia é o guia. Este sinal pode ser negociado, mas com extrema cautela, baseado em outros fatores de análise. Meu conselho: para garantir que a rede não esteja desalinhada, tente fazer com que o número de zeros e uns na variável de saída seja igual. Para equalização, remova livremente os zeros e os excessivos da amostra de treinamento, começando pelos sinais mais distantes.
O processo exato de divisão não importa, desde que seja estável. Voltemos ao nosso exemplo: na Figura 2, antes da reorientação, recebemos dois erros seguidos e aproveitamos a situação. Como você pode ver, quando o Sequential é executado no M15, de 2 a 5 sinais podem ser obtidos durante o dia. E se dois sinais de compra, por exemplo, caírem em classes diferentes (um é válido, o outro é falso), então conhecer o resultado do primeiro sinal torna fácil determinar qual será o sinal atual - falso ou válido. No entanto, o método de orientação deve ser aplicado com cuidado. A rede pode produzir um erro e, em seguida, continuar a funcionar corretamente. De qualquer forma, tudo vem com a experiência, tanto as reações mecânicas quanto a intuição dos padrões. A sustentabilidade do modelo obtido está prevista para uma consideração mais detalhada em artigos subseqüentes, já que este tópico tem muitas nuances.
Nota: os arquivos anexados referem-se aos números mostrados acima. Você pode baixá-los e testá-los na data especificada. O sistema de negociação não é sensível a cotações, embora tenha havido casos em que Sequential não gerou um sinal em outro corretor, porque as cotações nos momentos-chave eram diferentes. Mas esses casos são raros e os dados de entrada devem ser os mesmos para todos, uma vez que são fornecidos a partir da mesma fonte e não estão sujeitos a alterações. Ao mesmo tempo, não há garantia de que você será capaz de obter os mesmos resultados no mesmo período em que você executar os arquivos baixados no seu computador. Mas você deve ser capaz de usar os modelos para separar os sinais atuais e os anteriores.
Em conclusão, vamos considerar mais uma questão mencionada acima. O que fazer, quando a rede gera um sinal "não seguro" e o que isso significa? Repito: a história não tem lugar para um conceito como "não tenho certeza". Isso apenas indica que a amostra de treinamento não continha um padrão semelhante, e as opiniões de duas redes em um comitê sobre essa questão foram divididas. "Não tenho certeza" implica que o sinal obtido pode ser válido ou falso. É bem possível que o uso de um segmento maior da história permita que o padrão requerido seja encontrado, e a rede seria capaz de identificá-lo. Mas a profundidade de treinamento é pequena - cerca de 30 sinais, o que corresponde a aproximadamente 8-10 dias. Naturalmente, nos deparamos periodicamente com sinais e modelos desconhecidos, que não estavam presentes durante o treinamento. De acordo com minhas observações, quanto mais tempo um modelo funciona, mais freqüentemente ele dá a resposta "não segura". Isso se encaixa bem com a teoria do "mercado vivo", onde o passado não se refere ao futuro. Os padrões recentes podem ser repetidos em breve ou apenas no futuro distante. A essência do mercado é tal que o significado de uma barra diminui gradualmente depois que ela é fechada à medida que se afunda na história. Esta é uma regra geral para qualquer informação: quanto mais antiga ela é, menos sua importância.
Existem duas maneiras de classificar o estado "não seguro". Dê uma olhada na figura a seguir. Há sinais com setas perdidas e o notório "não seguro" - as duas redes no comitê as interpretaram diferentemente. Esses sinais são indicados como 1 e 2 na figura. E para o primeiro sinal ser lucrativo, deve ser falso.
Fig. 6. Organization method of signal orientation according to the daily context.
There are two ways to reclassify the "not sure" state. The first method is very simple (see Fig. 7). We have determined that the "not sure" state became false for the first sell. That is, the "not sure" sell signal is regarded as false. Signal #2 is also considered false, assuming to continue buying. In fact, the network made a mistake, but in practice this mistake can be nullified by entering the market at a better price. Therefore, the appearance of an upward arrow will not do much harm, although in fact, the signal turned out to be negative. The "not sure" buy signal (blue dot) is also regarded as false, because the last time the "not sure" occurred the buy signal was false. This method is very old, but experience shows that it works well.
Fig. 7. Reclassification of the "Not sure" signal, when it is regarded as an alternative class.
The second method of the "not sure" state classification calls for the internal organization of the optimizer and uses it as the basis. So, the "not sure" state appears when one network in the committee shows 1, while the other shows 0. The essence of the method is selecting the committee's networks which shows the correct answer. Let us return to our example. Signal #1 turned out to be false, when network A was above zero and network B was below. Therefore, if network B is above zero, and network A is less, then this "not sure" state is valid. As for the buy signals, everything is the opposite: the previous signal (not present in the figure) was false when the response of network A was negative and that of network B was positive. In the current buy signal, the situation is opposite, so we assume that this signal is valid, and taking a buy trade is recommended.
Fig. 8. Reclassification of the "Not sure" signal according to the values of each of the committee networks.
I personally prefer the first classification method for the "not sure" state, and it has a rather logical explanation. When using a committee of two networks, we get three classes: "Yes", "No" and "Not sure". The data are distributed to these three groups. The important thing is not that we have three groups, but that they are fundamentally different. After obtaining the "not sure" signal and later finding out its direction, the subsequent signals in this group are believed to have the same direction. Current experience shows that this method is more reliable than the second.
Forecasting financial markets is difficult: they are a living and unpredictable organism, where real people work. During the day, the market situation may change so drastically no one would assume it would — neither market makers, nor major players, let alone us. The character of such changes consists of two components. The first is the market context, which have been discussed. The second reason is the activity of buyers and sellers in real time, here and now. Therefore, the main thing in trading is to orient in time and be on high alert!
Using an AI is not a panacea, nor the Holy Grail. Of course, when you trade with the use of neural networks, it is definitely worth listening to what artificial intelligence has to say. However, use your head when making trades. Once a signal from the AI is received, it is necessary to wait for its confirmation, select the correct level, evaluate the rollback probability, etc. This is what I wanted to discuss in the third article, which would be devoted to the practical peculiarities of trading based on the Sequential strategy with the use of neural networks.
7. Conclusion.
Once again, I want to emphasize that this article is purely methodological in nature. All the described methods can be used in your trading systems, and hopefully the suggestions will find their use.
I am certain there will be both supporters and opponents of the described method. If you read up to these lines, then you have at least some interest. I would highly appreciate your opinion on what you disagree with, especially if you have a constructive solution, refinement or modification. In other words, criticize constructively! The sustainability of this approach can be proven by constructing an artificial intelligence system in conjunction with me. I would be glad to work on this project alongside a professional programmer, and I invite you to cooperate.
The code of TD Sequential is provided at the end of the article, as well as the indicators that filter or classify the buy and sell signals with consideration of the daily context and orientation at the beginning of trading. Please note that the indicators have been rewritten from MQL4 and do not provide the full functionality to completely reproduce everything that is shown in the article. The reason is that the input data for the NN require a set of indicators of the ClusterDelta project, which are available only for paid subscription.
I am willing to provide a prepared file for the indicators' operation to all interested. It would be intriguing to rewrite all the required indicators to MQL5 in order to completely reproduce the operation algorithm. My task here was to show how an open source code for creating and training neural networks can be used in the famous DeMark's strategy. I will be glad to see your comments and answer your questions.
practical technical analysis.
Тrading diary / Position trading, Swing trading, Daily trading / Technical analysis Дневник / Практическо приложение на технически анализ / Споделяне на идеи.
Jan 9, 2013.
Tom Demark Sequential.
---------------------------------------------- 3. TD Combo TD Combo is better when you have sharp directional moves, because it requires only thirteen price bars from start to finish compared to TD Sequential which needs at least 22 bars. The criteria for a Setup within TD Combo are the same with those required for a Setup within TD Sequential. The difference is that the count starts at bar 1 of the setup and not from bar 9 and TD Combo requires four conditions to be satisfied simultaneously. Requirements for a TD Combo Buy Countdown - close lower or equal than the low 2 trading days earlier. - The low of a countdown day should be less than the previous "trading day‘s" low - The close of a countdown day should be less than the previous "trading day‘s" close - The close of a countdowns day should be less than the previous "countdowns day‘s" close - bars 11,12,13 each one should just close successively lower and the other rules above are not applied Requirements for a TD Combo Sell Countdown - close higher or equal than the high 2 trading days earlier. - The high of a countdown day should be greater than the previous "trading day‘s" high - The close of a countdown day should be greater than the previous "trading day‘s" close - The close of a countdowns day should be greater than the previous "countdowns day‘s" close - bars 11,12,13 each one should just close successively higher and the other rules above are not applied.
Demark's sequential trading system
( Fml( "TD Count Down Buy A" ) =13.
AND Ref( Fml( "TD Count Down Buy A" ) ,-1 )<> 13) OR.
( Fml( "TD Count Down Buy A" ) =12.
AND Ref( Fml( "TD Count Down Buy A" ) ,-1 )<> 12) OR.
( Fml( "TD Count Down Buy A" ) =11.
AND Ref( Fml( "TD Count Down Buy A" ) ,-1 )<> 11) OR.
( Fml( "TD Count Down Buy A" ) =10.
AND Ref( Fml( "TD Count Down Buy A" ) ,-1 )<> 10) OR.
( Fml( "TD Count Down Buy A" ) =9.
AND Ref( Fml( "TD Count Down Buy A" ) ,-1 )<> 9) OR.
( Fml( "TD Count Down Buy A" ) =8.
AND Ref( Fml( "TD Count Down Buy A" ) ,-1 )<> 8) OR.
( Fml( "TD Count Down Buy A" ) =7.
AND Ref( Fml( "TD Count Down Buy A" ) ,-1 )<> 7) OR.
( Fml( "TD Count Down Buy A" ) =6.
AND Ref( Fml( "TD Count Down Buy A" ) ,-1 )<>6) OR.
( Fml( "TD Count Down Buy A" ) =5.
AND Ref( Fml( "TD Count Down Buy A" ) ,-1 )<> 5) OR.
( Fml( "TD Count Down Buy A" ) =4.
AND Ref( Fml( "TD Count Down Buy A" ) ,-1 )<> 4) OR.
( Fml( "TDCount Down Buy A" ) =3.
AND Ref( Fml( "TD Count Down Buy A" ) ,-1 )<>3) OR.
( Fml( "TD Count Down Buy A" ) =2.
AND Ref( Fml( "TD Count Down Buy A" ) ,-1 )<>2)
( Fml( "TD Count Down Buy A" ) =14 AND Ref( Fml( "TD Count DownBuy A" ),-1)<> 14)
A:=If( Fml( "TD Count Down Buy A" ) =14.
AND Ref( Fml( "TD Count Down Buy A" ) ,-1 )<> 14,1,0);
B:=If( Ref(Fml( "TD Count Down Buy B" ),-1) =1,1,0);
HighestSinceBars(1,A =1,A )<HighestSinceBars(1,B=1,B ) AND Fml( "TD Count Down Buy B" ) =1.
A:=If( Fml( "TD Count Down Buy A" ) =14.
AND Ref( Fml( "TD Count Down Buy A" ) ,-1 )<> 14,1,0);
B:=If( Ref(Fml( "TD Count Down Buy C" ),-1) =1,1,0);
HighestSinceBars(1,A =1,A )<HighestSinceBars(1,B=1,C ) AND.
Fml( "TD CountDown Buy C" ) =1.
Fml( "TD Count Down Buy A" ) =2 AND Ref( Fml( "TD Count Down Buy A" ) ,-1)<>2.
Fml( "TD Count Down Buy A" ) =3 AND Ref( Fml( "TD Count Down Buy A" ) ,-1 )<> 3
Fml( "TD Count Down Buy A" ) =4 AND Ref( Fml( "TD Count Down Buy A" ) ,-1)<> 4
Fml( "TD Count Down Buy A" ) =5 AND Ref( Fml( "TD Count Down Buy A" ) ,-1 )<> 5
Fml( "TD Count Down Buy A" ) =6 AND Ref( Fml( "TD Count Down Buy A" ) ,-1)<> 6
Fml( "TD Count Down Buy A" ) =7 AND Ref( Fml( "TD Count Down Buy A" ) ,-1 )<> 7
Fml( "TD Count Down Buy A" ) =8 AND Ref( Fml( "TD Count Down Buy A" ) ,-1)<> 8
Fml( "TD Count Down Buy A" ) =9 AND Ref( Fml( "TD Count Down Buy A" ) ,-1 )<> 9
Fml( "TD Count Down Buy A" ) =10 AND Ref( Fml( "TD Count Down Buy A" ) ,-1)<> 10
Fml( "TD Count Down Buy A" ) =11 AND Ref( Fml( "TD Count Down Buy A" ) ,-1)<> 11
Fml( "TD Count Down Buy A" ) =12 AND Ref( Fml( "TD Count Down Buy A" ) ,-1)<> 12
Fml( "TD Count Down Buy A" ) =13 AND Ref( Fml( "TD Count Down Buy A" ) ,-1)<> 13
Fml( "TD Count Down Buy A" ) =14 AND Ref( Fml( "TD Count Down Buy A" ) ,-1 )<> 14
A:=If( Fml( "TD Count Down Buy A" ) =14 AND Ref( Fml( "TD CountDown Buy A") ,-1 )<> 14,1,0);
B:=If( Ref(Fml( "TD Count Down Buy B" ),-1) =1,1,0);
HighestSinceBars(1,A =1,A )<HighestSinceBars(1,B=1,B ) AND Fml( "TD Count Down Buy B" ) =1.
A:=If( Fml( "TD Count Down Buy A" ) =14 AND Ref( Fml( "TD CountDown Buy A") ,-1 )<> 14,1,0);
B:=If( Ref(Fml( "TD Count Down Buy C" ),-1) =1,1,0);
HighestSinceBars(1,A =1,A )<HighestSinceBars(1,B=1,C ) AND Fml( "TD Count Down Buy C" ) =1.
TD2:=If(TD1=1 AND Ref(TD1,-1)=1 AND Ref(TD1,-2)=1 AND Ref(TD1,-3)=1 AND Ref(TD1,-4)=1 AND.
Ref(TD1,-5)=1 AND Ref(TD1,-6)=1 AND Ref(TD1,-7)=1 AND Ref(TD1,-8)=1,1,0);
TD4:=If(TD2=1 AND TD3=1,1,0);
D8:=If(Ref(TD4,1)=1 AND TD5=1,1,0);
D9:=If(TD4=1 AND TD5=1 AND Ref(D8,-1)<>1,1,0);
D10:=If(Ref(TD4,-1)=1 AND TD5=1 AND Ref(D8,-2)<>1 AND Ref(D9,-1)<>1,1,0);
D11:=If(Ref(TD4,-2)=1 AND TD5=1 AND Ref(D8,-3)<>1 AND Ref(D9,-2)<>1 AND Ref(D10,-1)<>1,1,0);
D12:=If(Ref(TD4,-3)=1 AND TD5=1 AND Ref(D8,-4)<>1 AND Ref(D9,-3)<>1 AND.
D13:=If(Ref(TD4,-4)=1 AND TD5=1 AND Ref(D8,-5)<>1 AND Ref(D9,-4)<>1 AND.
D14:=If(Ref(TD4,-5)=1 AND TD5=1 AND Ref(D8,-6)<>1 AND Ref(D9,-5)<>1 AND.
D15:=If(Ref(TD4,-6)=1 AND TD5=1 AND Ref(D8,-7)<>1 AND Ref(D9,-6)<>1 AND.
D16:=If(Ref(TD4,-7)=1 AND TD5=1 AND Ref(D8,-8)<>1 AND Ref(D9,-7)<>1 AND.
D17:=If(Ref(TD4,-8)=1 AND TD5=1 AND Ref(D8,-9)<>1 AND Ref(D9,-8)<>1 AND.
TD Count Down Sell A.
Cum(If(C>Ref(C,-2),1,0))-ValueWhen(1,Ref( Fml( "TD - SetUp-Sell" ), 1)=1, Cum(If(C>Ref(C,-2),1,0)))
TD Count Down Sell B.
If(Fml( "TD Count Down Sell A" )>=14 AND C<Ref(C,-4),1,0)
TD Count Down Sell C.
If(Fml( "TD Count Down Sell A" )>=14 AND C<Ref(H,-2),1,0)
Type / Change in Highlights:
Sell Bearish Setup.
Ref( Fml( "TD - SetUp-Sell" ) ,1)=1 OR.
Ref( Fml( "TD - SetUp-Sell" ) ,2)=1 OR.
Ref( Fml( "TD - SetUp-Sell" ) ,3)=1 OR.
Ref( Fml( "TD - SetUp-Sell" ) ,4)=1 OR.
Ref( Fml( "TD - SetUp-Sell" ) ,5)=1 OR.
Ref( Fml( "TD - SetUp-Sell" ) ,6)=1 OR.
Ref( Fml( "TD - SetUp-Sell" ) ,7)=1 OR.
Sell Count Down.
( Fml( "TD Count Down Sell A" ) =13.
AND Ref( Fml( "TD Count Down Sell A" ) ,-1 )<> 13) OR.
( Fml("TD Count Down Sell A" ) =12.
AND Ref( Fml( "TD Count Down Sell A" ) ,-1 )<> 12) OR.
( Fml("TD Count Down Sell A" ) =11.
AND Ref( Fml( "TD Count Down Sell A" ) ,-1 )<> 11) OR.
( Fml("TD Count Down Sell A" ) =10.
AND Ref( Fml( "TD Count Down Sell A" ) ,-1 )<> 10) OR.
( Fml("TD Count Down Sell A" ) =9.
AND Ref( Fml( "TD Count Down Sell A" ) ,-1 )<> 9) OR.
( Fml( "TD Count Down Sell A" ) =8.
AND Ref( Fml( "TD Count Down Sell A" ) ,-1 )<> 8) OR.
( Fml( "TD Count Down Sell A" ) =7.
AND Ref( Fml( "TD Count Down Sell A" ) ,-1 )<> 7) OR.
( Fml( "TD Count Down Sell A" ) =6.
AND Ref( Fml( "TD Count Down Sell A" ) ,-1 )<> 6) OR.
( Fml( "TD Count Down Sell A" ) =5.
AND Ref( Fml( "TD Count Down Sell A" ) ,-1 )<> 5) OR.
( Fml( "TD Count Down Sell A" ) =4.
AND Ref( Fml( "TD Count Down Sell A" ) ,-1 )<> 4) OR.
( Fml( "TD Count Down Sell A" ) =3.
AND Ref( Fml( "TD Count Down Sell A" ) ,-1 )<> 3) OR.
( Fml( "TD Count Down Sell A" ) =2.
AND Ref( Fml( "TD Count Down Sell A" ) ,-1 )<> 2)
( Fml( "TD Count Down Sell A" ) =14.
AND Ref( Fml( "TD Count Down Sell A" ) ,-1 )<> 14)
A:=If( Fml( "TD Count Down Sell A" ) =14.
AND Ref( Fml( "TD Count Down Sell A" ) ,-1 )<> 14,1,0);
B:=If( Ref(Fml( "TD Count Down Sell B" ),-1) =1,1,0);
HighestSinceBars(1,A =1,A )<HighestSinceBars(1,B=1,B ) AND Fml( "TD Count Down Sell B" ) =1.
A:=If( Fml( "TD Count Down Sell A" ) =14.
AND Ref( Fml( "TD Count Down Sell A" ) ,-1 )<> 14,1,0);
B:=If( Ref(Fml( "TD Count Down Sell C" ),-1) =1,1,0);
HighestSinceBars(1,A =1,A )<HighestSinceBars(1,B=1,C ) AND Fml( "TD Count Down Sell C" ) =1.
Fml( "TD Count Down Sell A" ) =2.
AND Ref( Fml( "TD Count Down Sell A" ) ,-1 )<>2.
Fml( "TD Count Down Sell A" ) =3.
AND Ref( Fml( "TD Count Down Sell A" ) ,-1 )<>3.
Fml( "TD Count Down Sell A" ) =4.
AND Ref( Fml( "TD Count Down Sell A" ) ,-1 )<>4.
Fml( "TD Count Down Sell A" ) =5.
AND Ref( Fml( "TD Count Down Sell A" ) ,-1 )<>5.
Fml( "TD Count Down Sell A" ) =6.
AND Ref( Fml( "TD Count Down Sell A" ) ,-1 )<>6.
Fml( "TD Count Down Sell A" ) =7.
AND Ref( Fml( "TD Count Down Sell A" ) ,-1 )<>7.
Fml( "TD Count Down Sell A" ) =8.
AND Ref( Fml( "TD Count Down Sell A" ) ,-1 )<>8.
Fml( "TD Count Down Sell A" ) =9.
AND Ref( Fml( "TD Count Down Sell A" ) ,-1 )<>9.
Fml( "TD Count Down Sell A" ) =10.
AND Ref( Fml( "TD Count Down Sell A" ) ,-1 )<>10.
Fml( "TD Count Down Sell A" ) =11.
AND Ref( Fml( "TD Count Down Sell A" ) ,-1 )<>11.
Fml( "TD Count Down Sell A" ) =12.
AND Ref( Fml( "TD Count Down Sell A" ) ,-1 )<>12.
Fml( "TD Count Down Sell A" ) =13.
AND Ref( Fml( "TD Count Down Sell A" ) ,-1 )<>13.
Fml( "TD Count Down Sell A" ) =14.
AND Ref( Fml( "TD Count Down Sell A" ) ,-1 )<>14.
A:=If( Fml( "TD Count Down Sell A" ) =14.
AND Ref( Fml( "TD Count Down Sell A" ) ,-1 )<> 14,1,0);
B:=If( Ref(Fml( "TD Count Down Sell B" ),-1) =1,1,0);
HighestSinceBars(1,A =1,A )<HighestSinceBars(1,B=1,B ) AND.
Fml( "TD Count Down Sell B" ) =1.
A:=If( Fml( "TD Count Down Sell A" ) =14.
AND Ref( Fml( "TD Count Down Sell A" ) ,-1 )<> 14,1,0);
B:=If( Ref(Fml( "TD Count Down Sell C" ),-1) =1,1,0);
HighestSinceBars(1,A =1,A )<HighestSinceBars(1,B=1,C ) AND Fml( "TD Count Down Sell C" ) =1.
Thomas DeMark's Sequential (tm) System.
For a Sell signal. Nine consecutive daily price closes which are higher than the closes four days earlier.
The day prior to the first day of a nine consecutive set up sequence must:
for a buy signal have a close higher than or equal to the close four days earlier,
for a sell signal have a close lower than or equal to the close four days earlier.
For a sell signal, after successful set up, wait for thirteen closes which are higher than the close two days earlier.
Figure 1 shows the bear market of the U. S.$ Index for much of 1994. It is in daily price candlestick format for easy recognition of closes. The nine consecutive lows of the count down are enumerated (1-9) and the prerequisite day is marked P. The subsequent thirteen lows are enumerated (1-13). Thebuy entries as recommended are designated a, b and c respectively.
Buy signals were on the close a) Oct. 20, 94, b) Oct. 28, 94 and c) Oct.28, 94.
Figure 2 shows the same price chart with Wilder's Parabolic. His SAR buywas given after the close on Nov. 2, 94.
Figure 3 shows the 40 day MA of the U. S.$ Index with 1.5% and 3% channels about the average and the most recent down trend line and its subsequentviolation. The lower, outer channel contained the final decline. Price breakingabove the final down trend line occurred on Nov. 9, 94 and above the 40 dayMA (a moving trend line) on the same day. Which is also the day when thesecondarea of resistance (second interim high after the low) was violated.
Figure 4 shows the 5:80 DCCI of the same price sequence. This gave a buyalert after the close on Oct. 25, 94.
When my MAPC/DCCI system gave a buy alert it was reasonable to expect that only a minor correction was afoot. The buy signal would be confirmed on a close above the down trend line, in this case it would have occurred after the close Nov. 9, 94. Because of Thomas DeMark's book and my review of its Sequential system application over many markets I decided to enter on his b) recommended entry, i. e. on completion of the set up and the subsequent close higher than a close four days earlier, the more conservative entry. In this case entry was after the close of Oct. 28, 94.
Figure 5 shows the bull market of the S. Franc for much of 1994. It is indaily price candlestick format for easy recognition of closes. The nine consecutive highs of the count down are enumerated (1-9) and the prerequisite day ismarked P. The subsequent thirteen highs are enumerated (1-13). The sell entriesas recommended are designated a, b and c respectively.
Buy signals were on the close a) Oct. 17, 94, b) Oct. 25, 94 and c) Oct.21, 94.
Figure 6 shows the same price chart with Wilder's Parabolic. His SAR sell was given after the close on Oct. 28, 94.
Figure 7 shows the 40 day MA of the S. Franc with 2.0% and 4.0% channels about the average and the most recent up trend line and its subsequent violation. The upper, outer channel was marginally violated by the final advance. Price breaking below the final up trend line occurred on Nov. 2, 94 and gappedbelow the 40 day MA (a moving trend line) on Nov. 9, which is also the daywhenthe second area of support (second interim low after the high) was violated.
Figure 8 shows the 5:80 DCCI of the same price sequence. This gave a sell alert after the close on Oct. 25, 94.
Thomas DeMark Sequential System.
Vá para página.
Vá para página.
Membro ativo.
ShowNumbers= ParamToggle("Show 1-8 Numbers","No|Yes", 1);
ShowTDPoints = ParamToggle("Show TD Points", "No|Yes", 1);
ShowTDST = ParamToggle("Show TD Setup Trend", "No|Yes", 1);
return ( H > Ref(H, 1) AND H > Ref(H, -1) AND H > Ref(C, -2));
return ( L < Ref(L, 1) AND L < Ref(L, -1) AND L < Ref(C, -2));
//nine consecutive days closes less than the close four days earlier.
Buy9Signal = Buy9Bars == 9;
//The first day of the nine-day must be preceded by a close day immediately before it that is greater than or equal to the close four days earlier.
Buy9Req = Buy9Signal AND Con;
// the high of either day 8 or day 9 is greater than or equal to the low three, four, five, six, or seven days earlier.
//nine consecutive days closes greater than the Close four days earlier.
Sell9Signal = Sell9Bars == 9;
//The first day of the nine-day must be preceded by a Close day immediately before it that is less than the Close four days earlier.
Sell9Req = Sell9Signal AND Con;
//the low of either day 8 or day 9 is less than or equal to the high three, four, five, six, or seven days earlier.
if(StrToNum(NumToStr(Buy9Intr))) Sell9Intr = False;
if(StrToNum(NumToStr(Sell9Intr))) Buy9Intr = False;
BuySignal = Flip(Buy9Intr, Sell9Intr);
//With respect to a pending Buy Signal, the close must be less than the low two days earlier;
Buy13Count = Sum(Con AND BuySignal, BarsSince(Buy9Intr));
Buy13Signal = Buy13Count == 13;
//with respect to a pending Sell Signal, the Close must be greater than the High two trading days earlier.
Sell13Count = Sum(Con AND NOT BuySignal, BarsSince(Sell9Intr));
Sell13Signal = Sell13Count == 13;
Plot(C, "", IIf(O>=C, colorRed, colorGreen), styleBar);
PlotShapes(IIf(Buy9Intr OR Sell9Intr, shapeDigit9, shapeNone),colorBlue, 0, H, 20);
IIf(Buy9Bars >9, shapeStar, shapeNone))))))))),colorGreen, 0, H, H*.001);
IIf(sell9bars>9, shapeStar, shapeNone))))))))),colorRed, 0, H, H*.001);
Buy = Buy13Signal AND BuySignal;
Vender = ExRem (Vender, Comprar);
Compra = ExRem (Compra, Venda);
PlotShapes(Sell*shapeDownArrow, colorYellow, 0, H, - H*.001);
PlotShapes(Buy*shapeUpArrow, colorBrightGreen, 0, L, - L*.001);
bgColor = ColorRGB(0,66, 2);
bgColor = ColorRGB(66,2, 0);
SetChartBkGradientFill( colorBlack, bgColor);
PlotShapes(TD_Supply()*shapeSmallCircle, colorRed, 0, H, H*.001);
PlotShapes(TD_Demand()*shapeSmallCircle, colorGreen, 0, L, - L*.001);
y0 = StrToNum(NumToStr(ValueWhen(TD_Demand(), L)));
x = LineArray(0, y0, (BarCount-1), y0);
Plot(x, "", colorGold, styleDashed);
y0 = StrToNum(NumToStr(ValueWhen(TD_Supply(), H)));
x = LineArray(0, y0, (BarCount-1), y0);
Plot(x, "", colorGold, styleDashed);
for (i = 0; i < 10; i++) tdstba = Null;
else tdstb = C[i-9];
else tdstba = tdstb;
for (i = 0; i < 10; i++) tdstsa = Null;
if (Sell9Bars == 9)
else tdsts = C[i-9];
else tdstsa = tdsts;
Plot(tdstba, "TDSTb", colorBlue, styleStaircase | styleThick|styleDots);
Plot(tdstsa, "TDSTs", colorRed, styleStaircase | styleThick|styleDots);
"\n"+EncodeColor(colorBlue) +"TDST Buy = " +WriteVal(tdstba, 5.2) +" "+EncodeColor(colorRed) +"TDST Sell = " +WriteVal(tdstsa, 5.2)+
"\n"+EncodeColor(colorGold)+WriteIf(BuySignal, "(Buy Signal Active:"+Buy13Count, "(Sell Signal Active: "+Sell13Count)+")";
Membro bem conhecido.
ShowNumbers= ParamToggle("Show 1-8 Numbers","No|Yes", 1);
ShowTDPoints = ParamToggle("Show TD Points", "No|Yes", 1);
ShowTDST = ParamToggle("Show TD Setup Trend", "No|Yes", 1);
return ( H > Ref(H, 1) AND H > Ref(H, -1) AND H > Ref(C, -2));
return ( L < Ref(L, 1) AND L < Ref(L, -1) AND L < Ref(C, -2));
//nine consecutive days closes less than the close four days earlier.
Buy9Signal = Buy9Bars == 9;
//The first day of the nine-day must be preceded by a close day immediately before it that is greater than or equal to the close four days earlier.
Buy9Req = Buy9Signal AND Con;
// the high of either day 8 or day 9 is greater than or equal to the low three, four, five, six, or seven days earlier.
//nine consecutive days closes greater than the Close four days earlier.
Sell9Signal = Sell9Bars == 9;
//The first day of the nine-day must be preceded by a Close day immediately before it that is less than the Close four days earlier.
Sell9Req = Sell9Signal AND Con;
//the low of either day 8 or day 9 is less than or equal to the high three, four, five, six, or seven days earlier.
if(StrToNum(NumToStr(Buy9Intr))) Sell9Intr = False;
if(StrToNum(NumToStr(Sell9Intr))) Buy9Intr = False;
BuySignal = Flip(Buy9Intr, Sell9Intr);
//With respect to a pending Buy Signal, the close must be less than the low two days earlier;
Buy13Count = Sum(Con AND BuySignal, BarsSince(Buy9Intr));
Buy13Signal = Buy13Count == 13;
//with respect to a pending Sell Signal, the Close must be greater than the High two trading days earlier.
Sell13Count = Sum(Con AND NOT BuySignal, BarsSince(Sell9Intr));
Sell13Signal = Sell13Count == 13;
Plot(C, "", IIf(O>=C, colorRed, colorGreen), styleBar);
PlotShapes(IIf(Buy9Intr OR Sell9Intr, shapeDigit9, shapeNone),colorBlue, 0, H, 20);
IIf(Buy9Bars >9, shapeStar, shapeNone))))))))),colorGreen, 0, H, H*.001);
IIf(sell9bars>9, shapeStar, shapeNone))))))))),colorRed, 0, H, H*.001);
Buy = Buy13Signal AND BuySignal;
Vender = ExRem (Vender, Comprar);
Compra = ExRem (Compra, Venda);
PlotShapes(Sell*shapeDownArrow, colorYellow, 0, H, - H*.001);
PlotShapes(Buy*shapeUpArrow, colorBrightGreen, 0, L, - L*.001);
bgColor = ColorRGB(0,66, 2);
bgColor = ColorRGB(66,2, 0);
SetChartBkGradientFill( colorBlack, bgColor);
PlotShapes(TD_Supply()*shapeSmallCircle, colorRed, 0, H, H*.001);
PlotShapes(TD_Demand()*shapeSmallCircle, colorGreen, 0, L, - L*.001);
y0 = StrToNum(NumToStr(ValueWhen(TD_Demand(), L)));
x = LineArray(0, y0, (BarCount-1), y0);
Plot(x, "", colorGold, styleDashed);
y0 = StrToNum(NumToStr(ValueWhen(TD_Supply(), H)));
x = LineArray(0, y0, (BarCount-1), y0);
Plot(x, "", colorGold, styleDashed);
for (i = 0; i < 10; i++) tdstba = Null;
else tdstb = C[i-9];
else tdstba = tdstb;
for (i = 0; i < 10; i++) tdstsa = Null;
if (Sell9Bars == 9)
else tdsts = C[i-9];
else tdstsa = tdsts;
Plot(tdstba, "TDSTb", colorBlue, styleStaircase | styleThick|styleDots);
Plot(tdstsa, "TDSTs", colorRed, styleStaircase | styleThick|styleDots);
"\n"+EncodeColor(colorBlue) +"TDST Buy = " +WriteVal(tdstba, 5.2) +" "+EncodeColor(colorRed) +"TDST Sell = " +WriteVal(tdstsa, 5.2)+
"\n"+EncodeColor(colorGold)+WriteIf(BuySignal, "(Buy Signal Active:"+Buy13Count, "(Sell Signal Active: "+Sell13Count)+")";
Membro bem conhecido.
Membro ativo.
Membro ativo.
Membro ativo.
2. Requisite filter (Intersection)
4. Entry into the market.
5. Position closing (exit)
Buy or Sold Setup is considered to be formed if within at least 9 consecutive bars, the closing prices are lower (higher) than the closing prices four bars preceding each bar of this sequence. There must be no less than nine bars in the setup.
Intersection is designed to filter-out false setups. To confirm a buy (sell) setup the high (low) of bar 8 or 9 must be higher (lower) or at the same level as the low (high) of bars 3,4,5,6 or 7. If there is no intersection on bar 8 or 9, then the countdown stage is delayed until it happens.
If one of the following closing prices is higher than the highest daily top in the case of the Buy Setup; or less than the lowest daily bottom in the case of the Sell Setup.
The countdown begins once the setup intersection has occurred (but not earlier than bar 9 for this Setup). For the Sell (Buy) Setup the countdown reveals the correlation between the closing price and the high (low) price two bars before. The closing price should be higher (lower) than the high (low) price two bars before. Once thirteen prices have been fixed (not necessarily sequential) the signal appears.
In case of "looping" (if another setup in the same direction is formed).
There are three methods of opening a position:
Following the flip: in order to buy (sell) the closing price should be higher (lower) than the closing price four bars before.
Following two-bars flip: in order to buy (sell) the closing price should be higher (lower) than the closing price two bars before.
The third method is a compromise between the first and the second method.
To determine the Stop Loss levels, Thomas DeMark used a range of the day with the lowest (the highest) price over the whole setup period and the Buy (Sell) signal countdown.
The second method is more "conservative". The bar for the Stop Loss level is chosen in a similar way. For the Buy position however, the Stop Loss level is calculated by subtracting the difference between the close and the low prices from the bar's low. For the Sell position the Stop Loss level is calculated by adding the high price and the difference between the high and the close.
It is very important to define levels at which to fix profit in case of favorable price behavior. There are two ways to close a position with profit:
If a new Setup stage has been finished and the price could not reach the highest/lowest price level registered during nearest inactive setup.
No comments:
Post a Comment