No para los desarrolladores de MT. ¿Por qué sustituir INIT_PARAMETERS_INCORRECT? - página 5

 
Сергей Таболин:

Ahora, la sustancia. He creado un archivo con cadenas legítimas. ¿Cómo lo utilizo ahora? Sospecho que debería ser a través de onTester, marcos... He mirado la documentación, pero algo no cuadra. No se sabe cómo tratarla.

Estoy pensando en leerlo en un array y tomar datos de él...

Creo que este problema se resuelve mejor de forma analítica. Hay que generar una cadena sobre la marcha, conociendo su índice. Busca en Google "Combinatoria. Parece que se resuelve a través del triángulo de Pascal. Al menos he resuelto este problema para buscar combinaciones, creo que habrá algo similar para las colocaciones.

En general, no tengo muy claro el objetivo de tu problema. ¿Por qué no se pueden repetir las funciones en la cadena?

 
Alexey Navoykov:

En general, no tengo muy claro el objetivo de tu tarea. ¿Por qué no se pueden repetir las funciones en cadena?

Bueno, si es así:

  • 11
  • 22

entonces, ¿por qué?

Y si es así:

  • 121
entonces el total sería como 21. Y una cadena de 21 repetiría ese resultado. Duplicación, tiempo extra para, en principio, carreras inútiles...

 
Сергей Таболин:

Si ese es el caso:

  • 11
  • 22

¿entonces qué sentido tiene?

Y si es así:

  • 121
entonces el total sería como 21. Y una cadena de 21 repetiría ese resultado. Duplicación, tiempo extra para, en principio, carreras inútiles...

Pensaba que el procesamiento de las funciones es secuencial, es decir, el resultado del cálculo de la primera función se pasa a la entrada de la segunda función, etc. ¿Y resulta que todo funciona de forma independiente? Entonces no está ni siquiera claro, qué estás optimizando ahí.

 
Сергей Таболин:

Se ha creado un archivo con las cadenas legítimas. ¿Cómo lo utilizo ahora? Sospecho que tienes que usar onTester, marcos...

Los marcos no tienen nada que ver. Utilice el archivo tester o COMMON. He aquí un ejemplo de trabajo.

 
Сергей Таболин:

No se trata de arquitectura. Se trata del conjunto de funciones y de cómo se aplican.

Proporcione más información sobre el papel de estas funciones en su programa (esta es la arquitectura en cuestión).

 

Funciones para definir las condiciones de entrada al mercado.

Realiza cadenas de lectura de un archivo por número de entrada. Comenzó la genética. Parece que funciona y no jode.

La única pregunta es: ¿las cadenas no están sistematizadas de ninguna manera y la genética encontrará la mejor variante? No los mira a todos. ¿No deberíamos empezar por ordenar el archivo resultante? ¿Cómo hacerlo?

 

He ordenado un archivo de texto. Ahora tengo que leer la cadena con la cadena, dividirla en componentes y llenar el array.

Pero al compilar, genera inmediatamente una advertencia, y no entiendo por qué...

//+------------------------------------------------------------------+
void OnTick()
{
//---
//--- считать цепочки из файла
   int chain[6];
   string   filenameF   = "KR\\func_KrL_sort.txt";
   string   filename    = "KR\\func_KrL_sort.bin";
   string   str, str_chain[];
   if(FileIsExist(filenameF,FILE_COMMON))
   {
      int filehandleF = FileOpen(filenameF,FILE_READ|FILE_TXT|FILE_COMMON);
      if(filehandleF != INVALID_HANDLE)
      {
         for(int f = 0; f <= 1953; f++)
         {
            ArrayInitialize(chain,0);
            FileReadString(filehandleF,str); // implicit conversion from 'string' to 'number'
            Print(str);
            StringSplit(str,",",str_chain);  // implicit conversion from 'string' to 'number'
            for(int i = 0; i <= 5; i++)
            {
               ArrayInitialize(chain,0);
               chain[i] = (int)StringToInteger(str_chain[i]); // array out of range
               Print(string(chain[0])+","+string(chain[1])+","+string(chain[2])+","+string(chain[3])+","+string(chain[4])+","+string(chain[5]));
            }
         }
         
         FileClose(filehandleF);
         ExpertRemove();
      }
   }
}
//+------------------------------------------------------------------+

Al iniciar el error dematriz fuera de rango

Contenido del archivo de texto:

1,0,0,0,0,0
1,2,0,0,0,0
1,2,3,0,0,0
1,2,3,4,0,0
1,2,3,4,5,0
1,2,3,4,5,6
1,2,3,4,6,0
1,2,3,4,6,5
1,2,3,5,0,0
1,2,3,5,4,0
...........
 

Rehecho:

//+------------------------------------------------------------------+
void OnTick()
{
//---
//--- считать цепочки из файла
   int chain[6];
   string   filenameF   = "KR\\func_KrL_sort.txt";
   string   filename    = "KR\\func_KrL_sort.bin";
   string   str, str_chain;
   if(FileIsExist(filenameF,FILE_COMMON))
   {
      int filehandleF = FileOpen(filenameF,FILE_READ|FILE_TXT|FILE_COMMON);
      if(filehandleF != INVALID_HANDLE)
      {
         for(int f = 0; f < 1953; f++)
         {
            ArrayInitialize(chain,0);
            str = FileReadString(filehandleF);
            //Print(str); // этот рисует всё как надо
            for(int i = 0, p = 0; i <= 5; i++, p += 2)
            {
               str_chain   = StringSubstr(str,p,1);
               chain[i]    = (int)StringToInteger(str_chain);
            }
         }
         
         FileClose(filehandleF);
         ExpertRemove();
      }
   }
}
//+------------------------------------------------------------------+
 
Сергей Таболин:

Pero la pregunta es: las cadenas no están sistematizadas de ninguna manera, ¿la genética encontrará la mejor opción? No mira todas las variantes. ¿No deberíamos empezar por ordenar el archivo? ¿Cómo lo hacemos?

Por supuesto que no. Primero hay que entender el algoritmo genético, entender qué son los genes.

Tu planteamiento, expresado en el primer post ("Yo, como usuario, quiero obtener un resultado, y me da igual cómo funcione") es absolutamente erróneo en este caso.

 
Alexey Navoykov:

Tu planteamiento, tal y como se ha expuesto en el primer post ("yo, como usuario, quiero resultados, y me importa un bledo cómo funcione") es completamente erróneo en este caso.

Mientras no haya una documentación clara y un tutorial de MK sobre su genética, es una burla exigir al usuario un conocimiento profundo de la genética. puede haber un gran número de implementaciones, por lo que incluso un conocimiento profundo de la genética no significa una optimización efectiva garantizada