Чемпионат Automated Trading Championship 2010 стартовал! - страница 19

 
stringo: История доступна по 12 парам. История была предварительно закачана, причём полностью. Сформированы все основные кеши на 1 миллион баров каждый. Затем вся подготовленная история была раскопирована по всем чемпионатским терминалам. Осталось только использовать её.

Это для тестирования, но никак не для работы на реале.

stringo: Как использовать? Мы многократно обсуждали здесь все нюансы работы с историей. Причём по результатам обсуждения мы в своё время максимально упростили доступ к истории.

 Дык я не вишу на форуме постоянно - я и не обязан этого делать. Я должен прочитать правила чемпионата - и всё понять. Я так и понял, как они написаны -

 Для Чемпионата выбраны 12 валютных пар с доступной минутной историей с 2005 года.  

stringo: А вот некоторые экспертописатели даже не удосужились проверить, как в реальности работают их эксперты. Открыть всего один график, накинуть на него эксперта, закрыть терминал. Потом просто-напросто запустить терминал и смотреть, что же там происходит. Всё то же самое, что было на прошлых чемпионатах - процесс запуска не изменился.

 Дело всё в том, что МТ5 всего несколько месяцев и полноценно проверить всё может не оказаться времени, так как у этих экспертописателей могут существовать свои личные дела. Или вы считаете что они должны круглосуточно заниматься выискиванием несоответствий правил чемпионата и справки к МТ5?

 
полностью согласен с LeoV   ...на написание самого експерта у меня ушло месяца 2.. и ето каких то 50 строк кода.. но самое сложное.. ето было добиться чтоб он делал то, как запрограммирован.. а тут еще и подвохи такие с вашей стороны
 
LeoV:

 Дык я не вишу на форуме постоянно - я и не обязан этого делать. Я должен прочитать правила чемпионата - и всё понять. Я так и понял, как они написаны -

 Для Чемпионата выбраны 12 валютных пар с доступной минутной историей с 2005 года.  

минутки доступны только с конца 2007 года -  https://championship.mql5.com/2010/ru/news/27/page8#comments

параметр - Макс. баров в окне = 1000000  (1 миллион)  недостаточно для получения истории с 2005 года.

Этот код тому подтверждение:

 

bool OneStart=true;
  void OnTick()
  {
        if(OneStart)
        {
            datetime EndTime1,EndTime2;
            datetime Time1[];
            datetime Time2[];
            
            int totalBars1 = CopyTime("EURUSD",PERIOD_M1,0,1000000,Time1);
            if(totalBars1>0){EndTime1 = Time1[totalBars1-1];}
            Print("1) доступно баров= "+totalBars1+" Дата c "+Time1[0]+" по "+EndTime1);
            
            datetime DateStart = StringToTime("2005.01.01");
            int totalBars2 = CopyTime("EURUSD",PERIOD_M1,DateStart,TimeCurrent(),Time2);
            if(totalBars2>0){EndTime2 = Time2[totalBars2-1];}
            Print("2) доступно баров= "+totalBars2+" Дата c "+Time2[0]+" по "+EndTime2);

            OneStart=false;
        }
  }

2010.10.07 11:29:42 TestHistoryLoad (EURUSD,M1) 2) доступно баров= 1000000 Дата c 2007.12.13 21:15:00 по 2010.10.07 09:29:00

2010.10.07 11:29:42 TestHistoryLoad (EURUSD,M1) 1) доступно баров= 1000000 Дата c 2007.12.13 21:15:00 по 2010.10.07 09:29:00

По результатам видно, что при 1 миллионе баров история доступна только с декабря 2007 года. 

Чемпионат Automated Trading Championship 2010 стартовал! - Automated Trading Championship 2010
  • championship.mql5.com
4 октября 2010 года стартовал Чемпионат Automated Trading Championship 2010. Регистрация и проверка экспертов окончательно завершены. К участию в Чемпионате допущено 314 экспертов.
 
Krokodil: параметр - Макс. баров в окне = 1000000  (1 миллион)  недостаточно для получения истории с 2005 года.

Дык мне не нужно подкачивать 1000000 баров - мне бы получить несколько последних часовых баров. И то этого не получается - советник открывает сделки вообще не понятно как. История не доступна - и возникает какой-то глюк.
 
LeoV:
Дык мне не нужно подкачивать 1000000 баров - мне бы получить несколько последних часовых баров. И то этого не получается - советник открывает сделки вообще не понятно как. История не доступна - и возникает какой-то глюк.

Не должно быть так, потому что в Доступ к таймсериям и индикаторам сказано:

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


 

Rosh: Не должно быть так, потому что в Доступ к таймсериям и индикаторам сказано:
 

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

Обидно только то, что я потратил силы, время, деньги для того чтоб проучаствовать в чемпе и из-за какой-то херни сейчас вывалюсь из него.  Причём никто не виноват. Вы не виноваты - потому что нужно читать справку, а не правила, программист не виноват, потому что он читал правила, а не справку, а я просто попал на время и деньги )))) Вообщем крайний я. Отличная история !!!! )))

 
LeoV:

 Вообщем крайний я. Отличная история !!!! )))

Ну точно не мы. Вот код эксперта, запустите его в терминале, график символа EURNZD не открывайте перед запуском. То есть, это первое обращение к данным индикатора по символу EURNZD, который мы еще ни разу не открывали.

//+------------------------------------------------------------------+
//|                                             Check_CopyBuffer.mq5 |
//|                        Copyright 2010, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2010, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   double buffer[];
   ResetLastError();
   int hdl=iMA("EURNZD",PERIOD_H4,2,0,MODE_EMA,PRICE_CLOSE);
   PrintFormat("Скопировали %d значений индикатора. _LastError=%d",CopyBuffer(hdl,0,0,100,buffer),", ",_LastError);
  }
//+------------------------------------------------------------------+


Посмотрите что он выведет в лог.

 
Rosh: Ну точно не мы.

))) Всё-равно, я считаю, что фраза "история доступна" - не совсем корректна в этой ситуации. Укажите лучше что подкачка истории на реале осуществляется и проверяется самим экспертом самостоятельно - так будет правильней и честней.

А в моей ситуации - лучше подскажите где косяк. Потому, что мы не можем точно понять в чём дело. Могу выслать исходник. 

 
LeoV:

))) Всё-равно, я считаю, что фраза "история доступна" - не совсем корректна в этой ситуации. Укажите лучше что подкачка истории на реале осуществляется и проверяется самим экспертом самостоятельно - так будет правильней и честней.

А в моей ситуации - лучше подскажите где косяк. Потому, что мы не можем точно понять в чём дело. Могу выслать исходник. 

Лучше код выслать Славе (stringo) на stringo (AT) metaquotes (DOT) net. Думаю, он быстрее найдет причину.
 
papaklass:
Еще раз вернусь к этой теме. Главное: почему баров меньше шестидесяти. Секунду назад было несколько тысяч, а в момент 00:00 их стало меньше шестидесяти. Куда делись бары?  И 4-го и 5-го октября выдавал ошибку 4753 (данные не определены), а после пятого пишет что ошибка = 0. Получается что в момент формирования нового бара появляется неопределенность? Или я чего то не понимаю?
Количество баров, во первых, не меньше 60, а меньше 35 (такое значение установлено Вами у проверяемой переменной). Во-вторых, количество баров скорей всего равно 0, так как данные незасинхронизированы (в этот момент они пересчитываются, может память перевыделяется с возникновением нового бара). Функция Bars несинхронна в отличие от функций копирования таймсерий.