Как общаться между двумя экспертами?
Страница 1 из 812 12 ПоследняяПоследняя
Results 1 to 10 of 12

Thread: Как общаться между двумя экспертами?

  1. #1
    Привет,

    Как мне общаться между двумя экспертами, прикрепленными к разным графикам?

    Я хочу, чтобы один советник мог прочитать значение переменной в другом советнике.

  2. #2
    Самый простой способ сделать это с помощью глобальных переменных. Вы устанавливаете переменную в одном или нескольких советниках, и она может быть прочитана всеми остальными. Я читал другие сообщения о том, что глобальные издержки связаны с большими накладными расходами; то, как я их использовал, позволяет избежать этой проблемы. Хитрость заключается в том, чтобы узнать, когда переменная изменилась, и это зависит от того, как она будет использоваться, поэтому вам нужно это выяснить. Проверьте GlobalVariableSet () в документации - это очень просто.

  3. #3
    эй, это очень интересная информация - так что вы можете более конкретно рассказать о том, как это работает - я имею в виду, действительно ли это так же просто, как использовать GlobalVariableSet () в одном советнике и GlobalVariableGet () в другом? Спасибо

  4. #4
    ну это странно - значение должно быть двойным!?! GlobalVariableSet (имя строки, двойное значение)

  5. #5
    Каким будет реальный код для записи в одном советнике, а в другом - для чтения глобальной переменной?

  6. #6
    Pipmyride, какие еще типы данных вы хотели бынужно? Струны? У меня есть довольно хорошая идея, что обход этого ограничения повлечет за собой немало программирования и знаний.

  7. #7
    ну, в общем, у одного советника есть фигуры на графике, которые он должен отправить во второй советник - поэтому у нас есть цена и момент времени - двойное и дата-время для передачи

  8. #8
    Datetime хранится как 4-байтовое целое число в mql4. Double хранится в 8 байтах. Диапазон 4-байтового целого числа составляет от -2147483648 до 2147483647, что должно быть достаточно удобно для 8-байтового двойного числа. Таким образом, вы можете привести datetime к двойному значению, чтобы сохранить его как глобальную переменную, а затем вернуться к datetime, когда прочитаете его. Пока вы не выполняете никаких операций с ним, пока он является двойным, все должно быть в порядке.

  9. #9
    Что мне нужно сделать для следующего сценария: 1. Флаг TradeTakeOver в EA1 был изменен на true. 2. EA2 читает флаг в EA1 и больше не открывает ордера. Как мне кодировать две вышеуказанные вещи в соответствующих советниках?

  10. #10

    Quote Originally Posted by ;
    Что мне нужно сделать для следующего сценария: 1. Флаг TradeTakeOver в EA1 был изменен на true. 2. EA2 читает флаг в EA1 и больше не открывает ордера. Как мне кодировать две вышеуказанные вещи в соответствующих советниках?
    1) GlobalVariableSet (TakeOver, 1); 2) if (GlobalVariableGet (TakeOver) == 1 b == c ...) {SendOrder (...);}

Действующие разрешения

  • Вы не можете создавать новые темы
  • Вы не можете размещать ответы
  • Вы не можете использовать вложения
  • Вы не можете редактировать ваши записи
  •  
  • BB-код - Вкл.
  • Смайлики - Вкл.
  • Код [IMG] - Вкл.
  • Код [VIDEO] - Вкл.
  • HTML-код - Выкл.
Веб-сайт использует cookies
Веб-сайт использует cookies, в настоящее время некоторые из них уже установлены. Вы можете ознакомиться с более подробной информацией об использовании нами cookies здесь. Чтобы принять условия использования cookies, пожалуйста, нажмите на кнопку справа. Если вы продолжаете пользоваться веб-сайтом, вы по умолчанию принимаете условия использования cookies.