- Любовные романы
- Фантастика и фэнтези
- Ненаучная фантастика
- Ироническое фэнтези
- Научная Фантастика
- Фэнтези
- Ужасы и Мистика
- Боевая фантастика
- Альтернативная история
- Космическая фантастика
- Попаданцы
- Юмористическая фантастика
- Героическая фантастика
- Детективная фантастика
- Социально-психологическая
- Боевое фэнтези
- Русское фэнтези
- Киберпанк
- Романтическая фантастика
- Городская фантастика
- Технофэнтези
- Мистика
- Разная фантастика
- Иностранное фэнтези
- Историческое фэнтези
- LitRPG
- Эпическая фантастика
- Зарубежная фантастика
- Городское фентези
- Космоопера
- Разное фэнтези
- Книги магов
- Любовное фэнтези
- Постапокалипсис
- Бизнес
- Историческая фантастика
- Социально-философская фантастика
- Сказочная фантастика
- Стимпанк
- Романтическое фэнтези
- Ироническая фантастика
- Детективы и Триллеры
- Проза
- Юмор
- Феерия
- Новелла
- Русская классическая проза
- Современная проза
- Повести
- Контркультура
- Русская современная проза
- Историческая проза
- Проза
- Классическая проза
- Советская классическая проза
- О войне
- Зарубежная современная проза
- Рассказы
- Зарубежная классика
- Очерки
- Антисоветская литература
- Магический реализм
- Разное
- Сентиментальная проза
- Афоризмы
- Эссе
- Эпистолярная проза
- Семейный роман/Семейная сага
- Поэзия, Драматургия
- Приключения
- Детская литература
- Загадки
- Книга-игра
- Детская проза
- Детские приключения
- Сказка
- Прочая детская литература
- Детская фантастика
- Детские стихи
- Детская образовательная литература
- Детские остросюжетные
- Учебная литература
- Зарубежные детские книги
- Детский фольклор
- Буквари
- Книги для подростков
- Школьные учебники
- Внеклассное чтение
- Книги для дошкольников
- Детская познавательная и развивающая литература
- Детские детективы
- Домоводство, Дом и семья
- Юмор
- Документальные книги
- Бизнес
- Работа с клиентами
- Тайм-менеджмент
- Кадровый менеджмент
- Экономика
- Менеджмент и кадры
- Управление, подбор персонала
- О бизнесе популярно
- Интернет-бизнес
- Личные финансы
- Делопроизводство, офис
- Маркетинг, PR, реклама
- Поиск работы
- Бизнес
- Банковское дело
- Малый бизнес
- Ценные бумаги и инвестиции
- Краткое содержание
- Бухучет и аудит
- Ораторское искусство / риторика
- Корпоративная культура, бизнес
- Финансы
- Государственное и муниципальное управление
- Менеджмент
- Зарубежная деловая литература
- Продажи
- Переговоры
- Личная эффективность
- Торговля
- Научные и научно-популярные книги
- Биофизика
- География
- Экология
- Биохимия
- Рефераты
- Культурология
- Техническая литература
- История
- Психология
- Медицина
- Прочая научная литература
- Юриспруденция
- Биология
- Политика
- Литературоведение
- Религиоведение
- Научпоп
- Психология, личное
- Математика
- Психотерапия
- Социология
- Воспитание детей, педагогика
- Языкознание
- Беременность, ожидание детей
- Транспорт, военная техника
- Детская психология
- Науки: разное
- Педагогика
- Зарубежная психология
- Иностранные языки
- Филология
- Радиотехника
- Деловая литература
- Физика
- Альтернативная медицина
- Химия
- Государство и право
- Обществознание
- Образовательная литература
- Учебники
- Зоология
- Архитектура
- Науки о космосе
- Ботаника
- Астрология
- Ветеринария
- История Европы
- География
- Зарубежная публицистика
- О животных
- Шпаргалки
- Разная литература
- Зарубежная литература о культуре и искусстве
- Пословицы, поговорки
- Боевые искусства
- Прочее
- Периодические издания
- Фанфик
- Военное
- Цитаты из афоризмов
- Гиды, путеводители
- Литература 19 века
- Зарубежная образовательная литература
- Военная история
- Кино
- Современная литература
- Военная техника, оружие
- Культура и искусство
- Музыка, музыканты
- Газеты и журналы
- Современная зарубежная литература
- Визуальные искусства
- Отраслевые издания
- Шахматы
- Недвижимость
- Великолепные истории
- Музыка, танцы
- Авто и ПДД
- Изобразительное искусство, фотография
- Истории из жизни
- Готические новеллы
- Начинающие авторы
- Спецслужбы
- Подростковая литература
- Зарубежная прикладная литература
- Религия и духовность
- Старинная литература
- Справочная литература
- Компьютеры и Интернет
- Блог
Язык программирования MQL5: Продвинутое использование торговой платформы MetaTrader 5. Издание 2-е, исправленное и дополненное - Тимур Машнин
Шрифт:
Интервал:
Закладка:
Функция OnTick
Как уже было сказано, в функции OnTick, код, как правило, перед вычислениями торговой стратегии начинается с различного рода проверок, хотя некоторые проверки можно выполнить и в функции OnInit.
Информацию о счете клиента можно получить с помощью функций AccountInfoDouble, AccountInfoInteger и AccountInfoString.
В качестве аргумента этих функций указывается идентификатор свойства, значение которого нужно получить.
Для функции AccountInfoInteger это следующие свойства:
— ACCOUNT_LOGIN — функция возвращает номер счета.
— ACCOUNT_TRADE_MODE — функция возвращает тип торгового счета. Функция возвращает 0 для демонстрационного торгового счета, 1 для конкурсного торгового счета, 2 для реального торгового счета.
— ACCOUNT_LEVERAGE — возвращает размер кредитного плеча счета, например, для плеча 1:100, функция вернет 100.
— ACCOUNT_LIMIT_ORDERS — функция возвращает максимальное разрешенное количество отложенных ордеров. Такое ограничение устанавливается брокером, и если ограничений нет, функция возвращает 0.
— ACCOUNT_MARGIN_SO_MODE — в чем задается минимально допустимый уровень залоговых средств, в процентах или в деньгах. Минимально допустимый уровень залоговых средств это уровень залоговых средств, при котором требуется или пополнение счета, или уровень залоговых средств, при достижении которого происходит принудительное закрытие самой убыточной позиции. Минимально допустимый уровень залоговых средств устанавливается брокером и функция возвращает 0, если уровень задается в процентах, и возвращает 1, если уровень задается в деньгах.
— ACCOUNT_TRADE_ALLOWED — функция возвращает 0, если для счета запрещена торговля в случае подключения к счету в режиме инвестора, отсутствия соединения к серверу, запрета торговли на стороне сервера, если счет отправлен в архив. Функция возвращает 1, если торговля на счете разрешена.
— ACCOUNT_TRADE_EXPERT — функция возвращает 0, если брокер запрещает автоматическую торговлю, и возвращает 1, если автоматическая торговля разрешена.
Свойство ACCOUNT_LOGIN может быть использовано для защиты эксперта с помощью его привязки к конкретному счету.
Для этого можно объявить константу, представляющую валидный номер счета и в функции OnInit сравнить ее с текущим счетом.
Значение свойства ACCOUNT_TRADE_MODE можно вывести в виде перечисления, для этого возвращаемое функцией значение нужно привести к перечислению, а затем конвертировать в строку.
Свойство ACCOUNT_TRADE_MODE можно использовать для проверки в функции OnInit () запуска эксперта на реальном счете.
Здесь мы сравниваем значение свойства ACCOUNT_TRADE_MODE с ACCOUNT_TRADE_MODE_REAL.
И открываем диалоговое окно для пользователя.
При этом отобразится диалоговое окно, которое при выборе кнопки Да позволит дальнейшее выполнение кода.
Свойство ACCOUNT_LIMIT_ORDERS может быть использовано для проверки и установки максимального количества отложенных ордеров.
Здесь мы получаем общее количество отложенных ордеров с помощью функции OrdersTotal.
Затем с помощью свойства ACCOUNT_LIMIT_ORDERS получаем максимальное разрешенное количество отложенных ордеров.
И устанавливаем значение максимального количества отложенных ордеров.
Далее мы сравниваем общее количество отложенных ордеров с максимальным количеством отложенных ордеров.
Теперь объявим входной параметр — максимальное количество ордеров, и вызовем определенную нами функцию.
Проверку свойств ACCOUNT_TRADE_ALLOWED и ACCOUNT_TRADE_EXPERT можно организовать в функции OnInit.
Здесь мы с помощью свойства TERMINAL_CONNECTED проверяем соединение с сервером брокера.
Затем с помощью свойства ACCOUNT_TRADE_ALLOWED проверяем возможность торговли для данного счета.
И с помощью свойства ACCOUNT_TRADE_EXPERT проверяем возможность автоматической торговли.
Дополнительно отдельно проверку соединения с сервером можно сделать в функции OnTick.
Для функции AccountInfoDouble определены следующие свойства.
ACCOUNT_BALANCE — баланс счета. Соответствует значению Баланс вкладке Торговля клиентского терминала.
ACCOUNT_CREDIT — размер предоставленного кредита. Типичная ситуация, когда это значение равно 0.
ACCOUNT_PROFIT — размер текущей прибыли на счете. Соответствует столбцу Прибыль во вкладке Торговля клиентского терминала.
ACCOUNT_EQUITY — значение собственных средств на счете. Соответствует значению Средства вкладке Торговля клиентского терминала.
ACCOUNT_MARGIN — размер зарезервированных залоговых средств на счете. Соответствует значению Маржа вкладке Торговля клиентского терминала. Если открытых позиций нет, это значение равно 0.
ACCOUNT_MARGIN_FREE — размер свободных средств на счете, доступных для открытия позиции. Соответствует значению Свободная маржа вкладке Торговля клиентского терминала.
ACCOUNT_MARGIN_LEVEL — уровень залоговых средств на счете в процентах. Соответствует значению Уровень маржи вкладке Торговля клиентского терминала. Рассчитывается как Средства/Маржа*100 %. Если открытых позиций нет, это значение равно 0.
ACCOUNT_MARGIN_SO_CALL — уровень залоговых средств, при котором требуется пополнение счета (Margin Call).
В зависимости от установленного ACCOUNT_MARGIN_SO_MODE выражается в процентах либо в валюте депозита.
Margin Call это скорее информационный сигнал для трейдера, что его счет близок к закрытию, и не сопровождается действиями брокера.
Последствия наступают в случае возникновения Stop Out.
Например, при ACCOUNT_MARGIN_SO_CALL = 50 %, событие Margin Call наступит, когда размер средств на счете станет как половина от маржи.
ACCOUNT_MARGIN_SO_SO — уровень залоговых средств, при достижении которого происходит принудительное закрытие самой убыточной позиции (Stop Out).
В зависимости от установленного ACCOUNT_MARGIN_SO_MODE выражается в процентах либо в валюте депозита.
Например, при 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.
Вызов
