Наличие обработчика OnTick() в эксперте не является обязательным для того, чтобы его можно было подвергнуть проверке на исторических данных в тестере терминала MetaTrader 5. Достаточно того, чтобы в советнике была хотя бы одна функция-обработчик из перечисленных:
OnTick() - обработчик события прихода нового тика;
При тестировании в эксперте можно обрабатывать пользовательские события с помощью функции OnChartEvent(), но в индикаторах эта функция в тестере не вызывается. Даже если индикатор имеет обработчик OnChartEvent() и этот индикатор используется в тестируемом эксперте, то сам индикатор не будет получать никаких пользовательских событий.
Индикатор при тестировании может генерировать пользовательские события с помощью функции EventChartCustom(), а советник может обрабатывать это событие в OnChartEvent().
1. На текущий момент насколько я помню и сам советник в тестере не обрабатывает события отправленные при помощи EventChartCustom()
2. В статье есть указание на том что функция не будет работать в индикаторах в тестере, а в справке нет. Это как понимать?
3. Ну не правильно это когда что-о работает на демо/реале и не работает в тестере. Что хотите со мной делайте, в все равно не правильно.
Если уж делать OnChartEvent() в индюках то пусть везде работает, иначе смысл ее там держать...
PS
Кстати, про индюки. Вопрос разработчикам - она совсем в тестере не работает, или не обрабатывает только то что послано при помощи OnChartEvent()?
Urain: В пределах одной программы есть множество возможностей передать информацию, смысл же событий передача информации между разными программами.
Суть не в том как передать, а в том что то что работало в тестере (по сути и должно было) перестало там работать этак примерно 6 месяцев назад.
stringo:
В тестере не существует механизма доставки ChartEvent индикаторам. Цикл доставки событий тестируемому эксперту - это как раз основная часть тестера.
То есть раньше в тестере был приём событий, а потом его сломали?
Я про проблему EventChartCustom() -> OnChartEvent() в тестере для экспертов. Может я чего не понимаю конечно, но до чемпионата все работало прекрасно, а теперь нет.
При этом уже все наверное в курсе, все все понимают, а "паровоз" с места все не двигается (не смотря что это как раз есть "основная часть").
Простой пример:
1 . Инициализируем советник с запуском таймера через каждые 300 секунд (5 минт).
//Function OnInitintOnInit()
//Function for initialization of the trade system
{
//----------------------------------------------------------------------------//int Result = 0; //Returned importance//----------------------------------------------------------------------------//EventSetTimer(300);
//----------------------------------------------------------------------------//return(Result);
//----------------------------------------------------------------------------//
}
2. В таймере прописываем отправку события с кодом 1001
//Event OnTimervoidOnTimer()
{
//----------------------------------------------------------------------------////Work variablesint customEventID; // номер пользовательского события для отправки//----------------------------------------------------------------------------//
customEventID=CHARTEVENT_CUSTOM+1;
EventChartCustom(0,(ushort)(customEventID-CHARTEVENT_CUSTOM),0,0,"OnTimer - EventChartCustom");
//----------------------------------------------------------------------------//
}
3. Ловим это событие в эксперте
//Event OnChartEventvoidOnChartEvent(constint id,
constlong& lparam,
constdouble& dparam,
conststring& sparam
)
{
//----------------------------------------------------------------------------////Work variables//----------------------------------------------------------------------------////----------------------------------------------------------------------------//// Processing user events ////----------------------------------------------------------------------------//if(id>CHARTEVENT_CUSTOM)
//User event is received
{
Print("New event, ID ",id," - ",sparam);
}
//----------------------------------------------------------------------------//
}
И что мы видим по итогу. по итогу мы видим что демка спокойно получает это событие, а вот тестер нет.
А это вроде бы как базовый элемент торговой системы, который по идеи должен работать даже в случае "ядерной войны".
1. Демка с таймером в 1 минуту
2. Тестер с таймером в 1. час
Добавлю также что тестирование проводилось с 01/04/2011 по 07/04/2011 на ТФ 1H. как понимаете там должна была быть куча срабатываний.
И где они?
PS
Может кто-то думает что если из эксперта сообщение не дошло оно дойдет от ииндюка?
Пробуйте. Работает в тестере. Но с теми поправками, которые оговорены в статье.
А что в тестере отправлять через событие? если
А) чарты в тестере не открываются
Б) индикаторы события не получают
советник что будет самому себе слать события, какой в этом смысл?
Обработка событий в тестере
Наличие обработчика OnTick() в эксперте не является обязательным для того, чтобы его можно было подвергнуть проверке на исторических данных в тестере терминала MetaTrader 5. Достаточно того, чтобы в советнике была хотя бы одна функция-обработчик из перечисленных:
При тестировании в эксперте можно обрабатывать пользовательские события с помощью функции OnChartEvent(), но в индикаторах эта функция в тестере не вызывается. Даже если индикатор имеет обработчик OnChartEvent() и этот индикатор используется в тестируемом эксперте, то сам индикатор не будет получать никаких пользовательских событий.
Индикатор при тестировании может генерировать пользовательские события с помощью функции EventChartCustom(), а советник может обрабатывать это событие в OnChartEvent().
1. На текущий момент насколько я помню и сам советник в тестере не обрабатывает события отправленные при помощи EventChartCustom()
2. В статье есть указание на том что функция не будет работать в индикаторах в тестере, а в справке нет. Это как понимать?
3. Ну не правильно это когда что-о работает на демо/реале и не работает в тестере. Что хотите со мной делайте, в все равно не правильно.
Если уж делать OnChartEvent() в индюках то пусть везде работает, иначе смысл ее там держать...
PS
Кстати, про индюки. Вопрос разработчикам - она совсем в тестере не работает, или не обрабатывает только то что послано при помощи OnChartEvent()?
А что в тестере отправлять через событие? если
А) чарты в тестере не открываются
Б) индикаторы события не получают
советник что будет самому себе слать события, какой в этом смысл?
Смысл есть, у меня, к примеру, сам себе успешно слал, и не одно (пока в тестере не сломали прием событий).
Да и когда тестер начнет графику понимать и обрабатывать логично будет получать события...
Вопрос непонятен. Что Вы имеете в виду "она совсем в тестере не работает, или не обрабатывает только то, что послано при помоши OnChartEvent()?"
В тестере не существует механизма доставки ChartEvent индикаторам. Цикл доставки событий тестируемому эксперту - это как раз основная часть тестера.
Смысл есть, у меня, к примеру, сам себе успешно слал, и не одно (пока в тестере не сломали прием событий).
Смысл есть, у меня, к примеру, сам себе успешно слал, и не одно (пока в тестере не сломали прием событий).
Да и когда тестер начнет графику понимать и обрабатывать логично будет получать события...
Уже пару недель, как официально объявили в статье:
В пределах одной программы есть множество возможностей передать информацию, смысл же событий передача информации между разными программами.
Суть не в том как передать, а в том что то что работало в тестере (по сути и должно было) перестало там работать этак примерно 6 месяцев назад.
В тестере не существует механизма доставки ChartEvent индикаторам. Цикл доставки событий тестируемому эксперту - это как раз основная часть тестера.
То есть раньше в тестере был приём событий, а потом его сломали?
Я про проблему EventChartCustom() -> OnChartEvent() в тестере для экспертов. Может я чего не понимаю конечно, но до чемпионата все работало прекрасно, а теперь нет.
При этом уже все наверное в курсе, все все понимают, а "паровоз" с места все не двигается (не смотря что это как раз есть "основная часть").
Простой пример:
1 . Инициализируем советник с запуском таймера через каждые 300 секунд (5 минт).
2. В таймере прописываем отправку события с кодом 1001
3. Ловим это событие в экспертеИ что мы видим по итогу. по итогу мы видим что демка спокойно получает это событие, а вот тестер нет.
А это вроде бы как базовый элемент торговой системы, который по идеи должен работать даже в случае "ядерной войны".
1. Демка с таймером в 1 минуту
2. Тестер с таймером в 1. час
Добавлю также что тестирование проводилось с 01/04/2011 по 07/04/2011 на ТФ 1H. как понимаете там должна была быть куча срабатываний.
И где они?
PS
Может кто-то думает что если из эксперта сообщение не дошло оно дойдет от ииндюка?
Официально вроде как объявляют в "обновлениях билдов", а не в статьях. В "обновлениях" что-нибудь было?
Да ничего не было, как появился баг так и весит.
А по поводу того что в статье так это нужно было указывать не в статьях, и даже не в описании новых билдов, хотя и там тоже.
По сути такие вещи должны быть прописаны в справочнике по языку. покажите где там об этом хоть слово есть (лично я не нашел)...
То есть раньше в тестере был приём событий, а потом его сломали?
Вот чем я должен заниматься, правильно к госэкзамену готовится. а чем занимаюсь - ищу свои посты по форуму. :)
1. Ошибки, баги, вопросы
2. Ошибки, баги, вопросы
Хотел найти первое сообщение о проблеме, так и не откопал, хотя точно помню что во время чемпионата уже не работала фича...
Будем считать что пост от 05/09/2010 и был первым на заданную тему. вывод - прошло месяцев 8 уже... :(
PS
Вот еще нарыл:
Мой пример от 06/09/2010
И даже Алексей обещал подумать над решением проблемы