Thursday 20 July 2017

Kagi Charts Forex Indicators


MetaTrader 4 - Indicadores Kagi Charts - indicador para MetaTrader 4 As cartas de Kagi são supostas para aparecer em 70s do 20o século, na primeira fase do desenvolvimento japonês do mercado de valores de acção. Os Kagi Charts representam uma série de linhas verticais interligadas. A espessura ea direção de incremento dessas linhas são determinadas pela dinâmica de preços. Os Kagi Charts não consideram o tempo. Se o preço se mover na mesma direção, a linha vertical no gráfico se torna mais longa. Se o preço virar por um valor pré-definido (coeficiente reverso), uma nova linha vertical em uma nova coluna será desenhada no gráfico. A espessura das linhas Kagi varia quando os preços excedem seus valores máximos / mínimos anteriores. As cartas de Kagi tornaram-se sabidas nos EUA devido ao livro de Steve Nisons nomeado quotBeyond Candlesticksquot. As Cartas Kagi ilustram como as forças da demanda e da oferta atuam. Uma seqüência de linhas grossas fala por que a demanda está acima da oferta (o mercado cresce). Uma seqüência de linhas finas significa que a oferta está acima da demanda (o mercado cai). Intercâmbio de linhas grossas e finas fala por que o mercado é equilibrado (oferta é igual à demanda). O sinal de comércio básico em um gráfico Kagi é a espessura da linha: Se uma linha fina torna-se espessa, você deve comprar, se vice-versa, você deve vender. Uma seqüência de máximos e máximos crescentes fala pelo poder do movimento ascendente, diminuindo os máximos e mínimos falando para o mercado fraco. Porog - coeficiente de reversão em percentuais Download MetaTrader 5 Copyright 2000-2016, MQL5 Ltd. Kagi gráficos Um gráfico Kagi é uma das maneiras como podemos mostrar as cotações de um instrumento financeiro. Por exemplo, qualquer moeda, metal ou segurança. Este gráfico Forex mostra a mudança de preço como uma linha vertical de várias espessuras ligadas com linhas horizontais. Uma linha de gráfico Kagi segue o preço em uma direção até que a tendência muda. Depois que a tendência é quebrada, o preço move-se para a direita e uma nova linha de Kargi é construída na direção oposta, a segunda linha é conectada com a ponte horizontal anterior no ponto de reversão. Como construir gráficos Kagi Enquanto trabalhamos com gráficos Kargi, vamos ver que as mudanças são inseridas cada vez que o preço deixa os limites do preço anterior ou realiza uma certa distância para a direção oposta. Antes de começar a construir um gráfico Kagi, tenha em conta os parâmetros listados abaixo: Um preço ndash alvo o preço que é a base do gráfico. Normalmente, usamos o preço de fechamento do período de tempo (por exemplo, uma hora de encerramento). Às vezes os comerciantes tomam preço alto e baixo. Neste caso alta é melhor usar para o movimento ascendente e baixa é tomada para o movimento descendente. Um parâmetro de Reversão, valor de limiar ndash a distância que o preço deve passar na direção oposta ao valor fixo anterior para fazer a direção da mudança de linha de gráfico Kargi (uma nova linha vertical começou a formar) Mais frequentemente é definido em pontos (se moeda O preço é mais alto, recomenda-se tomar o valor) ou dentro do preço atual (por exemplo, 5) Se o preço se move no sentido da linha vertical precedente de Kagi, então a linha será prolongada. Se o preço se move na direção oposta, neste caso nada é processado até que ele passa a distância limiar. Além disso, a linha Kagi pode mudar sua espessura. Quando uma linha Kagi fina excede o ponto mais alto do valor anterior, a linha fica mais espessa. Se uma linha grossa de Kagi se move para baixo e fica abaixo do ponto inferior anterior, a linha fica mais fina. Interpretação da carta nos termos de Yin e Yang: Yin ndash linha fina Yang ndash linha grossa Cintura ndash conexão de linha de declínio com crescimento Ombro ndash conexão de linha de crescimento com declínio No caso de Yin excede ombro anterior, exceder de Yang ocorre. Se Yang é inferior à cintura anterior, a conversão para Yin ocorre. Qualquer linha vertical pode conter duração incerta. Se o preço mudou dentro de um determinado intervalo, não desceu e não cresceu para o valor limite, então o gráfico permanece inalterado. Você também pode estar interessado em: MetaTrader 5 - Exemplos Indicador para Kagi Charting Introdução O artigo Indicator para Point and Figure Charting descreveu uma das formas de programação de criação de gráfico de ponto e figura. Esta carta é conhecida desde o século XIX. No entanto, este não é o único gráfico do passado remoto. Outro representante notável dos tipos iniciais da representação do mercado financeiro é gráfico Kagi. Este quadro será discutido no presente artigo. A instituição financeira de bolsa desconhecida para o Japão do século 19 foi estabelecida em maio de 1878. É conhecida como Bolsa de Valores de Tóquio hoje em dia. Este evento desempenhou um papel vital na criação e posterior desenvolvimento de gráficos Kagi. A Europa e os EUA passaram a conhecer os gráficos de Kagi após a publicação de Steve Nisons Beyond Candlesticks: Novas técnicas de gráficos japoneses reveladas em 1994. As palavras japonesas Kagi significam uma chave em forma de L que estava em uso no momento do desenvolvimento do gráfico. Além disso, há uma versão modificada do gráfico de chave de nome. Em Steve Nisons Beyond Candlesticks, você também pode encontrar nomes alternativos do gráfico: gráfico de intervalo de preços, gráfico de gancho, delta ou gráfico de cadeia. O que é tão especial sobre este gráfico Sua principal característica é que ele ignora a escala de tempo deixando apenas o preço de um (ao contrário japonês castiçais, barras e linhas). Assim, o gráfico esconde flutuações de preço desprezíveis deixando apenas os mais significativos. O gráfico representa um conjunto de Yang grosso e finas linhas Yin substituindo uns aos outros, dependendo da situação do mercado. No caso de o mercado se mover na mesma direção, a linha é estendida atingindo uma nova faixa de preço. No entanto, se o mercado volta e chega a um valor predefinido, a linha Kagi é desenhada na direção oposta na nova coluna. O valor predefinido é definido em pontos (geralmente usado para pares de moedas) ou em valor percentual do preço atual (normalmente usado para ações). A espessura da linha varia dependendo da descoberta mais alta ou mais baixa. 1. Exemplo de gráficos Permite usar dados do histórico no EURUSD, H1 de 8 a 11 de outubro. Um exemplo de imagem padrão com um limite reverso de 15 pontos é exibido na Fig. 1: Fig. 1. Kagi chart, EURUSD H1 Como podemos ver, o preço começou a cair às 17:00. O movimento descendente continuou até às 21:00. Às 22:00, o preço move-se para cima de 1.3566 e fecha-se em 1.3574. Em outras palavras, o preço passa 11 pontos. Isso não é suficiente para uma reversão, mas o novo Baixo também não foi atingido. Nas próximas duas horas, o preço é plano e finalmente, às 01:00 (9 de outubro), vemos um forte movimento ascendente, que é fechado em 1.3591, com 25 pontos (1.3591-1.3566). Isso significa que o preço reverteu para cima. A tendência de alta continua na hora seguinte. O preço chega a 1.3599 reforçando a linha grossa de Yang. Às 03:00, o preço cai abruptamente fechando em 1.3578, que é de 21 pontos da Alta anterior (1.3599-1.3578). Isso é mais que suficiente para a reversão. A linha se move para baixo, mas mantém a sua forma (linha de Yang grosso). Até 16:00, o preço se move para baixo e, finalmente, quebra através do mínimo mais próximo e muda de Yang grosso para Yin linha fina. O anteriormente mencionado Baixo valor de 1.3566 tinha servido como um avanço preço aqui. O preço continua a se mover como uma linha Yin e é alterado para Yang às 14:00 em 10 de outubro quebrando o mais próximo do Alto de 1.3524 formado às 23:00 (9 de outubro). Este pequeno exemplo mostra como o gráfico Kagi é formado. 2. Princípio de Gráfico do Indicador de Kagi Para tornar o indicador independente do cronograma atual, decidiu-se copiar os dados do período em que o indicador deveria ser formado, separadamente e depois criar o indicador usando os dados obtidos. Isso permite examinar vários cronogramas simultaneamente em um único gráfico expandindo os limites da análise técnica em gráficos Kagi. O indicador em si está localizado em uma janela separada, mas também é possível exibir dados no gráfico principal. Em outras palavras, a formação básica (aspecto padrão ou modificado) é realizada na janela do indicador. O indicador é copiado para o gráfico principal, também marcas de preço e tempo (dependendo das configurações) são desenhadas. Como mencionado anteriormente, o indicador desenha o gráfico tanto na versão padrão quanto na modificada. O padrão foi descrito acima. Agora, vamos considerar a versão modificada. Eu não sei se é uma idéia nova, mas eu não ouvi falar de tal versão. A idéia do filtro adicional é que não só os pontos reversos, mas cada movimento do gráfico é filtrado agora. Em outras palavras, o preço deve mover alguma distância especificada para que o novo Alto ou Baixo (não deve ser confundido com o ombro / cintura) a ser formado. Geralmente, onde quer que o preço se move, deve primeiro cobrir uma distância especificada. Depois disso, é definido se foi uma continuação de tendência ou uma reversão. FIG. 2 mostra como funciona o princípio. O aspecto do gráfico modificado é mostrado em azul, enquanto o padrão em vermelho. Como podemos ver, o olhar modificado responde a mudanças de movimento de preços que filtram mais lentamente a maioria dos sinais menores. FIG. 2. Versões modificadas (linha azul) e padrão (linha vermelha) da criação do gráfico Kagi Além do gráfico Kagi, o indicador fornece alguns elementos adicionais na janela do indicador e no gráfico principal. Dependendo das configurações, as marcas podem ser definidas na janela do indicador. Essas marcas fornecem dados sobre os preços de reversão. A mesma função é implementada usando níveis de preço que, dependendo das configurações, podem distribuir uniformemente ao longo da janela em toda a faixa de preço usada para formar o indicador ou em cada reversão de gráfico. As cores podem ser definidas em três versões: de acordo com o tipo de inversão (para cima), tipo de linha (Yin - Yang) ou sem alteração de cor. Marcas de preço de reversão, incluindo as temporárias, são fornecidas no gráfico principal. Essas marcas (dependendo das configurações) podem ser de uma única cor ou alterar a cor de acordo com as cores de linha Yin ou Yang. Todo o código do indicador é implementado usando as funções de comunicação entre si através de variáveis ​​globais. O código pode ser dividido em três funções principais e onze adicionais. A carga principal de cálculos e preenchimentos de buffer de construções gráficas básicas e matrizes de buffer adicionais repousa sobre a função de formação de gráfico Kagi na janela de indicador. As outras duas funções são responsáveis ​​por fornecer os dados: a primeira copia os dados de tempo, enquanto a outra - dados sobre os preços de cada barra do período de tempo selecionado. As funções auxiliares restantes são responsáveis ​​por realizar todas as construções, eliminar os objectos, descarregar o indicador acompanhado por eliminação de todos os objectos indicadores, cálculo de parâmetros de reversão, marcas de desenho no gráfico principal e janela de indicador, criar objectos gráficos de tipo de linha Tendência, desenho Kagi no gráfico principal, bem como definir a chegada da nova barra para lançar a formação de indicador. 3. Código de Indicador e Algoritmo Agora, vamos examinar o código do indicador eo algoritmo de sua formação em detalhes. O código é bastante grande e pode ser difícil o suficiente para os programadores principiantes entendê-lo. As funções que comunicam entre si através das variáveis ​​globais tornam o código bastante confuso. Nesta parte do artigo, vou explicar cada função e parte do código separadamente. Em primeiro lugar, vou descrever as configurações do indicador e, em seguida, haverá esclarecimentos sobre a cópia de dados funções iniciais, cálculo de parâmetro de reversão, função principal da formação de gráfico Kagi e cálculo e outras funções auxiliares. 3.1. Parâmetros de entrada do indicador O código começa com a declaração do indicador em uma janela separada, bem como de 12 buffers e 8 construções gráficas de indicadores. Primeiro de tudo, vamos definir por que 8 construções gráficas, incluindo dois histogramas e seis linhas. foi usado. Cada histograma constrói sua própria linha vertical. Uma das linhas é responsável pela linha Yin, enquanto a outra é para a linha Yang. O caso é um pouco mais complicado com as linhas, pois há três delas para cada linha. Isto é feito devido ao fato de que a linha é desenhada se houver um outro ponto sendo desenhado perto do primeiro. Em outras palavras, precisamos apenas de duas construções gráficas de tipo linha a serem giradas para desenhar duas linhas adjacentes entre si. No entanto, se precisamos dessas linhas para saltar pontos necessários, precisamos da terceira construção para ser girado com outros dois. Isso é explicado na Figura 3, onde você pode ver o que acontece se apenas duas construções gráficas de tipo linha forem usadas: Fig. 3. Exemplo de uso de duas e três construções gráficas de tipo linha para exibir as linhas de ombro e cintura. Em seguida, é criado o menu de configurações. Existem cinco enumerações aqui (vamos examiná-los nos parâmetros de entrada). O primeiro período de parâmetro de entrada é um período, no qual a construção é executada, é seguido pelo período de atualização da construção de gráfico de período e o último parâmetro de tempo é startdata - a construção de tempo começa de. Estes parâmetros são seguidos por construção de gráficos e outros de rotulagem: tipo de construção de gráfico kagitype definido pelo usuário, padrão ou tipo de pricetype modificado do preço usado para construção: Close, Open, High e Low typedoorstep usado tipo de reversão: ponto e porcentagem valor de reversão de porta (Especificado em pontos ou valor percentual dependendo do parâmetro acima) coloryin Yin cor da linha na janela do indicador coloryang Yang cor da linha na janela indicadora widthyin Yin largura da linha na janela indicadora widthyang Yang largura da linha na janela do indicador levelsonoff se os níveis de preços devem Ser desenhado na janela indicadora nível tipos de níveis de preços na janela indicador. Existem dois valores para escolher: em cada reversão ou uniformemente em toda a faixa de preçonumerosnumber número de níveis de preços na janela de indicador levelschangecolor permite alterar a cor das linhas de nível de preço as opções são reversões superior e inferior, linhas Yin e Yang ou sem alterações Levelsfirstcolor a primeira cor de um nível de preço levelssecondcolor a segunda cor de um nível de preço label1 chart chart de preço de reversão rótulos na janela indicadora label1number número de rótulos exibidos na janela indicadora label1color cor dos rótulos de preços na janela indicadora2 drawing price labels on the Gráfico principal label2color cor da etiqueta no gráfico principal timelinedraw linhas de tempo de reversão de desenho no gráfico principal timeseparatewindows desenho continuação de linhas de tempo de reversão do gráfico principal timelinechangecolor alterar a cor da linha de tempo dependendo do rótulo de reversão na linha Yin ou Yang timefirstcolor o primeiro Cor da linha do tempo na cor do gráfico principal segundo a segunda cor da linha de tempo no kagimainchart gráfico principal se Kagi deve ser desenhado na cor da linha principal de linha de cor de colourinmain na cor principal gráfico coloryangmain Yang linha na linha principal Yin linha Largura na largura da largura chartyangyang linha principal no gráfico principal magicnumb número mágico usado para construir objetos e sua exclusão, bem como no nome do indicador, a fim de lançar vários indicadores em um único gráfico. Estes parâmetros são, por sua vez, seguidos por declarações dos buffers indicadores, buffers auxiliares para armazenar valores de preço e tempo, variáveis ​​auxiliares (stopdata, barscopied, barscopiedtime, copyhistory, copytime), arrays para armazenar dados sobre o que Yin ou Yang O movimento gráfico ocorreu, o tempo eo preço dessa mudança, preço central (se Yin é substituído por Yang na barra ou vice-versa). Finalmente, uma das variáveis ​​globais mais usadas contendo dados sobre o número de mudanças no movimento do gráfico é declarada. 3.2. Função de Inicialização do Indicador A próxima é a função de inicialização do indicador. Indicador buffers e sua indexação (principalmente como série de tempo como Kagi gráfico é menor do que o principal, é melhor desenhá-lo para trás) são especificados lá. Além disso, os valores que não devem ser exibidos na tela são definidos (EMPTYVALUE-1). Agora, atribuímos o nome do indicador ea precisão da exibição. Como mencionado anteriormente, o número mágico é adicionado ao nome. Isso é feito para fornecer o funcionamento correto da função ChartWindowFind (). Caso contrário, o objeto gráfico desenhado na janela do indicador será exibido apenas no primeiro indicador lançado (se forem usados ​​vários indicadores em um único gráfico). Em seguida, atribuímos nomes às linhas de construção, proíbem a exibição dos valores numéricos atuais na janela do indicador, definem a cor e a largura das linhas Yin e Yang, defina o número de níveis de preços exibidos na janela do indicador. 3.3. Função de Cópia de Dados Agora, vamos examinar as funções de cópia de dados. Há dois deles aqui. O primeiro é para copiar os preços, enquanto o segundo é para copiar cada tempo aberto barras. Ambas as funções mantêm seus valores nos buffers de cálculo de indicadores anteriormente declarados. Em primeiro lugar, vamos considerar a função de cópia de preços. Parâmetros de entrada de função: matriz para armazenamento de dados, data de início e término da cópia (tempo atual). O corpo da função contém as variáveis ​​para responder à função, o número de dados (barras) copiados para a matriz intermediária, a própria matriz dinâmica intermediária e o número de barras que devem ser copiadas para a matriz intermediária. O número de barras é calculado com base no número total de barras no período de tempo determinado eo número de barras (variável global) copiado na chamada de função anterior. Se não for a primeira vez que os dados foram copiados, os dados na última barra copiada devem ser atualizados. Para fazer isso, reduzimos o número de barras copiadas por um e aumentamos o número de barras recém-copiadas por uma. Também alteramos o tamanho da matriz intermediária preparando-a para copiar as barras. Dependendo das configurações, copiamos os preços para a matriz intermediária. Se a cópia for bem-sucedida, os dados são copiados da matriz intermediária para o final da matriz de buffer (matriz de resposta de função), atribuir a resposta positiva à função e atualizar a variável global armazenando os dados no número de barras copiadas. Este tipo de cópia permite copiar apenas algumas últimas barras reduzindo o tempo de cópia. A próxima função é aquela para copiar os dados de tempo. É diferente do anterior, uma vez que trata de outro tipo de variável - datetime (que é convertido em duplicado quando copiado para matriz de matriz de buffer de tempo). Outra diferença é que a instrução switch () não é usada, pois não há necessidade de selecionar os dados copiados. 3.4. Função de cálculo de parâmetros de reversão Uma vez que o parâmetro de reversão pode ser um ponto ou uma porcentagem um, precisamos da função que calculará o parâmetro de reversão dependendo das configurações do indicador. A função tem apenas um preço de parâmetro para calcular a porcentagem de reversão. A variável para a resposta é inicializada pelo tipo duplo e após os cálculos, é convertida indiretamente para tipo int para resposta. Isso é feito porque números de ponto flutuante são usados ​​nos cálculos, enquanto a resposta deve ser apresentada como inteiros. A seleção é implementada na função pela instrução condicional if-else. A comparação é realizada diretamente com a variável de entrada externa (parâmetros indicadores). O cálculo de pontos é realizado usando uma equação simples. Primeiro, define-se o número total de pontos que o preço passou. Em seguida, a porcentagem especificada é calculada com base nesse número e atribuída à variável retornada. 3.5. A Função Principal - Desenho Kagi Chart Já examinamos todas as funções que são necessárias para o funcionamento da função principal - desenho Kagi gráfico na janela de indicador (ou seja, o preenchimento do indicador buffers). Os parâmetros de entrada de funções consistem em arrays de dados. Dois deles são os buffers de cálculo descritos acima (previamente copiados Preço e Tempo), todos os outros são os arrays do indicador gráfico buffers de construção. As variáveis ​​necessárias para armazenar os dados na construção do gráfico são declaradas dentro da função. Como o gráfico é construído usando a instrução loop, devemos ter os dados no palco no qual a passagem anterior terminou em. Isto pode ser conseguido através de seis variáveis: linemove - onde o preço se moveu no passe anterior, linegauge - linha calibre (largura da linha) - Yin ou Yang, preço1 e preço2 - preço anterior e atual sendo considerado, preço e preço Um ombro e cintura. Como podemos ver, price1 é imediatamente equiparado ao primeiro elemento da matriz de preços copiados devido ao fato de que essa variável está envolvida nos cálculos antes da comparação desde o início do loop. Como os arranjos de buffer da construção gráfica do indicador têm ASSERIES indexing flag, eles devem ser preenchidos na ordem inversa. Para conseguir isso, matrizes de tempo com o tamanho apropriado são implementadas. Variáveis ​​globais para armazenar os dados sobre o tempo, tipos de linha, ombro e cintura, bem como os preços de reversão são convertidos da mesma maneira. Em seguida, todos os arrays devem ser preenchidos com valores vazios (-1). Isso é feito usando dois pequenos loops. É possível juntar tudo em um único loop. Mas usar dois torna todas as ações executadas muito mais claras, enquanto o tempo de execução não é muito alterado. Em outras palavras, os buffers gráficos e os arrays de tempo de cálculo são preenchidos separadamente. Agora, todas as variáveis ​​são declaradas, convertidas e preenchidas, para que o loop principal possa ser iniciado. É muito grande (embora o cálculo seja executado rápido o suficiente) e inclui a digitalização de todas as barras previamente copiadas. O loop passa por todas as barras copiadas e preenche arrays previamente declarados necessários para trabalhar com eles ainda mais. Primeiro, vamos definir todos os arrays usados ​​no loop: yinint1 - valor primário do preço da linha Yin vertical (se a linha Yin vertical for desenhada eo gráfico se move para baixo, este é o valor superior do preço se o gráfico se mover para cima Tem o caso oposto) yinint2 - valor secundário do preço da linha Yin vertical (se a linha ascendente for desenhada, este é o valor superior se a linha estiver para baixo, temos o caso oposto) yangint1 - valor primário do preço da linha Yang vertical yangint2 - (Valor da inversão na linha de Yin) linyang - horizontal Valor da linha de Yang (preço da inversão na linha de Yang) timechange - tempo da reversão do gráfico (construção de um ombro ou uma cintura ) Linha do tempo - a linha durante a reversão Yin 0 ou Yang 1 timecentralprice - o valor do preço central, o preço no momento em que Yin linha se transforma em Yang ou vice-versa timechangeprice - o valor de inversão (ombro ou cintura) A variável é comum, não dependendo dos tipos de linha Yin ou Yang. O valor do atual preço analisado a partir do buffer de preço é atribuído à variável price2 antes de cada loop passar para comparação adicional em if-else declarações condicionais. Depois disso, a matriz de buffer dos dados copiados é analisada passo a passo e as matrizes mencionadas acima são preenchidas. Cada instrução condicional if-else executa determinadas ações dependendo das condições: direção anterior das linhas de gráfico (para cima ou para baixo) e aparência anterior das linhas (Yin ou Yang). Em seguida, as condições de movimento (se o preço passou um certo número de pontos) são verificadas dependendo do tipo de construção (padrão ou modificado). Se tudo estiver bem, novas variáveis ​​(elementos de matriz) são reatribuídas ou definidas. O tipo de linha (Yin ou Yang) é definido no início. Dependendo do movimento e ações anteriores, a distribuição adicional é realizada. Há dois movimentos de preços possíveis: Há também quatro tipos de ações anteriores em cada direção: A linha anterior era Yin e ele subiu A linha anterior era Yang e moveu para cima A linha anterior era Yin e moveu para baixo A linha precedente era Yang E foi para baixo. Assim, temos oito casos para além das duas primeiras definições do movimento inicial de gráficos (aparência de primeira linha). Depois disso, o loop principal está terminado. A reatribuição (reversão) eo preenchimento dos buffers são executados para construir o gráfico em um loop menor consistindo no número de reversões de gráfico Kagi previamente definidas no loop principal e escritas em uma variável. Quanto à distribuição de valores de preço superior e inferior e linhas verticais, é tudo muito simples: uma simples inversão é realizada. Em outras palavras, os valores primários previamente obtidos (arrays com índices 0,1,2,3) são atribuídos aos valores finais dos buffers (o elemento com índice, ie, -1, -2, -3 é usado como um fim valor). Para evitar que linhas de reversão (horizontais) fiquem juntas, a rotação usando a instrução de comutação é realizada como mencionado acima. Nesse, o trabalho da função principal da construção da carta de Kagi é completo. 3.6. Função para Criação de Objeto Gráfico de Linha de Tendência Agora, vamos examinar a função para criar objeto gráfico de linha de tendência. Esta função é necessária para desenhar Kagi no gráfico principal. A função é muito simples. Ele contém os parâmetros de entrada necessários para a criação do objeto gráfico de linha de tendência: nome do objeto, primeiro e segundo pontos de preço e tempo, bem como largura de linha e cor. O corpo da função contém a função de criação gráfica de objetos e seis funções de alteração das propriedades dos objetos gráficos. 3.7. Desenhando Kagi no gráfico principal A função seguinte que se aplica ao múltiplo anterior várias vezes é a função de construção Kagi no gráfico principal. As variáveis ​​globais preenchidas na função principal da construção do gráfico de Kagi foram usadas como variáveis ​​de entrada: a matriz de preços de reversão (ombros e cinturas), a matriz de mudança e os preços centrais (o preço, em que a linha de Yin se transforma em Yang ou Vice-versa), matriz de tempo de reversão (localizada em tempo real, índice de matriz z-1 é usada para marcar o início de inversão), a matriz do tipo da linha, na qual ocorreu a inversão (é também um elemento em frente, como O intervalo de tempo). O corpo da função consiste em um loop. O loop é dividido em duas partes: traçando linhas verticais e horizontais. O primeiro também é dividido em dois: desenhar os verticais considerando a mudança de linha (mudança preço central) ea ausência de mudança. Observe os parâmetros transferidos da função de criação de objeto de linha de tendência. A nomeação é realizada repetidamente. O nome do objeto começa com um número mágico (necessário para excluir objetos de um determinado indicador), então seu tipo é fixo e, finalmente, o índice é atribuído. O índice é atualizado em cada passagem do loop. 3.8. Implementação de etiquetas adicionais Como já mencionei acima, o indicador implementa rótulos adicionais. Vamos examinar a função fornecendo esses rótulos no gráfico principal. Há apenas dois tipos de rótulo aqui: o preço de reversão e os rótulos de tempo de reversão mostrados através de etiqueta de preço e etiqueta vertical. Os seguintes parâmetros são passados ​​como input: atributo do desenho de rótulo de preço de reversão e cor de rótulos, atributos do desenho de rótulo de tempo de reversão e da mudança de cor de rótulos, a primeira ea segunda cores do tempo de reversão. A função inteira é dividida em duas partes: a primeira parte é responsável por rótulos de tempo, enquanto a segunda por rótulos de preço. Ambas as partes da função consistem em loops limitados pelo número de reversões de gráficos (uma variável). If-else declaração condicional é definida antes do loop. A instrução verifica a necessidade de seu desenho de acordo com as configurações do indicador. O primeiro ciclo cria rótulos de tempo, a definição de nome de objeto é executada no início do ciclo (o princípio de geração de nome foi descrito acima). Em seguida, a cor é selecionada dependendo da linha da matriz de tipo de linha declarada globalmente (se o parâmetro é definido) e outros parâmetros são aplicados à linha. O segundo ciclo é responsável pela criação de rótulos de preço de reversão. Primeiro, o nome do objeto é gerado. Em seguida, a seleção de índice de matriz de tempo é definida dependendo se o Kagi deve ser construído no gráfico principal ou não. Se isso não for feito, os rótulos serão localizados no ar e não será suficientemente claro a partir de que lugar a reversão ocorreu. Em seguida, o objeto tipo de etiqueta de preço é criado e configurado. Agora, vamos ver como podemos definir as etiquetas na janela do indicador. Todos os rótulos na janela do indicador são na maior parte dos preços, e há somente dois tipos deles: etiquetas do preço da reversão e níveis do preço. Existem dois tipos de desenho dos níveis de preços: nas reversões do gráfico e a uma distância igual de toda a faixa de preço do gráfico. O primeiro tipo pode alterar a cor dos níveis de duas maneiras: dependendo do tipo de linha (Yin ou Yang) e de acordo com a inversão (para cima ou para baixo). Assim, a função em si é dividida em dois loops: o primeiro é responsável pela criação de rótulos de preço de reversão, o segundo trata da designação dos níveis de preços. Este último é dividido em dois tipos: rótulo em cada inversão ou rótulos em toda a faixa de preço em um nível igual. Esta função é diferente da anterior, na medida em que tem limitações quanto ao número de rótulos de preços e níveis devido ao fato de que em grande número eles sobrecarregam o gráfico complicando sua compreensão. Devido a esse recurso, ambos os loops são limitados pelo número de passagens especificadas nas configurações do indicador (número de rótulos de preços e níveis). Tal abordagem é perigosa, pois o número de reversões pode ser muito menor do que o número de etiquetas de preço definido nas configurações. Devido a esta razão, a presença de reversão durante cada passagem de loop é verificada para desenhar um rótulo de preço ou nível. A única exceção é desenhar os níveis de preços ao longo de toda a faixa de preço em uma distância igual. A geração de objetos gráficos do tipo de etiqueta de preço é realizada nas coordenadas em ordem inversa, ou seja, os rótulos são colocados da data atual para o passado. O mesmo se aplica aos níveis de preços: os níveis de preços atuais são gerados primeiro seguido pelos anteriores. As exceções são níveis de preços não dependentes das inversões de gráfico. Alterações de cores de nível de preço são executadas usando instruções condicionais if-else de acordo com as configurações. 3.9. Eliminando Objetos Gráficos Criados Anteriormente Já sabemos que este indicador é rico em objetos gráficos. É hora de pensar como podemos excluí-los de forma rápida e eficiente. Esta tarefa é executada pela função para apagar os objetos gráficos. O nome inicial eo número de objetos são usados ​​como parâmetros da função. Como durante a criação, o nome do objeto deve conter o número mágico eo nome de um tipo de objeto. A chamada de função no programa é limitada pelo número de objetos que excedem sua possível existência. No entanto, isso não afeta a funcionalidade de indicadores. 3.10. Agora, depois de examinarmos todas as funções para cálculo e construção do gráfico de Kagi, bem como para criar e excluir objetos, devemos considerar outra pequena função para verificar a chegada de novas barras. The function is quite simple and has one input parameter - analyzed period. The functions answer is also very simple. It has bool type and contains the answer on whether a new bar is present or not. The basis of the function body is switch statement which passes control to its different statements depending on the period. In the example, the function covers the entire period range, though only one period can also be used. The function algorithm has been taken from IsNewBar code: the time of the last bar opening is compared with the previously defined time value. If the values are different, there is a new bar. The new value is assigned as previously defined one and the functions response is considered positive. If the last bar opening time coincides with the previously determined time value, then the new bar has not appeared yet and the functions response is negative. 3.11. OnCalculate() and OnChartEvent() Functions All the functions described above are consolidated in the function bearing the same name Func Consolidation. This function is launched each time a new bar appears in OnCalculate() function and when R key is pressed from OnChartEvent() function. Before the chart is generated or updated, the function for deleting all graphical objects is called in the consolidation function (Func Consolidation). Since there are quite a lot of objects and they are divided into main chart s and indicator windows price labels, vertical lines indicating reversal time, as well as Yin and Yang vertical and horizontal trend lines, the general number of function calls is 7. Then, the history data is copied by price and time. The main function for building Kagi chart is launched afterwards. After that, the function for placing all price labels on the main chart and the indicator window is called. Finally, Kagi is generated on the main chart and the function for redrawing the objects is launched. 3.12. OnDeinit() Function Deletion of all objects is performed in the indicator deinitialization function. Now, lets pass to using the indicator in practice. 4. Using Kagi Chart in Practice There are many trading strategies based on Kagi chart. We will examine some of them. Lets start with the most popular strategy: sell when Yang changes to Yin and buy in the opposite case. This is shown in Fig. 4: Fig. 4. Selling when Yang changes to Yin and buying in the opposite case As can be seen in Fig. 4 (EURUSD M30, 5 points), this strategy shows good results. The figure displays 8 points for 4 signals, the first one (1) shows that the long position should be opened at 1.3518, which seems to be correct as the price then reaches about 1.3560 comprising 42 points per day. This is a good result. The next point (2) recommends selling at 1.3519. As we can see, the price actually moves down crossing the level of 1.3485 (and covering 34 points) approximately for two hours. Lets move to point (3). The long position is opened at 1.3538 and the price moves up reaching 1.3695. Thus, the profit comprises 157 points already for one day and a half. Of course, these are the highest possible profits but the result is still good enough. The next trading strategy is rolling back from the trend line shown in Fig. 5 (EURUSD M30, 5 points), October 7-18: Fig. 5. Rolling back from the trend line We can move further and trade following the channels. An example of searching for a channel can be examined on Fig. 6 (EURUSD H1, 5 points), roughly the same period: Fig. 6. Trading by channels The less popular strategy based on the fact that after 7-10 successively increasing shoulders or decreasing waists, there will certainly be a reversal (fall ot rise). This is displayed in Figure 7 (GBPUSD H4, 25 points), July 10 - October 18: Fig. 7. 7-10 successively increasing shoulders or decreasing waists As can be seen in the image, seven ascending shoulders are followed by quite a considerable fall roughly equal to the half of the previous rise (about 300 points). Lets examine Trading through a price label strategy to show the necessity of using additional indicator parameters. The idea is to enter the market when the price exceeds (buy) or moves below (sell) the previous price label. The strategy is shown in Fig. 8 (GBPUSD H4, 30 points, modified construction): Fig. 8. Trading through a price label Red arrows on Fig. 8 display when to buy or to sell. The arrows are moving from the previous price label displaying the locations the previous price labels were broken through. Time labels serve mainly as trend direction pointers. Since the color of time labels can be changed relative to the line type, and Yin or Yang line type shows trend direction or reversal, the color may help us define the current market mood. For example, lets take IBM stock chart (H4, 1, standard construction) shown in Fig. 9: Fig. 9. Defining trend direction using time labels The chart shows that blue lines are mainly located on the charts tops, while red ones - at the bottoms. Conclusion The Kagi chart can be successfully used for market trading as a strategy basis or as an auxiliary tool for more precise analysis. In this article, I have examined the code itself and some specificities of constructing the indicator. The main objective has been creation of the multi-functional indicator containing all necessary elements with some extra features that can be disabled. I will be glad to consider new ideas and improvements for the indicator and, perhaps, implement them in the future. Also, please provide me with your feedback. I will be happy to answer your questions concerning the indicator. This article continues the series devoted to developing indicators for constructing the charts from the past. The previous article can be found here. The series is to be continued and I hope to meet you again soon. Thank you for your interest I wish you successful trading, as well as optimized and stable codes.

No comments:

Post a Comment