Новая версия платформы MetaTrader 5 build 1930: Плавающие окна графиков и .Net библиотеки в MQL5 - страница 112

 
Renat Fatkhullin:
  1. увеличение затрат времени на фоновой просчет 0, 1, 5 открытых позиций разумное

Возиться с этим точно не будете, но есть возможность для очень значительного ускорения

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

Библиотеки: Virtual

fxsaber, 2018.11.16 01:50

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

Что же касается вычисления эквити и профита каждого ордера на каждом тике, то это делать только по запросу - AccountEquity, OrderProfit и т.д.


Когда же с ордерами что-то происходит (выставили, модифицировали, исполнился и т.д.), то хранить их в отсортированном виде по Bid/Ask-ценам.


Все в купе позволит почти полностью избавиться от зависимости с количеством одновременных ордеров. Тестеру будет ровно, 5 или 105 ордеров сейчас висит. Скорость будет отличаться незначительно.


Для себя такое не делал, т.к. с увеличением позиций не сильно замедляется.

 

Добавьте, пожалуйста, в MQL аналог функции typeid из С++, позволяющий получить информацию о полиморфном типе объекта (имя типа и его хэш-код):

#include <typeinfo>

class A { virtual void f() { } };

class B : public A {  };

int _tmain(int argc, _TCHAR* argv[])  
{
  B b;
  A*p= &b;
  printf(typeid(*p).name());  // Получаем на экране: Class B
}

Это необходимая вещь в ООП.  Иначе приходится в каждом классе прописывать виртуальные методы для получения подобной информации, что выглядит костыльно и ненадёжно, учитывая что эта информация есть в системе.

[Удален]  

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


 
Maxim Dmitrievsky:

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


Логи терминала покажите, пожалуйста

[Удален]  
Slava:

Логи покажите

2019.01.17 12:03:15.989 Synthetic Symbol        EURGBP.strange: 50473 M1 bars updated from 2018.11.26 11:49 to 2019.01.17 07:02
2019.01.17 12:03:15.995 Synthetic Symbol        EURGBP.strange: M1 bars processing finished
 
Alexey Navoykov:

Добавьте, пожалуйста, в MQL аналог функции typeid из С++, позволяющий получить информацию о полиморфном типе объекта (имя типа и его хэш-код):

Это необходимая вещь в ООП.  Иначе приходится в каждом классе прописывать виртуальные методы для получения подобной информации, что выглядит костыльно и ненадёжно, учитывая что эта информация есть в системе.

Так можно ведь

class Q{};

void OnStart()
{
   Q q;
   Alert( typename(q) );
}

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

Хэш-код тоже не далеко ушёл:

Returns an unspecified value such that for all type_info objects referring to the same type, their hash_code() is the same.

No other guarantees are given: type_info objects referring to different types may have the same hash_code (although the standard recommends that implementations avoid this as much as possible), and hash_code for the same type can change between invocations of the same program.

Хотя так нормально, вроде: if(typeid(Q) == typeid(q)) {}, но в мкл недоступно.

ЗЫ: хотя для if'ов есть же аналог dynamic_cast.

 
Anatoli Kazharski:

Воспроизведён ли вот этот баг?


2 одиночных запуска тестирования Вашего эксперта с одними и теми же входными параметрами дают разные результаты.

Вы сами пробовали разобраться с этим?

 
Maxim Dmitrievsky:

То есть, недостающие данные с прошлого запуска посчитались

EURGBP.strange: 50473 M1 bars updated from 2018.11.26 11:49 to 2019.01.17 07:02

но не отобразились на открытом графике?


PS Установленный лимит 50 тыс баров на графике явно мал для Вашего случая

 
Maxim Dmitrievsky:
2019.01.17 12:03:15.989 Synthetic Symbol        EURGBP.strange: 50473 M1 bars updated from 2018.11.26 11:49 to 2019.01.17 07:02
2019.01.17 12:03:15.995 Synthetic Symbol        EURGBP.strange: M1 bars processing finished

Это логи со старта терминала или после принудительного обновления данных?

 
Slava:

2 одиночных запуска тестирования Вашего эксперта с одними и теми же входными параметрами дают разные результаты.

Вы сами пробовали разобраться с этим?

Спасибо за информацию. Проверю всё сегодня.