Как запустить платный индикатор из Маркета в тестере стратегий - страница 2

 
Dima_S:

через 2-3 дня с момента скачивания.

как определить???
 
Rosh:

Я правильно понимаю, что теперь для того чтоб индикатор отображался в визуале не нужна процедура

#property tester_indicator

а сама подстановка

#define market_indicator

является обычной макроподстановкой и само имя market_indicator не является зарезервированным?

Перефразируя вопрос: имя индикатора можно задать из input переменной?

Документация по MQL5: Основы языка / Переменные / Input переменные
Документация по MQL5: Основы языка / Переменные / Input переменные
  • www.mql5.com
Основы языка / Переменные / Input переменные - Документация по MQL5
 
Urain:

является обычной макроподстановкой и само имя market_indicator не является зарезервированным?

Перефразируя вопрос: имя индикатора можно задать из input переменной?


Можно, но все равно получится не очень. Как-то так:

#property tester_indicator "Market\\Uniform_Moving_Price_Range_demo"
//--- input parameters
input string indicator_name="Uniform_Moving_Price_Range_demo";
int         indicator_handle;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- подготовим имя индикатора с учетом пути к нему
   string path_name="Market\\"+indicator_name;
//--- попытка создания индикатора
   indicator_handle=iCustom(_Symbol,_Period,path_name);
//--- если хэндл оказалася невалидным, значит проблемы с индикатором
   if(indicator_handle==INVALID_HANDLE)
     {
      Print("Не удалось создать индикатор ",indicator_name,". Ошибка ",GetLastError());
      return(-1);
     }
//--- инициализация прошла умпешно, вернем 0
   return(0);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---

  }
//+------------------------------------------------------------------+
 
Urain:

Перефразируя вопрос: имя индикатора можно задать из input переменной?

Было бы удобней, да.

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

Пусть такой эксперт будет закрытым (исходники чайников не интересуют) - главное что будет удобно.

 
Rosh:

Можно, но все равно получится не очень. Как-то так:

Ваш пост приобретает смысл если директиву

#property tester_indicator

всё ещё в обязательном порядке нужно применять, для того чтоб индикатор вызывался в тестере.

Но в коде топикстартера я такой директивы не обнаружил поэтому и задал вопрос.

теперь вам отдуваться: что это баг кода топикстартера или отмена обязательности директивы?


 
Urain:

Ваш пост приобретает смысл если директиву

всё ещё в обязательном порядке нужно применять, для того чтоб индикатор вызывался в тестере.

Но в коде топикстартера я такой директивы не обнаружил поэтому и задал вопрос.

теперь вам отдуваться: что это баг кода топикстартера или отмена обязательности директивы?


Читаем внимательно справку https://www.mql5.com/ru/docs/basis/preprosessor/compilation :

tester_indicator

string

Имя пользовательского индикатора в формате "имя_индикатора.ex5". Необходимые для тестирования индикаторы определяются автоматически из вызова функций iCustom(), если соответствующий параметр задан константной строкой. Для остальных случаев (использование функции IndicatorCreate() или использование неконстантной строки в параметре, задающем имя индикатора) необходимо данное свойство

Документация по MQL5: Основы языка / Препроцессор / Свойства программ (#property)
Документация по MQL5: Основы языка / Препроцессор / Свойства программ (#property)
  • www.mql5.com
Основы языка / Препроцессор / Свойства программ (#property) - Документация по MQL5
 
Rosh:

Читаем внимательно справку https://www.mql5.com/ru/docs/basis/preprosessor/compilation :


А нельзя человеческим языком ответить:

топикстартер ошибся исправим

или

нет ошибки нет, директива tester_indicator больше не нужна

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


 
Urain:

А нельзя человеческим языком ответить:

топикстартер ошибся исправим

или

нет ошибки нет, директива tester_indicator больше не нужна

1. Нет,  я не ошибся.

2. Директива #property tester_indicator по-прежнему нужна в случае (далее почти цитата из справки) "использования функции IndicatorCreate() или использования неконстантной строки в параметре, задающем имя индикатора"

 
Urain:

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

Я конкретно показал место из справки и даже выделил нужное, чтобы не было домыслов. Неужели из этого не видно, что в каких-то случаях директива нужна, а в каких-то нет? Например, если используем функцию iCustom() и передаем ей имя в виде строковой константы или макроса.
Документация по MQL5: Основы языка / Типы данных / Тип string
Документация по MQL5: Основы языка / Типы данных / Тип string
  • www.mql5.com
Основы языка / Типы данных / Тип string - Документация по MQL5
 
Urain:

Необходимо прямое указание имени индикатора в тексте эксперта. Именно из-за этого универсального варианта эксперта не получиться. 

Причина обращения: