Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Пополняй свой счет через платежную систему Visa QIWI Wallet
Stanislav Korotky
16868
Stanislav Korotky 2010.12.01 17:57 

Столкнулся с проблемой. Есть многовалютный эксперт. Вешаем его, например, на GBPUSD M15 в модели по открытию бара. Один из параметров - перечень инструментов для работы. Делаем два запуска эксперта, сперва для набора "GBPUSD,EURUSD", потом в обратном порядке - "EURUSD,GBPUSD". Получаем какие-то непонятные расхождения в логах. Вплоть до того, что при заданном тестировании от 1 января 2010 года один из прогонов начинается почему-то на последнем баре 2009-го (!). Прикладываю два фрагмента логов от описанных прогонов - легко сравнить контекстно и увидеть различия. Поясните плиз, почему в первом случае есть строки, например,

QN    0    TesterAgent    17:16:33    Intel Core2 Duo  P8600 @ 2.40GHz, 4095 MB, PR69
OD    0    Symbols    17:16:33    GBPUSD: symbol synchronized, 2904 bytes of symbol info received
LI    0    History    17:16:33    GBPUSD: load 27 bytes of history data to synchronize
QR    0    History    17:16:33    GBPUSD: history synchronized from 2007.01.02 to 2010.11.29
RG    0    History    17:16:34    GBPUSD: contains 348044 M1 records of beginning data from 2009.01.02 10:00 to 2009.12.31 18:59
HJ    0    History    17:16:34    GBPUSD,M15: history cache reserved for estimated 25440 bars
MR    0    History    17:16:34    GBPUSD,M15: history begins from 2009.01.02 10:00

а во втором таких строк - нет.

Аналогично, есть другие фрагменты (вроде этого):

LN    0    Symbols    17:16:35    EURUSD: symbol synchronized, 2904 bytes of symbol info received
JP    0    History    17:16:36    EURUSD: load 27 bytes of history data to synchronize
FH    0    History    17:16:36    EURUSD: history synchronized from 2007.01.01 to 2010.11.29

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

В коде есть кусок, который проверяет синхронизацию символов следующим образом (обращение к символам идет в порядке их указания в строке параметров; пробовал синхронизировать и относительно _Symbol, и относительно EURUSD - проблемы одинаковы):

bool Sync = false;

bool Synchronization()
{
  string StrUnsync;
  int u = 0;

  datetime dt0 = SeriesInfoInteger("EURUSD"/*_Symbol*/, Period(), SERIES_LASTBAR_DATE);
  
  datetime dates[];
  ArrayResize(dates, SymbolCount);
  for(int j = 0; j < SymbolCount; j++)
  {
    RefreshRates(Instruments[j]);
    datetime dt = SeriesInfoInteger(Instruments[j], Period(), SERIES_LASTBAR_DATE);
    dates[j] = dt;
    if(dt != dt0)
    {
      StrUnsync = StrUnsync + Instruments[j] + " ";
      u++;
    }
  }
  if(u > 0)
  {
    Print("Some symbols are unsynchonized:", StrUnsync);
    Sync = false;
    return(false);
  }
  else
  {
    if(!Sync)
    {
      Print("Synchronization done");
    }
    Sync = true;
  }
  return(true);
}

void OnTick()
{
  if(!Synchronization()) return;
  //ExpertLibStart();
}

void RefreshRates(string symbol)
{
  MqlTick tick;
  SymbolInfoTick(symbol, tick);
  SymbolInfoDouble(symbol, SYMBOL_BID);
}

Вопросы: каким образом параметры влияют на "залезание" в 2009 год? почему смена порядка обращения к символьным базам влияет на генерацию тиков по каждому из символов? По идее, тики каждого символа должны генериться независимо от последовательности запросов этих инструментов.

Заранее спасибо.

Файлы:
logs.zip 3 kb
Slawa
Модератор
6757
Slawa 2010.12.01 18:18  

Будем разбираться. Такого быть не должно

Stanislav Korotky
16868
Stanislav Korotky 2010.12.01 18:22  
Маленькое уточнение. В модели по всем тикам картина получше. Но начало по-прежнему в 2009-м.

Slawa
Модератор
6757
Slawa 2010.12.01 18:33  
marketeer:
Но начало по-прежнему в 2009-м.

Именно этого быть не должно. Разбираемся.
Boris
503
Boris 2010.12.02 14:19  

Я решил эту проблему таким костылем :


   static bool firstPass;
   if(!firstPass) // пропускаем первый тик для старта всех символов
     {
      firstPass=true;
      return;
     }

 


Slawa
Модератор
6757
Slawa 2010.12.02 14:32  
BoraBo:

Я решил эту проблему таким костылем :

 Если бы Вы раньше обратились в сервис-деск, то мы бы эту проблему решили бы раньше. 

Boris
503
Boris 2010.12.02 14:44  

А он все равно не помогает. На разных чартах абсолютно разные результаты :

Создание эксперта, торгующего на разных инструментах


Обсуждение статьи




Slawa
Модератор
6757
Slawa 2010.12.10 09:46  
stringo:
Именно этого быть не должно. Разбираемся.
marketeer, попробуйте с новым билдом. Это место исправили
/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий