Советник (только выставляет в OnInit заданное (Amount) количество позиций)
11 секунд для Amount = 1. И 28 секунд для Amount = 5. Такое замедление - нормально?
А вы в своем тестере на каждый тик профиты, маржу, стопауты по всем правилам и тд считаете?
Насколько я вижу по коду, даже OnTick не реализован. Это означает, что в вашей версии позиции висят без изменения и контроля. А у нас ордеры просчитываются автоматически даже без наличия OnTick.
Как можно сравнивать "тестер", если он даже позиции по рынку не обновляет? Так тестировать нельзя.
А вы в своем тестере на каждый тик профиты, маржу, стопауты по всем правилам и тд считаете?
Насколько я вижу по коду, даже OnTick не реализован. Это означает, что в вашей версии позиции висят без изменения и контроля. А у нас ордеры просчитываются автоматически даже без наличия OnTick.
Как можно сравнивать "тестер", если он даже позиции по рынку не обновляет? Так тестировать нельзя.
В том Тестере нет только таймера. Он все считает, кроме некоторых специально не реализованных вещей: маржа и стопауты. Подробности и причины в описании. Ветка к работе служит хорошим дополнением. Тестер в данном случае - один из частных случаев применения. Сценариев использования написано больше десятка.
В том Тестере нет только таймера. Он все считает, кроме некоторых специально не реализованных вещей: маржа и стопауты. Подробности и причины в описании. Ветка к работе служит хорошим дополнением. Тестер в данном случае - один из частных случаев применения. Сценариев использования написано больше десятка.
В обсуждаемом примере нет реализации OnTick.
По затратам на пересчете позиций разберемся и ускорим.
А почему вы не использовали мои воспроизводимые условия?
Я специально указал все настройки для воспроизведения. Только в таком случае, когда обе стороны имеют возможность повторения тестов, можно что-то сравнивать. Без кастомных данных и непонятных настроек.
А почему вы не использовали мои воспроизводимые условия?
Я специально указал все настройки для воспроизведения. Только в таком случае, когда обе стороны имеют возможность повторения тестов, можно что-то сравнивать. Без кастомных данных и непонятных настроек.
Обязательно выложу, как будет готово.
ЗЫ У меня постоянно виснет отладчик на исторических данных, когда делаю SHIFT+F5 после точки останова. Такой лог
2019.01.1603:42:48.2142011.01.0100:00:00 debugging terminated
2019.01.1603:42:48.214 global initialization failed
2019.01.1603:42:48.214 global initialization critical error
2019.01.1603:42:48.214 tester stopped because expert initialization failed
2019.01.1603:42:48.219 shutdown tester machine
2019.01.1603:42:48.221 try to cancel expert execution
2019.01.1603:42:48.224 expert execution canceled
2019.01.1603:43:48.227 cannot stop tester process [0, 0]
2019.01.1603:43:48.229 agent shutdown forced
Ну это был просто абстрактный пример. Вот более развёрнуто:
struct A
{
string a;
void f() { }
};
struct B : private A
{
};
void F(A&) { }
voidOnInit()
{
B b;
((A)b).f(); // '(' - invalid cast operation
F((A)b); // '(' - invalid cast operation
}
Если убрать string, то всё работает. Аналогично и с массивами. Это видимо оставшийся рудимент с тех пор, когда сложные объекты нельзя было копировать. Хотя здесь ведь даже не копирование, а просто кастинг. Ну точнее по правилам C++ тут должна создаваться копия объекта, а в MQL происходит приведение ссылки, поэтому ошибка компиляции тут вообще неуместна.
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Советник (только выставляет в OnInit заданное (Amount) количество позиций)
11 секунд для Amount = 1. И 28 секунд для Amount = 5. Такое замедление - нормально?
А вы в своем тестере на каждый тик профиты, маржу, стопауты по всем правилам и тд считаете?
Насколько я вижу по коду, даже OnTick не реализован. Это означает, что в вашей версии позиции висят без изменения и контроля. А у нас ордеры просчитываются автоматически даже без наличия OnTick.
Как можно сравнивать "тестер", если он даже позиции по рынку не обновляет? Так тестировать нельзя.
А вы в своем тестере на каждый тик профиты, маржу, стопауты по всем правилам и тд считаете?
Насколько я вижу по коду, даже OnTick не реализован. Это означает, что в вашей версии позиции висят без изменения и контроля. А у нас ордеры просчитываются автоматически даже без наличия OnTick.
Как можно сравнивать "тестер", если он даже позиции по рынку не обновляет? Так тестировать нельзя.
В том Тестере нет только таймера. Он все считает, кроме некоторых специально не реализованных вещей: маржа и стопауты. Подробности и причины в описании. Ветка к работе служит хорошим дополнением. Тестер в данном случае - один из частных случаев применения. Сценариев использования написано больше десятка.
В том Тестере нет только таймера. Он все считает, кроме некоторых специально не реализованных вещей: маржа и стопауты. Подробности и причины в описании. Ветка к работе служит хорошим дополнением. Тестер в данном случае - один из частных случаев применения. Сценариев использования написано больше десятка.
В обсуждаемом примере нет реализации OnTick.
По затратам на пересчете позиций разберемся и ускорим.В обсуждаемом примере нет реализации OnTick.
Изначально разговор не затевался о Tester vs Virtual, но раз пошла такая тема, то вот полноценный воспроизводимый код. Там OnTick есть.
Протестировал на 1971 билде и MetaQuotes-Demo:
EURUSD,H1: 15515304 ticks, 4663 bars generated
Протестировал на 1971 билде и MetaQuotes-Demo:
Оказывается, уже оптимизировали расчет позиций и теперь во всех тестах штатный тестер считает быстрее библиотеки виртуализации.У меня другие результаты. Привожу только Amount = 1 для краткости.
MT5-Virtual
MT5-Tester
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Новая версия платформы MetaTrader 5 build 1930: Плавающие окна графиков и .Net библиотеки в MQL5
fxsaber, 2019.01.15 22:39
А почему вы не использовали мои воспроизводимые условия?
Я специально указал все настройки для воспроизведения. Только в таком случае, когда обе стороны имеют возможность повторения тестов, можно что-то сравнивать. Без кастомных данных и непонятных настроек.
А почему вы не использовали мои воспроизводимые условия?
Я специально указал все настройки для воспроизведения. Только в таком случае, когда обе стороны имеют возможность повторения тестов, можно что-то сравнивать. Без кастомных данных и непонятных настроек.
Обязательно выложу, как будет готово.
ЗЫ У меня постоянно виснет отладчик на исторических данных, когда делаю SHIFT+F5 после точки останова. Такой лог
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Новая версия платформы MetaTrader 5 build 1930: Плавающие окна графиков и .Net библиотеки в MQL5
Renat Fatkhullin, 2019.01.16 02:01
Протестировал на 1971 билде и MetaQuotes-Demo:
EURUSD,H1: 15515304 ticks, 4663 bars generated
Hedge, RAM-Drive, 1 Agent-only. Советник
В нем добавлена выделенная строка, т.к. раньше тестировал только на кастомных по реальным тикам и библиотека немного менялась с момента первого теста.
Время берется shortest из лога (пять проходов Оптимизатора).
Видно, что Tester сильно замедляется, Virtual - нет. Кто быстрее - см. таблицу.
ЗЫ Virtual не вычисляет (специально) маржу, своп и стопаут. Но вряд ли это является причиной сильных отличий.
А куда вы его кастили и как понимать эту строку?
Ну это был просто абстрактный пример. Вот более развёрнуто:
Если убрать string, то всё работает. Аналогично и с массивами. Это видимо оставшийся рудимент с тех пор, когда сложные объекты нельзя было копировать. Хотя здесь ведь даже не копирование, а просто кастинг. Ну точнее по правилам C++ тут должна создаваться копия объекта, а в MQL происходит приведение ссылки, поэтому ошибка компиляции тут вообще неуместна.