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

 
¿Cómo puedo trabajar con esto? Llevo dos días sentado aquí para nada. ¿Qué otra solución podría haber?
 
Pregunta por favor. en el manejador OnCalculate(...), las constantes del buffer open,high,low,close se desbordan para todo el historial un carácter a la vez, ¿qué debo hacer? Por ejemplo, quiero calcular el valor del array mas[i]= abrir[i] /cerrar[i] para todo el historial de un par y promediar este valor con otro carácter. He buscado en muchos temas, no hay mucho parecido. ¿Puede decirme dónde buscar?
 
Juer:
¿Cómo puedo trabajar con esto? Llevo dos días sentado aquí para nada. ¿Qué otra solución podría haber?

¿Y dónde has mostrado un ejemplo reproducible? Sólo nos das retazos de código. ¿Tenemos que compilarlos en código de trabajo a nuestra discreción? ¿Y si no adivinamos y necesitas el que no es?

 
Artyom Trishkin:

¿Y dónde has mostrado un ejemplo reproducible? Sólo das retazos de código. ¿Tenemos que vincularlos al código de trabajo a nuestra discreción? ¿Y si no adivinamos y necesitas lo que no es?

Bien, pero ¿cómo hacerlo correctamente no a través de un array de estructuras, sino a través de una clase CArrayObj, donde el objeto sería un objeto de tipo estructura? No entiendo muy bien cómo declarar y cómo añadir y ¿es esto posible?

 
Juer:

Bien, pero ¿cómo hacerlo correctamente no a través de un array de estructuras, sino a través de una clase CArrayObj, donde el objeto sería un objeto de tipo estructura? No entiendo muy bien cómo declarar y cómo añadir y ¿es esto posible?

Intente describir el problema en general, no en concreto: lo que quiere conseguir como resultado de tener tal o cual dato.

 
mwwm:
Pregunta por favor. en el manejador OnCalculate(...), las constantes del buffer open,high,low,close se desbordan para todo el historial un carácter a la vez, ¿qué debo hacer? Por ejemplo, quiero calcular el valor del array mas[i]= abrir[i] /cerrar[i] para todo el historial de un par y promediar este valor con otro carácter. He buscado en muchos temas, no hay mucho parecido. ¿Puede decirme dónde buscar?
¿Qué quiere decir con desbordamiento?
 
Дед пенсионер:
¿qué significa desbordamiento?

XAUUSD,Diario: array fuera de rango en ''2019.mq4' (243,6) da error durante los cálculos a través de las constantes enOnCalculate, y CopyOpen' - ninguna de las sobrecargas se puede aplicar a la llamada de la función cuando intento hacer como esto int prices1=CopyOpen(Symbol(),0,0,Bars(_Symbol,_Period),open); Es muy confuso organizar el acceso a los datos a través de estructuras, en qué momento OHLC toma todas las citas y luego sólo las nuevas, atascado en iOpen(,,,))


 
Juer:

Así que el error de acceso a la matriz no es válido.

No hay arrays ni cadenas en la estructura. Sólo bool, integer, double y enums.

Lo siento. Me puse un poco tonto. Por supuesto, tendrá que ser un poco más complicado:

bool CCandleRule::GetRulesArray(input_rule &rules_array[])
{
   int nArraySize = ArraySize(rules);
   if (ArraySize(rules_array) != nArraySize)
      if (ArrayResize(rules_array, nArraySize) != nArraySize)
         return false;

   for (int i = 0; i < nArraySize; ++i)
      rules_array[i] = rules[i];
      
   return true;
}

No es un vector, como en C++. Por eso es necesario copiar elemento por elemento. También tenemos que tener cuidado de hacer coincidir el tamaño del array original y el array de destino. Por eso la función no entra en una línea. Y no siempre se ejecutará con éxito. Por eso necesitamos devolver la confirmación de que se ha ejecutado con éxito.

 
mwwm:

XAUUSD,Diario: array fuera de rango en ''2019.mq4' (243,6) da error durante los cálculos a través de las constantes enOnCalculate, y CopyOpen' - ninguna de las sobrecargas se puede aplicar a la llamada de la función cuando intento hacer como esto int prices1=CopyOpen(Symbol(),0,0,Bars(_Symbol,_Period),open); Es muy confuso organizar el acceso a los datos a través de estructuras, en qué momento OHLC toma todas las citas y luego sólo las nuevas, atascado en iOpen(,,,))


No anula, y está accediendo a un índice inexistente.
 
Artyom Trishkin:
No se anula, y te diriges a un índice inexistente.

y cómo hacerlo correctamente?