Доступность перечня символов "Обзора рынка" в режиме тистирования

 

Проблема. У меня в окошке "Обзор рынка" выбраны порядка десятка инструментов. В режиме торговли эксперт (многовалютный) видит все символы (и правильно выдает общее их число), в режиме тестера видит только один символ (который задал) и общее число символов - один. Так и должно быть, что в режиме тестера эксперт не видит "Обзор рынка"?

Я знаю, что если перечислить все символы ручками, эксперт обратится ко всем перечисленным символам. Но хочется символы для тестирования не прописывать ручками, а выбрать в окне "Обзор рынка". 

 
Такая же проблема. Видит только тот символ на котором запускаешь прогон или все символы если запрашиваешь SymbolsTotal с флагом false.
 
Поседеть можно, если формируешь для тестирования портфель инструментов и вместо потыкать в окошке Обзора интересующие инструменты вынужден кодить ручками неимоверное число различных вариантов портфеля...
 

Тестер по умолчанию стартует на одном символе.

Чтобы он начал моделировать цены по другим инструментам, надо явным образом добавлять символы в маркет вотч тестера. Грубый вариант такой:

  for(int i=0;i<SymbolsTotal(false);i++)
    {
     string name = SymbolName(i,false);
     SymbolSelect(name,true);
    }
Но учтите, что в результате можете получить пропорциональное замедление процесса тестирования. 10 дополнительных символов могут дать замедление в 10 раз.
 
Renat:

Тестер по умолчанию стартует на одном символе.

Чтобы он начал моделировать цены по другим инструментам, надо явным образом добавлять символы в маркет вотч тестера. Грубый вариант такой:

Но учтите, что в результате можете получить пропорциональное замедление процесса тестирования. 10 дополнительных символов могут дать замедление в 10 раз.

Ренат, спасибо, это я уже ручками потыкал, попробовал, понял...

Весь то прикол как раз в том, чтобы в "Обзоре..." выбрать нужные символы, по ним, и только по выбранным в окошке символам протестироваться, убрать ненужные (опять же в окошке), добавить недостающие - опять потестироваться, и потом - на торговлю. И все это без внесения изменений в исходники, без перекомпиляции. Ну вот, жизненный пример: у меня три различных профиля, в каждом профиле куча разных инструментов, чтобы потестировать многовалютный советник в каждом профиле, как Вы и писали, ручками в коде формирую портфели, компилю, тестю, а мог бы просто выбрал новый профиль - и тестю только на тех инструментах, который в профиле загружаются в "Обзор...".

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

По тексту прозвучало "...по умолчанию..." - и это значит, что кроме умолчаний есть и другие режимы старта тестера. Интересующий меня есть? Если да - как к нему получить доступ? 

 

Речь идет об одиночном прогоне тестирования или об оптимизации параметров?

Если об одиночном тестировании, то включать символы можно как я указал в коде. Можно работать на символах, включенных в маркетвотче.

Если речь об переборе символов в опимизаторе, то есть специальный режим оптимизации "по всем символам, выбранным в Market Watch":


 
Renat:

Тестер по умолчанию стартует на одном символе.

Чтобы он начал моделировать цены по другим инструментам, надо явным образом добавлять символы в маркет вотч тестера. Грубый вариант такой:

  for(int i=0;i<SymbolsTotal(false);i++)
    {
     string name = SymbolName(i,false);
     SymbolSelect(name,true);
    }
Но учтите, что в результате можете получить пропорциональное замедление процесса тестирования. 10 дополнительных символов могут дать замедление в 10 раз.

Как минимум в последнем билде у меня этот код не работал (верней подобный).

Специально сейчас добавил в блок инициализации данный код.

