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

 
Roman:

Чтоб было горячо, тогда через File Mapping с синхронизацией событий.

Подсказка - на чистом MQL, думайте... самого случайно осенило

 
A100:

Подсказка - на чистом MQL, думайте... самого случайно осенило

Переменную обернуть в класс, и получить дескриптор объекта.
Любым способом передать дескриптор в эксперт, получаем напрямую из объекта. ))
Не знаю, не пробовал, тоже идея пришла. Но я не любитель классов.  Я через маппинг замутил бы.
В стандартном WinApi всё доступно. 

Документация по MQL5: Основы языка / Типы данных / Указатели объектов
Документация по MQL5: Основы языка / Типы данных / Указатели объектов
  • www.mql5.com
Указатели объектов - Типы данных - Основы языка - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Roman:

В индикаторе заводишь int переменную, инициализируешь и сохраняешь туда число.
В индикаторе определяешь пользовательскую функцию, которая возвращает эту переменную.
Функцию определяешь с ключевым словом export.
В советнике импортируешь эту функцию, из name_indicator.ex4
Вызываешь функцию когда нужно.
Скорость не замерял.

Эта схема видится нерабочей. Покажите элементарный пример, пожалуйста.

 
Nikolai Semko:

если использование user32.dll не критично, то вот еще вариант. Ничего не помню про замеры, но там же ниже писал, что вроде работает шустро. Вы там еще спрашивали - зачем мне скорость :))
решение универсальное (между терминалами тоже можно использовать), не не событийное. Придется с таймером работать. Впрочем минимальное время между событиями в   OnChartEvent тоже не может быть менее 1/64 секунды.

Спасибо, но не подходит, т.к. возможна такая сиутация.

Expert1 и Expert2 читает данные Indicator1, Expert3 - Indicator2.


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


На языке глобальных переменных решение такое.

Индикатор:

GlobalVariableSet(IndividualName, Number);


Советник:

Number = (int)GlobalVariableGet(IndividualName);


При такой реализации чтение жутко тормозит. Несколько часов наблюдения за вариантом на Ресурсах показывает, что оно быстрее где-то в 100 раз.

 
A100:

Подсказка - на чистом MQL, думайте... самого случайно осенило

Подожду решения.

 
fxsaber:

Спасибо, но не подходит, т.к. возможная такая сиутация.

Expert1 и Expert2 читает данные Indicator1, Expert3 - Indicator2.

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

 
Nikolai Semko:

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

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

Очень сложное решение выйдет.

 
fxsaber:

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

Очень сложное решение выйдет.

Два индикатора и советник на одном графике?

 
fxsaber:

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

Очень сложное решение выйдет.

Для синхронизации уже давно придумана функция GlobalVariableSetOnCondition
Документация по MQL5: Глобальные переменные терминала / GlobalVariableSetOnCondition
Документация по MQL5: Глобальные переменные терминала / GlobalVariableSetOnCondition
  • www.mql5.com
GlobalVariableSetOnCondition - Глобальные переменные терминала - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Slava:
Для синхронизации уже давно придумана функция GlobalVariableSetOnCondition

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