Moving average dashboard mq4
MetaTrader 4 - Exemplos de Linguagem MQL4 para Iniciantes. Indicadores Personalizados (Parte 1) Introdução Este é o quarto artigo da série MQL4 Languages for Newbies. Hoje vamos aprender a escrever indicadores personalizados. Conheceremos a classificação dos recursos dos indicadores, veremos como esses recursos influenciam o indicador, aprenderemos sobre novas funções e otimização e, por fim, escreveremos nossos próprios indicadores. Além disso, no final do artigo, você encontrará conselhos sobre o estilo de programação. Se este é o primeiro artigo para novatos que você está lendo, talvez seja melhor você ler os anteriores. Além disso, certifique-se de ter entendido corretamente o material anterior, porque o artigo dado não explica o básico. Tipos de indicadores Agora vou mostrar a você, que tipos de indicadores existem. Claro, você já viu muitos deles, mas agora eu gostaria de chamar sua atenção para recursos e parâmetros de indicadores, portanto, faremos uma pequena classificação de recursos e parâmetros. Ele então ajudará você a escrever indicadores personalizados. Então, o primeiro indicador simples: isso é média móvel, MA. um indicador técnico amplamente utilizado. Preste atenção aos seguintes fatos importantes: o indicador é desenhado na janela do gráfico, o indicador mostra apenas um valor, o intervalo dos valores do indicador é ilimitado e depende dos preços atuais em que a linha é desenhada com uma determinada cor. largura e estilo (linha sólida) Agora vamos ver outro indicador: É a faixa de porcentagem de Williams, R. Preste atenção aos seguintes fatos importantes: o indicador é desenhado em uma subjanela separada como no caso anterior, o indicador mostra apenas um valor, o intervalo dos valores do indicador é estritamente limitado, a linha desenhada tem outro estilo. cor e largura Assim, existem as seguintes propriedades do indicador: o indicador é desenhado: em uma janela de gráfico ou em uma subjanela separada. Agora vamos tentar entender, por que Média Móvel é desenhada no gráfico, e Faixa Percentual de Williams, R é desenhada em uma janela separada. A diferença está no intervalo dos valores mostrados. Note que o segundo indicador mostra valores no intervalo de 0 a -100. Agora imagine que mostremos esses valores em uma janela de gráfico. E o que aconteceria? Você não veria essa linha, porque o preço tem um alcance muito mais estreito. No nosso caso, é de 0,6805 a 0,7495. Mas isso não é tudo. Na verdade, os preços são números positivos e nosso valor é negativo. Os indicadores são desenhados em uma subjanela separada se seus valores estiverem fora da faixa de preço do gráfico ativo. E se o intervalo é quase o mesmo (por exemplo, diferentes tipos de médias móveis), um indicador é desenhado em uma janela de gráfico. No futuro, defina este parâmetro indicador de acordo com essa lógica simples. Aqui está uma imagem: um indicador que é desenhado em uma subjanela separada pode ser limitado a um intervalo estrito. Isso significa que o terminal define uma escala fixa para mostrar os valores dos indicadores e, mesmo se os valores excederem o intervalo, você não os verá. Se você desabilitar este parâmetro, o terminal mudará automaticamente a escala para que contenha todos os valores de um indicador. Veja a foto: um indicador pode mostrar seus valores usando cores diferentes. estilos e largura. Você viu isso com muita frequência ao configurar o desenho de indicadores no terminal. Aqui está uma restrição: se você usar uma largura de linha maior que 1, poderá usar apenas um estilo - linha sólida. Aqui está mais um indicador: Como você vê, o indicador Volumes é desenhado na forma de um histograma. Portanto, existem vários tipos de exibição de valores de indicadores. Aqui está um exemplo de outro tipo: O indicador Fractals é desenhado na forma de símbolos especiais. Agora olhe para o seguinte indicador: Este é o Alligator. Observe que o indicador tira três valores simultaneamente (linhas de saldo). Como funciona Na verdade, qualquer indicador (há algumas exceções, mas falaremos sobre eles mais tarde) usa buffers de dados ao mostrar valores. O buffer de dados é quase um array simples. Sua peculiaridade está no fato de que esta matriz é parcialmente gerenciada pelo terminal. O terminal muda a matriz de modo que, no recebimento de cada nova barra, ocorra uma mudança. Isso é feito com o propósito de que cada elemento da matriz corresponda a uma determinada barra. O número máximo de buffers de dados mostrados em um indicador é 8. Pode parecer estranho agora, mas logo você entenderá que não poderia ser diferente. Basta lembrar que há um buffer de dados separado para cada linha no Alligator. Cada buffer de dados possui seus próprios parâmetros, de acordo com os quais o terminal os desenha. No nosso caso, existem 3 buffers que podem ser descritos da seguinte maneira: O primeiro buffer é desenhado por uma linha verde sólida em uma largura 3. O segundo buffer é desenhado por uma linha tracejada de cor vermelha e largura 1. O terceiro buffer é desenhado por uma linha azul sólida na largura 2. Não é necessário que um indicador desenhe um buffer. Pode ser usado para cálculos intermediários. É por isso que o número de buffers pode ser maior do que você vê. Mas a propriedade mais importante do buffer de dados é que cada elemento de buffer deve corresponder a uma determinada barra em um gráfico. Apenas lembre disso. Logo você verá como isso funciona em um código. Agora vamos tirar uma conclusão de nossa pequena excursão. Qualquer indicador possui os seguintes parâmetros: um ou mais buffers de dados (embora não necessariamente) para mostrar seus valores ou para cálculos intermediários. Cada buffer, por sua vez, possui seus próprios parâmetros que definem como ele será desenhado e se ele será desenhado. Por exemplo: desenhe o valor na forma de um histograma, símbolo ou linha que cor e estilo onde o indicador deve ser desenhado (em uma janela de gráfico ou em uma subjanela) se o indicador é desenhado em uma subjanela, devemos limitar o intervalo ou a escala deve ser automática. Certifique-se de entender claramente todos esses parâmetros. Agora vamos usar um assistente para criar um indicador personalizado. Criando um indicador personalizado Inicie o MetaEditor. selecione File-gtNew: Em seguida, vemos uma janela do Expert Advisor Wizard. selecione Indicador Personalizado. clique em Avançar: Preencha os campos Nome. Autor e Link. Tudo está normal aqui, mas agora você pode adicionar parâmetros. O que é isso? Parâmetros são variáveis comuns que podem ser definidas por um usuário. E o que é importante, essas variáveis podem ser usadas em um código indicador. A aplicação de parâmetros é óbvia - você permite que os usuários configurem alguns aspectos da operação do indicador. Isso pode ser o que você quiser. Por exemplo, período de tempo para usar, modo de operação, número de barras para a média, etc. Por exemplo, vamos tentar adicionar um parâmetro que mostrará o número de barras processadas para o cálculo dos valores do indicador. Onde ele pode ser usado Imagine que seu indicador carrega seriamente seu processador devido a muitos cálculos. E você freqüentemente altera o período de tempo do gráfico e visualiza apenas os últimos 100-200 barras. Então você não precisa de outros cálculos que desperdiçam tempo. Este parâmetro irá ajudá-lo em tal situação. Naturalmente, não haverá nada difícil em nosso indicador que possa desperdiçar os recursos do computador. Essa é apenas uma variante do uso dos parâmetros do indicador. Então, para adicionar um parâmetro, clique em Add (1). Depois disso, você pode alterar o nome de uma variável (2). No nosso caso, substituímos por barsToProcess. Você também pode alterar o valor inicial (3), ou seja, o valor padrão. Mude para 100. Além disso, você pode alterar o tipo de variável. mas no nosso caso não precisamos mudar nada, porque o tipo int se adapta perfeitamente aos nossos propósitos. Depois que todas as alterações necessárias forem feitas, clique em Avançar: Está quase pronto. Agora indique como o indicador deve ser desenhado. em uma janela separada ou em uma janela de gráfico. Você também pode limitar o intervalo. Verifique o indicador em uma janela separada. Abaixo está um campo vazio Indexes (buffers de dados). Aqui você pode adicionar o número necessário de buffers de dados (máximo 8). Além disso, você sempre pode adicionar ou excluir um buffer posteriormente, alterando o código. Clique em Adicionar para adicionar um buffer. Agora você pode mudar a forma como o buffer será desenhado: linha. histograma. seção . flecha . Nós não vamos mudar nada, então o nosso tipo é Line. Configure a cor e clique em OK. Finalmente, seu primeiro indicador está pronto Bem, ele não desenha nada, mas é um código O arquivo com o código-fonte está na pasta com indicadores: MetaTrader4expertsindicators. Vamos analisar cada linha Agora, vamos ver o que o Meta Editor criou: Como de costume, o cabeçalho consistindo de comentários de uma linha inclui as informações que você escreveu anteriormente. Próximo: Você ainda se lembra da diretiva de pré-processador definida a partir do segundo artigo? Usamos para declarar constantes. Então, aqui está mais uma diretiva usada para denotar propriedades específicas de um indicador. No nosso caso, é usado para indicar autoria. Por favor, note que começa com o sinal especial. então vai a propriedade de palavra chave (sem um espaço). Então vem uma propriedade concreta que queremos definir, no nosso caso, é copyright. e, em seguida, o valor dessa propriedade. No nosso caso, é uma linha com o seu nome. Usando a propriedade da diretiva você pode configurar muitos aspectos específicos do indicador. Você vai ver isso agora. Todas essas propriedades serão configuradas por padrão. Vamos adiante: esta diretiva mostra como entrar em contato com o autor. Você pode perguntar onde esta informação (o nome do autor e informações de contato) é, porque não é mostrada em qualquer lugar. Mas está incluído no arquivo executável. E se você visualizar o arquivo executável como um texto comum, verá estas informações: Esta diretiva mostra que o indicador deve ser desenhado em uma subjanela separada. Como você vê, não há parâmetros adicionais, distintos da diretiva anterior. Esta diretiva indica quantos buffers de dados serão usados pelo indicador. Você deve ter notado que as diretivas são de alguma forma semelhantes às funções comuns: elas também aceitam alguns parâmetros e fazem algo em resposta. Mas há uma diferença importante: eles são executados em primeira instância (antes da compilação). Indica a cor padrão para o primeiro buffer. Observe que a numeração do buffer começa de um. não de zero. Tente lembrar, para que você não tenha confusão no futuro. A cor é indicada usando um dos muitos nomes predeterminados. Você pode ver palavras-chave para todas as cores disponíveis na ajuda: MQL4 Referência - gt Standard Constants - gt Web-Colors. Da mesma forma você pode indicar a cor para outros buffers, basta alterar o número do buffer. Este é o nosso parâmetro do indicador. Nós configuramos no Assistente. Note que a única diferença de uma variável comum é a palavra chave extern antes do tipo de variável. É assim que o parâmetro será parecido para um usuário no início do indicador: Este é um array usual. Mas a dimensionalidade não é indicada e a inicialização não é executada. Esta matriz será posteriormente configurada como um buffer de dados. Então nós declaramos e descrevemos funções. Diferentemente de um script usual, cada indicador possui 3 funções, não 1: init () - esta função é chamada pelo terminal apenas uma vez, quando iniciamos o indicador. Sua finalidade é preparar o indicador para operação, configurar buffers de dados, verificar parâmetros (o que um usuário escreveu) e outras ações preparatórias. Esta função não é obrigatória. Se você não executar um código, você poderá excluí-lo. deinit () - esta função também é chamada apenas uma vez, quando você apaga um indicador de um gráfico. Você deve preparar o indicador para o término de sua operação. Por exemplo, feche arquivos abertos, apague objetos gráficos do arquivo (não se preocupe, você aprenderá como fazê-lo). Esta função também não é obrigatória. start () - diferentemente dos scripts, nos indicadores essa função é chamada a cada tick. Ou seja quando novas cotações aparecem do par de moedas, para o gráfico do qual você anexou o indicador, essa função é chamada. Além disso, essa função é chamada no início do indicador, ou seja, após a função init (). Vamos ver o que acontece em cada função: Aqui vemos a chamada de duas funções importantes para definir um buffer de dados: Esta função define como desenhar o buffer de dados. O primeiro parâmetro indica para qual buffer a mudança deve ser aplicada. Por favor, note que nesta função (e funções similares) a numeração do buffer começa a partir de zero, não de um como em diretivas. É um momento importante, então tenha cuidado. O segundo parâmetro indica como desenhar o buffer escolhido. No nosso caso, usamos a constante DRAWLINE. que mostra que o buffer será desenhado como uma linha. Claro, existem outras constantes, mas falaremos sobre elas mais tarde. Esta função liga um array a um número de buffer. Ou seja Isso mostra que o buffer com o número indicado usará a matriz indicada para armazenar dados. Então, mudando os elementos deste array você irá alterar o valor do buffer. Na verdade, uma matriz é um buffer de dados. O primeiro argumento é o nome da matriz que deve ser ligada. Fim da função, retorno zero - a inicialização foi bem-sucedida. A função de desinicialização é vazia por padrão. Agora vem a função mais importante - o código principal está localizado aqui. Preste atenção: a variável countedbars é declarada antecipadamente, é inicializada pela função IndicatorCounted (). Esta variável é normalmente usada para a otimização e aceleração da operação do indicador, isso será analisado posteriormente. E agora vamos desenhar algo na janela do indicador. Finalizando o Indicador Vamos decidir o que deve ser exibido. O que o indicador nos mostrará Algo simples. Primeiro, vamos desenhar números aleatórios. Por que não? Isso garante 50 dos sinais de lucro. Vamos escrever em nossa função init () um código para a inicialização do gerador de números aleatórios: A inicialização está pronta, agora vem a função start (): Compile - F7. Inicie o terminal, localize o painel Navegador. selecione a seção Custom Indicators e clique duas vezes no nome do nosso indicador: O indicador será anexado ao gráfico ativo: Você vê, tudo funciona. Agora vamos ver o que o código faz: Usamos o ciclo para percorrer todos os elementos do buffer de dados. Como uma determinada barra corresponde a cada elemento do buffer. usamos o ciclo, partindo da barra zero (a última disponível) e terminamos com a primeira disponível, que é em sucessão um a menos que a variável Barras (porque contamos barras de zero). Em cada iteração, um contador é aumentado em um, e passamos da última barra disponível para a primeira ao mesmo tempo atribuindo a cada elemento de buffer (que corresponde a uma determinada barra) um número aleatório de 0 a 1000. Se for difícil para você entender, como um determinado elemento de buffer corresponde a uma determinada barra, tente alterar o ciclo da seguinte maneira e ver o resultado no terminal: Agora o indicador mostrará o número de cada barra. olha: Você vê, o número da barra aumenta da última barra para a primeira (de 0 para Barras). Espero que agora você entenda a correspondência de elementos de buffer para barras no gráfico. Agora vamos voltar ao código do indicador aleatório. Se você usou pelo menos alguns minutos, você veria que cada indicador de tick desenha um gráfico absolutamente diferente. Ou seja cada carrapato faz recálculos do que foi calculado no tempo anterior. Isso é inconveniente para nós, porque não podemos ver nem o que aconteceu um carrapato atrás. Mas isso não importa, porque ninguém usará esse indicador - estamos simplesmente aprendendo a escrevê-lo. Tem mais uma coisa. Imagine, seu indicador faz muitos cálculos complexos e o cálculo de uma barra requer grandes recursos do processador. Nesse caso, se aparecer um novo preço, o seu indicador calculará o valor de cada barra disponível, mesmo que tenha sido feito antes. Está claro? Em vez de calcular apenas uma vez, calculará de novo e de novo. Eliminar esses problemas associados a um desperdício irracional de recursos é chamado de otimização. Como podemos resolver este problema? Geralmente é feito da seguinte maneira. Primeiro, um indicador é calculado em todas as velas disponíveis, e somente quando as cotações são recebidas, ele recalculará o valor somente para o último castiçal. Isso é razoável - não há ações desnecessárias. Agora vamos otimizar a função start (). para que funcione da seguinte maneira: Vamos analisar cada linha: Declaramos as variáveis countedbars que irão armazenar o número de barras calculadas pelo indicador. Na verdade, a função IndicatorCounted () retorna o número de barras inalteradas após a chamada anterior da função start (). Portanto, se for a primeira chamada de start (), IndicatorBars () retornará 0. porque todas as barras são novas para nós. Se não for a primeira chamada, a mudança é apenas a última barra, então IndicatorBars () retornará um número igual a Bars-1. Aqui está mais uma variável que será usada como um limitador. isto é, ajudará o ciclo a ser completado antes, omitindo castiçais já calculados. Como já foi dito, se IndicatorCounted () retorna 0, a função start () é chamada pela primeira vez e todas as barras são novas para nós (o indicador não foi calculado para elas). Mas se não for a primeira chamada de start (), o valor igual a Bars-1 será retornado. Então, essa condição rastreia tal situação. Depois disso, diminuímos a variável countedbars por 1. Apenas a última barra pode ser alterada, então por que fazemos isso? O fato é que existem algumas situações, quando o último tick da barra anterior permanece não processado, porque quando o último tick veio, o último tick foi processado. E o indicador personalizado não foi chamado e não foi calculado. É por isso que diminuímos a variável countedbars em 1, para eliminar essa situação. Aqui nós atribuímos ao limite da variável (o limitador) o número das últimas barras que precisam ser recalculadas. Enquanto a variável countedbars armazena o número de castiçais já calculados, nós simplesmente encontramos a diferença entre Barras (o número total de barras disponíveis) e barras contadas para definir quantos castiçais devem ser calculados. O ciclo em si quase não mudou. Nós mudamos apenas a condição de implementação. Agora o ciclo será executado enquanto o contador i for menor que o limite. Agora a otimização acabou. Se você observar a versão atualizada do indicador, você verá que quando um novo tick é recebido, o valor somente da última barra é alterado. Tente usar essa otimização constantemente, mesmo que seu indicador não calcule nada de difícil. Isso é haut ton. Você se lembra de um parâmetro de indicador barsToProcess que nós adicionamos no Wizard. Agora é hora de usá-lo. Nós simplesmente precisamos adicionar algumas linhas antes do ciclo: Você vê, tudo é bem simples. Verificamos se o limite é maior que barsToProcess. Se sim, diminua o limitador através da atribuição. Como resultado, se definirmos barsToProcess100, você verá uma imagem como: Como você vê, apenas o número de barras definidas por nós é calculado. Nosso indicador está quase pronto. Mas não temos sinais claros para entrar no mercado. Então precisamos adicionar mais certeza. Para este propósito, usaremos níveis. Níveis são linhas horizontais desenhadas pelo indicador usando um determinado estilo, cor e largura. Deve-se notar aqui que o número máximo de níveis em uma barra é 8. Além disso, você pode definir níveis usando diretivas ou funções. É mais preferível usar a primeira variante, se você quiser definir níveis por padrão. Para a mudança dinâmica de níveis durante a operação de indicadores, use funções. Então, vamos definir dois níveis: o primeiro no ponto 800, o segundo - 200. Para isso, vamos adicionar várias diretivas no início do código do indicador: Vamos analisar novas diretivas: Esta diretiva mostra que o nível 1 deve ser lugares no ponto 800.0. Preste atenção que a numeração do buffer começa com 1. como nas diretivas para configuração de buffer. Para configurar outro nível, basta alterar o número do nível no final de uma diretiva: Há uma limitação importante na configuração da forma externa de níveis. Você não pode configurar cada nível individualmente. Todas as configurações são aplicadas a todos os níveis. Se você precisar configurar cada nível individualmente, você deve usar objetos (e não usar níveis), que serão descritos no próximo artigo. Esta diretiva define cor. que será usado para desenhar todos os níveis. Esta diretiva define largura para desenhar linhas de todos os níveis. Você pode definir a largura de 1 a 5. Não esqueça que se uma largura for maior que 1, os níveis serão desenhados em uma linha sólida. Se você precisar de outro estilo de desenho, use apenas a largura 1. Essa diretiva define o estilo para desenhar linhas. Existem as seguintes constantes predefinidas: STYLESOLID - linha sólida STYLEDASH - linha tracejada STYLEDOT - linha pontilhada STYLEDASHDOT - linha pontilhada STYLEDASHDOTDOT - linha pontilhada com pontos duplos Acabamos de desenvolver nosso indicador aleatório. Agora vamos salvar o arquivo de origem com um nome mais apropriado - randomIndicator. mq4. Recompile o arquivo de origem novamente. Este indicador também será usado na parte seguinte. A versão final deve ficar assim: Função iCustom Agora vamos nos debruçar sobre uma função muito útil - iCustom. É usado para obter valores de qualquer indicador personalizado. Lembre-se, para indicadores internos, usamos funções para trabalhar com indicadores técnicos descritos no artigo anterior (por exemplo: iADX (), iMACD etc.). Para todos os outros indicadores (indicadores personalizados), utilize a função iCustom. Essa função é universal e pode ser aplicada a qualquer indicador personalizado que atenda aos seguintes requisitos: o indicador é compilado e está na forma de um arquivo executável (.ex4) o indicador está na pasta MetaTrader 4expertsindicators O protótipo da função tem o seguinte forma: símbolo define, qual segurança financeira (par de moedas) deve ser usada para o cálculo de um valor de indicador personalizado. Use NULL (ou 0), se você precisar da segurança atual (ativa) (gráfico). prazo definido, em que período de tempo (período) o indicador deve ser usado. Use 0 para o período atual ou uma das constantes (PERIODM1, PERIODM5, PERIODM15, PERIODM30, PERIODH1, PERIODH4, PERIODD1, PERIODW1, PERIODMN1). nomeie o nome do arquivo executável do indicador personalizado. Apenas o nome deve ser indicado: não escreva a extensão (.ex4) ou o caminho para o arquivo (experts / indicators /). Por exemplo, se o nome do arquivo executável do indicador personalizado for RandomIndicator. ex4, você deverá escrever RandomIndicator. O registro aqui não é relevante. Isso significa que você pode escrever um indicador RANDOM e funcionará. . aqui você deve indicar todos os valores dos parâmetros do indicador personalizado. Por exemplo, em nosso indicador RandomIndicator existe apenas um parâmetro - barsToProcess. Ou seja no nosso caso, escrevemos aqui 100 (ou qualquer outro valor adequado para você). Se o número de parâmetros for maior que um, eles serão indicados na mesma sucessão em que são declarados no indicador personalizado, separados por vírgulas. Agora vamos tentar escrever um indicador baseado nessa função e você entenderá melhor. mode o modo de operação do indicador personalizado. Na verdade, é o número do buffer de dados, cujo valor você deseja obter. A numeração começa do zero (não como em diretivas). Se o indicador personalizado tiver apenas um buffer de dados, esse parâmetro deve ser igual a 0. shift define para qual barra o indicador personalizado deve ser usado. Exemplos de Uso: Indicador de Sinal Agora vamos escrever mais um indicador simples. Então, imagine a seguinte situação. Você escreveu um indicador bastante complexo com muitos buffers de dados. Muitos deles são exibidos em uma janela separada, outros são usados para cálculos intermediários. Você sabe exatamente sinais para comprar e vender. Mas a dificuldade é que é muito difícil rastrear os sinais. Você precisa constantemente olhar para o seu monitor, tentando encontrar linhas de cruzamento, que estão acima ou abaixo dos níveis. É por isso que você decide escrever mais um indicador que poderia fazer isso por você e mostraria apenas os sinais de entrada. Por exemplo, estas podem ser setas mostrando em que direção você deve abrir posições. Esta é apenas uma fantasia mostrando onde um indicador de sinal pode ser apropriado. Nossa situação é muito mais fácil, mas ainda é semelhante à primeira. Vamos escrever um indicador de sinal com base no indicador anterior RandomIndicator. Primeiro precisamos definir as condições de entrada - aqui precisaremos dos nossos níveis. Assim, as condições serão as seguintes: se uma linha se move acima do nível superior (800,0), compre se uma linha se move abaixo do nível inferior (200,0), venda Agora é hora de escrever um novo indicador. Use o Expert Advisor Wizard para criar um novo indicador personalizado. Adicione um parâmetro adicional como no caso anterior: E a última etapa (propriedades de desenho do programa Indicador personalizado) deve ser a seguinte: Primeiro adicione dois buffers de dados que serão usados para desenhar sinais para comprar e vender na forma de setas . Altere o tipo de buffers de dados para Seta. Alterar cores e códigos de símbolos. Abaixo estão todos os códigos de símbolos disponíveis: Nós não precisamos desenhar o indicador em uma janela separada, porque vamos desenhar sinais na janela do gráfico. Usamos dois buffers de dados, porque não podemos desenhar setas (símbolos) diferentes usando apenas um buffer. Cada buffer de dados que é exibido na forma de símbolos pode ser desenhado apenas por um símbolo. Agora vamos analisar muito atentamente o código de inicialização do indicador: Preste atenção que agora outra constante para o tipo de buffer de dados é usado - DRAWARROW: Também vemos duas novas funções que são usadas para definir o desenho do símbolo. SetIndexArrow é usado para definir qual símbolo irá representar um buffer. O primeiro argumento é o número do buffer. o segundo é o código de símbolo que representará o indicador: SetIndexEmptyValue é usado para indicar um valor vazio. Significa que indicamos o valor, no qual não precisamos desenhar nada. É muito conveniente no nosso caso, porque os sinais são gerados não em cada barra. Funciona da seguinte forma: quando não precisamos desenhar um array na barra atual, você atribui ao elemento de buffer de dados correspondente um valor vazio, no nosso caso é 0. O primeiro argumento da função é o número do buffer de dados. O segundo é o valor vazio: o código de inicialização restante configura buffers análogos ao indicador aleatório, que analisamos anteriormente. Agora vamos terminar o código na função start (): O código inteiro até que o ciclo seja repetido a partir do indicador aleatório. Na verdade, esse código é padrão em qualquer indicador e é repetido com pequenas alterações. Agora vamos analisar o ciclo em detalhes: Primeiro, declaramos a variável randomValue (valor aleatório) e atribuímos a ela o valor de nosso indicador aleatório na barra atual. Para este propósito usamos a função iCustom: Se o valor do indicador aleatório for maior que o nível superior (800), este é um sinal para comprar: Caso contrário, se não houver sinal Buy: Se o valor do indicador aleatório for abaixo do nível inferior (200), este é um sinal de venda: caso contrário, se não houver sinal de venda: este foi o ciclo. Compile o indicador e inicie-o no terminal: Sobre o estilo Não, não são as regras de escolher uma gravata para se adequar a um casaco e camisa, embora seja sempre oportuna. O estilo de programação é muito importante, se você não escrever seu código apenas para si mesmo. Na verdade, cada desenvolvedor tem seu próprio estilo de programação. Cada um projeta ciclos a sua própria maneira, faz recuos diferentes (ou nenhum recuo), declara variáveis etc. Você deve encontrar seu próprio estilo de programação, o qual você sempre usará depois. Eu gostaria de dar-lhe várias recomendações que irão ajudá-lo a tornar seu código fácil de ler e entender: não escreva muitas operações em uma linha semicons separadas () escreva nomes de variáveis e funções em inglês em nomes de variáveis use maiúsculas como os delimitadores evitam o uso excessivo de abreviações e as reduções nos nomes de variáveis e funções fazem recuos de um certo comprimento para ter blocos de código pares em cada novo corpo (de um ciclo ou condição) fazem recuos adicionais fazer o agrupamento de um tipo variáveis fazem comentários apropriados para blocos de código grandes e difíceis fazem comentários apropriados para as funções escritas por você (sua atribuição, parâmetros) Conclusão Você aprendeu algo novo hoje. Você escreveu dois indicadores simples. Bem, eles são inúteis, mas eu não estou te ensinando a negociar com sucesso. Você já viu, como os indicadores operam, quais parâmetros e propriedades eles têm. Você aprendeu a definir buffers e trabalhar com eles. Você conheceu várias novas funções. A função iCustom é muito importante e será usada ainda em Expert Advisors. Se você encontrar alguma dificuldade, releia o artigo mais uma vez, tentando entender. Se você ainda tiver alguma dúvida, por favor, não hesite em usar fóruns ou escrever comentários no artigo. 1000pips Dashboard Faça o download do Indicador Forex Dashboard 1000pips para Metatrader gratuitamente. Como precisamente o que descobrimos, este RIS está à procura e também este indicador surpreendente simplesmente não exige que invistamos dinheiro e que nos oferecem uma conclusão de que é um indicador de câmbio monetário estrangeiro gratuito. We8217ve fizemos algum teste fazendo uso deste arquivo mql. E a boa notícia é que funciona excepcionalmente. O fato é, ele pode ir com o software Meta Trader 4 e Meta Trader 5, bem como outras edições MT. Existem milhares de indicadores semelhantes disponíveis e gratuitos para download no grupo de indicadores de informações do Forex Display. Comentários sobre o indicador do painel 1000pips provavelmente serão os mais apreciados. A seção de observação do indicador do Painel 1000pips atende todos os comentários, bem como as sugestões fornecidas. Quase qualquer comentário pode ser feito, desde que também ajude o negócio comercial. Suas avaliações sinceras e também os feedbacks são importantes porque podem ajudar outros investidores Forex a selecionar indicadores. Certamente, o que exatamente os investidores de FX desejam são indicadores notáveis que são suficientemente capazes de ajudá-los a negociar mais de uma maneira precisa. É aqui que entra o indicador Dashboard 1000pips sem custos. Ele também irá ajudar os comerciantes em aumentar o lucro que eles podem obter em seus negócios na Internet. Além disso, estamos investindo muito na publicação de indicadores Forex, como o painel 1000pips, em nossa página da web. Com isso dito, é possível que os empreendedores da Web façam o download sem gastar dinheiro, fazendo com que eles tomem decisões sábias. Assim, eles acabam sendo traders notáveis. Compartilhe seu conhecimento sobre o indicador clicando em nós no twitter e também nos curtindo no Facebook. Toda vez que nós carregamos um novo indicador, você pode notificá-lo com isso. Download 1000pips Dashboard. mq4 Indicador Metatrader Free Indicadores relacionados: O indicador de todos os valores desenha linhas horizontais em números redondos, separadores diários / semanais, pivôs, preço de fechamento de ontem e preço de fechamento semanal. Ele também mostra o spread atual, ATR (dia e semana), intervalo, 8230 Você pode facilmente ativar 8220true8221 e desativar 8220false8221 todas as funções do indicador para limpar seus gráficos. Sinais de Negociação Não há sinais reais de negociação deste indicador. Preferências do Indicador Pares de moeda: hellip O indicador do painel de controle do Trend Friend Follow é uma excelente ferramenta que fornece sinais de compra e venda em gráficos de 1 Min, 5 Min, 15 Min, 30 Min, 1 Hour e 4 Hour. Ele é composto de duas médias móveis exponenciais (EMA) e o indicador MACD. Sinais de Negociação COMPRE: Aguarde todos os indicadores ficarem verdes. VENDA: Aguarde todos os indicadores que o tornam O Trade Assistant fornece sinais de compra e venda em tempo real e é baseado em 3 indicadores populares: Estocástico, RSI e CCI. O indicador foi projetado para negociação forex de curto prazo e fornece sinais para o gráfico de 1 min (scalping forex), gráfico de 5 min e gráfico de 15 min. Sinais de Negociação COMPRE: Aguarde todos os indicadores ficarem verdes. VENDER: Aguarde até que todos os indicadores sejam exibidos O indicador do painel Sinal de Tendência Múltipla visualiza a tendência dos indicadores técnicos mais usados no forex. Analisa a tendência de ADX, RSI, MOM, CCI, OsMA, MACD, SAR, WPR e MA em todos os tempos8217s. Este indicador de negociação pode ser muito útil para escalpelamento de forex, negociação de swing e negociação de longo prazo. Trading Signals Step1: Escolha seu (s) horário (s) favorito (s). hellip O indicador GG-Trendbar é composto por ADX e Psar. Ele visualiza a tendência em vários períodos de tempo em um painel fácil de ler. O período de tempo8217s inclui 1M, 5M, 15M, 30M, H1, H4, D1, W1, MN1. Pontos coloridos verdes sugerem tendência de alta. Pontos coloridos vermelhos sugerem tendência de baixa. Pontos amarelos sugerem plano (sem tendência). Sinais de Negociação COMPRAR: Aguarde os pontos GG para hellip Baixe Forex Analyzer PRO Gratuitamente Hoje Brand New Forex System Com Super Preciso E Sinais Rápidos Gerando Tecnologia. Forex Analyzer PRO gera sinais de compra e venda diretamente em seu gráfico com precisão de laser e NUNCA REPARA Até 200 pips por dia Comprar e vender sinais de Forex Detecção diária avançada de e-mail Alertas de negociação móvel Não repintar ou atrasar Nós sempre respeitamos sua privacidade no Dolphintrader.
Comments
Post a Comment