Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 847

 

Consegui, mudei-o.

   uint n=0;

os erros desapareceram. Obrigado.

 
Sergey Voytsekhovsky:

Consegui, mudei-o.

os erros desapareceram. Obrigado.

Estes não são erros, são avisos.

Fórum sobre comércio, sistemas automatizados de comércio e testes estratégicos

Qualquer pergunta de novatos sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos

Artyom Trishkin, 2019.05.20 15:16

Quais são os tipos de variáveis n e period_find ? A coisa mais importante e não mostrou...

Experimente:

for(n=0; n<(int)period_find; n++)

E em geral - por que você declara uma variável de laço no nível do manipulador OnTick() ?

Você pode fazer desta maneira:

for(int n=0; n<(int)period_find; n++)

Você pode remover n declaração da OnTick() - não precisamos dela lá.


 
Artyom Trishkin:

Estes não são erros, são avisos.


Ótimo, eu vou consertar isso.

Se você não se importa que eu diga, por favor, me dê uma dica de como posso obter os valores dos preços sobre os quais as Setas foram criadas. Assumindo que eu já tenho seus índices. ???

 

Agora está amaldiçoando de uma maneira diferente:

'n' - identificador não declarado Test_iCustom.mq5 82 48

Provavelmente porque n é usado fora do laço, como um índice encontrado ???
 
         for(int n=0; n<(int)period_find; n++)
            {
               if(Buf_Arrow_Buy[n]!=EMPTY_VALUE)break;
            }
         Last_Arrow_Buy_volume = Buf_Arrow_Buy[n];
         Last_Arrow_Buy_index  = n;
 
Sergey Voytsekhovsky:

Ótimo, eu vou consertar isso.

Se você não se importa que eu diga, por favor, me dê uma dica de como posso obter os valores dos preços sobre os quais as Setas foram criadas. Assumindo que eu já tenho seus índices. ???

Ou iOpen(), ou CopyOpen(), ou CopyRates() se receber vários preços ao mesmo tempo.

Em minha opinião, no indicador as setas são colocadas no gráfico aos preços abertos das barras.

Документация по MQL5: Доступ к таймсериям и индикаторам / iOpen
Документация по MQL5: Доступ к таймсериям и индикаторам / iOpen
  • www.mql5.com
Значение цены открытия бара (указанного параметром shift) соответствующего графика или 0 в случае ошибки. Для получения дополнительной информации об ошибке необходимо вызвать функцию GetLastError(). Функция всегда возвращает актуальные данные, для этого она при каждом вызове делает запрос к таймсерии по указанным символу/периоду. Это означает...
 
Artyom Trishkin:

Ou iOpen(), ou CopyOpen(), ou CopyRates() se receber vários preços ao mesmo tempo.

Na minha opinião, o indicador coloca setas no gráfico a preços abertos de barras.

Sim, é o que diz ali:

SetArrow(prefix+"ChartArrowUP_"+TimeToString(time[i]),InpColorBullishArrow,time[i],open[i],(char)241,ANCHOR_TOP,InpArrowSize);

Vou tentariOpen().

E em vez de n acrescento outra variável, ou pode ser desta forma:?

   int n=0;
   
   if (CopyBuffer(CrossAD, 1, 0, period_find, Buf_Arrow_Buy) != period_find)
      {  
         Print("НЕ удалось правильно скопировать данные из 1-го буфера индикатора iCrossAD, error code %d",GetLastError());
         return;
      }
         for(n=0; n<(int)period_find; n++)
            {
               if(Buf_Arrow_Buy[n]!=EMPTY_VALUE)break;
            }
         Last_Arrow_Buy_volume = Buf_Arrow_Buy[n];
         Last_Arrow_Buy_index  = n;
         Print("Last_Arrow_Buy_volume = ",Last_Arrow_Buy_volume,", Last_Arrow_Buy_index = ",Last_Arrow_Buy_index);
 
Sergey Voytsekhovsky:

O escopo de uma variável de laço é limitado ao corpo do laço. Atribuir os valores necessários antes do intervalo:

//+------------------------------------------------------------------+
for(int i=0; i<(int)period_find; i++)
  {
   if(Buf_Arrow_Buy[i]!=EMPTY_VALUE)
     {
      Last_Arrow_Buy_volume = Buf_Arrow_Buy[i];
      Last_Arrow_Buy_index  = i;
      break;
     }
  }
//+------------------------------------------------------------------+
 
Artyom Trishkin:

O escopo de uma variável de laço é limitado ao corpo do laço. Atribuir os valores necessários antes do intervalo:

Entendi, funciona nos dois sentidos, sem advertências.

Por favor me diga como fazê-lo kosher, com cálculos no corpo do loop, antes dequebrar; ou é melhor tirar os cálculos do loop ???

 
Sergey Voytsekhovsky:

Entendi, funciona nos dois sentidos, sem advertências.

Por favor me diga o que é mais kosher, com cálculos no corpo do laço, antes dequebrar; ou é melhor tirar os cálculos do laço ???

Quais cálculos?

Razão: