Contador de Candles

 

Gente, sou novato, a intenção é que analise os 6 últimos candles do gráfico, se os 6 forem de alta ou de baixa, deixar um alerta sonoro.


void start ()

   {

 

   if(Close[1]<Close[2]<Close[3]<Close[4]<Close[5]<Close[6]){

      Print ("COMPRA");

      Alert("COMPRA");

   }

   else if(Close[1]>Close[2]>Close[3]>Close[4]>Close[5]>Close[6]){

      Print ("VENDA");

      Alert ("VENDA");

   }   

   else (                   

      Print ("AGUARDE") )

   ;}

   

  

     

 
Sensacional
 
wm gs g:

Gente, sou novato, a intenção é que analise os 6 últimos candles do gráfico, se os 6 forem de alta ou de baixa, deixar um alerta sonoro.


void start ()

   {

 

   if(Close[1]<Close[2]<Close[3]<Close[4]<Close[5]<Close[6]){

      Print ("COMPRA");

      Alert("COMPRA");

   }

   else if(Close[1]>Close[2]>Close[3]>Close[4]>Close[5]>Close[6]){

      Print ("VENDA");

      Alert ("VENDA");

   }   

   else (                   

      Print ("AGUARDE") )

   ;}

   

  

     

wm,

Bacana, pois o início de tudo é mais ou menos por ai mesmo, apurando a "lógica" do código. Para estudar códigos é simples pra caramba, você aprenderá rapidinho (menos de 2 anos) mas para criar uma programação inteira você além de entender do código precisa entender de lógica. E sua lógica está indo por um caminho bom.

Vamos lá traduzir o que você digitou:

Quando você coloca Close >1, 2, 3.... você está dizendo que quer que o fechamento da nova Barra seja superior a anterior e assim sucessivamente. Neste caso não necessariamente quer dizer que uma sequencia de "alta" ou "baixa", pois pode haver um candle intermediário que não é maior que o anterior mas é a continuidade da alta/baixa.  Então é bom comparar de outras formas também, por exemplo, se o candle 3 for menor que o 2 porém o 4 é maior que o 3 e o 2, a "alta" continua.... e assim sucessivamente...entre outras, mas vamos por parte né.

Outra coisa, CLose não é um comando de leitura de candle, então entendo que você ANTES de chegar nos "ifs" você já fez todo o processo de leitura dos candles e associou a VARIÁVEIS, ou a uma só Variável com Array. Caso não tenha feito, então estude esses tópicos que coloquei abaixo irão lhe ajudar.


https://www.mql5.com/pt/docs/series/iclose

https://www.mql5.com/pt/docs/array/arraysetasseries 

https://www.mql5.com/pt/docs/series/copyrates


E dai você vai reconstruindo seu código.... vai aprendendo outras coisas que vai facilitar ainda mais tipo o comando "For" que vai lhe economizar um monte de if´s... enfim, tem um monte de coisas para aprender pelo caminho pela frente. A principal dica que dou é só use conta PRODUTIVA somente após você ter segurança e confiança que seus códigos estão absolutamente corretos.


Escrevi o acima porque entendi que você não tem uma "pergunta" específica e sim apenas colou seu código para verificarmos se está correto ou não. A resposta é não está correto o seu código, mas sua lógica está indo por um caminho quase correto :)

Documentação sobre MQL5: Séries Temporais e Acesso a Indicadores / iClose
Documentação sobre MQL5: Séries Temporais e Acesso a Indicadores / iClose
  • www.mql5.com
[in]  Índice do valor recebido do timeseries (deslocamento - número especificado de barras atrás - em relação à barra atual). Valor do preço de fechamento da barra (indicado pelo parâmetro shift) do gráfico correspondente ou 0 no caso de erro. Para mais informações sobre o erro, deve-se chamar a função GetLastError(). A função sempre retorna...
Razão: