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

 
fxsaber:

Подскажите, как правильно воспроизвести отсутствие разброса? У меня не получается (Amount = 5)

Фоновые приложения?

Чистота экспериментов сейчас сложно поддерживается.

Cx стейты надо отключать в биосе, чтобы процессор не игрался бустом частоты. Но и это не всегда помогает.

Processor states

The CPU power states C0–C3 are defined as follows:

    C0 is the operating state.
    C1 (often known as Halt) is a state where the processor is not executing instructions, but can return to an executing state essentially instantaneously. 
        All ACPI-conformant processors must support this power state. Some processors, such as the Pentium 4, also support an Enhanced C1 state 
       (C1E or Enhanced Halt State) for lower power consumption.[25]
    C2 (often known as Stop-Clock) is a state where the processor maintains all software-visible state, but may take longer to wake up.
        This processor state is optional.
    C3 (often known as Sleep) is a state where the processor does not need to keep its cache coherent, but maintains other state. 
        Some processors have variations on the C3 state (Deep Sleep, Deeper Sleep, etc.) that differ in how long it takes to wake the processor.
        This processor state is optional.

    Additional states are defined by manufacturers for some processors. For example, Intel's Haswell platform has states up to C10, where 
    it distinguishes core states and package states.

Отключив C стейты, вы получите стабильную рабочую частоту и только тогда можно сказать, что первое условие для тестов производительности соблюдено:


В обычном случае у вас там плавающая частота, растущая с запозданием от появления реальной нагрузки. Это полностью убивает замеры.

Конечно, на ноутбуке нельзя отключать Cx стейты, иначе он от батареи работать будет очень мало.

Плюс конечно фоновая активность, включая антивирусы.

 
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

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