Привет,
Как мне общаться между двумя экспертами, прикрепленными к разным графикам?
Я хочу, чтобы один советник мог прочитать значение переменной в другом советнике.
Привет,
Как мне общаться между двумя экспертами, прикрепленными к разным графикам?
Я хочу, чтобы один советник мог прочитать значение переменной в другом советнике.
Самый простой способ сделать это с помощью глобальных переменных. Вы устанавливаете переменную в одном или нескольких советниках, и она может быть прочитана всеми остальными. Я читал другие сообщения о том, что глобальные издержки связаны с большими накладными расходами; то, как я их использовал, позволяет избежать этой проблемы. Хитрость заключается в том, чтобы узнать, когда переменная изменилась, и это зависит от того, как она будет использоваться, поэтому вам нужно это выяснить. Проверьте GlobalVariableSet () в документации - это очень просто.
эй, это очень интересная информация - так что вы можете более конкретно рассказать о том, как это работает - я имею в виду, действительно ли это так же просто, как использовать GlobalVariableSet () в одном советнике и GlobalVariableGet () в другом? Спасибо
ну это странно - значение должно быть двойным!?! GlobalVariableSet (имя строки, двойное значение)
Каким будет реальный код для записи в одном советнике, а в другом - для чтения глобальной переменной?
Pipmyride, какие еще типы данных вы хотели бынужно? Струны? У меня есть довольно хорошая идея, что обход этого ограничения повлечет за собой немало программирования и знаний.
ну, в общем, у одного советника есть фигуры на графике, которые он должен отправить во второй советник - поэтому у нас есть цена и момент времени - двойное и дата-время для передачи
Datetime хранится как 4-байтовое целое число в mql4. Double хранится в 8 байтах. Диапазон 4-байтового целого числа составляет от -2147483648 до 2147483647, что должно быть достаточно удобно для 8-байтового двойного числа. Таким образом, вы можете привести datetime к двойному значению, чтобы сохранить его как глобальную переменную, а затем вернуться к datetime, когда прочитаете его. Пока вы не выполняете никаких операций с ним, пока он является двойным, все должно быть в порядке.
Что мне нужно сделать для следующего сценария: 1. Флаг TradeTakeOver в EA1 был изменен на true. 2. EA2 читает флаг в EA1 и больше не открывает ордера. Как мне кодировать две вышеуказанные вещи в соответствующих советниках?
1) GlobalVariableSet (TakeOver, 1); 2) if (GlobalVariableGet (TakeOver) == 1 b == c ...) {SendOrder (...);}Originally Posted by ;