Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 525

 
-Aleks-:
 Пусть будет string a="true";

как вариант через пользовательскую функцию

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

 

если строку читаешь из файла, то можно 

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

как вариант через пользовательскую функцию

 

если строку читаешь из файла, то можно  

Спасибо, интересное решение!

Мне прочесть надо из файла - мне делали класс на заказ, там хотелось ещё сделать функцию для bool значений, но я так понимаю, что с FileReadBool по аналогии ничего не выйдет?

 Класс по номеру столбца и ячейки возвращает значение. Фрагмент:

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

//| 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);

  }

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

 

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Ошибки, баги, вопросы

Nickolay72, 2016.02.29 13:56

Добрый день господа.Может кто сталкивался с такой проблемой,подскажите.Написал советника,на моем компе Вин7х32 работает без проблемм.Поставил на другой комп,Вин8х64.И ни фига он там не пашет.Мало того,что коряво все ставится,три раза переустанавливал,пока не убедился,что это MT4 так ставится на восьмерке,советника только через базу данных получается кинуть на место с флешки,а работать отказывается.В тесте все прекрасно,ордера ставятся.В работе улыбается сволочь,а работать отказывается.Как заставить его работать???

 
-Aleks-:

Спасибо, интересное решение!

Мне прочесть надо из файла - мне делали класс на заказ, там хотелось ещё сделать функцию для bool значений, но я так понимаю, что с FileReadBool по аналогии ничего не выйдет?

 Класс по номеру столбца и ячейки возвращает значение. Фрагмент:

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

//| 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]));
при такой записи конечно получите ошибку компиляции, так как в нее нужно передавать хендл файла.
 

Nickolay72, 2016.02.29 13:56

Добрый день господа.Может кто сталкивался с такой проблемой,подскажите.Написал советника,на моем компе Вин7х32 работает без проблемм.Поставил на другой комп,Вин8х64.И ни фига он там не пашет.Мало того,что коряво все ставится,три раза переустанавливал,пока не убедился,что это MT4 так ставится на восьмерке,советника только через базу данных получается кинуть на место с флешки,а работать отказывается.В тесте все прекрасно,ордера ставятся.В работе улыбается сволочь,а работать отказывается.Как заставить его работать???

Флешку нужно отформатировать под NTFS.
 
Sergey Gritsay:
при такой записи конечно получите ошибку компиляции, так как в нее нужно передавать хендл файла.

Вот и не ясно, почему для bool не сделали стандартный перевод из строки в значение.

В файле буду писать  0 и 1 , и сделаю проверку.

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

else return (false);

так будет работать?

 
-Aleks-:

Вот и не ясно, почему для bool не сделали стандартный перевод из строки в значение.

В файле буду писать  0 и 1 , и сделаю проверку.

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

else return (false);

так будет работать?

должно, вот эту строку

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

тоже замени на

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

должно, вот эту строку

тоже замени на

Спасибо! Испытаю.
 
Karputov Vladimir:

Nickolay72, 2016.02.29 13:56

Флешку нужно отформатировать под NTFS.
Флешка отформатирована,терминал настроен на автоматическую торговлю,советник включен-не торгует.