Например, при ACCOUNT_MARGIN_SO_SO = 10 %, событие Stop Out наступит, когда размер средств на счете будет 10 % от маржи, при этом открытые позиции начнут принудительно закрываться брокером.
Другие свойства функции AccountInfoDouble.
ACCOUNT_MARGIN_INITIAL — размер средств, зарезервированных на счёте, для обеспечения гарантийной суммы по всем отложенным ордерам.
Как правило, эта величина равна 0.
ACCOUNT_MARGIN_MAINTENANCE — размер средств, зарезервированных на счёте, для обеспечения минимальной суммы по всем открытым позициям.
Как правило, эта величина равна 0.
ACCOUNT_ASSETS — текущий размер активов на счёте.
Как правило, эта величина равна 0.
ACCOUNT_LIABILITIES — текущий размер обязательств на счёте.
Как правило, эта величина равна 0.
ACCOUNT_COMMISSION_BLOCKED — текущая сумма заблокированных комиссий по счёту.
Как правило, эта величина равна 0.
С помощью свойств функции AccountInfoDouble можно организовать различного рода проверки в функции OnTick эксперта.
Например, наступление события Margin Call.
Здесь мы сравниваем значение свойства ACCOUNT_MARGIN_SO_CALL с размером средств на счете.
При проверке наступления события Stop Out, мы сравниваем значение свойства ACCOUNT_MARGIN_SO_SO с размером средств на счете.
Также можно организовать проверку размера свободных средств на счете, доступных для открытия позиции.
Здесь MqlTick это стандартная структура для хранения цен, которая заполняется значениями с помощью функции SymbolInfoTick.
Вызов функции ResetLastError () производится для обнуления ошибки перед вызовом функции, после которой проверяется возникновение ошибки.
Функция OrderCalcMargin вычисляет размер средств, необходимых для открытия позиции.
И если размер свободных средств на счете (ACCOUNT_MARGIN_FREE) меньше, чем размер средств, необходимых для открытия позиции, денег на счете недостаточно и торговля невозможна.
Для функции AccountInfoString определены такие свойства как имя клиента ACCOUNT_NAME, имя торгового сервера ACCOUNT_SERVER, валюта депозита ACCOUNT_CURRENCY, имя компании, обслуживающей счет ACCOUNT_COMPANY.
С помощью свойства ACCOUNT_NAME, также как и с помощью свойства ACCOUNT_LOGIN, можно защитить советник.
Информацию о клиентском терминале можно получить с помощью функций TerminalInfoInteger и TerminalInfoString.
В качестве аргумента эти функции также принимают свойства.
Мы уже видели проверку подключения терминала к серверу с помощью свойства TERMINAL_CONNECTED.
Свойство TERMINAL_DLLS_ALLOWED позволяет выяснить, есть ли разрешение на использование DLL.
Файлы DLL это еще один способ создания повторно используемых библиотек — модулей кода для MQL5-программ.
DLL-библиотеки находятся в папке MQL5\Libraries торгового терминала и включаются в код MQL5-программы с помощью команды #import.
При этом разрешение на использование DLL-библиотек устанавливается во вкладке Советники настроек клиентского терминала.
DLL-библиотеки могут также применяться для защиты эксперта с помощью переноса основного кода торговой стратегии в DLL-файл.
Свойство TERMINAL_TRADE_ALLOWED показывает, включена ли кнопка авто-торговли в клиентском терминале.
Для проверки этого свойства в функцию OnTick () можно включить код, использующий свойство TERMINAL_TRADE_ALLOWED.
Однако разрешение на торговлю с помощью эксперта может быть отключено в общих свойствах самого эксперта.
Для проверки этого условия можно использовать свойство MQL_TRADE_ALLOWED функции MQLInfoInteger.
С помощью свойства SYMBOL_SPREAD функции SymbolInfoInteger можно осуществить контроль над спредом брокера:
Здесь с помощью свойства SYMBOL_DIGITS выясняем, сколько знаков после запятой в цене и вычисляем спред в пунктах.
Затем сравниваем его с пороговым значением, и, если текущий спред больше порогового значения, торговлю не осуществляем.
С помощью свойства SYMBOL_TRADE_MODE функции SymbolInfoInteger можно проверить ограничения на торговые операции по символу, установленные брокером.
Здесь мы сравниваем значение свойства SYMBOL_TRADE_MODE с константой SYMBOL_TRADE_MODE_FULL.
Например, по какому-либо финансовому инструменту брокер может отключить торговлю.
Также в функции OnTick можно ограничить работу эксперта по времени.
Если вы хотите, чтобы эксперт работал каждый день в заданный интервал времени, определите начальные и конечные час и минуты временного интервала и сравните их с текущим временем.
Здесь берется локальное время, если вы хотите сравнивать с серверным временем, используйте функцию TimeCurrent, а не функцию TimeLocal.
Если вы хотите, чтобы эксперт просто отработал в заданный интервал времени, определите начальную и конечную даты временного интервала и сравните их с текущим временем.
В функции OnTick эксперта также было бы неплохо проверить, достаточно ли баров в истории для расчета советника.
Сделать это можно двумя способами — с помощью функции Bars и с помощью свойства SERIES_BARS_COUNT функции SeriesInfoInteger.
Вильям Л Саймон , Вильям Саймон , Наталья Владимировна Макеева , Нора Робертс , Юрий Викторович Щербатых
Зарубежная компьютерная, околокомпьютерная литература / ОС и Сети, интернет / Короткие любовные романы / Психология / Прочая справочная литература / Образование и наука / Книги по IT / Словари и Энциклопедии