Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 847

 

Lo tengo, lo he cambiado.

   uint n=0;

los errores han desaparecido. Gracias.

 
Sergey Voytsekhovsky:

Lo tengo, lo he cambiado.

los errores han desaparecido. Gracias.

No son errores, son advertencias.

Foro sobre comercio, sistemas de comercio automatizados y pruebas de estrategias

Cualquier pregunta de los novatos sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos

Artyom Trishkin, 2019.05.20 15:16

¿Cuáles son los tipos de variables n y period_find? Lo más importante y que no se mostró...

Pruébalo:

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

Y en general - ¿por qué declarar una variable de bucle en el nivel del manejador OnTick() ?

Puedes hacerlo así:

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

Puedes eliminar la declaración n de OnTick() - no la necesitamos allí.


 
Artyom Trishkin:

No son errores, son advertencias.


Genial, lo arreglaré.

Si no te importa que lo diga, por favor, dame una pista de cómo puedo obtener los valores de los precios en los que se crearon las Flechas. Suponiendo que ya tenga sus índices. ???

 

Ahora está maldiciendo de una manera diferente:

'n' - identificador no declarado Test_iCustom.mq5 82 48

Probablemente porque n se utiliza fuera del bucle, como í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:

Genial, lo arreglaré.

Si no te importa que lo diga, por favor, dame una pista de cómo puedo obtener los valores de los precios en los que se crearon las Flechas. Suponiendo que ya tenga sus índices. ???

O iOpen(), o CopyOpen(), o CopyRates() si se obtienen varios precios a la vez.

En mi opinión, en el indicador las flechas se colocan en el gráfico en los precios de apertura de las barras.

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

O iOpen(), o CopyOpen(), o CopyRates() si se obtienen varios precios a la vez.

En mi opinión, el indicador pone flechas en el gráfico en los precios de apertura de las barras.

Sí, ahí lo dice:

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

Probaré coniOpen().

Y en lugar de n añado otra variable, o puede ser así:?

   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:

El alcance de una variable de bucle se limita al cuerpo del bucle. Asigne los valores necesarios antes de la pausa:

//+------------------------------------------------------------------+
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:

El alcance de una variable de bucle se limita al cuerpo del bucle. Asigne los valores necesarios antes de la pausa:

Lo tengo, funciona en ambos sentidos, sin advertencias.

Por favor, dime si es más kosher, con los cálculos en el cuerpo del bucle, antes dela ruptura; o es mejor sacar los cálculos fuera del bucle?

 
Sergey Voytsekhovsky:

Lo tengo, funciona en ambos sentidos, sin advertencias.

Por favor, dígame qué es más kosher, con los cálculos en el cuerpo del bucle, antes dela pausa; o es mejor sacar los cálculos fuera del bucle?

¿Qué cálculos?

Razón de la queja: