Wednesday 16 August 2017

Indicador Personalizado Médio Móvel


A estratégia de média móvel de 20 pips é utilizada com os gráficos de negociação de 1 hora e 15 minutos. Nos cronogramas desse gráfico, usamos o indicador de média móvel de 100 e 200 simples. Tanto os cronogramas de gráficos de 1 hora e 15 minutos usarão os indicadores de SMA 100 e 200 (SMA Indicator) para determinar a direção da tendência Forex. O cronograma da tabela de 1 hora verifica a direção de longo prazo da tendência Forex, tendência ascendente ou descendente, dependendo da direção das médias móveis. Todos os negócios realizados devem estar nessa direção. Em seguida, usamos o gráfico de preços de 15 minutos para encontrar o ponto ideal para entrar em negociações. As negociações são abertas somente quando o preço estiver dentro do alcance de 20 pips dos 200 MA simples, se o preço não estiver dentro desse intervalo de pip, as negociações não estão abertas. Comprar sinal - Forex UptrendBullish Market Para gerar compra de Forex (sinais de alta) usando a estratégia de negociação Forex em média móvel de 20 pips, usaremos o cronograma de 1 hora e 15 minutos. No horário do gráfico Forex de 1 hora, o preço do par de moedas deve estar acima da média móvel 100 e 200 simples. Em seguida, movemos para um quadro de tempo inferior do gráfico, o cronograma do gráfico de 15 minutos para gerar um sinal comercial. No prazo de 15 minutos do gráfico, quando o preço atinge a faixa de 20 pips acima dos 200 SMA, abrimos um comércio de compras e colocamos uma perda de parada 30 pips abaixo dos 200 SMA. A perda de parada pode ser ajustada para a quantidade de Pips que são adequados para o seu risco, mas para evitar ser impedida pela volatilidade normal do Forex é melhor usar 30 pips parar a perda. Um comércio de compra também pode ser aberto quando o preço toca na média móvel de 100 simples, desde que não esteja muito longe dos 200 SMA. Normalmente, os 100 SMA estarão dentro da faixa de 20 pips dos 200 SMA. Sell ​​Signal Forex DowntrendBearish Market Para gerar Forex vender (sinais curtos) usando a estratégia de negociação Forex em média móvel de 20 pips, também usaremos o cronograma do gráfico de 1 hora e 15 minutos. No horário do gráfico de 1 hora, o preço deve estar abaixo da média móvel de 100 e 200. Em seguida, movemos para o intervalo de tempo do gráfico de 15 minutos para gerar um sinal de negociação. No gráfico de 15 minutos, quando o preço atinge o alcance de 20 pips abaixo dos 200 SMA, abrimos um comércio de venda e colocamos uma perda de parada de 30 pips acima da média móvel de 200 simples. Com este método, o preço geralmente irá saltar desses níveis porque muitos comerciantes observam esses níveis e abrem negócios similares ao redor do mesmo ponto. Esses níveis atuam como resistência de curto prazo ou níveis de suporte dentro dos gráficos de preços de moeda. Nível de tomada de lucro para esta estratégia de negociação Com esta estratégia de negociação, o preço irá saltar e fazer um movimento na direção da tendência de Forex original. Este movimento variará de 70 a 100 pips. O melhor nível de aproveitamento de lucro seria, portanto, considerado 80 pips a partir da média móvel 200 simples. Breakout do USDCHF impedido pela média móvel de 200 dias (adaptado do artigo dailyfx) A ruptura do USDCHF atingiu a média móvel de 200 dias. Os potenciais compradores poderiam entrar em uma parada confirmada acima do MA de 200 dias. A média móvel de 200 dias A média móvel de 200 dias é um dos indicadores mais populares do mundo. Quando o preço ultrapassa um 200 MA em um gráfico diário, muitas vezes pode ser visto como um tópico de conversa sobre estações de notícias, sites e jornais financeiros. É usado principalmente para dar aos comerciantes e investidores uma sensação geral de quão forte ou fraco é um par de moedas. Normalmente, quando um preço de pares de moeda cai abaixo do MA de 200 dias, é um sinal de fraqueza com potencial para uma nova queda de preços. E quando um preço de pares de moeda quebra acima do MA de 200 dias, é um sinal de força com potencial para novos aumentos de preços. O gráfico acima mostra a recente ação de preço em torno do MM de 200 dias. Vemos uma grande corrida no preço que ultrapassa os múltiplos níveis de resistência até encontrar essa poderosa linha MA. Tivemos 6 dias consecutivos, onde o preço temporariamente passou pelo 200 Day MA ou o preço chegou a 10 pips da linha antes de recuar em menor. Então, esse nível atua como forte resistência. Se o preço permanecesse abaixo do MA, poderia impulsioná-lo de volta ao canal de preços de pares. No entanto, uma fuga para o lado positivo poderia adicionar mais um outro motivo para comprar o USDCHF. Até que testemunhemos um movimento de preço maior, estamos em um estado de limbo. Média Mínima O Indicador Técnico Médico Mover mostra o valor médio do preço do instrumento por um determinado período de tempo. Quando se calcula a média móvel, uma média do preço do instrumento para este período de tempo. À medida que o preço muda, sua média móvel aumenta ou diminui. Existem quatro tipos diferentes de médias móveis: Simples (também conhecido como Aritmética), Exponencial. Alisado e ponderado. A média móvel pode ser calculada para qualquer conjunto de dados seqüenciais, incluindo preços de abertura e fechamento, preços mais altos e mais baixos, volume de negócios ou outros indicadores. Muitas vezes, é o caso quando se usam médias móveis duplas. A única coisa em que as médias móveis de diferentes tipos divergem consideravelmente umas das outras, é quando os coeficientes de peso, que são atribuídos aos dados mais recentes, são diferentes. Caso falamos da média móvel simples. Todos os preços do período de tempo em questão são de valor igual. A média móvel exponencial e a média móvel ponderada linear atribuem mais valor aos preços mais recentes. A maneira mais comum de interpretar a média móvel do preço é comparar sua dinâmica com a ação do preço. Quando o preço do instrumento sobe acima de sua média móvel, aparece um sinal de compra, se o preço cai abaixo da média móvel, o que temos é um sinal de venda. Este sistema de negociação, baseado na média móvel, não foi projetado para fornecer entrada no mercado diretamente no seu ponto mais baixo, e sua saída diretamente no pico. Permite atuar de acordo com a seguinte tendência: comprar logo depois que os preços chegam ao fundo e vender logo depois que os preços atingiram seu pico. As médias móveis também podem ser aplicadas aos indicadores. É aí que a interpretação das médias móveis dos indicadores é semelhante à interpretação das médias móveis de preços: se o indicador sobe acima de sua média móvel, isso significa que o movimento do indicador ascendente provavelmente continuará: se o indicador cai abaixo da média móvel, isso Significa que é provável que continue indo para baixo. Aqui estão os tipos de médias móveis no gráfico: Média de Movimento Simples (SMA) Média de Movimento Exponencial (EMA) Média de Movimento Suavizada (SMMA) Média de Movimento Ponderada Linear (LWMA) Você pode testar os sinais comerciais deste indicador, criando um Consultor Especialista No MQL5 Wizard. Cálculo da média móvel simples (SMA) Simples, ou seja, a média móvel aritmetica é calculada resumindo os preços do encerramento do instrumento durante um certo número de períodos únicos (por exemplo, 12 horas). Esse valor é então dividido pelo número desses períodos. SMA SUM (FECHAR (i), N) N SUM SOM FECHAR (i) período atual fechar preço N número de períodos de cálculo. Média de Mudança Exponencial (EMA) A média móvel suavizada exponencialmente é calculada pela adição de uma certa parcela do preço de fechamento atual ao valor anterior da média móvel. Com médias movidas exponencialmente suavizadas, os preços de fechamento mais recentes são de maior valor. A média móvel exponencial de porcentagem de P será semelhante a: EMA (CLOSE (i) P) (EMA (i - 1) (1 - P)) FECHAR (i) preço de fechamento atual EMA (i - 1) valor da Média Móvel De um período anterior P a porcentagem de uso do valor do preço. Média Mínima Suavizada (SMMA) O primeiro valor desta média móvel suavizada é calculado como a média móvel simples (SMA): SUM1 SUM (CLOSE (i), N) A segunda média móvel é calculada de acordo com esta fórmula: SMMA (i) (SMMA1 (N-1) FECHAR (i)) N As médias móveis de sucesso são calculadas de acordo com a fórmula abaixo: PREVSUM SMMA (i-1) N SMMA (i) (PREVSUM - SMMA (i-1) FECHAR (i)) N SUM SUM SUM1 soma total de preços de fechamento para N períodos é contado a partir da barra anterior PREVSUM suma alisada da barra anterior média SMMA (i-1) média movida da barra anterior SMMA (i) média lisa suavizada da barra atual (Exceto para o primeiro) FECHAR (i) preço de fechamento atual N período de suavização. Após as conversões aritméticas, a fórmula pode ser simplificada: SMMA (i) (SMMA (i - 1) (N - 1) FECHAR (i)) N Média linear móvel ponderada (LWMA) No caso da média móvel ponderada, os dados mais recentes são De mais valor do que mais dados iniciais. A média móvel ponderada é calculada multiplicando cada um dos preços de fechamento dentro da série considerada, por um certo coeficiente de peso: LWMA SUM (CLOSE (i) i, N) SUM (i, N) SUM SUM CLOSE (i) preço de fechamento atual SUM (i, N) soma total dos coeficientes de peso N período de suavização. Creação de indicadores personalizados Ao criar uma estratégia de negociação, um desenvolvedor muitas vezes enfrenta a necessidade de desenhar graficamente em uma janela de segurança uma certa dependência calculada por um usuário (programador). Para o efeito, o MQL4 oferece a possibilidade de criar indicadores personalizados. O Indicador personalizado é um programa de aplicativo codificado no MQL4, que é basicamente destinado a exibição gráfica de dependências calculadas preliminarmente. Necessidade da estrutura do indicador personalizado dos buffers O principal princípio subjacente aos indicadores personalizados é passar os valores das matrizes de indicadores para um terminal de cliente (para linhas de indicadores de desenho) através de buffers de troca. O buffer é uma área de memória contendo valores numéricos de uma matriz de indicadores. O padrão MQL4 implica a possibilidade de elaborar até oito linhas de indicadores usando um indicador personalizado. Uma matriz de indicadores e um buffer são trazidos para correspondência com cada linha de indicador. Cada buffer possui seu próprio índice. O índice do primeiro buffer é 0, do segundo - 1, e assim por diante, o último possui o índice 7. Fig. 115 mostra como as informações de um indicador personalizado são passadas através de buffers para um terminal de cliente para desenhar linhas de indicadores. FIG. 115. Passando valores das matrizes de indicadores através de um buffer para um terminal de cliente. A ordem geral das linhas de indicadores de construção é a seguinte: 1. Os cálculos são realizados em um indicador personalizado, pois os valores numéricos são atribuídos aos elementos da matriz de indicadores. 2. Os valores dos elementos da matriz do indicador são enviados para um terminal do cliente por meio de buffers. 3. Nas bases de matrizes de valores recebidas de buffers, um terminal de cliente exibe linhas de indicadores. Componentes de um indicador personalizado Permite analisar um indicador personalizado simples que mostra duas linhas - uma linha é construída com base nos preços máximos da barra, a segunda usa preços mínimos. Exemplo de um indicador personalizado simples userindicator. mq4 Vamos analisar em detalhes as peças do indicador. Em qualquer programa de aplicação escrito no MQL4, você pode indicar parâmetros de configuração que fornecem a manutenção correta do programa por um terminal de cliente. Neste exemplo, a parte do programa principal (veja Estrutura do programa) contém várias linhas com propriedade de diretrizes. A primeira diretiva indica em qual janela o terminal do cliente deve desenhar as linhas de indicadores: no MQL4 existem duas variantes de linhas de indicadores de desenho: na janela de segurança principal e em uma janela separada. A janela principal é a janela que contém um gráfico de segurança. Neste exemplo, o parâmetro indicatorchartwindow no diretório de propriedades indica que um terminal de cliente deve desenhar linhas de indicador na janela principal. A próxima linha mostra o número de buffers usados ​​no indicador: no exemplo analisado são desenhadas duas linhas de indicadores. Um buffer é atribuído a cada buffer, de modo que o número total de buffers é dois. As próximas linhas descrevem as cores das linhas indicadoras. Os parâmetros indicatorcolor1 e indicatorcolor2 definem a configuração de cor para buffers correspondentes - neste caso para buffers com índices 0 (Azul) e 1 (Vermelho). Observe que as figuras em nomes de parâmetro indicatorcolor1 e indicatorcolor2 não são índices de buffer. Essas figuras são partes de nomes constantes que são configurados de acordo com os buffers. Para cada cor constante pode ser configurada a critério de um usuário. Na próxima linha, os arrays de indicadores são declarados: o indicador destina-se a desenhar duas linhas de indicadores, por isso precisamos declarar dois arrays globais de uma dimensão, um para cada linha. Os nomes das matrizes de indicadores são até usuários. Neste caso, os nomes das matrizes Buf0 e Buf1 são usados, em outros casos, outros nomes podem ser usados, por exemplo, Line1, Alfa, Integral etc. É necessário declarar arrays em um nível global, porque os valores dos elementos da matriz devem ser preservados entre as chamadas Do início da função especial (). O indicador personalizado descrito é construído com base em duas funções especiais - init () e start (). A função init () contém a parte do código usado no programa apenas uma vez (consulte Funções especiais). Uma ação muito importante é realizada na linha: usando a função SetIndexBuffer (), um buffer necessário (neste caso com o índice 0) é colocado em correspondência com uma matriz (neste caso Buf0). Significa para a construção da primeira linha de indicação, um terminal cliente aceitará os dados contidos na matriz Buf0 usando o buffer zero para isso. Além disso, o estilo de linha é definido: Para o buffer de zero (0), um terminal de cliente deve usar os seguintes estilos de desenho: linha simples (DRAWLINE), linha contínua (STYLESOLID), largura da linha 2. As próximas duas linhas contêm configurações para a segunda linha : Assim, de acordo com o código da função especial init () ambas as linhas do indicador serão desenhadas na janela de segurança principal. O primeiro será uma linha azul sólida com a largura 2, a segunda é uma linha pontilhada vermelha (STYLEDOT) de uma largura usual. As linhas de indicadores podem ser desenhadas por outros estilos também (veja Estilos de linhas de indicadores). Cálculo de valores dos elementos de matrizes de indicadores (Seja atento) Os valores dos arrays dos indicadores são calculados no início da função especial (). Para entender corretamente o conteúdo do código start (), preste atenção à ordem das barras de indexação. A seção Arrays descreve em detalhes o método de indexação de arrays-timeseries. De acordo com este método, a indexação da barra começa a partir de zero. A barra zero é uma barra atual ainda não formada. O índice de barras mais próximo é 1. Os próximos são 2 e assim por diante. À medida que novas barras aparecem em uma janela de segurança, os índices das barras já formadas (histórico) são alterados. A barra nova (atual, apenas formada, mais à direita) obtém o índice zero, o que está à esquerda dele (que acabou de se formar completamente) obtém o índice 1 e os valores dos índices de todas as barras de histórico também são aumentados em um. O método descrito de barras de indexação é o único possível para todo o sistema de negociação on-line MetaTrader, e é levado em consideração ao desenhar linhas usando indicadores técnicos e personalizados. Foi dito anteriormente que as linhas de indicadores são construídas com base em informações numéricas contidas nas matrizes de indicadores. Uma matriz de indicadores contém informações sobre coordenadas de pontos em que uma linha de indicadores é desenhada. E a coordenada Y de cada ponto é o valor de um elemento de matriz de indicadores. E a coordenada X é o valor de um índice de elemento de matriz de indicadores. No exemplo analisado, a primeira linha do indicador é desenhada usando valores máximos de barras. Fig. 116 mostra esta linha de indicador (de cor azul) em uma janela de segurança, é construída com base na matriz de indicadores Buf0. FIG. 116. Correspondência de coordenadas de uma linha de indicadores para valores de uma matriz de indicadores. O valor do índice de uma matriz de indicadores está fora por um terminal de cliente em correspondência com um índice de barras - esses valores de índice são iguais. Também deve ser levado em consideração que o processo de construção de linhas de indicadores continua no modo em tempo real em condições quando, em uma janela de segurança, novas barras aparecem de tempos em tempos. E todas as barras de histórico são deslocadas para a esquerda. Para que a linha indicadora seja desenhada corretamente (cada ponto de linha acima da barra), ela também deve ser deslocada junto com barras. Portanto, há necessidade (necessidade técnica) para re-indexar uma matriz de indicadores. A diferença fundamental de uma matriz de indicadores de uma matriz usual é a seguinte: no momento em que uma nova barra é criada, os valores de índice de elementos da matriz de indicadores são alterados automaticamente pelo terminal do cliente, ou seja, o valor de cada índice de matriz de indicadores é aumentado por Um e o tamanho da matriz do indicador são aumentados por um elemento (com um índice zero). Por exemplo, a barra zero na Fig. 116 (horário H1) tem o horário de funcionamento 6:00. Às 7:00, um novo bar aparecerá na janela de segurança. O bar aberto às 6:00 irá obter automaticamente o índice 1. Para que a linha indicada seja desenhada corretamente nesta barra, o terminal do cliente alterará o índice do elemento da matriz do indicador correspondente à barra aberta às 6:00. Na tabela na Fig. 116 este elemento está escrito na primeira linha. Juntamente com os índices de todos os elementos da matriz, o terminal do cliente aumentará por um. Um índice do elemento de matriz correspondente à barra aberta às 6:00 receberá o valor 1 (antes que fosse igual a 0). A matriz do indicador se tornará maior por um elemento. O índice de um novo elemento adicionado será igual a 0, o valor desse elemento será um novo valor que reflete a coordenada da linha do indicador em uma barra zero. Esse valor é calculado no início da função especial () em cada marca. Os cálculos no início da função especial () devem ser realizados de modo que nenhuma ação extra seja realizada. Antes que o indicador seja anexado a um gráfico, ele não reflete nenhuma linha de indicador (porque os valores das matrizes de indicadores ainda não estão definidos). É por isso que, no primeiro início da função especial, os valores da matriz de indicadores de início () devem ser calculados para todas as barras, nas quais a linha indicadora deve ser desenhada. No exemplo analisado, estas são todas as barras presentes em um gráfico (os cálculos iniciais podem ser realizados não para todas as barras disponíveis, mas, durante a última parte do histórico, é descrito em outros exemplos). Ar todos os outros começos do início da função especial () não há necessidade de calcular os valores da matriz de indicadores para todas as barras novamente. Esses valores já estão calculados e estão contidos na matriz de indicadores. É necessário calcular o valor atual da linha indicadora somente em cada novo tico da barra zero. Para a implementação da tecnologia descrita, existe uma função padrão muito útil em MQL4 - IndicatorCounted (). Function IndicatorCounted () Esta função retorna o número de barras que não foram alteradas desde o último indicador de chamada. Se o indicador nunca foi anexado a um gráfico, na primeira execução start (), o valor de Countedbars será igual a zero: significa que a matriz de indicadores não contém nenhum elemento com valor predefinido anterior, é por isso que toda a matriz de indicadores Deve ser calculado do começo ao fim. A matriz de indicadores é calculada da barra mais antiga para zero. O índice da barra mais antiga, a partir do qual os cálculos devem ser iniciados, é calculado da seguinte maneira: Suponha que, no momento da conexão do indicador, existam 300 barras na janela do gráfico. Este é o valor das barras de variáveis ​​predefinidas. Conforme definido anteriormente, o Countedbars é igual a 0. Assim, como resultado, obtemos o índice i da primeira barra não contabilizada (o último, a partir do qual os cálculos devem ser conduzidos) é igual a 299. Todos os valores dos elementos da matriz do indicador são Calculado no loop enquanto (): enquanto eu está dentro do intervalo desde a primeira barra não contada (299) até a corrente (0) inclusive, os valores dos elementos da matriz do indicador são calculados para ambas as linhas do indicador. Nota: os valores em falta dos elementos da matriz de indicadores são calculados durante um (o primeiro) início do início da função especial (). Durante os cálculos, o terminal do cliente lembra elementos, para os quais os valores foram calculados. A última iteração em while () é executada quando i é igual a 0, isto é, os valores das matrizes de indicadores são calculados para a barra de zero. Quando o loop acabou, a função especial start () termina sua execução e o controle é passado para o terminal do cliente. O terminal do cliente, por sua vez, desenhará todas as linhas de indicadores (neste caso, duas) de acordo com os valores calculados dos elementos da matriz. No próximo início do tiquetaque () será iniciado novamente pelo terminal do cliente. Outras ações dependerão da situação (continuaremos analisando o exemplo por 300 bar). Variante 1. Um novo tiquetaque vem durante a formação da barra de zero atual (a situação mais comum). FIG. 117 mostra dois carrapatos recebidos pelo terminal nos momentos do tempo t 1 e t 2. A situação analisada será a mesma para ambos os carrapatos. Permite traçar a execução do início () que foi lançado no momento t 2. Durante a execução do início da função (), a seguinte linha será executada: IndicatorCounted () retornará o valor 299, ou seja, desde a última chamada de início () 299 barras anteriores não foram alteradas. Como resultado, o valor do índice i será igual a 0 (300-299-1): significa que no próximo ciclo while () os valores dos elementos da matriz com o índice zero serão calculados. Em outras palavras, a nova posição de uma linha de indicadores na barra zero será calculada. Quando o ciclo estiver concluído, start () parará de executar e passará o controle para o terminal do cliente. Variante 2. Um novo tic é o primeiro tiquete de uma barra zero (acontece de vez em quando). Neste caso, o fato da aparência de uma nova barra é importante. Antes que o controle seja passado para o início da função especial (), o terminal do cliente irá desenhar novamente todas as barras presentes na janela de segurança e re-indexar todos os arrays de indicadores declarados (configurado em correspondência com buffers). Além disso, o terminal do cliente lembrará que já existem 301 barras, e não 300 na janela do gráfico. FIG. 118 contém situação quando no último tic da barra anterior (no momento t 2) a função start () foi iniciada e executada com sucesso. É por isso que, no entanto, agora a primeira barra (com índice 1) terminou no momento em que t 2 foi calculado pelo indicador, a função IndicatorCounted () retornará o valor que estava na barra anterior. Ou seja, 299: no próximo índice de linha, será calculado, neste caso, para o primeiro tiquete de uma nova barra, será igual a 1 (301-299-1): significa cálculo de valores de matriz de indicadores no loop while () Na aparência de uma nova barra serão executados tanto para a última barra quanto para a nova barra de zero. Um pouco mais cedo durante a re-indexação das matrizes de indicadores, o terminal do cliente aumentou os tamanhos desses arrays. Valores de elementos de matriz com zero índices não foram definidos antes dos cálculos no loop. Durante os cálculos no loop, esses elementos obtêm alguns valores. Quando os cálculos no início () acabaram, o controle é retornado ao terminal do cliente. Depois disso, o terminal do cliente irá desenhar linhas de indicadores na barra zero, com base apenas em valores calculados de elementos de matriz com zero índices. Variante 3. Um novo tiquetaque é o primeiro tiqueteque de uma nova barra zero, mas o último mas um tiquetaque não é processado (caso raro). FIG. 119 mostra a situação quando o início () foi iniciado no primeiro tiqueteque de uma nova barra no momento t 5. Tempo anterior em que esta função foi iniciada no momento t 2. Marque o que chegou ao terminal no momento t 3 (seta vermelha ) Não foi processado pelo indicador. Isso aconteceu porque o tempo de execução de início () t 2 - t 4 é maior do que o intervalo entre tiques t 2 - t 3. Esse fato será detectado pelo terminal do cliente durante a execução do início () iniciado no momento t 5. Durante Cálculos na linha: IndicatorCounted () retornará o valor 299 (). Este valor é verdadeiro - a partir do momento da última ligação do indicador, 299 barras não foram alteradas após (agora já) 301. É por isso que o índice calculado da primeira barra (mais à esquerda), a partir da qual os cálculos dos valores dos elementos da matriz devem ser iniciados, Será igual a 1 (301-299-1): significa durante a execução while () duas iterações serão realizadas. Durante os primeiros valores de elementos de matriz com o índice i 1 serão calculados, isto é Buf01 e Buf11. Não, no momento em que os cálculos começam, as barras e matrizes de indicadores já foram re-indexadas pelo terminal do cliente (porque uma nova barra começou, entre as iniciações do início da função especial (). É por isso que os cálculos para elementos de arrays com índice 1 serão calculados com base em matrizes temporárias (valores máximos e mínimos de um preço de barra) também com o índice 1: durante a segunda iteração dos valores while () para elementos com zero Os índices, ou seja, para a barra zero, são calculados com base nos últimos valores conhecidos dos arrays-timeseries. O uso da tecnologia descrita para o cálculo de indicadores personalizados permite, em primeiro lugar, garantir o cálculo de valores de todos os elementos da matriz de indicadores, independentemente da natureza específica do histórico de tiques e, em segundo lugar, realizar cálculos apenas para barras não incluídas, ou seja, usar recursos economicamente calculados . Não, uma barra é considerada não contabilizada se o cálculo dos valores dos elementos de um arrays de indicadores, pelo menos, para um último tic da barra não for realizado. Iniciando o indicador personalizado userindicator. mq4 em uma janela de gráfico, você verá duas linhas - uma linha azul grossa construída com os máximos da barra e uma linha vermelha pontilhada baseada em seus mínimos (Fig. 120). Note-se que pode-se construir um indicador personalizado, cujas linhas indicadoras coincidirem com as linhas de um indicador técnico análogo. Pode ser feito facilmente se, como fórmulas de cálculo no indicador personalizado, forem utilizadas as mesmas fórmulas do indicador técnico. Para ilustrar isso, podemos melhorar o código do programa analisado no exemplo anterior. Deixe o indicador desenhar linhas em valores médios de máximos e mínimos de várias últimas barras. É fácil realizar os cálculos necessários: simplesmente precisamos encontrar valores médios dos elementos arrays-timeseries. Por exemplo, o valor de uma matriz de indicadores com o índice 3 (ou seja, a coordenada da linha indicadora para a terceira barra) com base nos últimos cinco máximos é calculado da seguinte maneira: Buf03 (High3 High4 High5 High6 High7) 5 Cálculos análogos podem ser realizados Para uma linha de indicadores baseada em mínimos. Exemplo de um indicador personalizado simples averagevalue. mq4. As linhas de indicadores são construídas com valores médios mínimos e máximos de barras N. Neste exemplo, existe uma variável externa AverBars. Usando esta variável, um usuário pode indicar o número de barras, para o qual um valor médio é calculado. No início () este valor é usado para o cálculo de um valor médio. No ciclo, a soma de valores máximos e mínimos é calculada para o número de barras correspondente ao valor da variável AverBars. Nas próximas duas linhas de programa, valores de elementos de matriz de indicadores são calculados para linhas de indicador correspondentes a valores mínimos e máximos. O método de média utilizado aqui também é aplicado para cálculos no indicador técnico de média móvel. Se nós anexarmos o indicador personalizado personalizado analógico medido. mq4 e o indicador técnico de Média Mover, veremos três linhas de indicadores. Se o mesmo período de média for configurado para ambos os indicadores, a linha média móvel coincidirá com uma das linhas indicadoras personalizadas (para este propósito, os parâmetros descritos na figura 121 devem ser especificados nas configurações técnicas do indicador). FIG. 121. Linhas coincidentes de um indicador técnico e um indicador personalizado (linha vermelha). Assim, usando o indicador técnico, um usuário pode construir o reflexo de quaisquer regularidades necessárias no trabalho prático. Opções de Indicador Personalizado Linhas de Indicadores de Desenho em Windows Separado O MQL4 oferece um grande serviço para a construção de indicadores personalizados que os torna muito convenientes. Em particular, as linhas de indicadores podem ser desenhadas em uma janela separada. Isso é conveniente quando os valores absolutos da amplitude da linha indicadora são substancialmente menores (ou maiores) do que os preços de segurança. Por exemplo, se estamos interessados ​​na diferença entre valores médios de máximos de barras e mínimos em um determinado intervalo histórico, dependendo do prazo, esse valor será igual a aproximadamente 0 a 50 pontos (por exemplo, para M15). Não é difícil construir uma linha de indicador, mas em uma janela de segurança, essa linha será desenhada no intervalo de 0 a 50 pontos de um preço de segurança, ou seja, substancialmente menor do que a área do gráfico refletida na tela. É muito inconveniente. Para desenhar linhas de indicador em uma janela separada (que está na parte inferior de uma janela de segurança), na propriedade da diretiva (no início do programa), o indicador de parâmetro, uma janela separada deve ser especificado: no momento em que esse indicador é anexado a uma janela de segurança , O terminal do cliente cria uma janela separada abaixo de um gráfico, no qual as linhas de indicador calculadas no indicador serão desenhadas. Dependendo das configurações de cor e dos tipos de linhas de indicadores, eles serão desenhados nesse ou nesse estilo. Limitando o Histórico de Cálculo Na maioria dos casos, as linhas de indicadores contêm informações úteis apenas no histórico mais recente. A parte das linhas de indicadores construídas sobre barras antigas (por exemplo, período de tempo minimo de 1 mês) dificilmente pode ser considerada útil para tomar decisões comerciais. Além disso, se houver muitos bares em uma janela de gráfico, o tempo investido no cálculo e desenho de linhas de indicadores é excessivamente grande. Isso pode ser crítico na depuração do programa, quando um programa é muitas vezes compilado e então iniciado. É por isso que é necessário realizar cálculos não para todo o histórico, mas para a parte limitada do histórico de barras mais recente. Para este propósito, um histórico de variáveis ​​externo é usado no seguinte programa. O valor dessa variável é levado em consideração ao calcular o índice da primeira barra (mais à esquerda), a partir da qual os elementos das matrizes de indicadores devem ser calculados. Mais cálculos no loop while () serão conduzidos para o número de barras de histórico recentes não maiores do que o valor History. Note-se que o método analisado de limitar um histórico de cálculo diz respeito apenas à parte dos cálculos que é realizada no primeiro início do início da função especial (). Além disso, quando novas barras aparecem, novas partes das linhas indicadoras serão adicionadas na parte direita, enquanto a imagem na parte esquerda será preservada. Assim, o comprimento da linha indicadora será aumentado durante todo o tempo de operação do indicador. O valor comum do parâmetro History é considerado aproximadamente 5000 bar. Exemplo de um indicador personalizado simples separewindow. mq4. As linhas de indicadores são desenhadas em uma janela separada. O cálculo semelhante de uma linha de indicador é realizado no intervalo de faixa de média Average Range. FIG. 122 mostra uma linha de indicador construída pelo indicador personalizado, separar a janela. mq4 em uma janela separada e uma linha de indicadores construída por ATR em outra janela. Neste caso, as linhas são totalmente idênticas porque o período de média é o mesmo para ambos os indicadores - 5. Se esse parâmetro for alterado em qualquer um dos indicadores, a linha indicadora correspondente também mudará. FIG. 122. desenhando uma linha de indicador personalizada em uma janela separada. Linhas idênticas de um indicador técnico (ATR) e um indicador personalizado (separatewindow. mq4). Também é evidente que a linha indicadora personalizada é construída não para toda a largura da tela, mas para as 50 barras mais recentes conforme especificado na variável externa Histórico. Se um comerciante precisa usar um intervalo de histórico maior, o valor da variável externa pode ser facilmente alterado através da janela de configurações de indicadores personalizados. FIG. 123 mostra uma janela de segurança, na qual o indicador nos liga em outro estilo - como um histograma. Para obter esse resultado, uma linha foi alterada no código do programa separadamente. mq4 - outros estilos de linha são indicados: todas as outras partes do código são inalteradas. FIG. 123. Desenho de linha de indicador personalizado em uma janela separada (histograma). Similaridade de desenhos de um indicador técnico (ATR) e um indicador personalizado (separatewindow. mq4). Mudando linhas de indicadores verticalmente e horizontalmente Em alguns casos, é necessário mudar uma linha de indicador. Pode ser feito facilmente por meios MQL4. Vamos analisar um exemplo, em que a posição das linhas de indicador em uma janela de segurança é calculada de acordo com os valores especificados por um usuário. Exemplo de um deslocamento de indicador personalizado. mq4. Mudando as linhas indicadoras horizontal e verticalmente. Para ajustar o deslocamento de linhas em um gráfico, existem duas variáveis ​​externas - LeftRight para deslocamento horizontal de todas as linhas e UpDown para mudar duas linhas pontilhadas verticalmente. O algoritmo usado para calcular valores de elementos de matriz correspondentes é baseado em regras muito simples: para deslocar uma linha horizontalmente, atribua o valor calculado a um elemento de matriz, cujo índice é maior por LeftRight (para deslocamento para a direita e menos para deslocamento À direita) do que o índice de uma barra, para o qual os cálculos são conduzidos para mudar uma linha verticalmente, UpDownPoint deve ser adicionado (para deslocar para cima ou para fora para deslocar para baixo) para cada valor de uma matriz de indicadores que caracteriza a posição inicial da linha. Os índices de exemplo são calculados na linha: Aqui é o índice de uma barra, para o qual os cálculos são realizados, k é um índice de um elemento de matriz de indicadores. Linha indicadora vermelha exibida pelo terminal cliente com base na matriz do indicador Line0 é deslocada para a esquerda em 5 barras (de acordo com as configurações personalizadas, veja a figura 124) a partir da linha inicial. Neste caso, a linha inicial é uma média móvel com o período de média igual a 5, a fórmula do cálculo MA é (HighiLowi) 2. Neste exemplo, a posição da linha vermelha é a base para o cálculo de valores de matriz de indicadores para outras duas linhas, ou seja, sua posição no gráfico. As linhas pontilhadas são calculadas dessa maneira: o uso do índice k para elementos de todas as matrizes de indicadores permite realizar cálculos para os elementos das matrizes Line1, Line2 na mesma barra usada para calcular os valores da matriz básica correspondente Line0. Como resultado, as linhas pontilhadas são deslocadas em relação à linha vermelha pelo valor especificado na janela de configurações do indicador, neste caso por 30 pontos (Fig. 124). FIG. 124. A linha indicadora vermelha é deslocada para a esquerda em 5 barras. As linhas indicadoras pontilhadas são deslocadas em relação à linha vermelha por 30 pontos. Limitações dos indicadores personalizados Existem algumas limitações no MQL4 que devem ser consideradas na programação de indicadores personalizados. Existe um grupo de funções que podem ser usadas apenas em indicadores personalizados e não podem ser usados ​​em Expert Advisors e scripts: IndicatorBuffers (), IndicatorCounted (), IndicatorDigits (), IndicatorShortName (), SetIndexArrow (), SetIndexBuffer (), SetIndexDrawBegin ( ), SetIndexEmptyValue (), SetIndexLabel (), SetIndexShift (), SetIndexStyle (), SetLevelStyle (), SetLevelValue (). Por outro lado, as funções de comércio não podem ser usadas em indicadores: OrderSend (), OrderClose (), OrderCloseBy (), OrderDelete () e OrderModify (). Isso ocorre porque os indicadores operam no fluxo da interface (diferente dos Expert Advisors e scripts que operam em seu próprio fluxo). É também por isso que os algoritmos baseados em looping não podem ser usados ​​em indicadores personalizados. O início de um indicador personalizado que contém um ciclo infinito (em termos de tempo de execução real) pode resultar no encerramento do cliente com necessidade adicional de reiniciar um computador. As características comparativas gerais de Expert Advisors, scripts e indicadores estão contidas na Tabela 2.

No comments:

Post a Comment