Советники: Программирование на MQL5 для трейдеров — исходные коды из книги. Часть 7 - страница 4
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Привет @Stanislav Korotky, я новичок в MQL5. Нашел, что вы выкладываете файл wss.zip для использования websocket. Как его использовать, есть ли демо или что-то, что я могу изучить. Искренне благодарю!
Несколько примеров вы можете найти в книге по алготрейдингу, в разделе, описывающем (пошаговую) реализацию проекта веб-сервиса для копирования сделок и сигналов.
Несколько примеров можно найти в книге по алготрейдингу, в разделе, описывающем (шаг за шагом) реализацию проекта веб-сервиса для копирования сделок и сигналов.
Здравствуйте @StanislavKorotky
Я пытаюсь реализовать частичное закрытие позиции отложенным ордером в противоположном направлении.
например:
MqlTradeRequestSync reqs(transaction.symbol);
reqs.closeby(target_position_ticket_id, transaction.order);
Я считаю, что приведенная выше строка должна выполнить свою работу, но моя проблема заключается в том, как получить `target_position_ticket_id`в обработчике события OnTradeTransaction -> TRADE_TRANSACTION_DEAL_ADD ( transaction.type) или как-то связать отложенный ордер с target_position_ticket_id, который должен закрываться каждый раз, когда отложенный ордер будет исполнен.
Я попробовал добавить `target_position_ticket_id`в комментарий отложенного ордера, когда создаю отложенный ордер, но проблема в том, что внутри OnTradeTransaction -> TRADE_TRANSACTION_DEAL_ADD (transaction.type) я не могу получить доступ к комментарию, так как атрибутыMqlTradeTransaction не имеют 'comment'
Пожалуйста, буду благодарен за помощь.
Метод closeby(ticket1, ticket2) из книги предполагает, что вы используете хеджирующий счет и у вас уже есть 2 открытые позиции (покупка и продажа) с тикетами ticket1 и ticket2. Полагаю, что выполнить действие TRADE_ACTION_CLOSE_BY против отложенного ордера невозможно (в общем случае). Но если ваш счет находится в режиме неттинга, я думаю, вы можете просто выставить отложенный ордер в противоположном направлении, и когда он сработает, он соответствующим образом изменит существующую позицию - закроет ее, или сделает частичное закрытие, или даже инверсию (если новый объем больше старого).
Небольшие исправления в websockets (a la carte & en masse).
Одним из этих свойств является "Комиссия" Символа, которая, очевидно, отличается у разных брокеров, как видно на приложенной картинке. Однако я не смог получить доступ к этому свойству программно. Пожалуйста, не могли бы вы подсказать, как получить комиссионные символа?
Кроме того, это сообщение часто появляется в журнале при работе с PositionFilter, особенно когда советник загружается в первый раз или перекомпилируется "Unresolved int value as enum: 8 для MonitorInterface<ENUM_POSITION_PROPERTY_INTEGER,ENUM_POSITION_PROPERTY_DOUBLE,ENUM_POSITION_PROPERTY_STRING>". Он по-прежнему работает нормально и ничего не останавливает
@StanislavKorotky Спасибо за постоянное обновление, пожалуйста, есть кое-что, что я пытался выяснить. В MT5 "Обзор рынка" я могу щелкнуть правой кнопкой мыши на любом "Символе" и просмотреть все связанные с ним свойства так же, как и программно, нажав на "Спецификацию".
Одно из этих свойств - "Комиссии" Символа, которые, очевидно, отличаются у разных брокеров, как видно на приложенной картинке. Однако я не смог получить доступ к этому свойству программно. Пожалуйста, не могли бы вы подсказать, как получить комиссию символа?
К сожалению, не все свойства сущностей терминала доступны через MQL5.
На стороне это сообщение часто появляется в журнале, когда я работаю с PositionFilter, особенно когда советник загружается в первый раз или перекомпилируется "Unresolved int value as enum: 8 для MonitorInterface<ENUM_POSITION_PROPERTY_INTEGER,ENUM_POSITION_PROPERTY_DOUBLE,ENUM_POSITION_PROPERTY_STRING>". Он по-прежнему работает нормально и ничего не останавливает.
Это просто предупреждение, вызванное тем, что соответствующее встроенное перечисление MQL5 имеет пробел в константах, которые обычно назначаются последовательно. Этот разрыв возникает из-за того, что MQL5 постоянно меняется, и некоторые константы могут устареть и быть удалены. Вы можете отредактировать исходный код, чтобы предотвратить появление подобных предупреждений.
Прилагаю обновленную версию библиотеки JSON - toyjson3.mqh - замену toyjson2.mqh и toyjson.mqh из книги.
Эта версия оптимизирована для обработки огромных json-файлов. Для простоты предыдущие версии использовали функцию StringSplit для токенизации текста во время парсинга, и этот вызов может внутренне запрашивать гигабайты свободной памяти из-за фрагментации и ожидания дальнейшего потока данных. Она освобождается после парсинга, но менеджер памяти MQL5 может держать ее в резерве еще некоторое время, поскольку освобождает мусор отложенным способом.
Теперь во время парсинга требуется в разы меньше памяти.
Я прилагаю несколько исправлений и улучшений в классах websockets.
Это именно то, что мне было нужно.
Огромное вам спасибо.
Ты чувствуешь себя этим парнем для меня.
https://clip.cafe/top-gun-maverick-2022/good-afternoon-ladies-gentlemen-s2/