Предложения по улучшению MetaEditor'а - страница 6

 
Lizar:
Пробуйте. Работает в тестере. Но с теми поправками, которые оговорены в статье.

А что в тестере отправлять через событие? если

А) чарты в тестере не открываются

Б) индикаторы события не получают

советник что будет самому себе слать события, какой в этом смысл?

 

Обработка событий в тестере

Наличие обработчика OnTick() в эксперте не является обязательным для того, чтобы его можно было подвергнуть проверке на исторических данных в тестере терминала MetaTrader 5. Достаточно того, чтобы в советнике была хотя бы одна функция-обработчик из перечисленных:

  • OnTick() - обработчик события прихода нового тика;
  • OnTrade() - обработчик торгового события;
  • OnTimer() - обработчик события прихода сигнала от таймера;
  • OnChartEvent() - обработчик пользовательских событий.

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

Индикатор при тестировании может генерировать пользовательские события с помощью функции EventChartCustom(), а советник может обрабатывать это событие в OnChartEvent().

1. На текущий момент насколько я помню и сам советник в тестере не обрабатывает события отправленные при помощи EventChartCustom()

2. В статье есть указание на том что функция не будет работать в индикаторах в тестере, а в справке нет. Это как понимать?

3. Ну не правильно это когда что-о работает на демо/реале и не работает в тестере. Что хотите со мной делайте, в все равно не правильно.

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

PS

Кстати, про индюки. Вопрос разработчикам - она совсем в тестере не работает, или не обрабатывает только то что послано при помощи OnChartEvent()?

 
Urain:

А что в тестере отправлять через событие? если

А) чарты в тестере не открываются

Б) индикаторы события не получают

советник что будет самому себе слать события, какой в этом смысл?

Смысл есть, у меня, к примеру, сам себе успешно слал, и не одно (пока в тестере не сломали прием событий).

Да и когда тестер начнет графику понимать и обрабатывать логично будет получать события... 

 

Вопрос непонятен. Что Вы имеете в виду "она совсем в тестере не работает, или не обрабатывает только то, что послано при помоши OnChartEvent()?" 

В тестере не существует механизма доставки ChartEvent индикаторам. Цикл доставки событий тестируемому эксперту - это как раз основная часть тестера.

 
Interesting:

Смысл есть, у меня, к примеру, сам себе успешно слал, и не одно (пока в тестере не сломали прием событий).

То есть раньше в тестере был приём событий, а потом его сломали?
 
Interesting:

Смысл есть, у меня, к примеру, сам себе успешно слал, и не одно (пока в тестере не сломали прием событий).

Да и когда тестер начнет графику понимать и обрабатывать логично будет получать события... 

В пределах одной программы есть множество возможностей передать информацию, смысл же событий передача информации между разными программами.
 
Lizar:

Уже пару недель, как официально объявили в статье:

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

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

stringo:

В тестере не существует механизма доставки ChartEvent индикаторам. Цикл доставки событий тестируемому эксперту - это как раз основная часть тестера.

То есть раньше в тестере был приём событий, а потом его сломали?

Я про проблему EventChartCustom() -> OnChartEvent() в тестере для экспертов. Может я чего не понимаю конечно, но до чемпионата все работало прекрасно, а теперь нет.

При этом уже все наверное в курсе, все все понимают, а "паровоз" с места все не двигается (не смотря что это как раз есть "основная часть").

Простой пример:

1 . Инициализируем советник с запуском таймера через каждые 300 секунд (5 минт).

//Function OnInit
int OnInit()
//Function for initialization of the trade system
{
//----------------------------------------------------------------------------//
int Result = 0; //Returned importance
//----------------------------------------------------------------------------//

EventSetTimer(300);

//----------------------------------------------------------------------------//
return(Result);
//----------------------------------------------------------------------------//
}

2. В таймере прописываем отправку события с кодом 1001

//Event OnTimer
void OnTimer()
{
//----------------------------------------------------------------------------//
//Work variables
int customEventID; // номер пользовательского события для отправки
//----------------------------------------------------------------------------//
customEventID=CHARTEVENT_CUSTOM+1;

EventChartCustom(0,(ushort)(customEventID-CHARTEVENT_CUSTOM),0,0,"OnTimer - EventChartCustom");
//----------------------------------------------------------------------------//
}
3. Ловим это событие в эксперте
//Event OnChartEvent
void OnChartEvent(const int id,
                  const long& lparam,
                  const double& dparam,
                  const string& 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

Может кто-то думает что если из эксперта сообщение не дошло оно дойдет от ииндюка?


 
Yedelkin:
Официально вроде как объявляют в "обновлениях билдов", а не в статьях. В "обновлениях" что-нибудь было?

Да ничего не было, как появился баг так и весит.

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

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

 
stringo:
То есть раньше в тестере был приём событий, а потом его сломали?

Вот чем я должен заниматься, правильно к госэкзамену готовится. а чем занимаюсь - ищу свои посты по форуму. :)

1. Ошибки, баги, вопросы

2. Ошибки, баги, вопросы

Хотел найти первое сообщение о проблеме, так и не откопал, хотя точно помню что во время чемпионата уже не работала фича...

Будем считать что пост от 05/09/2010 и был первым на заданную тему. вывод - прошло месяцев 8 уже... :(

PS

Вот еще нарыл:

Мой пример от 06/09/2010

И даже Алексей обещал подумать над решением проблемы

Причина обращения: