Вопросы от "чайника" - страница 110

 
openlive:
2012.02.26 10:57:51 Tester quality of analyzed history is 100%
2012.02.26 10:57:51 Core 1 EURUSD,H1: testing of Experts\pattern10000.ex5 from 2009.12.01 00:00 to 2012.02.10 00:00 started
......

Вроде в логах всё красиво.  Всё же попробуйте поискать ошибку в эксперте.

При беглом осмотре кода, например, я обнаружил, что в программе используется 3 файла, а в пропертях указан только один.

  int handle16=FileOpen("signal10000.csv",FILE_WRITE|FILE_CSV,";");
  int handle17=FileOpen("signal10000.dat",FILE_WRITE|FILE_BIN,";"); 

#property tester_file "primer_massivstarihpatternovdlyaraboty.csv"

 

поменял код - теперь видна ошибка

 2012.02.26 11:24:56 Core 1 2009.12.01 00:00:00 error = 5004

ошибка открытия файла - хотя файл лежит в C:\ProgramData\MetaQuotes\Terminal\Common\Files и стоит #property tester_file "primer_massivstarihpatternovdlyaraboty.csv" и стоит флаг FILE_COMMON

Файлы:
 

Салют! Джентельмены подскажите пожалуйста. Пишу простой мультивалютный индикатор для отображения 2 инструментов(валютных пар) на одном графике. Подскажите через какую функцию обеспечить выбор и обработку данных для отрисовки по задаваемому инструменту. Если есть небольшой пример буду очень благодарен. Спасибо!

Сейчас у меня голый алгоритм индикации текущего графика выглядит так:

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],    
                const double &open[],     
                const double &high[],     
                const double &low[],      
                const double &close[])     
               
  {
   int  i=0;
   bool vol=true;

   if(i<prev_calculated) i=prev_calculated-1;

   while(i<rates_total && !IsStopped())
     {
      ExtCloseBuffer[i]=close[i];
      if(i>0)
         {
          if(close[i]>close[i-1]) vol=true;
          if(close[i]<close[i-1]) vol=false;
         }
    
      i++;
     }
   return(rates_total);
  }  

Построение мультивалютного индикатора с применением множества промежуточных индикаторных буферов
Построение мультивалютного индикатора с применением множества промежуточных индикаторных буферов
  • 2010.05.17
  • Alexey Klenov
  • www.mql5.com
В последнее время возрос интерес к кластерному анализу рынка FOREX. MQL5 открывает новые возможности исследования закономерностей движения валютных пар. Важным преимуществом MQL5, по сравнению с MQL4, является возможность использования неограниченного количества индикаторных буферов. В данной статье описан пример построения мультивалютного индикатора.
 
openlive:

поменял код - теперь видна ошибка

 2012.02.26 11:24:56 Core 1 2009.12.01 00:00:00 error = 5004

ошибка открытия файла - хотя файл лежит в C:\ProgramData\MetaQuotes\Terminal\Common\Files и стоит #property tester_file "primer_massivstarihpatternovdlyaraboty.csv" и стоит флаг FILE_COMMON

Если завтра не ответят, обратитесь в Сервисдеск с приложением файлов. Должны подсказать.
 
kandallov:

Салют! Джентельмены подскажите пожалуйста. Пишу простой мультивалютный индикатор для отображения 2 инструментов(валютных пар) на одном графике. Подскажите через какую функцию обеспечить выбор и обработку данных для отрисовки по задаваемому инструменту. Если есть небольшой пример буду очень благодарен. Спасибо!

Сейчас у меня голый алгоритм индикации текущего графика выглядит так:

...

Получать данные можно через структуру MqlRates или отдельно каждую из таймсерий Справочник MQL5 / Доступ к таймсериям и индикаторам

Через MqlRates лучше тк она хранит и данные о времени бара (это важно тк бары на разных инструментах разсинхронизированы), но через таймсерии экономнее.

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

