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

 
Seric29:

Tengo una idea para escribir una función que tome y desplace un array. La pregunta es cómo hacer esta función para que ella misma determine qué tipo de array es unidimensional o bidimensional, de manera que no tenga que especificar en los argumentos cada vez que el array es bidimensional o regular. Al mismo tiempo, quiero aplicar una plantilla, para no tener que especificar el tipo de la matriz.

¿Cómo puedo hacer que no tenga que especificar el tipo de matriz?

Haz una sobrecarga:

template<typename T>
void MoveArray(T &array1[][]) // 2ух мерный.
{
// тело
}
template<typename T>
void MoveArray(T &array1[])// одномерный.
{
// тело
}
 
Ilya Prozumentov:

Sobrecarga para hacer:

¿La segunda dimensión puede ser dinámica?
 
Alexey Viktorov:
¿La segunda dimensión puede ser dinámica?

No es dinámico, sólo se escribe como un argumento recibido, sólo hay que poner corchetes.

 

¿Cómo puedo implementar en un bucle (o algo más) la enumeración de las posibles variantes de la condición?


Por ejemplo, hay 2 indicadores MA y MACD, es decir, representan 3 posibles variantes de condición:

1 opción - if(iMA ...) {...};

2º escenario - if(iMACD ...) {...};

variante 3 - if(iMA ... iMACD ...) {...};


Es fácil combinar los parámetros de entrada, pero ¿cómo combinar las condiciones? Esto es especialmente útil si hay más de 2 indicadores o fórmulas


Indique los enlaces a los ejemplos, si están disponibles

 
Alexandr Sokolov:

¿Cómo implementar en un bucle (o de alguna otra manera) la enumeración de posibles variantes de condiciones?

Si he entendido bien, la respuesta se puede encontrar en el tema.

 

Hola de nuevo, de nuevo no entiendo algo obvio.

Entonces, ¿cómo pasar un array a una función después de todo?

double b[5]={1,2,3,4,5};
void OnStart()
  {
//---
Func(b[]);

  }
//+------------------------------------------------------------------+
void Func(double &a[])
      {
         Alert(a[3]);
      }

Errores:
']' - expresión esperada
'b' - conversión de parámetros no permitida

Supongamos que sé cómo eliminar el primer error:

Func(b[3]);

Pero en este caso qué, ¿sólo se pasará el tercer elemento? No tiene sentido.
¿Cómo puedo pasar la matriz como un todo?
Gracias.

 
Mikhail Sobolev:

Hola de nuevo, de nuevo no entiendo algo obvio.

Entonces, ¿cómo pasar un array a una función después de todo?

Errores:
']' - expresión esperada
'b' - conversión de parámetros no permitida

Supongamos que sé cómo eliminar el primer error:

Pero en este caso qué, ¿sólo se pasará el tercer elemento? No tiene sentido.
¿Cómo puedo pasar la matriz como un todo?
Gracias.

Func(b);
 
int OnCalculate (const int rates_total,      // размер массива price[] 
                 const int prev_calculated,  // обработано баров на предыдущем вызове 
                 const int begin,            // откуда начинаются значимые данные 
                 const double& price[]       // массив для расчета 
                );

Por favor, explique la mecánica de la variable comenzar


Este enlace parece tener informaciónhttps://www.mql5.com/ru/docs/basis/function/events, pero o no lo entiendo o no lo he encontrado. No puedo entender cuál es el valor por defecto al principio y cómo cambia a medida que pasan los ciclos en los indicadores


Por ejemplo, sé que return() dentro de la función OnCalculate() asigna el valor de retorno a la variable prev_calculated y se utilizará en los cálculos en la siguiente llamada de OnCalculate(), es decir, en el siguiente tick


Por favor, describa con las mismas palabras sencillas la mecánica de la variable begin dentro de la función OnCalculate()

Документация по MQL5: Основы языка / Функции / Функции обработки событий
Документация по MQL5: Основы языка / Функции / Функции обработки событий
  • www.mql5.com
В языке MQL5 предусмотрена обработка некоторых предопределенных событий. Функции для обработки этих событий должны быть определены в программе MQL5: имя функции, тип возвращаемого значения, состав параметров (если они есть) и их типы должны строго соответствовать описанию функции-обработчика события. Именно по типу возвращаемого значения и по...
 

Buenas tardes.

Me pueden decir por qué la función OnTick no escribe datos en el archivo usando este código:

//=== escribir datos en un archivo ===

h1=FileOpen("test_bar.csv",FILE_CSV|FILE_WRITE|FILE_READ,",");

FileSeek(h1, 0, SEEK_END);

FileWrite(h1, TimeToStr(Time[1],TIME_DATE|TIME_MINUTES),i,Open[1],High[1],Low[1],Close[1], Parabola57Up, ");

FileClose(h1);


Y eso es durante las pruebas de historia. Cuando el Asesor Experto está trabajando en línea, sigue grabando.

Gracias

 
Alexandr Sokolov:

¿Cómo puedo implementar en un bucle (o algo más) la enumeración de las posibles variantes de la condición?


Por ejemplo, hay 2 indicadores MA y MACD, es decir, representan 3 posibles variantes de condición:

1 opción - if(iMA ...) {...};

2º escenario - if(iMACD ...) {...};

variante 3 - if(iMA ... iMACD ...) {...};


Es fácil combinar los parámetros de entrada, pero ¿cómo combinar las condiciones? Esto es especialmente útil si hay más de 2 indicadores o fórmulas


Dame algunos enlaces a ejemplos si los tienes.

Quiero haceruna auto-optimización, pero no sólo por los parámetros de entrada de los indicadores. Lo entiendo

Pero, ¿cómo hacer unbuclede condiciones? Porejemplo, hay 3 indicadores (no consideramos la selección de parámetros de entrada en el bucle para simplificar) y son 7 posibles combinaciones de condiciones/combinaciones

Por ejemplo, las tres primeras condiciones tienen un indicador
1) if(indicator #1 ...) {...};
2) if(indicator #2 ...) {...};
3) if(indicator #3....) {...};

Las segundas tres condiciones sobre dos indicadores son
4) if(#1... && #2 ...) {...};
5) if(#1 ... && #3 ...) {...};
6) if(#2 ... && #3 ...) {...};

Y en la última séptima condición los tres indicadores disponibles
7) if(#1 ... && #2 ... && #3 ...) { ...};

Y si también es posible, sería bueno hacer un bucle con la enumeración de condiciones lógicas. Por ejemplo, no escriba && || > < == y así sucesivamente, sino un bucle

. Estaría bien si pudiéramos escribir todas las variantes posibles manualmente y el EA combinara y comprobara todas las variantes posibles de los parámetros de entrada, indicadores combinados o individuales y condiciones lógicas.

Razón de la queja: