Мультивалютное тестирование. А нужна там такая синхронизация истории?

 

Мультивалютное тестирование. А нужна там такая синхронизация истории?


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

Для иллюстрации приведу простой простой пример, на мой взгляд излишней инициативы тестера (читай те совсем удачного алгоритма, на мой взгляд):


Условия задачи

Существует массив типа string, в котором хранятся имена всех валютных пар по которым может торговать МТС. Необходимо получить имена всех валют существующих в конкретном ДЦ (в динамический массив), после чего сравнить два списка и по результатом сформировать окончательный список валют которыми будет торговать эксперт.


Реализация

Не вдаваясь в подробности скажу что список валютных пар ДЦ формируется примерно вот так

int OnInit()
{
//----------------------------------------------------------------------------//
//Служебные переменные
string MarketWatchSymbol; //Имя символа
//----------------------------------------------------------------------------//
  for(int f=0;f<SymbolsTotal(false);f++)
  //осуществляем перебор всех символов в MarketWatch
  {
  //Получаем имя символа по его номеру в MarketWatch
  MarketWatchSymbol = SymbolName(f,false);
  //Формируем список валютных пар ДЦ
  ...................................................................
  ...................................................................
  ...................................................................
  }
//----------------------------------------------------------------------------//
return(0);
//----------------------------------------------------------------------------//

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

Остается только один вопрос - А нафига тестер подгружает историю по всем символам, его об этом просили (ведь эксперт просто поинтересовался какие символы торгуются в ДЦ)?


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

К таким действиям на мой взгляд следует отнести: перебор символов, запрос отдельных свойств данных символов (размер спреда и свопов; минимальный и максимальный лоты; шаг и других).


PS

На мой взгляд принудительную синхронизацию в тестере нужно оставить только при явном использовании торговых операций и запроса текущих цен (Ask, Bid и Last), возможно еще в некоторых исключительных случаях.
Документация по MQL5: Основы языка / Типы данных / Объект динамического массива
Документация по MQL5: Основы языка / Типы данных / Объект динамического массива
  • www.mql5.com
Основы языка / Типы данных / Объект динамического массива - Документация по MQL5
 

зачем вообще формировать список пар ДЦ?

почему просто не проверить наличие символа через SymbolSelect?

 
space_cowboy:

зачем вообще формировать список пар ДЦ?

почему просто не проверить наличие символа через SymbolSelect?

1.

А кто сказал что EUR будет всегда указываться как EURUSD?

А кто сказал что определенная пара торгуется в ДЦ?


2. Тут я немного не так выразился, перебрать то нужно не символы в ОБЗОРЕ РЫНКА, а все символы ДЦ. При этом SymbolSelect() как я понимаю всего лишь управляет выбором символа в ОБЗОРЕ РЫНКА самого терминала (при этом сомневаюсь я на счет того что это будет работать в тестере)...


PS

Кроме того боюсь что при использовании SymbolSelect() принудительная синхронизация все равно будет выполнена.

 

Подумаем, что можно сделать.

 
Interesting:

2. Тут я немного не так выразился, перебрать то нужно не символы в ОБЗОРЕ РЫНКА, а все символы ДЦ. При этом SymbolSelect() как я понимаю всего лишь управляет выбором символа в ОБЗОРЕ РЫНКА самого терминала (при этом сомневаюсь я на счет того что это будет работать в тестере)...


PS

Кроме того боюсь что при использовании SymbolSelect() принудительная синхронизация все равно будет выполнена.

SymbolSelect() работает в тестере. Состояние 'MarketWatch' не берётся из терминала, а моделируется в тестере. При запуске эксперта на тестирование первоначально состоит только из одного символа:

того, на котором запущен эксперт. Мы можем добавить в Init-е необходимые эксперту символы посредством SymbolSelect(Symbol,true) (если они имеются на сервере). И только по этим символам будет загружена история.

 
Valmars:

SymbolSelect() работает в тестере. Состояние 'MarketWatch' не берётся из терминала, а моделируется в тестере. При запуске эксперта на тестирование первоначально состоит только из одного символа:

того, на котором запущен эксперт. Мы можем добавить в Init-е необходимые эксперту символы посредством SymbolSelect(Symbol,true) (если они имеются на сервере). И только по этим символам будет загружена история.

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

Да и для простого перебора не очень хороший подход, к примеру золото может называться и GOLD или XAUUSD, а может еще как. Или вот такая вещица, на Admiral Markets есть "USDJPY." и есть "USDJPY+" и тут же золото "XAUUSD" и "XAUUSD+". И как тут быть?

 

Сделали так, что при запросе информации о невыбранном символе история по этому символу не загружается. Спасибо за замечание.

 
stringo:

Сделали так, что при запросе информации о невыбранном символе история по этому символу не загружается. Спасибо за замечание.

Значит можно рассчитывать на то что в 280 релизе смогу это уже попробовать?


 
Interesting:

Значит можно рассчитывать на то что в 280 релизе смогу это уже попробовать?


Да
 

В режиме тестирования на терминале Альпари в лог попали следующие строчки

2010.06.11 05:12:13    Core 1    XAUUSD: symbol synchronized. 3304 bytes of symbol info received.
2010.06.11 05:12:13    Core 1    XAGUSD: symbol synchronized. 3304 bytes of symbol info received.
2010.06.11 05:12:13    Core 1    USDZAR: symbol synchronized. 3304 bytes of symbol info received.
2010.06.11 05:12:13    Core 1    USDSGD: symbol synchronized. 3304 bytes of symbol info received.
2010.06.11 05:12:13    Core 1    USDSEK: symbol synchronized. 3304 bytes of symbol info received.
2010.06.11 05:12:13    Core 1    USDRUR: symbol synchronized. 3304 bytes of symbol info received.
2010.06.11 05:12:13    Core 1    USDNOK: symbol synchronized. 3304 bytes of symbol info received.
2010.06.11 05:12:13    Core 1    USDMXN: symbol synchronized. 3304 bytes of symbol info received.
2010.06.11 05:12:13    Core 1    USDJPY: symbol synchronized. 3304 bytes of symbol info received.
2010.06.11 05:12:13    Core 1    USDHKD: symbol synchronized. 3304 bytes of symbol info received.
2010.06.11 05:12:13    Core 1    USDDKK: symbol synchronized. 3304 bytes of symbol info received.
2010.06.11 05:12:13    Core 1    USDCHF: symbol synchronized. 3304 bytes of symbol info received.
2010.06.11 05:12:13    Core 1    USDCAD: symbol synchronized. 3304 bytes of symbol info received.
2010.06.11 05:12:13    Core 1    SGDJPY: symbol synchronized. 3304 bytes of symbol info received.
2010.06.11 05:12:13    Core 1    NZDUSD: symbol synchronized. 3304 bytes of symbol info received.
2010.06.11 05:12:13    Core 1    NZDSGD: symbol synchronized. 3304 bytes of symbol info received.
2010.06.11 05:12:13    Core 1    NZDJPY: symbol synchronized. 3304 bytes of symbol info received.
2010.06.11 05:12:13    Core 1    NZDCHF: symbol synchronized. 3304 bytes of symbol info received.
2010.06.11 05:12:13    Core 1    NZDCAD: symbol synchronized. 3304 bytes of symbol info received.
2010.06.11 05:12:13    Core 1    GBPUSD: symbol synchronized. 3304 bytes of symbol info received.
2010.06.11 05:12:13    Core 1    GBPSGD: symbol synchronized. 3304 bytes of symbol info received.
2010.06.11 05:12:13    Core 1    GBPSEK: symbol synchronized. 3304 bytes of symbol info received.
2010.06.11 05:12:13    Core 1    GBPRUR: symbol synchronized. 3304 bytes of symbol info received.
2010.06.11 05:12:13    Core 1    GBPNOK: symbol synchronized. 3304 bytes of symbol info received.
2010.06.11 05:12:13    Core 1    GBPJPY: symbol synchronized. 3304 bytes of symbol info received.
2010.06.11 05:12:13    Core 1    GBPDKK: symbol synchronized. 3304 bytes of symbol info received.
2010.06.11 05:12:12    Core 1    GBPCHF: symbol synchronized. 3304 bytes of symbol info received.
2010.06.11 05:12:12    Core 1    GBPCAD: symbol synchronized. 3304 bytes of symbol info received.
2010.06.11 05:12:12    Core 1    GBPAUD: symbol synchronized. 3304 bytes of symbol info received.
2010.06.11 05:12:12    Core 1    EURSGD: symbol synchronized. 3304 bytes of symbol info received.
2010.06.11 05:12:12    Core 1    EURSEK: symbol synchronized. 3304 bytes of symbol info received.
2010.06.11 05:12:12    Core 1    EURRUR: symbol synchronized. 3304 bytes of symbol info received.
2010.06.11 05:12:12    Core 1    EURNZD: symbol synchronized. 3304 bytes of symbol info received.
2010.06.11 05:12:12    Core 1    EURNOK: symbol synchronized. 3304 bytes of symbol info received.
2010.06.11 05:12:12    Core 1    EURJPY: symbol synchronized. 3304 bytes of symbol info received.
2010.06.11 05:12:12    Core 1    EURHKD: symbol synchronized. 3304 bytes of symbol info received.
2010.06.11 05:12:12    Core 1    EURGBP: symbol synchronized. 3304 bytes of symbol info received.
2010.06.11 05:12:12    Core 1    EURDKK: symbol synchronized. 3304 bytes of symbol info received.
2010.06.11 05:12:12    Core 1    EURCHF: symbol synchronized. 3304 bytes of symbol info received.
2010.06.11 05:12:12    Core 1    EURCAD: symbol synchronized. 3304 bytes of symbol info received.
2010.06.11 05:12:12    Core 1    EURAUD: symbol synchronized. 3304 bytes of symbol info received.
2010.06.11 05:12:12    Core 1    CHFSGD: symbol synchronized. 3304 bytes of symbol info received.
2010.06.11 05:12:11    Core 1    CHFNOK: symbol synchronized. 3304 bytes of symbol info received.
2010.06.11 05:12:11    Core 1    CHFJPY: symbol synchronized. 3304 bytes of symbol info received.
2010.06.11 05:12:11    Core 1    CADJPY: symbol synchronized. 3304 bytes of symbol info received.
2010.06.11 05:12:11    Core 1    CADCHF: symbol synchronized. 3304 bytes of symbol info received.
2010.06.11 05:12:11    Core 1    AUDUSD: symbol synchronized. 3304 bytes of symbol info received.
2010.06.11 05:12:11    Core 1    AUDSGD: symbol synchronized. 3304 bytes of symbol info received.
2010.06.11 05:12:11    Core 1    AUDSEK: symbol synchronized. 3304 bytes of symbol info received.
2010.06.11 05:12:11    Core 1    AUDNZD: symbol synchronized. 3304 bytes of symbol info received.
2010.06.11 05:12:11    Core 1    AUDNOK: symbol synchronized. 3304 bytes of symbol info received.
2010.06.11 05:12:11    Core 1    AUDJPY: symbol synchronized. 3304 bytes of symbol info received.
2010.06.11 05:12:11    Core 1    AUDDKK: symbol synchronized. 3304 bytes of symbol info received.
2010.06.11 05:12:11    Core 1    AUDCHF: symbol synchronized. 3304 bytes of symbol info received.
2010.06.11 05:12:11    Core 1    AUDCAD: symbol synchronized. 3304 bytes of symbol info received.
2010.06.11 05:12:11    Core 1    #XOM: symbol synchronized. 3304 bytes of symbol info received.
2010.06.11 05:12:11    Core 1    #VZ: symbol synchronized. 3304 bytes of symbol info received.
2010.06.11 05:12:11    Core 1    #UTX: symbol synchronized. 3304 bytes of symbol info received.
2010.06.11 05:12:11    Core 1    #TRV: symbol synchronized. 3304 bytes of symbol info received.
2010.06.11 05:12:11    Core 1    #T: symbol synchronized. 3304 bytes of symbol info received.
2010.06.11 05:12:11    Core 1    #SPY: symbol synchronized. 3304 bytes of symbol info received.
2010.06.11 05:12:11    Core 1    #QQQ: symbol synchronized. 3304 bytes of symbol info received.
2010.06.11 05:12:11    Core 1    #PG: symbol synchronized. 3304 bytes of symbol info received.
2010.06.11 05:12:11    Core 1    #PFE: symbol synchronized. 3304 bytes of symbol info received.
2010.06.11 05:12:11    Core 1    #MSFT: symbol synchronized. 3304 bytes of symbol info received.
2010.06.11 05:12:11    Core 1    #MRK: symbol synchronized. 3304 bytes of symbol info received.
2010.06.11 05:12:11    Core 1    #MO: symbol synchronized. 3304 bytes of symbol info received.
2010.06.11 05:12:11    Core 1    #MMM: symbol synchronized. 3304 bytes of symbol info received.
2010.06.11 05:12:11    Core 1    #MCD: symbol synchronized. 3304 bytes of symbol info received.
2010.06.11 05:12:11    Core 1    #KO: symbol synchronized. 3304 bytes of symbol info received.
2010.06.11 05:12:11    Core 1    #KFT: symbol synchronized. 3304 bytes of symbol info received.
2010.06.11 05:12:11    Core 1    #JPM: symbol synchronized. 3304 bytes of symbol info received.
2010.06.11 05:12:11    Core 1    #JNJ: symbol synchronized. 3304 bytes of symbol info received.
2010.06.11 05:12:11    Core 1    #IP: symbol synchronized. 3304 bytes of symbol info received.
2010.06.11 05:12:10    Core 1    #INTC: symbol synchronized. 3304 bytes of symbol info received.
2010.06.11 05:12:10    Core 1    #IBM: symbol synchronized. 3304 bytes of symbol info received.
2010.06.11 05:12:10    Core 1    #HPQ: symbol synchronized. 3304 bytes of symbol info received.
2010.06.11 05:12:10    Core 1    #HON: symbol synchronized. 3304 bytes of symbol info received.
2010.06.11 05:12:10    Core 1    #HD: symbol synchronized. 3304 bytes of symbol info received.
2010.06.11 05:12:10    Core 1    #GE: symbol synchronized. 3304 bytes of symbol info received.
2010.06.11 05:12:10    Core 1    #EK: symbol synchronized. 3304 bytes of symbol info received.
2010.06.11 05:12:10    Core 1    #DIS: symbol synchronized. 3304 bytes of symbol info received.
2010.06.11 05:12:10    Core 1    #DIA: symbol synchronized. 3304 bytes of symbol info received.
2010.06.11 05:12:10    Core 1    #DD: symbol synchronized. 3304 bytes of symbol info received.
2010.06.11 05:12:10    Core 1    #CSCO: symbol synchronized. 3304 bytes of symbol info received.
2010.06.11 05:12:10    Core 1    #CAT: symbol synchronized. 3304 bytes of symbol info received.
2010.06.11 05:12:10    Core 1    #C: symbol synchronized. 3304 bytes of symbol info received.
2010.06.11 05:12:10    Core 1    #BAC: symbol synchronized. 3304 bytes of symbol info received.
2010.06.11 05:12:10    Core 1    #BA: symbol synchronized. 3304 bytes of symbol info received.
2010.06.11 05:12:10    Core 1    #AXP: symbol synchronized. 3304 bytes of symbol info received.
2010.06.11 05:12:10    Core 1    #AIG: symbol synchronized. 3304 bytes of symbol info received.
2010.06.11 05:12:10    Core 1    #AA: symbol synchronized. 3304 bytes of symbol info received.


Как я понимаю это тестер при переборе всех валютных пар проверил синхронизированы они или нет.

Я конечно рад что все синхронизировано, но вот мне кажется такое рвение терминала излишним.


По логике вещей я не активировал эти символы в MarketWatch, не интересовался тем синхронно все или нет, и даже не в курсе буду я или нет ими торговать.

Так зачем мне знать что синхронизированы скажем CFD и Futures, если мне нужны только Forex?

 
Interesting:

В режиме тестирования на терминале Альпари в лог попали следующие строчки


А версия терминала какая ? В 281 такого уже не наблюдаю.
Причина обращения: