Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 525

 
-Aleks-:
Que se utilice la cadena a="true";

alternativamente a través de una función personalizada

bool StrToBool(string text)
{
 if(text=="true")return(true);
 if(text=="false")return(false);
}

si se lee la cadena desde un archivo, se puede

bool  FileReadBool( 
   int  file_handle      // handle файла 
   );
 
Sergey Gritsay:

alternativamente a través de una función personalizada

si se lee la cadena desde un archivo, se puede

Gracias, ¡una solución interesante!

Necesito leer de un archivo - tenía una clase personalizada hecha, quería hacer una función para valores bool, pero entiendo que FileReadBool no funcionará por analogía?

La clase devuelve un valor por columna y número de celda. Extracto:

//+------------------------------------------------------------------+

//| GetDoubleValue                                                   |

//+------------------------------------------------------------------+

double CSVReader::GetDoubleValue(int row,int column)

  {

   if(CheckIndexes(row,column)==false) return(0.0);

//---

   int index=m_total_columns*row+column;

   if((index>=0) && (index<ArraySize(m_cells)))

     {

      return(StringToDouble(m_cells[index]));

     }

   return(0.0);

  }

//+------------------------------------------------------------------+

//+------------------------------------------------------------------+

//| GetBoolValue                                                   |

//+------------------------------------------------------------------+

double CSVReader::GetBoolValue(int row,int column)

  {

   if(CheckIndexes(row,column)==false) return(0.0);

//---

   int index=m_total_columns*row+column;

   if((index>=0) && (index<ArraySize(m_cells)))

     {

      return(FileReadBool(m_cells[index]));

     }

   return(0.0);

  }

//+------------------------------------------------------------------+

 

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

Bichos, errores, preguntas

Nickolay72, 2016.02.29 13:56

Buenas tardes señores, quizás alguien se haya enfrentado a un problema así, aconsejen.He escrito un asesor en mi equipo Win7x32 funciona sin ningún problema, pero lo puse en otro equipo, Win8x64, y no va a funcionar. No sólo que todo torpemente instalado, tres veces reinstalar, hasta que se convenció de que la MT4 se instala en el octavo, el asesor sólo a través de la base de datos puede ser lanzado en su lugar desde una unidad flash, y funciona se niega.

 
-Aleks-:

Gracias, ¡una solución interesante!

Necesito leer de un archivo - tenía una clase hecha a la medida, quería hacer una función para valores bool allí, pero entiendo que FileReadBool no funcionará por analogía?

La clase devuelve un valor por columna y número de celda. Extracto:

//+------------------------------------------------------------------+

//| GetDoubleValue                                                   |

//+------------------------------------------------------------------+

double CSVReader::GetDoubleValue(int row,int column)

  {

   if(CheckIndexes(row,column)==false) return(0.0);

//---

   int index=m_total_columns*row+column;

   if((index>=0) && (index<ArraySize(m_cells)))

     {

      return(StringToDouble(m_cells[index]));

     }

   return(0.0);

  }

//+------------------------------------------------------------------+

//+------------------------------------------------------------------+

//| GetBoolValue                                                   |

//+------------------------------------------------------------------+

double CSVReader::GetBoolValue(int row,int column)

  {

   if(CheckIndexes(row,column)==false) return(0.0);

//---

   int index=m_total_columns*row+column;

   if((index>=0) && (index<ArraySize(m_cells)))

     {

      return(FileReadBool(m_cells[index]));

     }

   return(0.0);

  }

//+------------------------------------------------------------------+

return(FileReadBool(m_cells[index]));
Cuando lo escribas así, por supuesto, obtendrás un error de compilación, ya que necesitas pasarle el manejador del archivo.
 

Nickolay72, 2016.02.29 13:56

Добрый день господа.Может кто сталкивался с такой проблемой,подскажите.Escribí un EA, en mi ordenador Win7x32 funciona sin problemas.Lo puse en otro ordenador, Win8x64, y no funciona.No sólo es un lío de instalación, lo reinstalé tres veces, hasta que me convencí de que MT4 lo instala en 8, EA sólo a través de la base de datos, puedo ponerlo en su lugar desde el pendrive, pero no funciona.Todo en la prueba, las órdenes se ponen.En el trabajo sonríe el cabrón, pero se niega a trabajar.¿Cómo hacer que funcione???

La unidad flash debe estar formateada como NTFS.
 
Sergey Gritsay:
Por supuesto, obtendrás un error de compilación cuando lo escribas de esa manera, porque tienes que pasarle el manejador del archivo.

No está claro por qué no hicieron una traducción estándar de cadena a valor para bool.

Escribiré 0 y 1 en el archivo y haré una comprobación.

if ( StringToDouble(m_cells[index])==1 ) return (true);

else return (false);

¿Funcionará?

 
-Aleks-:

No está claro por qué no hicieron una traducción estándar de cadena a valor para bool.

Escribiré 0 y 1 en el archivo y haré una comprobación.

if ( StringToDouble(m_cells[index])==1 ) return (true);

else return (false);

¿funcionará?

debería, reemplazar esta línea aquí

double CSVReader::GetBoolValue(int row,int column)

también cambiarlo por

bool CSVReader::GetBoolValue(int row,int column)
 
Sergey Gritsay:

debería, esta línea de aquí.

también sustituir esta línea por

Gracias. Lo intentaré.
 
Karputov Vladimir:

Nickolay72, 2016.02.29 13:56

La unidad flash debe ser formateada como NTFS.
El pendrive está formateado, el terminal está configurado para operar en automático, el EA está activado - no opera.