LoveRead.info » Книги » Разная литература » Язык программирования MQL5: Продвинутое использование торговой платформы MetaTrader 5. Издание 2-е, исправленное и дополненное - Тимур Машнин

Язык программирования MQL5: Продвинутое использование торговой платформы MetaTrader 5. Издание 2-е, исправленное и дополненное - Тимур Машнин

Книгу Язык программирования MQL5: Продвинутое использование торговой платформы MetaTrader 5. Издание 2-е, исправленное и дополненное - Тимур Машнин читаем онлайн бесплатно полную версию! Чтобы начать читать не надо регистрации. Напомним, что читать онлайн вы можете не только на компьютере, но и на андроид (Android), iPhone и iPad. Приятного чтения!

240 0 10:00, 03-01-2023
Язык программирования MQL5: Продвинутое использование торговой платформы MetaTrader 5. Издание 2-е, исправленное и дополненное - Тимур Машнин
03 январь 2023

Книга Язык программирования MQL5: Продвинутое использование торговой платформы MetaTrader 5. Издание 2-е, исправленное и дополненное - Тимур Машнин читать онлайн бесплатно без регистрации

Разработка индикаторов и советников с использованием языка программирования MQL5 для платформы MetaTrader 5. Второе издание, исправленное и дополненное.

    1 ... 12 13 14 15 16 17 18 19 20 ... 23
    Перейти на страницу:
    текущие цены выше цены ордера.

    — ORDER_TYPE_BUY_STOP_LIMIT — отложенное выставление отложенного ордера типа Buy Limit для торговле на откате, при этом текущие цены ниже цены ордера.

    — ORDER_TYPE_SELL_STOP_LIMIT — отложенное выставление отложенного ордера типа Sell Limit для торговли на откате, при этом текущие цены выше цены ордера.

    Для изменения параметров отложенного ордера (TRADE_ACTION_MODIFY), требуется указание 7 полей структуры MqlTradeRequest: action, order, price, sl, tp, type_time, expiration.

    При этом значение поля order берется из структуры MqlTradeResult результата выставления ордера.

    Для удаления отложенного ордера (TRADE_ACTION_REMOVE), требуется указание 2 полей структуры MqlTradeRequest: action и order.

    Пример создания эксперта

    В качестве основы советника возьмем следующий код.

    В этом коде, мы сначала определяем объем торговли в лотах, максимально допустимый спред брокера, при котором мы согласны торговать, и значения стоплосса и тейкпрофита для нашей торговли, которые потом можно оптимизировать.

    Также мы определяем флаг flagStopLoss, для того чтобы прекратить торговлю, если поймаем стоплосс.

    И здесь общие проверки функции OnInit выделены в отдельную функцию OnCheckTradeInit, а общие проверки функции OnTick выделены в отдельную функцию OnCheckTradeTick.

    В функции OnCheckTradeInit мы спрашиваем трейдера разрешение на запуск эксперта на реальном счете, а затем проверяем соединение к серверу, не запрещена ли торговля на стороне сервера, и не запретил ли брокер автоматическую торговлю.

    Соответственно в функции OnInit, мы просто вызываем нашу функцию OnCheckTradeInit.

    В функции OnCheckTradeTick, общих проверок функции OnTick, мы проверяем соединение к серверу, включена ли кнопка авто-торговли в клиентском терминале, включено ли разрешение на торговлю с помощью эксперта в общих свойствах самого эксперта, и наступление события Margin Call.

    Далее мы проверяем наступление события Stop Out и достаточно ли свободных средств на счете для открытия позиции.

    И затем, мы осуществляем контроль над спредом брокера, проверяем ограничения на торговые операции по символу, установленные брокером, и проверяем, достаточно ли баров в истории для расчета советника.

    Соответственно в функции OnTick, мы сначала вызываем функцию OnCheckTradeTick для осуществления всех проверок.

    Затем мы ограничиваем работу эксперта по появлению нового бара на графике символа, а не при каждом тике.

    Для этого мы используем статическую переменную last_time, в которую записываем время появления последнего бара.

    Далее мы ограничиваем дневную торговлю при получении стоплосса.

    Этот шаг конечно же является необязательным и зависит от стратегии трейдера.

    Мы приводим его исключительно для демонстрации работы функции OnTrade.

    Затем мы проверяем наличие открытой позиции, чтобы не пытаться открыть ее заново, используя флаги BuyOpened и SellOpened.

    И получаем цены символа для вычисления сигналов торговой системы.

    Цены записываем в структуру MqlRates.

    И советник будет отправлять ордера на покупку и продажу при установке флагов TradeSignalBuy и TradeSignalSell в значение true.

    Установку значений флагов TradeSignalBuy и TradeSignalSell должна осуществлять торговая система.

    Далее, при получении сигналов от торговой системы, мы отправляем ордера на покупку или продажу.

    И наконец, в функции OnTrade мы обрабатываем событие стоплосса и устанавливаем флаг flagStopLoss в значение true.

    В качестве торговой системы возьмем «Метод Сидуса».

    Здесь берется временной интервал — Н1 — часы.

    И экспоненциальные скользящие средние (Exponential Moving Average): 18 ЕМА и 28 ЕМА;

    А также Weighted Moving Average — 5WMA и 8 WMA.

    И торговые сигналы на вход в рынок по Методу Сидуса:

    Открытие позиции на покупку: 5WMA и 8WMA скользящие средние пересекают туннель из 18ЕМА и 28ЕМА снизу вверх.

    Открытие позиции на продажу: 5WMA и 8 WMA скользящие средние пересекают туннель из 18 ЕМА и 28 ЕМА сверху вниз.

    Торговые сигналы на выход из рынка по Методу Сидуса:

    На покупку: цена на графике достигла вершины и 5 WMA как бы «ныряет» под 8 WMA скользящую среднюю. Следует закрыть открытую торговую позицию.

    На продажу: цена на графике достигла дна и скользящая средняя 5 WMA как бы «прыгает» над 8WMA. Следует закрыть торговую позицию.

    Теперь дополним код советника, реализацией Метода Сидуса.

    Объявим хэндля используемых индикаторов и их буферы.

    И в функции OnInit получим эти хэндлы.

    В функции OnTick, мы вводим новые функции OnTradeSignalBuy и OnTradeSignalSell для вычисления сигналов на покупку и продажу.

    И функции OnTradeSignalBuyStop и OnTradeSignalSellStop для вычисления сигналов на закрытие позиций на покупку и продажу.

    Таким образом, мы должны дополнить код функции OnTick закрытием позиции на покупку и продажу.

    В самом начале появления MQL5 закрытие позиции осуществлялось путем отправки противоположного ордера с тем же объемом, то есть закрытие позиции на покупку делалось путем отправки ордера на продажу с тем же объемом, и наоборот, для закрытия позиции на продажу.

    То есть платформа MetaTrader 5 изначально создавалась для биржевой торговли с неттинговым учетом позиций.

    При неттинговом учете по одному финансовому инструменту можно иметь только одну позицию, поэтому все дальнейшие операции по нему ведут к изменению объема, закрытию или развороту существующей позиции.

    Но чтобы расширить возможности трейдеров, в платформу была добавлена вторая система учета — хеджинг.

    Теперь по инструменту можно иметь множество позиций, в том числе — разнонаправленных.

    Это позволяет реализовывать торговые стратегии с так называемым локированием — если цена пошла против трейдера, он имеет возможность открыть позицию в противоположном направлении.

    Поэтому для надежного закрытия позиции мы используем библиотечные классы CPositionInfo и CTrade.

    Поэтому включим в код файлы этих классов и создадим их экземпляры.

    И в функции OnTick, мы в цикле проверяем все открытые позиции, и с помощью метода PositionClose класса CTrade закрываем позиции определенного типа.

    И конечно же мы должны определить функции сигналов торговой системы, так как в методе OnTick для получения сигналов на продажу или покупку вызываются функции OnTradeSignalBuy, OnTradeSignalSell, OnTradeSignalBuyStop, OnTradeSignalSellStop.

    Но сначала, перед функциями обратного вызова, мы объявляем входные параметры numberBarOpenPosition — количество баров, на которых будет проверяться пересечение 5WMA и 8 WMA туннеля из 18 ЕМА и 28 ЕМА, и numberBarStopPosition — количество баров, на которых будет проверяться пересечение 5WMA и 8 WMA и достижения ценой вершины или дна.

    В функции OnTradeSignalBuy и функции OnTradeSignalSell с помощью хэндлов индикаторов заполняются

    1 ... 12 13 14 15 16 17 18 19 20 ... 23
    Перейти на страницу:
    1. Жалоба
    Отзывы - 0

    Прочитали книгу? Предлагаем вам поделится своим отзывом от прочитанного(прослушанного)! Ваш отзыв будет полезен читателям, которые еще только собираются познакомиться с произведением.


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

    • 1. Просьба отказаться от дискриминационных высказываний. Мы защищаем право наших читателей свободно выражать свою точку зрения. Вместе с тем мы не терпим агрессии. На сайте запрещено оставлять комментарий, который содержит унизительные высказывания или призывы к насилию по отношению к отдельным лицам или группам людей на основании их расы, этнического происхождения, вероисповедания, недееспособности, пола, возраста, статуса ветерана, касты или сексуальной ориентации.
    • 2. Просьба отказаться от оскорблений, угроз и запугиваний.
    • 3. Просьба отказаться от нецензурной лексики.
    • 4. Просьба вести себя максимально корректно как по отношению к авторам, так и по отношению к другим читателям и их комментариям.

    Надеемся на Ваше понимание и благоразумие. С уважением, администратор LoveRead.info.


    Установить VPN и читай слушай бесплатно

    Новые отзывы

    1. Лариса Лариса04 июнь 12:43 Да, просто до слез похоже на сериал ,,Даррел,,... Смерть в райском уголке - Эмили Салливан
    2. Stmara Stmara02 июнь 22:44 Приятная история, чтобы скоротать вечер. Любимая книга из последних "Любовь со смертью", также очень понравилась -"Суженная... Сердце космического дракона - Ольга Вадимовна Гусейнова
    3. Alex Alex01 июнь 17:12 💩💩💩🖕🖕🖕🖕🖕🖕🖕... Игровой момент II - Александр Андреевич Бодров
    Все комметарии
    Новинки бесплатной онлайн библиотеки