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

 
fxsaber:

Уважаемый fxsaber.

Я знаю, что через ресурсы можно обмениваться любыми данными.

Но сначала, их нужно перевести в string, а потом через StringToChar(), перевести в uint,  и сохранить в ресурсе. И код для этого, нужен гораздо проще.

НО, я доказал, что этот метод медленее, чем пересылка той же строки, через описание объектов.


Мои оппоненты презрительно относятся к типу string, и говорят об использовании мифического метода перевода всех данных сразу в uint, через union.

Причем, строки тоже нужно переводить в uint через юнион.


И зачем строки переводить через юнион в uint, если есть StringToChar()???

 
Maxim Kuznetsov:

Штатно для обмена данными между советниками, индикаторами, скриптами есть только и исключительно GlobalVariables и файлы

все приведённых 4 пункта это местные "хаки" от безрыбья. Все приведённые 4 пункта используют механизмы не предназначенные для обмена произвольными данными, а тем более массивами данных.

п1. 100% приводит к временному локированию интерфейсного потока (ога, объекты живут там и их "описания" тоже) и не работает в оптимизаторе. Описания объектов служат для human-readable описания объектов, 

п2. не работает в тестере и оптимизаторе и служит для оповещения о событиях

п3. п4. ресурсы (даже по имени) предназначены для долговременного хранения а не "обмена побыстрому". Про работоспобность в тестере/оптимизаторе нчего не скажу :-) Использую ресурсы как read-only

говорить о быстродействии кривых решений не имеет смысла.

ps/ кстати можете использовать файлы, а точнее pipes

Вы все верно написали.

Но "хаки", - это наше все.))

В тестере в режиме оптимизации, связь между советником и движком не будет работать. Это и не нужно. 


Для полноценного обмена значениями параметров на событиях, советник и движок должны передавать друг другу данные, размером до 2000 символов. Это - немного. Но, и немало.


Самый удобный хак - номер 1.

Типы оптимизации - Алгоритмический трейдинг, торговые роботы - MetaTrader 5
Типы оптимизации - Алгоритмический трейдинг, торговые роботы - MetaTrader 5
  • www.metatrader5.com
В данном режиме происходит полный перебор всех возможных комбинаций значений входных переменных, выбранных для оптимизации на соответствующей вкладке. Быстрая (генетический алгоритм) В основу данного типа оптимизации заложен генетический алгоритм подбора наилучших значений входных параметров. Данный тип оптимизации значительно быстрее полного...
 
Реter Konow:

Мои оппоненты презрительно относятся к типу string, и говорят об использовании мифического метода перевода всех данных сразу в uint, через union.

Причем, строки тоже нужно переводить в uint через юнион.

Выше код, который переводит сразу несколько типов (включая не просто строки, а массив строк) в uint и обратно.

Но не думаю, что он будет полезен в данной беседе.


ЗЫ Если очень хочется через строки

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

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

fxsaber, 2018.12.04 09:11

// Пример передачи/обмена данных между программами через поле комментария чартов

#include <fxsaber\HistoryTicks\Data_String.mqh> // https://www.mql5.com/ru/code/20298

void OnStart()
{
  int ArrayIn[] = {0, 1, 2, 3, 4, 5};  
  ChartSetString(0, CHART_COMMENT, DATA_STRING::ToString(ArrayIn));    // Записали данные в комментарий чарта

  int ArrayOut[];    
  DATA_STRING::FromString(ChartGetString(0, CHART_COMMENT), ArrayOut); // Прочли данные из комментария чарта
  
  ArrayPrint(ArrayOut);
}
 
fxsaber:

Выше код, который переводит сразу несколько типов (включая не просто строки, а массив строк) в uint и обратно.

Но не думаю, что он будет полезен в данной беседе.

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

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

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

 
Реter Konow:

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

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

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

Пример был в этой теме здесь.

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

Мой подход. Ядро - Движок.
Мой подход. Ядро - Движок.
  • 2018.12.19
  • www.mql5.com
В этой ветке, я хочу рассказать о своем подходе в программировании. Заранее предупреждаю, - здесь не будет обсуждений GUI...
 
fxsaber:

...

ЗЫ Если очень хочется через строки

А максимальный размер комментария какой?

 
Реter Konow:

Вы все верно написали.

Но "хаки", - это наше все.))

В тестере в режиме оптимизации, связь между советником и движком не будет работать. Это и не нужно. 


Для полноценного обмена значениями параметров на событиях, советник и движок должны передавать друг другу данные, размером до 2000 символов. Это - не много. Но, и не мало.


Самый удобный хак - номер 1.

с этим "самым удобным хаком" можно на наступить на "детские грабельки", а именно шаблоны, очень любимые пользователями и используемые при перезагрузках.
 
fxsaber:
...


ЗЫ Если очень хочется через строки

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

 

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

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

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

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

 
Maxim Kuznetsov:
с этим "самым удобным хаком" можно на наступить на "детские грабельки", а именно шаблоны, очень любимые пользователями и используемые при перезагрузках.

Поясните пожалуйста. 

ЗЫ. Для связи будут использоваться объекты со спец. именами. Чтобы не было совпадений с пользов. объектами.