Мультивалютные проблемы

 

Решил создать тему, так как что делать не знаю, а мультивалютный советник написать хочется.

Проблема в том, что в тестере значения валюты отличной от той на которой запущен тестер отличаются.

int bars,i;
void OnTick()
  {
   if(bars==Bars(_Symbol,_Period))return;
   bars=Bars(_Symbol,_Period);
   if(i>100)return;
   i++;  
   datetime time1[],time2[];  
   double Arr1[],Arr2[];
   CopyTime("EURUSD",_Period,1,1,time1);
   CopyTime("GBPUSD",_Period,1,1,time2);
   CopyClose("EURUSD",PERIOD_CURRENT, 1, 1, Arr1);
   CopyClose("GBPUSD",PERIOD_CURRENT, 1, 1, Arr2);
   Print("Время EURUSD"+TimeToString(time1[0],TIME_DATE|TIME_MINUTES), "  Время GBPUSD"+TimeToString(time2[0],TIME_DATE|TIME_MINUTES),"    mas1(EURUSD)-",Arr1[0],"   mas2(GBPUSD)-",Arr2[0]);
   return;
  }

Если запустить с 01.07.2010 по EURUSD период М1, то получается так

 

ну и совсем не красивый результат наблюдается до 01:00

 

 
Это как я пнимаю проблема синхронизации графиков разных символов. Тут или юзать все как есть, ища оптимальный результат, либо ТИТАНИЧЕСКИМИ усилиями пытаться синхронизировать графики (по какому алгоритму еще вопрос)....


PS

Как вариант, останется юзать только те графики где есть одинаковые валюты, например: EURUSD, EURCHF, EURJPY, EURGBP...

 
Interesting:
Это как я пнимаю проблема синхронизации графиков разных символов. Тут или юзать все как есть, ища оптимальный результат, либо ТИТАНИЧЕСКИМИ усилиями пытаться синхронизировать графики (по какому алгоритму еще вопрос)....

 

Я говорю не про проблему синхронизации, а про то что в тестере данные не те выдаются, особенно скриншот2 хорошо это показывает

А по первому - я беру закрытый бар, который есть на графике GBPUSD, но тестер его не отдает 

 
Interesting:

Как вариант, останется юзать только те графики где есть одинаковые валюты, например: EURUSD, EURCHF, EURJPY, EURGBP...

А это как вообще может помочь?
 
ddd06:
А это как вообще может помочь?

Вы надеюсь не будете отрицать тот факт что графики различных пар не синхронезированны по признаку время-бар? Тут я имею введу старую проблему именуемую "нет тиков, нет бара"...

А по таким парам как я понимаю вероятность нормальной работы будет намного выше.

 

Будем разбираться.

 
Interesting:

Вы надеюсь не будете отрицать тот факт что графики различных пар не синхронезированны по признаку время-бар? Тут я имею введу старую проблему именуемую "нет тиков, нет бара"...

А по таким парам как я понимаю вероятность нормальной работы будет намного выше.

 

Здесь указана совсем другая проблема. Бар на самом деле есть, но в тестере в нужный момент он оказался несформированным
 
Interesting:

Вы надеюсь не будете отрицать тот факт что графики различных пар не синхронезированны по признаку время-бар? Тут я имею введу старую проблему именуемую "нет тиков, нет бара"...

А по таким парам как я понимаю вероятность нормальной работы будет намного выше.

 

Нет не отрицаю синхронизация отсутствует.

Но и вы согласитесь, вместо того чтоб повышать ВЕРОЯТНОСТЬ, надо решать проблему в корне(тоесть вставлять синхронизацию в свой код). 

Тоесть запуск на определенных парах совсем не решение. 

 
stringo:
Будем разбираться.
Спасибо.
 
ddd06:

Решил создать тему, так как что делать не знаю, а мультивалютный советник написать хочется.

Проблема в том, что в тестере значения валюты отличной от той на которой запущен тестер отличаются.

Если запустить с 01.07.2010 по EURUSD период М1, то получается так

 ну и совсем не красивый результат наблюдается до 01:00

ddd06:

 

Я говорю не про проблему синхронизации, а про то что в тестере данные не те выдаются, особенно скриншот2 хорошо это показывает

А по первому - я беру закрытый бар, который есть на графике GBPUSD, но тестер его не отдает 

Вот давайте обратим внимание на код, который находится в OnTick()

CopyTime("EURUSD",_Period,1,1,time1);
CopyTime("GBPUSD",_Period,1,1,time2);
CopyClose("EURUSD",PERIOD_CURRENT, 1, 1, Arr1);
CopyClose("GBPUSD",PERIOD_CURRENT, 1, 1, Arr2);

А кто гарантировал что информация по этим НЕЗАВИСИМЫМ валюта совпадает на столько чтобы результат был однозначен? Тут подразумевается что должны совпадать следующие вещи: количество баров и время начальных баров.

А что у нас в наличии?...

Представим себе следующую ситуацию: Скажем на ТФ 1M по EURUSD мы имеем 10 000 баров, а по GBPUSD 12 000. При этом НУЛЕВОЙ бар является текущим баром.

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

Вывод

Нужно синхронизировать число баров по валютным парам, а также и время для САМЫХ СТАРЫХ баров...

PS

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

Документация по MQL5: Доступ к таймсериям и индикаторам / Bars
Документация по MQL5: Доступ к таймсериям и индикаторам / Bars
  • www.mql5.com
Доступ к таймсериям и индикаторам / Bars - Документация по MQL5
 
stringo:
Здесь указана совсем другая проблема. Бар на самом деле есть, но в тестере в нужный момент он оказался несформированным
Если так, то тут проблемы тестера. Но алгоритм кода все равно не очень подходит для выполнения поствленой задачи (ТИМХО)...
Причина обращения: