Тестер по умолчанию стартует на одном символе.
Чтобы он начал моделировать цены по другим инструментам, надо явным образом добавлять символы в маркет вотч тестера. Грубый вариант такой:
for(int i=0;i<SymbolsTotal(false);i++) { string name = SymbolName(i,false); SymbolSelect(name,true); }Но учтите, что в результате можете получить пропорциональное замедление процесса тестирования. 10 дополнительных символов могут дать замедление в 10 раз.
Тестер по умолчанию стартует на одном символе.
Чтобы он начал моделировать цены по другим инструментам, надо явным образом добавлять символы в маркет вотч тестера. Грубый вариант такой:
Но учтите, что в результате можете получить пропорциональное замедление процесса тестирования. 10 дополнительных символов могут дать замедление в 10 раз.Ренат, спасибо, это я уже ручками потыкал, попробовал, понял...
Весь то прикол как раз в том, чтобы в "Обзоре..." выбрать нужные символы, по ним, и только по выбранным в окошке символам протестироваться, убрать ненужные (опять же в окошке), добавить недостающие - опять потестироваться, и потом - на торговлю. И все это без внесения изменений в исходники, без перекомпиляции. Ну вот, жизненный пример: у меня три различных профиля, в каждом профиле куча разных инструментов, чтобы потестировать многовалютный советник в каждом профиле, как Вы и писали, ручками в коде формирую портфели, компилю, тестю, а мог бы просто выбрал новый профиль - и тестю только на тех инструментах, который в профиле загружаются в "Обзор...".
И это цветочки, ягодки начинаются при общении с заказчиком, поди ж ему объясни, почему он должен сформировать и выслать мне абсолютно точные наименования инструментов, которые предоставляет брокер, и не перепутать диез с октоторпом, и для каждого портфеля теремболить мне: удали фьючи на афганку, добавь фьючи на пользованный памперс, хочу посмотреть на такой портфель...
По тексту прозвучало "...по умолчанию..." - и это значит, что кроме умолчаний есть и другие режимы старта тестера. Интересующий меня есть? Если да - как к нему получить доступ?
Речь идет об одиночном прогоне тестирования или об оптимизации параметров?
Если об одиночном тестировании, то включать символы можно как я указал в коде. Можно работать на символах, включенных в маркетвотче.
Если речь об переборе символов в опимизаторе, то есть специальный режим оптимизации "по всем символам, выбранным в Market Watch":
Тестер по умолчанию стартует на одном символе.
Чтобы он начал моделировать цены по другим инструментам, надо явным образом добавлять символы в маркет вотч тестера. Грубый вариант такой:
for(int i=0;i<SymbolsTotal(false);i++) { string name = SymbolName(i,false); SymbolSelect(name,true); }Но учтите, что в результате можете получить пропорциональное замедление процесса тестирования. 10 дополнительных символов могут дать замедление в 10 раз.
Как минимум в последнем билде у меня этот код не работал (верней подобный).
Специально сейчас добавил в блок инициализации данный код.
Результат в режиме тестирования (визуализация) прост - виден список всех символов, но при этом цены есть только у основной пары :(
Речь идет об одиночном прогоне тестирования или об оптимизации параметров?
Если об одиночном тестировании, то включать символы можно как я указал в коде. Можно работать на символах, включенных в маркетвотче.
Если речь об переборе символов в опимизаторе, то есть специальный режим оптимизации "по всем символам, выбранным в Market Watch":
Речь идет об одиночном прогоне тестирования или об оптимизации параметров?
Если об одиночном тестировании, то включать символы можно как я указал в коде. Можно работать на символах, включенных в маркетвотче.
Если речь об переборе символов в опимизаторе, то есть специальный режим оптимизации "по всем символам, выбранным в Market Watch":
Ренат, спасибо, это я уже ручками потыкал, попробовал, понял...
Весь то прикол как раз в том, чтобы в "Обзоре..." выбрать нужные символы, по ним, и только по выбранным в окошке символам протестироваться, убрать ненужные (опять же в окошке), добавить недостающие - опять потестироваться, и потом - на торговлю. И все это без внесения изменений в исходники, без перекомпиляции. Ну вот, жизненный пример: у меня три различных профиля, в каждом профиле куча разных инструментов, чтобы потестировать многовалютный советник в каждом профиле, как Вы и писали, ручками в коде формирую портфели, компилю, тестю, а мог бы просто выбрал новый профиль - и тестю только на тех инструментах, который в профиле загружаются в "Обзор...".
И это цветочки, ягодки начинаются при общении с заказчиком, поди ж ему объясни, почему он должен сформировать и выслать мне абсолютно точные наименования инструментов, которые предоставляет брокер, и не перепутать диез с октоторпом, и для каждого портфеля теремболить мне: удали фьючи на афганку, добавь фьючи на пользованный памперс, хочу посмотреть на такой портфель...
По тексту прозвучало "...по умолчанию..." - и это значит, что кроме умолчаний есть и другие режимы старта тестера. Интересующий меня есть? Если да - как к нему получить доступ?
Можно легко автоматизировать получение списка символов и ничего объяснять заказчику не нужно. Пусть запускает на нужном наборе. Полученный список можно легко:
- редактировать
- использовать в своем коде
Вот набросал за 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()); } } //+------------------------------------------------------------------+
Можно легко автоматизировать получение списка символов и ничего объяснять заказчику не нужно. Пусть запускает на нужном наборе. Полученный список можно легко:
- редактировать
- использовать в своем коде
Вот набросал за 3 минут, и результат
Рашид, Вы написали скрипт. Во вложении он же, но переделанный в эксперт. Не поленитесь, откройте в MarketWatch-е несколько инструментов и откройте хоть один график из выбранных инструментов. Киньте на любой график эксперт - посмотрите результат: в файле будут аккуратно перечислены все инструменты. Но это мне не интересно! Теперь изюминка: этот же эксперт загоните в тестер стратегий на одиночное тестирование. Напишите результат, что там за перечень инструментов у Вас в файле? Вот о чем был вопрос...
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Проблема. У меня в окошке "Обзор рынка" выбраны порядка десятка инструментов. В режиме торговли эксперт (многовалютный) видит все символы (и правильно выдает общее их число), в режиме тестера видит только один символ (который задал) и общее число символов - один. Так и должно быть, что в режиме тестера эксперт не видит "Обзор рынка"?
Я знаю, что если перечислить все символы ручками, эксперт обратится ко всем перечисленным символам. Но хочется символы для тестирования не прописывать ручками, а выбрать в окне "Обзор рынка".