Почему то не открывается файл.

 

Я предполагал, что из скрипта функция FrameNext()  работать не будет, но всё равно решил попробовать. 

Оказалось, нормально работает, всё открывает и читает. Ну разве не замечательно ?

Но не долго музыка играла, когда почти дописал скрипт, эта функция перестала работать. Обидненько. Попытался понять, в каких случаях она работает, но так и не выяснил.

То она срабатывает если скрипт запустить сразу после оптимизации, то после перезагрузки терминала. В общем пришлось отказаться от использования этой функции вне OnTesterDeinit(), там она стабильно работает.

Было бы удобнее если бы эта функция работала так же как функции для файлов.


Но как оказалось это не всё. Никак не получается открыть файл с записанными фреймами, функциями для чтения файлов. 

Подскажите почему?


Так пытался открыть файл

//+------------------------------------------------------------------+
void OnStart()
  {
   string Folder = "Tester\\";
   string FileName;
   long search_handle = FileFindFirst(Folder + "*.mqd", FileName);
   do
      FileName = Folder + FileName;
   while(FileFindNext(search_handle, FileName));

   int handle = FileOpen(FileName, FILE_READ | FILE_SHARE_READ | FILE_BIN);
   if(handle != INVALID_HANDLE)
      PrintFormat("Не удалось открыть файл %s", FileName);
   else
      PrintFormat("Вау!!! Файл %s открылся", FileName);
   FileClose(handle);
  }
//+------------------------------------------------------------------+


Так у меня то работала, то не работала   FrameNext() .

//+------------------------------------------------------------------+
void OnStart()
  {
   ulong  pass   = -1;    // Номер прохода в оптимизации, на котором добавлен фрейм
   string name   = "";    // Публичное имя/метка фрейма
   long   id     = 0;     // Публичный id фрейма
   double val    = 0.0;   // Одиночное числовое значение фрейма
   double data[];         // Массив

   FrameFirst();
   while(FrameNext(pass, name, id, val, data) && !IsStopped())
     {
      PrintFormat("pass %d, name: %s, id: %d, val: %f", pass, name, id, val);
      ArrayPrint(data);
     }
  }
//+------------------------------------------------------------------+

Файл с фреймами лежит там где должен лежать ,  MQL5 --> Files --> Tester --> Terminator_SB_v1.03.EURUSD.M1.0.mqd

У меня нет вопроса почему  FrameNext() не работает из скрипта. Мне интересно, почему она иногда там работает).

Документация по MQL5: Файловые операции / FileOpen
Документация по MQL5: Файловые операции / FileOpen
  • www.mql5.com
FileOpen - Файловые операции - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Потрясающей! Это же надо до такого додуматься!!!
 
Aleksandr Slavskii:

Ну чья бы корова мычала...

И что такого? Это травмировало вашу психику?

 
Dmitry Fedoseev:

И что такого? Вас это травмировало?

Дмитрий, это форум и вопросы здесь задаются для того, чтоб получить ответ, а не для того, чтоб просто клаву понасиловать, потому что скучно.

Ответа в вашем комменте я не увидел, а вот подъ*б был.  

Зачем вам это? 


Я предлагаю удалить все наши комменты, не относящиеся к теме вопроса. 

 
Зачем обсуждать глупости?
 

Господа, может кому не лень, пожалуйста проверьте, открывается ли у вас файл      имя_советника.mqd.  Может быть у меня с компьютером, что то не так.

Библиотека https://www.mql5.com/ru/code/25296  от   fxsaber   у меня тоже не работает.   

Просто вставьте это в код советника и запустите оптимизацию.  Файл с фреймами должен записаться, потом скрипт, что выше и напишите, что он пишет.

double OnTester()
  {
   double data[5] = {1, 2, 3, 4, 5};
   FrameAdd("test", 1, 3.14, data);
   return(0);
  }

Пожалуйста.

Frames
Frames
  • www.mql5.com
Чтение фреймов из mqd-файлов результатов Оптимизации.
 

Dmitry Fedoseev:

И что такого? Это травмировало вашу психику?

Зачем обсуждать глупости?

Нет не травмировало, просто я вам указал на то, что вы тоже иногда пишите глупости. 

Но почему то себе в глупостях вы не отказываете, а других тролите.

 
Aleksandr Slavskii:

Нет не травмировало, просто я вам указал на то, что вы тоже иногда пишите глупости. 

Но почему то себе в глупостях вы не отказываете, а других тролите.

Э/то не была глупость, это была вам доставленная радость.

 
Dmitry Fedoseev:

Э/то не была глупость, это была вам доставленная радость.

Дмитрий, раз у вас есть время писать колкости, может вы мне ответите.  Лично у вас  .mqd  файл открывается?

Как его читать, это другой вопрос, я его не задаю. У меня уже на стадии FileOpen, выдаёт ошибку. 

Мне просто надо знать, это проблема моего компа или так и задумано разработчиками.

 
Aleksandr Slavskii:

То она срабатывает если скрипт запустить сразу после оптимизации, то после перезагрузки терминала. В общем пришлось отказаться от использования этой функции вне OnTesterDeinit(), там она стабильно работает.

У меня нет вопроса почему  FrameNext() не работает из скрипта. Мне интересно, почему она иногда там работает).

Работа с фреймами, как я понимаю, использует какие-то весьма тонкие системные механизмы, и я лично использовал ее исключительно в OnTesterDeinit(). 

То, что функция иногда может работать в недокументируемых режимах... ну... любая сложная система может иметь какие-то непредвиденные режимы работы... Но, на мой взгляд, правильнее будет не использовать их. 

 
   if(handle != INVALID_HANDLE)
      PrintFormat("Не удалось открыть файл %s", FileName);
   else
      PrintFormat("Вау!!! Файл %s открылся", FileName);

!= замените на ==