Штатно для обмена данными между советниками, индикаторами, скриптами есть только и исключительно GlobalVariables и файлы
все приведённых 4 пункта это местные "хаки" от безрыбья. Все приведённые 4 пункта используют механизмы не предназначенные для обмена произвольными данными, а тем более массивами данных.
п1. 100% приводит к временному локированию интерфейсного потока (ога, объекты живут там и их "описания" тоже) и не работает в оптимизаторе. Описания объектов служат для human-readable описания объектов,
п2. не работает в тестере и оптимизаторе и служит для оповещения о событиях
п3. п4. ресурсы (даже по имени) предназначены для долговременного хранения а не "обмена побыстрому". Про работоспобность в тестере/оптимизаторе нчего не скажу :-) Использую ресурсы как read-only
говорить о быстродействии кривых решений не имеет смысла.
ps/ кстати можете использовать файлы, а точнее pipes
Вы все верно написали.
Но "хаки", - это наше все.))
В тестере в режиме оптимизации, связь между советником и движком не будет работать. Это и не нужно.
Для полноценного обмена значениями параметров на событиях, советник и движок должны передавать друг другу данные, размером до 2000 символов. Это - немного. Но, и немало.
В данном режиме происходит полный перебор всех возможных комбинаций значений входных переменных, выбранных для оптимизации на соответствующей вкладке. Быстрая (генетический алгоритм) В основу данного типа оптимизации заложен генетический алгоритм подбора наилучших значений входных параметров. Данный тип оптимизации значительно быстрее полного...
// Пример передачи/обмена данных между программами через поле комментария чартов#include <fxsaber\HistoryTicks\Data_String.mqh> // https://www.mql5.com/ru/code/20298voidOnStart()
{
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);
}
В тестере в режиме оптимизации, связь между советником и движком не будет работать. Это и не нужно.
Для полноценного обмена значениями параметров на событиях, советник и движок должны передавать друг другу данные, размером до 2000 символов. Это - не много. Но, и не мало.
Самый удобный хак - номер 1.
с этим "самым удобным хаком" можно на наступить на "детские грабельки", а именно шаблоны, очень любимые пользователями и используемые при перезагрузках.
Maxim Kuznetsov: с этим "самым удобным хаком" можно на наступить на "детские грабельки", а именно шаблоны, очень любимые пользователями и используемые при перезагрузках.
Поясните пожалуйста.
ЗЫ. Для связи будут использоваться объекты со спец. именами. Чтобы не было совпадений с пользов. объектами.
Уважаемый fxsaber.
Я знаю, что через ресурсы можно обмениваться любыми данными.
Но сначала, их нужно перевести в string, а потом через StringToChar(), перевести в uint, и сохранить в ресурсе. И код для этого, нужен гораздо проще.
НО, я доказал, что этот метод медленее, чем пересылка той же строки, через описание объектов.
Мои оппоненты презрительно относятся к типу string, и говорят об использовании мифического метода перевода всех данных сразу в uint, через union.
Причем, строки тоже нужно переводить в uint через юнион.
И зачем строки переводить через юнион в uint, если есть StringToChar()???
Штатно для обмена данными между советниками, индикаторами, скриптами есть только и исключительно GlobalVariables и файлы
все приведённых 4 пункта это местные "хаки" от безрыбья. Все приведённые 4 пункта используют механизмы не предназначенные для обмена произвольными данными, а тем более массивами данных.
п1. 100% приводит к временному локированию интерфейсного потока (ога, объекты живут там и их "описания" тоже) и не работает в оптимизаторе. Описания объектов служат для human-readable описания объектов,
п2. не работает в тестере и оптимизаторе и служит для оповещения о событиях
п3. п4. ресурсы (даже по имени) предназначены для долговременного хранения а не "обмена побыстрому". Про работоспобность в тестере/оптимизаторе нчего не скажу :-) Использую ресурсы как read-only
говорить о быстродействии кривых решений не имеет смысла.
ps/ кстати можете использовать файлы, а точнее pipes
Вы все верно написали.
Но "хаки", - это наше все.))
В тестере в режиме оптимизации, связь между советником и движком не будет работать. Это и не нужно.
Для полноценного обмена значениями параметров на событиях, советник и движок должны передавать друг другу данные, размером до 2000 символов. Это - немного. Но, и немало.
Самый удобный хак - номер 1.
Мои оппоненты презрительно относятся к типу string, и говорят об использовании мифического метода перевода всех данных сразу в uint, через union.
Причем, строки тоже нужно переводить в uint через юнион.
Выше код, который переводит сразу несколько типов (включая не просто строки, а массив строк) в uint и обратно.
Но не думаю, что он будет полезен в данной беседе.
ЗЫ Если очень хочется через строки
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Библиотеки: HistoryTicks
fxsaber, 2018.12.04 09:11
Выше код, который переводит сразу несколько типов (включая не просто строки, а массив строк) в uint и обратно.
Но не думаю, что он будет полезен в данной беседе.
То есть, Вы можете перевести массив строк в uint через union?
И это быстрее чем через StringToChar()?
Если можно, приведите маленький и простой пример. У меня не получается разобраться в Вашем коде.
То есть, Вы можете перевести массив строк в uint через union?
И это быстрее чем через StringToChar()?
Если можно, приведите маленький и простой пример. У меня не получается разобраться в Вашем коде.
Пример был в этой теме здесь.
Для его воспроизведения нужно подключить библиотеку, ссылка на которую в коде примера прописана.
...
ЗЫ Если очень хочется через строки
А максимальный размер комментария какой?
Вы все верно написали.
Но "хаки", - это наше все.))
В тестере в режиме оптимизации, связь между советником и движком не будет работать. Это и не нужно.
Для полноценного обмена значениями параметров на событиях, советник и движок должны передавать друг другу данные, размером до 2000 символов. Это - не много. Но, и не мало.
Самый удобный хак - номер 1.
...
ЗЫ Если очень хочется через строки
Комментарий чарта имеет ограниченный размер. Или нет? Я вроде натыкался.
Еще один серьезный вопрос.
Я сам не пробывал, но есть сомнения в эффективности быстрого обмена через ресурсы.
Быстрый обмен, - 16 миллесекунд туда-сюда на постоянной основе.
Диск не нагрузится?
с этим "самым удобным хаком" можно на наступить на "детские грабельки", а именно шаблоны, очень любимые пользователями и используемые при перезагрузках.
Поясните пожалуйста.
ЗЫ. Для связи будут использоваться объекты со спец. именами. Чтобы не было совпадений с пользов. объектами.