Thursday 5 October 2017

Hsi Indicator Forex That Draws


DRAWARROW O estilo DRAWARROW desenha setas da cor especificada (símbolos do conjunto Wingdings) com base no valor do buffer do indicador. A largura e a cor dos símbolos podem ser especificadas como para o estilo DRAWLINE - usando diretrizes do compilador ou usando dinamicamente a função PlotIndexSetInteger (). Mudanças dinâmicas das propriedades de traçado permitem mudar a aparência de um indicador com base na situação atual. O código de símbolo é definido usando a propriedade PLOTARROW. --- Defina o código de símbolo da fonte Wingdings para desenhar PLOTARROW PlotIndexSetInteger (0, PLOTARROW, código) O valor padrão de PLOTARROW159 (um círculo). Cada seta é realmente um símbolo que tem a altura e o ponto de ancoragem, e pode cobrir algumas informações importantes em um gráfico (por exemplo, o preço de fechamento na barra). Portanto, podemos também especificar a mudança vertical em pixels, que não depende da escala do gráfico. As setas serão deslocadas para baixo pelo número especificado de pixels, embora os valores do indicador permaneçam os mesmos: --- Defina o deslocamento vertical das setas em pixels PlotIndexSetInteger (0, PLOTARROWSHIFT, shift) Um valor negativo de PLOTARROWSHIFT significa o Deslocamento das setas para cima, um valor positivo desloca a flecha para baixo. O estilo DRAWARROW pode ser usado em uma sub-janela separada de um gráfico e na sua janela principal. Os valores vazios não são desenhados e não aparecem no quotData Windowquot, todos os valores nos buffers indicadores devem ser definidos explicitamente. Os buffers não são inicializados com um valor zero. --- Defina um valor vazio PlotIndexSetDouble (indexofplotDRAWARROW, PLOTEMPTYVALUE, 0) O número de buffers necessários para traçar DRAWARROW é 1. Um exemplo do indicador, que desenha setas em cada barra com o preço de fechamento superior ao preço de fechamento do anterior Barra. A cor, a largura, o deslocamento e o código de símbolo de todas as setas são alterados aleatoriamente a cada N carrapatos. No exemplo, para plot1 com o estilo DRAWARROW, as propriedades, a cor e o tamanho são especificados usando a propriedade de diretiva do compilador. E então, na função OnCalculate (), as propriedades são definidas aleatoriamente. O parâmetro N é configurado em parâmetros externos do indicador para a possibilidade de configuração manual (a guia Parâmetros na janela Propriedades do indicador). Descrição da propriedade quotUn indicador para demonstrar a descrição de propriedade DRAWARROWot QuotDraws setas definidas por caracteres Unicode, em uma descrição da descrição da descrição do gráfico. A cor, o tamanho, o deslocamento e o código do símbolo da seta são alterados em uma descrição de propriedade do wayquot aleatório. Após cada descrição de propriedade do N ticksquot, o parâmetro do código Define o valor base: code159 (um círculo) quot property indicatorchartwindow property indicatorbuffers 1 plotters de propriedades 1 --- plot Arrows property indicatorlabel1 quotArrowsquot property indicatortype1 DRAWARROW propriedade indicatorcolor1 clrGreen property indicatorwidth1 1 --- entrada entrada de parâmetros int N 5 Número de carrapatos a mudar Código de entrada ush 159 Código de símbolo para desenhar em DRAWARROW --- Um buffer de indicador para o gráfico duplo ArrowsBuffer --- Uma matriz para armazenar cores cores cores ------------------- ----------------------------------------------- Inicialização personalizada do indicador Função -------------------------------------------- ---------------------- int OnInit () --- mapeamento de buffers indicadores SetIndexBuffer (0, ArrowsBuffer, INDICATORDATA) --- Defina o código de símbolo para desenho PLotARROW PlotIndexSetInteger (0, PLOTARROW, código) --- Defina o deslocamento vertical das setas em pixels PlotIndexSetInteger (0, PLOTARROWSHIFT, 5) --- Defina como um valor vazio 0 PlotIndexSetDouble (0, PLOTEMPTYVALUE, 0) --- return ( INITSUCCEEDED) ------------------------------------------------ ------------------ Função de iteração do indicador personalizado ---------------------------- -------------------------------------- int OnCalculate (const int ratestotal, const int prevcalculated, const Datatime amptime, const double ampopen, const double amphigh, const double amplow, const double ampclose, const long amptickvolume, const long ampvolume, const int ampspread) static int ticks0 --- Calcule marcadores para alterar a cor, o tamanho, o deslocamento eo código de As tiques de seta --- Se um número crítico de tiques tiver sido acumulado se (ticksgt N) --- Alterar th E propriedades de linha ChangeLineAppearance () --- Repor o contador de tiques para zero ticks0 --- Bloquear para calcular valores de indicador int start1 se (prevcalculatedgt0) startprevcalculated-1 --- Ciclo de cálculo para (int i1iltratestotali) --- Se a corrente O preço de fechamento é maior do que o anterior, desenhe uma seta se (closeigtclosei-1) ArrowsBuffericlosei --- Caso contrário, especifique o valor zero além de ArrowsBufferi0 --- valor de retorno de prevcalculated para retorno de chamada seguinte (ratestotal) ------- -------------------------------------------------- --------- Muda a aparência dos símbolos no indicador --------------------------------- --------------------------------- void ChangeLineAppearance () --- Uma string para a formação de informações sobre o indicador Propriedades string comm quotquot --- Um bloco para alterar o tamanho da seta int number MathRand () Obter um número aleatório --- O divisor é igual ao tamanho das cores array tamanho int ArraySize (cores) --- Obter o índice para Selecione um novo Cor como o restante da divisão inteira int colorindexnumbersize --- Defina a cor como a propriedade PLOTLINECOLOR PlotIndexSetInteger (0, PLOTLINECOLOR, colorscolorindex) --- Escreva a cor de linha comcomm quotrnquot (string) colorscolorindex --- Um bloco para alterar as setas de tamanho Número MathRand () --- Obtém a largura do restante da inteira divisão int widthnumber5 O tamanho está definido de 0 a 4 --- Defina a cor como a propriedade PLOTLINEWIDTH PlotIndexSetInteger (0, PLOTLINEWIDTH, width) --- Escreva a seta Comando de tamanho com Núcleo InteiroToString (largura) --- Um bloco para alterar o número do código de seta (PLOTARROW) MathRand () --- Obter o restante da divisão inteira para calcular um novo código da seta (de 0 a 19) int codeaddnnumber20 - - Defina o novo código de símbolo como resultado do codecodeadd PlotIndexSetInteger (0, PLOTARROW. Código códigoadd) --- Escreva o código de símbolo PLOTARROW com quotrnquot quotPLOTARROWquot IntegerToString (code codeadd) comm --- Um bloco para alterar o deslocamento vertical das setas em pixels número MathRand () --- Obter o turno como o restante do inteiro Divisão int shift20-number41 --- Defina a nova mudança de -20 para 20 PlotIndexSetInteger (0, PLOTARROWSHIFT, shift) --- Escreva a mudança PLOTARROWSHIFT com quotrnquot quotPLOTARROWSHIFTquot IntegerToString (shift) comm --- Mostra as informações no gráfico usando Um comentário Comentário (com) Estilos de indicadores em exemplos O terminal do cliente MetaTrader 5 inclui 38 indicadores técnicos que podem ser usados ​​em programas MQL5 usando funções apropriadas. Mas a principal vantagem do idioma MQL5 é a capacidade de criar indicadores personalizados, que podem então ser usados ​​em Expert Advisors ou simplesmente aplicados em gráficos de preços com o objetivo de análise técnica. Todo o conjunto de indicadores pode ser derivado de vários estilos de desenho base. Conhecido como plotar. Plotting indica uma maneira de exibir dados, que o indicador calcula, armazena e fornece a pedido. Existem sete desses tipos básicos de traçado: uma linha A seção (segmento) Seta de histograma (símbolo) Uma área pintada (canal preenchido) Barras de candelabros japoneses Cada traçado requer uma a cinco matrizes do tipo duplo, em que os valores dos indicadores são armazenados. Para fins de conveniência, essas matrizes estão associadas aos buffers de indicadores. O número de buffers em um indicador deve ser declarado antecipadamente usando as diretrizes do compilador. Por exemplo: indicadores de propriedades 3 Número de indicadores de propriedade de buffers 2 número de lotes O número de buffers no indicador é sempre maior ou igual ao número de gráficos no indicador. Uma vez que cada tipo de traçado básico pode ter variações de cores ou especificações de construção, o número real de tipos de plotagem no MQL5 é 18: a diferença entre um buffer de indicadores e uma matriz em cada indicador, em seu nível global. Você deve declarar uma ou mais matrizes do tipo duplo, que devem ser usadas como um buffer de indicadores usando a função SetIndexBuffer (). Para desenhar gráficos de indicadores, apenas os valores 82038203 dos buffers de indicadores são usados, qualquer outro arrays não pode ser usado para este propósito. Além disso, os valores do buffer são exibidos na janela de dados. Um buffer de indicador deve ser dinâmico e não requer especificação do tamanho 151 do tamanho da matriz usada, pois o buffer do indicador é definido automaticamente pelo subsistema de execução do terminal. Depois que a matriz é vinculada ao buffer do indicador, a direção de indexação é definida como padrão, como em matrizes comuns, mas você pode usar a função ArraySetAsSeries () para alterar o modo de acesso aos elementos da matriz. Por padrão, o buffer de indicadores é usado para armazenar dados usados ​​para plotar (INDICATORDATA). Se o cálculo dos valores dos indicadores requer a realização de cálculos intermediários e o armazenamento de valores adicionais para cada barra, essa matriz pode ser declarada como um buffer de cálculo durante a ligação (INDICATORCALCULATIONS). Para os valores intermediários, você também pode usar uma matriz normal, mas neste caso, o programador deve gerenciar o tamanho da matriz. Algumas parcelas permitem definir uma cor para cada barra. Para armazenar as informações sobre cores, os buffers de cor são usados ​​(INDICATORCOLORINDEX). A cor é uma cor de tipo inteiro. Mas todos os buffers de indicadores devem ser de tipo duplo. Valores de cor e auxiliares (INDICATORCALULULAÇÕES) não podem ser obtidos usando CopyBuffer (). O número de buffers de indicadores deve ser especificado usando a propriedade da diretiva do compilador. Indicadores de número de registros: indicadores de propriedades 3 o indicador possui 3 buffers. O número máximo permitido de buffers em um indicador é 512. Relevância do Indicador Buffers e Plotting Cada traçado é baseado em um ou mais Buffers de indicadores. Então, para exibir castiçais simples, são necessários quatro valores: preços abertos, altos, baixos e fechados. Conseqüentemente, para exibir um indicador na forma de castiçais, é necessário declarar 4 buffers de indicadores e 4 matrizes de tipo duplo para eles. Por exemplo: --- O indicador possui quatro indicadores de propriedades de indicadores de propriedades 4 --- O indicador tem um gráfico de propriedades de traçado 1 --- O número de traçado grafico 1 aparecerá como propriedade de castiçal indicatortype1 DRAWCANDLES --- Candlestick será desenhado na propriedade clrDodgerBlue Indicatorcolor1 clrDodgerBlue --- 4 matrizes para os buffers de indicadores duplo Obtufer duplo HBuffer duplo LBuffer double CBuffer Gráficos gráficos usam automaticamente buffers de indicadores de acordo com o número do gráfico. A numeração de parcelas começa com 1, a numeração de buffers começa com zero. Se o primeiro planejamento requer 4 buffers de indicadores, os 4 primeiros buffers de indicadores serão usados ​​para desenhá-lo. Esses quatro buffers devem ser vinculados com os arrays apropriados com indexação correta usando a função SetIndexBuffer (). --- Armazenamentos de ligação com buffers de indicadores SetIndexBuffer (0, OBuffer, INDICATORDATA) O primeiro buffer corresponde ao índice zero SetIndexBuffer (1, HBuffer, INDICATORDATA) O segundo buffer corresponde ao índice 1 SetIndexBuffer (2, LBuffer, INDICATORDATA) O terceiro buffer Corresponde ao índice 2 SetIndexBuffer (3, CBuffer, INDICATORDATA) O quarto buffer corresponde ao índice 3 Os castiçais de traçado, o indicador usará apenas os quatro primeiros buffers, porque o gráfico de quotcandlesticksquot foi anunciado sob o primeiro número. Mude o exemplo e adicione o enredo de uma linha simples - DRAWLINE. Agora suponha que a linha seja numerada 1 e os candelabros são o número 2. O número de buffers e o número de gráficos aumentaram. --- O indicador possui 5 indicadores de indicadores de propriedades de indicador buffers 5 --- O indicador possui 2 gráficos de propriedades de gráficos 2 --- O gráfico 1 é uma propriedade de linha indicatortype1 DRAWLINE --- A cor da linha é clrDodgerRed property indicatorcolor1 clrDodgerRed --- O traçado 2 é desenhado como propriedade japonesa de castiçal indicatortype2 DRAWCANDLES --- A cor dos castiçais é clrDodgerBlue property indicatorcolor2 clrDodgerBlue --- 5 matrizes para buffers indicadores duplo LineBuffer duplo Obtufer duplo HBuffer duplo LBuffer duplo CBuffer A ordem das parcelas mudou e Agora a linha vem primeiro, seguida de castiçais japoneses. Portanto, a ordem dos buffers é adequada - primeiro anunciamos um buffer para a linha com o índice zero e, em seguida, quatro buffers para os candelabros. SetIndexBuffer (0, LineBuffer, INDICATORDATA) O primeiro buffer corresponde ao índice 0 --- Arrays de encadernação com buffers de indicadores para candelabros SetIndexBuffer (1, OBuffer, INDICATORDATA) O segundo buffer corresponde ao índice 1 SetIndexBuffer (2, HBuffer, INDICATORDATA) O O terceiro buffer corresponde ao índice 2 SetIndexBuffer (3, LBuffer, INDICATORDATA) O quarto buffer corresponde ao índice 3 SetIndexBuffer (4, CBuffer, INDICATORDATA) O quinto buffer corresponde ao índice 4 O número de buffers e gráficos pode ser definido apenas usando as diretivas do compilador , É impossível alterar estas propriedades dinamicamente usando funções. Versões de cores de estilos Como pode ser visto na tabela, os estilos são divididos em dois grupos. O primeiro grupo inclui estilos em cujo nome não há nenhuma palavra COR. Chamamos esses estilos básicos. DRAWLINE DRAWSECTION DRAWHISTOGRAMA DRAWHISTOGRAM2 DRAWARROW DRAWZIGZAG DRAWFILLING DRAWBARS DRAWBARLES No segundo grupo, os nomes dos estilos contêm a palavra COR. Let39s chamá-los de versões de cores: DRAWCOLORLINE DRAWCOLORSECTION DRAWCOLORHISTOGRAMA DRAWCOLORHISTOGRAM2 DRAWCOLORARROW DRAWCOLORZIGZAG DRAWCOLORBARS DRAWCOLORCANDLES Todas as versões de cores de estilos diferem das básicas, pois permitem especificar uma cor para cada parte do enredo. A parte mínima de traçar é uma barra, então podemos dizer que as versões de cores permitem definir a cor em cada barra. As exceções são estilos DRAWNONE e DRAWFILLING. Eles não têm versões de cores. Para definir a cor de traçado em cada barra, um buffer adicional para armazenar o índice de cores foi adicionado à versão em cores. Esses índices indicam o número de uma cor em uma disposição especial, que contém um conjunto predefinido de cores. O tamanho da matriz de cores é 64. Isso significa que cada versão em cores de um estilo permite pintar um gráfico em 64 cores diferentes. O conjunto e o número de cores na série especial de cores podem ser configurados através de um indicador de propriedades de diretiva do compilador, onde você pode especificar todas as cores necessárias separadas por vírgulas. Por exemplo, tal entrada em um indicador: --- Defina 8 cores para colorir castiçais (eles são armazenados na matriz especial) propriedade indicatorcolor1 clrRed, clrBlue, clrGreen, clrellowellow, clrMagenta, clrCyan, clrLime, clrOrange Ele afirma que para plotar 1, 8 cores são definidas, que serão colocadas em uma disposição especial. Além disso, no programa, não especificamos a cor do traçado, mas apenas o índice. Se quisermos definir cor vermelha para o número da barra K. o valor do índice de cores de uma matriz deve ser configurado no buffer de cor do indicador. A cor vermelha é especificada primeiro na diretiva, corresponde ao número de índice 0. --- configure a cor do candelabro clrRed colbufferbufferindex0 O conjunto de cores não é fornecido de uma vez por todas, ele pode ser alterado dinamicamente usando PlotIndexSetInteger (). Exemplo: --- Defina a cor para cada índice como a propriedade PLOTLINECOLOR PlotIndexSetInteger (0, O número de um estilo gráfico PLOTLINECOLOR. Identificador de propriedade plotcolorind, O índice da cor, onde escrevemos a cor colorarrayi) Uma nova cor Propriedades do Indicador e traçado Para gráficos de indicadores, as propriedades podem ser definidas por meio de diretrizes do compilador e usando as funções apropriadas. Leia mais informações sobre isso em Conexão entre Propriedades e Funções do Indicador. A mudança dinâmica das propriedades dos indicadores usando funções especiais permite a criação de indicadores personalizados mais flexíveis. Início do Desenho do Indicador no Gráfico Em muitos casos, de acordo com as condições do algoritmo, é impossível começar a calcular os valores do indicador imediatamente com a barra atual, uma vez que é necessário fornecer um número mínimo de barras anteriores disponíveis no histórico. Por exemplo, muitos tipos de alisamento implicam a utilização de uma série de preços nas barras N anteriores, e com base nesses valores, o valor do indicador na barra atual é calculado. Nesses casos, não há como calcular os valores dos indicadores para as primeiras N barras, ou esses valores não se destinam a ser exibidos no gráfico e são apenas subsidiários para calcular outros valores. Para evitar o enredo do indicador nas primeiras N barras do histórico, defina o valor N na propriedade PLOTDRAWBEGIN para o gráfico correspondente: --- Arrays de encadernação com buffers de indicadores para candelabros PlotIndexSetInteger (numberofplot, PLOTDRAWBEGIN, N) numberofplot 151 a Valor de zero para classificadores-1 (a numeração de parcelas começa com zero). N - o número de primeiras barras no histórico, no qual o indicador não deve ser exibido no gráfico.

No comments:

Post a Comment