Опять же придётся решать проблему разной длинны массивов (тк на разных инструментах разное количество данных).

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

Вот такие вот проблемки вырисовываются.

 
openlive:

посмотрел, поместил файл в Mql5\Tester\Files

но тестер просто стоит на месте 


Свойство #property tester_file предназначено именно для того, чтобы ручками ничего никуда не класть.

tester_file

string

Имя файла для тестера с указанием расширения, заключенное в двойные кавычки (как константная строка). Указанный файл будет передан тестеру в работу. Входные файлы для тестирования, если необходимы, должны указываться всегда


Если для работы программы требуется некоторый файл с данными  datafile.csv, который лежит в папке каталог_терминала\MQL5\Files, то файл будет автоматически перенесен тестером в каталог_агента_тестирования\MQL5\Files (для этого и необходимо указание  #property tester_file datafile.csv).

 
openlive:

поменял код - теперь видна ошибка

 2012.02.26 11:24:56 Core 1 2009.12.01 00:00:00 error = 5004

ошибка открытия файла - хотя файл лежит в C:\ProgramData\MetaQuotes\Terminal\Common\Files и стоит #property tester_file "primer_massivstarihpatternovdlyaraboty.csv" и стоит флаг FILE_COMMON

Ошибка видна, только не понятно к какому файлу относится

#property tester_file "primer_massivstarihpatternovdlyaraboty.csv"
//#property tester_file "signal10000.csv"
//#property tester_file "signal10000.csv"

Почему в пропертях закомментировал остальные файлы?  И кстати там ошибка: одинаковые расширения, хотя по тексту один из них "signal10000.dat".

У меня твоих файлов нет, поэтому проверяй сам.

 

Теперь - как найти эту злополучную папку каталог_агента_тестирования\MQL5\Files ? Начиная с Windows Vista система защиты и политика безопасности стали гораздо сложнее и способны запутать кого-угодно. Самый простой способ найти эту папку - спросить у тестера, он то точно знает где лежат агенты тестирования. В Журнале тестера по окончании тестирования всегда пишется путь к логам тестера, например:

2012.02.26 16:31:09     Core 1  connection closed
2012.02.26 16:31:09     Core 1  log file "C:\Program Files\MetaTrader 5 Alpari\Tester\Agent-127.0.0.1-3000\logs\20120226.log" written
2012.02.26 16:31:09     Core 1  EURUSD,H1: 1105951 ticks (4663 bars) generated within 3796 ms (total bars in history 10867, total time 3844 ms)
2012.02.26 16:31:09     Core 1  OnTester result 0

Значит, папка агента тестирования находится здесь - C:\Program Files\MetaTrader 5 Alpari\Tester\Agent-127.0.0.1-3000\logs\20120226.log.
 

 
MetaDriver:

В лоб не получится. Нельзя.  MetaQuotes Software Corp. против. // Я считаю что ошибочно, но им, возможно, виднее.

Есть один довольно трудоёмкий вариант - использовать режим математических расчётов. Если не слабо - попробуйте.

Что такое "режим математических расчётов"?
 
Rosh:

Теперь - как найти эту злополучную папку каталог_агента_тестирования\MQL5\Files ? Начиная с Windows Vista система защиты и политика безопасности стали гораздо сложнее и способны запутать кого-угодно. Самый простой способ найти эту папку - спросить у тестера, он то точно знает где лежат агенты тестирования. В Журнале тестера по окончании тестирования всегда пишется путь к логам тестера, например:

Значит, папка агента тестирования находится здесь - C:\Program Files\MetaTrader 5 Alpari\Tester\Agent-127.0.0.1-3000\logs\20120226.log.
 

теперь выдает 

2012.02.26 15:47:46 Tester file C:\Users\openlive\AppData\Roaming\MetaQuotes\Terminal\9C3619DDD286B60B1DB9B989A2FFC701\MQL5\Files\signal10000.csv open error [32]