Мой подход. Ядро - Движок. - страница 91

 
Реter Konow:

Еще один серьезный вопрос.

Я сам не пробывал, но есть сомнения в эффективности быстрого обмена через ресурсы.

Быстрый обмен, - 16 миллесекунд туда-сюда на постоянной основе.

Диск не нагрузится?

вы впадаете в "грех преждевременной оптимизации" :-)

сделайте класс (или набор функций если ОО вам претит) обмена данными - если в реальных проектах он будет тормозить, вот тогда и подумаете над вариантами. А так вы ещё полгода бессмысленными тестами будите заниматься.

PS вы кстати чего-нить сделали для представления проекта публике ? или традиционно чешите ЧСВ на форуме :-) 

 
Artyom Trishkin:

Комментарий чарта имеет ограниченный размер. Или нет? Я вроде натыкался.

Думаю, ограничения имеются. Сам через строки передаю только MqlTick-тики в EventChartCustom, т.к. event-очередь сохраняет последовательность тиков. Жутко удобно.

 
Реter Konow:

То есть, Вы можете перевести массив строк в uint через union?

Не помню, как там реализовано, но в любой тип (хоть в MqlTick) могу перевести не только строковые массивы, но и другие типы данных. Код один и тот же будет.

И это быстрее чем через StringToChar()?

Не знаю. Попробуйте MqlTick перевести в строку по своему методу и затем через StringToChar в uint. И конечно, обратно. Замерьте и сравните.

Если можно, приведите маленький и простой пример. У меня не получается разобраться в Вашем коде.

#include <TypeToBytes.mqh> // https://www.mql5.com/ru/code/16280

void OnStart()
{    
  string Str[] = {"123", "Hello World!", "Peter Konow"};

  CONTAINER<uint> Container; // Создаем контейнер - все будет храниться в массиве простого типа (в примере выбран uint)    
  Container[0] = Str;        // Записали в контейнер строковый массив
  
  CONTAINER<uint> Container2;                 // Создаем контейнер-получатель  
  ArrayCopy(Container2.Data, Container.Data); // Скопировали в него ТОЛЬКО содержимое uint массива

  string Str2[];
  Container2[0].Get(Str2); // Получили данные в исходном виде
  ArrayPrint(Str2);
}
 
fxsaber:

Думаю, ограничения имеются. Сам через строки передаю только MqlTick-тики в EventChartCustom, т.к. event-очередь сохраняет последовательность тиков. Жутко удобно.

Если речь о малом объеме сообщений (до 64-символов) и постоянной быстрой передаче туда-сюда, - есть несколько удобных вариантов.

Причем EventChartCustom не самый лучший, потому что попадает в очередь событий OnChartEvent().

Но, когда речь о быстрой передачи более 1000 символов туда-сюда, EventChartCustom и очередь событий приводят к задержкам (например при перерисовке таблиц и польз. анимации).

Быстрая передача через ресурсы - под вопросом. 

Вот скажите, она не будет нагружать диск?

 

Судя по молчанию, - наверное будет.

Вот и проверили.))

 
Реter Konow:

Быстрая передача через ресурсы - под вопросом. 

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

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

fxsaber, 2018.12.09 00:18

Этот пример теперь работает в 15 раз быстрее

1000000
Time[TestResource()] = 286646


Грубо говоря, полный цикл записи/чтения тиков через ресурс идет со скорость 4 миллиона тиков в секунду.


Вот скажите, она не будет нагружать диск?

Диск не используется при работе с ресурсами. Все в памяти.

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

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

fxsaber, 2018.12.11 09:19

Проверил, 60Мб спокойно (MT4/5) пишутся в Ресурсы. Так что если и есть ограничение, то выше.

 
fxsaber:


Диск не используется при работе с ресурсами. Все в памяти.

Спасибо. Значит, этот вариант остается.

 
fxsaber:


Диск не используется при работе с ресурсами. Все в памяти.

А что насчет тестера? Будут ли ресурсы созданные в тестере видны вне его? И создаются ли они в тестере вообще?

ЗЫ. А то здесь один товарищ, заявил что ресурсы - неизвестно работают ли в тестере.))
 
Реter Konow:

А что насчет тестера? Будут ли ресурсы созданные в тестере видны вне его?

И создаются ли они в тестере вообще?

Работу ресурсов в Тестере не проверял. Если они и работают там, то в MT4 они будут видны, т.к Тестер внутри Терминала, а вот в MT5 - нет, поскольку Тестер никак не связан с Терминалом. Там только через Common-файлы возможен обмен.


ЗЫ Вся вышеприведенная информация добывалась одним способом - задал себе вопрос и ответил на него сам через проверку кодом. Рекомендую.

 
fxsaber:

Работу ресурсов в Тестере не проверял. Если они и работают там, то в MT4 они будут видны, т.к Тестер внутри Терминала, а вот в MT5 - нет, поскольку Тестер никак не связан с Терминалом. Там только через Common-файлы возможен обмен.

Ясно. Нужно проверить. Сегодня проверю.