Ошибки, баги, вопросы - страница 341

 
Urain:

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

Но вот наткнулся на очередное ограничение языка. Стринг сам по себе поддерживает практически бесконечную длинну знаков. Ну наверное ограничение лежит где-то в области ограничения массивов в целом. А стринг переданный как параметр граф. объекта ограничен 63 знака. В результате для передачи массива в виде стринга потребуется куча граф. объектов (да, забыл сказать что использую шифрование, поэтому информация в стингах занимает примерно столько же места сколько и в оригинальном типе). Сейчас при теперешних 63 знаках получается передать через один объект только 15 пар time/price.

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

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

Пришлось написать отдельный класс для склейки сообщения из кусочков.... работает ))))

Документация по MQL5: Работа с событиями / EventChartCustom
Документация по MQL5: Работа с событиями / EventChartCustom
  • www.mql5.com
Работа с событиями / EventChartCustom - Документация по MQL5
 
AlexSTAL:

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

Пришлось написать отдельный класс для склейки сообщения из кусочков.... работает ))))

Да, если б не было ограничений то можно было бы и события использовать для передачи массивов данных.
 
Urain:
Да, если б не было ограничений то можно было бы и события использовать для передачи массивов данных.

Всё никак не соберусь попробовать хендл объекта передавать через событие. А в объекте - все нужные данные.

Если прям щас  актуально - попробуй, потом доложишься.

// Очень заманчиво было б иметь внутри терминала контролируюмую-фицияльную shared-память. Хотя б только для объектов и массивов.

// И модификатор shared при объявлении такого объекта определял бы его помещение в таку память.

 
MetaDriver:

Всё никак не соберусь попробовать хендл объекта передавать через событие. А в объекте - все нужные данные.

Если прям щас  актуально - попробуй, потом доложишься.

Значение handle передаётся верно, но в нужном потоке такого handle нет. Поэтому значение уже не указывает на нужный handle.
 
MetaDriver:

// Очень заманчиво было б иметь внутри терминала контролируюмую-фицияльную shared-память. Хотя б только для объектов и массивов.

// И модификатор shared при объявлении такого объекта определял бы его помещение в таку память.

Что-то типо глобальной терминальной памяти? доступной всем потокам.
 
Urain:
Что-то типо глобальной терминальной памяти? доступной всем потокам.
Угу.
 
Urain:
Значение handle передаётся верно, но в нужном потоке такого handle нет. Поэтому значение уже не указывает на нужный handle.
Жаль.
 
Скачиваю 420-й билд отсюда https://www.mql5.com/ru/forum/23/page11 , а ставится на самом деле 412-й. У меня проблема или в metaquotes.net файл забыли поменять ?
Список изменений в билдах MetaTrader 5 Client Terminal
Список изменений в билдах MetaTrader 5 Client Terminal
  • www.mql5.com
Автоматическое обновление доступно через систему LiveUpdate:.
 
Urain:
Что-то типо глобальной терминальной памяти? доступной всем потокам.

Самым простым решением для MQ было бы дать в качестве параметров функции

void OnChartEvent(const int id,const long &lparam[],const double &dparam[],const string &sparam[])

массивы данных вместо переменных, которые существуют как параметры сейчас. Решение конечно однобокое тк всё равно не будет возможности передавать данные между советниками, но всё же это лучше чем ничего.

 
Urain:

1. Самым простым решением для MQ было бы дать в качестве параметров функции массивы данных вместо переменных, которые существуют как параметры сейчас.

2. Решение конечно однобокое тк всё равно не будет возможности передавать данные между советниками, но всё же это лучше чем ничего.

1. Да, пожалуй.

2. Почему не будет можно? Скопировал себе, получил. А то, что нужно передать - передал через следующее сообщение.

Причина обращения: