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

 
Alexandr Sokolov:

no llega a los cálculos


aquí está la inicialización


Y aquí está la condición de prueba.

GRACIAS!!!!!))))) I Tf=false a propósito y......Forget . Oops

Todo funciona.
 
Alexey Viktorov:
En primer lugar, tenemos que decidir el número de valores en la segunda dimensión de la futura matriz. Ya ahora podemos ver que el número de elementos no es igual. Probablemente, deberíamos tomar el máximo uno y rellenar con ceros o -1, por ejemplo, donde sobran unos. Y no estaría de más definir de antemano la primera dimensión si se conoce. Y luego en el bucle anidado toma L1 y escribe todo lo que necesita en el array, luego la segunda iteración del bucle exterior escribe en el siguiente índice todo lo que hay en L2 y así sucesivamente.


Y, como es lógico, es mejor meterlo en una estructura.

Entonces el array podrá cambiar de dimensión en la primera y en la segunda dimensión. Es decir, será un array unidimensional en un array unidimensional.
Gracias por el vector.
 
stepystr:
Gracias por el vector.

De repente me salió una orden en la que también era más rentable escribir los parámetros en una cadena y usarla para crear un array de parámetros. Tenía que llevar la teoría a la práctica. Bueno, he ampliado mi tarea a la suya. He aquí un ejemplo que utiliza estructuras. Sólo en tus ejemplos al final de la lista de valores debes eliminar el carácter delimitador ";"

/********************************************************************\
|                                                             00.mq5 |
|                                            © 2020, Alexey Viktorov |
|                       https://www.mql5.com/ru/users/alexeyvik/news |
\********************************************************************/
#property copyright "© 2020, Alexey Viktorov"
#property link      "https://www.mql5.com/ru/users/alexeyvik/news"
#property version   "1.00"
struct TEST
 {
  double             s0[];
  double             s1[];
 } test[2];
string L1 = "1.15110;1.14105;1.13240;1.12370;1.11640;1.11170;1.10655;1.09895;1.08850;1.07850;1.06475";
string L2 = "1.32130;1.31030;1.29860;1.29042;1.27985;1.25605;1.24725;1.23565;1.22505;1.20815;1.20115;1.18850;1.16690;1.14465";
/********************Script program start function*******************/
void OnStart()
 {
  String_to_Array(L1, test[0].s0);
  String_to_Array(L2, test[1].s1);
  ArrayPrint(test[0].s0);
  ArrayPrint(test[1].s1);
 }/******************************************************************/

/********************************************************************/
void String_to_Array(string str, double &array[])
 {
  StringTrimRight(str);
  int index = INT_MAX;
  while(index > 0)
   {
    index = StringFind(str, ";");
    int i = ArraySize(array);
    ArrayResize(array, i+1);
    array[i] = StringToDouble(StringSubstr(str, 0, index));
    StringTrimLeft(str);
    str = StringSubstr(str, index+1);
   }
 };/*****************************************************************/
/*****************************End program****************************/
Archivos adjuntos:
00.mq5  4 kb
 
Alexey Viktorov:

De repente me encontré con una orden en la que también era más rentable escribir los parámetros en una cadena y utilizarla para crear una matriz de parámetros. Tenía que llevar la teoría a la práctica. Bueno, he ampliado mi tarea a la suya. He aquí un ejemplo que utiliza estructuras. Sólo en sus ejemplos, al final de la lista de valores, debe eliminar el carácter delimitador ";"

struct TEST
{
   double             s0[];
   double             s1[];
} test[2];
string L1 = "1.15110;1.14105;1.13240;1.12370;1.11640;1.11170;1.10655;1.09895;1.08850;1.07850;1.06475";
string L2 = "1.32130;1.31030;1.29860;1.29042;1.27985;1.25605;1.24725;1.23565;1.22505;1.20815;1.20115;1.18850;1.16690;1.14465";
/********************Script program start function*******************/
void OnStart()
{
   String_to_Array(L1, ';', test[0].s0);
   String_to_Array(L2, ';', test[1].s1);
   ArrayPrint(test[0].s0);
   ArrayPrint(test[1].s1);
}/******************************************************************/

/********************************************************************/
void String_to_Array(const string str, const ushort separator, double &result[])
{
   string s_arr[];
   if(StringSplit(str, separator, s_arr) <= 0)
   {
      ArrayResize(result, 0);
      Print(__FUNCTION__ + " Error converting !");
      return;
   }
   ArrayResize(result, ArraySize(s_arr));
   for(int i = ArraySize(result) - 1; i >= 0; i--)
      result[i] = StringToDouble(s_arr[i]);
}
 

sin cheques, incluso puede ir así

void String_to_Array(const string str, const ushort separator, double &result[])
{
   string s_arr[];
   StringSplit(str, separator, s_arr);
   for(int i = ArrayResize(result, ArraySize(s_arr)) - 1; i >= 0; i--)
      result[i] = StringToDouble(s_arr[i]);
}
 
Igor Makanu:

También es una opción. Resulta que tampoco he leído toda la documentación.

 
Alexey Viktorov:

También es una opción. Resulta que tampoco he leído toda la documentación.

StringSplit es una cosa genial, muy conveniente para analizar cadenas delimitadas

 
Hola a todos. Ayúdame a insertar una variable String en mi código. Gracias
ObjectCreate("ObjName11",OBJ_LABEL,0,0,0);
   ObjectSetText("ObjName11","|Direction: ="+ <String>   +"|Spread: ="+IntegerToString(Spread,0)+"|Today: ="+DoubleToStr(ATRToday,2)+"%" ,Size,"Verdana",Red);
   ObjectSet("ObjName11",OBJPROP_CORNER,infoCorner);
   ObjectSet("ObjName11",OBJPROP_XDISTANCE,0);
   ObjectSet("ObjName11",OBJPROP_YDISTANCE,120);
 
Carcass77:
Hola a todos. Ayúdame a insertar una variable de tipo String en el código. Gracias

¿Podría responder a su propia pregunta?

o ¿has recortado un trozo de código en alguna parte y no puedes usarlo? y tienes que adivinar lo que pasa al menos))

escriba arriba

string s;

y sustituir <Cadena> por s

pero no creo que ese sea el camino a seguir con este enfoque.

 
Igor Makanu:

¿Podría responder a su propia pregunta?

o ¿has recortado un trozo de código en alguna parte y no puedes usarlo? y tienes que adivinar lo que pasa al menos))

escriba arriba

y sustituir <Cadena> por s

pero creo que esta no es la solución con este enfoque

Mi indicador funciona, sólo se extiende.cadena s; se ha añadido.

Bien, me pondré a ello.