Новая версия платформы MetaTrader 5 build 2715: Общие улучшения - страница 21

 
fxsaber:

Есть тики.

Не мешайте фрилансеру…)))

 

Обнаружилась проблема компиляторов MQL4/MQL5 каких-то последних версий (раньше работало нормально). Подробности в ветке MT4, но в MT5 то же самое.

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Новая версия платформы MetaTrader 4 build 1320

Stanislav Korotky, 2021.01.06 14:59

Какие-то изменения компилятора не дают выполняться виртуальному методу перекрытому в наследнике из-за того, что в базовом классе метод объявлен абстрактным. На стадии выполнения кода появляется ошибка "pure virtual function call". До нескольких последних билдов эта конструкция работала.

Код для воспроизведения привожу.

Поскольку метод виртуальный, его привязка должна осуществляться к объекту класса Concrete с реализацией, а не к абстрактному родительскому Pure.

Файлы:MQL4pure.zip 2 kb


Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Новая версия платформы MetaTrader 4 build 1320

Stanislav Korotky, 2021.01.08 12:30

Дополню. Проблема решается путем замены абстрактных методов на пустые заглушки. Это наглядно демонстрирует проблему в компиляторе, потому что чистая виртуальная функция как раз и реализуется через почти пустую заглушку, которая выводит в рантайме сообщение о вызове чистой виртуальной функции, если та не перекрыта. Получается, что виртуальность не срабатывает для заглушки по-умолчанию, но начинает работать, если заглушку прописать в MQL.


 
Stanislav Korotky:

Обнаружилась проблема компиляторов MQL4/MQL5 каких-то последних версий (раньше работало нормально). Подробности в ветке MT4, но в MT5 то же самое.

Спасибо за сообщение, исправим.


Для работы в текущем билде замените

class Pure
{
  public:
    virtual void method() = 0;
};

на

class Pure
{
  public:
    virtual void method() { }
};
 

Неплохое место для смены таймфрема, без временной шкалы пустое, если сдвинуть назад график, за пару кнопочек много скажут ++

 

в билде 2735, вот такой вот индикатор (всегда отдающий INIT_FAILED) благополучно загружается и остаётся в чарте

#property indicator_chart_window
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
{
   return(INIT_FAILED);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
{
   return(rates_total);
}

подозреваю что из-за "no indicator plot defined for indicator", но на мой взгляд это не повод...

 

наведите порядок с графическим интерфейсом тестера - кнопки, график оптимизации..... все лагает и живет своей жизнью из билда в билд, вот сейчас - запустил оптимизацию - ОК, закончилась

запустил второй раз - появился пустой график оптимизации, и все - не движется, ОК - привычное дело.... перегружаем терминал, запускаю оптимизацию, УРА - двигается график!!!

переключаюсь на вкладку настройки:

ГДЕ кноПОки !?

 

Когда несколько Терминалов на машине, не понять, какому Терминалу принадлежит Алерт-окно.

На картинке Алерты от трех Терминалов. Кто чей - сложно выяснить.

 

Столкнулся с тем, что реальная торговля на демо очень сильно отличается от тестера с теми же параметрами на реальных тиках.
Причем реальная торговля торгует гораздо лучше и прибылнее, чем тестер. Т.е. тестер врет.
Стратегия открытия сделок такая, что тестер должен практически совпадать с реальной торговлей. 

  • Счет MQ Demo неттинговый.
  • Торговля фиксированным лотом 0.02.
  • Сигнал на продажу закрывает Buy и окрывает Sell.
  • Сигнал на покупку закрывает Sell и открывает Buy.
  • Когда появляется сигнал на покупку или продажу, он висит до тех пор, пока он не будет закрыта противоположная позиция и открыта новая позиция.
  • Реальная торговля велась на VPS с 15 декабря по 9 января. Пинг 10 - 15 ms. Тест за тот же период.


Это что? Баг или я чего-то не учитываю?

То есть человек заходит в маркет, скачивает демо версию советника и на тесте получает лажу вместо реальной картины?

 
Nikolai Semko:

Это что? Баг или я чего-то не учитываю?

Второе.

То есть человек заходит в маркет, скачивает демо версию советника и на тесте получает лажу вместо реальной картины?

Немногие умеют делать боевые советники, очень близкие к Тестеру по результатам.

Тестер также имеет массу нюансов. Поэтому хорошим тоном является использование кастомных символов для бэктеста.

 
Nikolai Semko:

Столкнулся с тем, что реальная торговля на демо очень сильно отличается от тестера с теми же параметрами на реальных тиках.
Причем реальная торговля торгует гораздо лучше и прибылнее, чем тестер. Т.е. тестер врет.
Стратегия открытия сделок такая, что тестер должен практически совпадать с реальной торговлей. 

  • Счет MQ Demo неттинговый.
  • Торговля фиксированным лотом 0.02.
  • Сигнал на продажу закрывает Buy и окрывает Sell.
  • Сигнал на покупку закрывает Sell и открывает Buy.
  • Когда появляется сигнал на покупку или продажу, он висит до тех пор, пока он не будет закрыта противоположная позиция и открыта новая позиция.
  • Реальная торговля велась на VPS с 15 декабря по 9 января. Пинг 10 - 15 ms. Тест за тот же период.


Это что? Баг или я чего-то не учитываю?

То есть человек заходит в маркет, скачивает демо версию советника и на тесте получает лажу вместо реальной картины?

Вы действительно верите в то что на полигоне для краш тестов можно узнать срок службы автомобиля в городских условиях?

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