Результат в режиме тестирования (визуализация) прост - виден список всех символов, но при этом цены есть только у основной пары :(

 
Renat:

Речь идет об одиночном прогоне тестирования или об оптимизации параметров?

Если об одиночном тестировании, то включать символы можно как я указал в коде. Можно работать на символах, включенных в маркетвотче.

Если речь об переборе символов в опимизаторе, то есть специальный режим оптимизации "по всем символам, выбранным в Market Watch":



Ммм, речь идет об одиночном тестировании... Т.е., как я понимаю, в одиночном тестировании многовалютного эксперта нет НИКАКОЙ возможности не формировать список инструментов вручную (неважно каим образом, важно то, что вручную), а просто меняя профили задавать этим самым и перечень символов, которые будут участвовать в одиночном тестировании?
 
Renat:

Речь идет об одиночном прогоне тестирования или об оптимизации параметров?

Если об одиночном тестировании, то включать символы можно как я указал в коде. Можно работать на символах, включенных в маркетвотче.

Если речь об переборе символов в опимизаторе, то есть специальный режим оптимизации "по всем символам, выбранным в Market Watch":

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

Ренат, спасибо, это я уже ручками потыкал, попробовал, понял...

Весь то прикол как раз в том, чтобы в "Обзоре..." выбрать нужные символы, по ним, и только по выбранным в окошке символам протестироваться, убрать ненужные (опять же в окошке), добавить недостающие - опять потестироваться, и потом - на торговлю. И все это без внесения изменений в исходники, без перекомпиляции. Ну вот, жизненный пример: у меня три различных профиля, в каждом профиле куча разных инструментов, чтобы потестировать многовалютный советник в каждом профиле, как Вы и писали, ручками в коде формирую портфели, компилю, тестю, а мог бы просто выбрал новый профиль - и тестю только на тех инструментах, который в профиле загружаются в "Обзор...".

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

По тексту прозвучало "...по умолчанию..." - и это значит, что кроме умолчаний есть и другие режимы старта тестера. Интересующий меня есть? Если да - как к нему получить доступ? 

Можно легко автоматизировать получение списка символов и ничего объяснять заказчику не нужно. Пусть запускает на нужном наборе. Полученный список можно легко:

  • редактировать
  • использовать в своем коде

Вот набросал за 3 минут, и результат


//+------------------------------------------------------------------+
//|                                     GiveMeCurrentMarketWatch.mq5 |
//|                        Copyright 2011, MetaQuotes Software Corp. |
//|                                https://www.mql5.com/ru/forum/4739 |
//+------------------------------------------------------------------+
#property copyright "Copyright 2011, MetaQuotes Software Corp."
#property link      "https://team.metaquotes.ru/email/view/599588"
#property version   "1.00"
#property script_show_inputs
//--- input parameters
input bool     fromMarketWatch=true;
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- всего символов
   int total=SymbolsTotal(fromMarketWatch);
   string list=" \r\n";
//--- соберем список символов
   for(int i=0;i<total;i++)
     {
      StringAdd(list,SymbolName(i,fromMarketWatch)+"\r\n");
     }
   Comment(list);

//--- запишем в файл  
   ResetLastError();
   int handle=FileOpen("MarketWatchSymbols.txt",FILE_WRITE);
   if(handle!=INVALID_HANDLE)
     {
      FileWrite(handle,list);
      FileClose(handle);
      Print("Symbols from MarketWatch have been saved");
     }
   else
     {
      PrintFormat("Error code=%d",GetLastError());
     }

  }
//+------------------------------------------------------------------+


Файлы:
 
Rosh:

Можно легко автоматизировать получение списка символов и ничего объяснять заказчику не нужно. Пусть запускает на нужном наборе. Полученный список можно легко:

  • редактировать
  • использовать в своем коде

Вот набросал за 3 минут, и результат



Рашид, Вы написали скрипт. Во вложении он же, но переделанный в эксперт. Не поленитесь, откройте в MarketWatch-е несколько инструментов и откройте хоть один график из выбранных инструментов. Киньте на любой  график эксперт - посмотрите результат: в файле будут аккуратно перечислены все инструменты. Но это мне не интересно! Теперь изюминка: этот же эксперт загоните в тестер стратегий на одиночное тестирование. Напишите результат, что там за перечень инструментов у Вас в файле? Вот о чем был вопрос...

Файлы:
Причина обращения: