Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 1248
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Судя по всему в папке Sounds. Нашел ее, где терминал установлен. НЕ в папке C:\Users\yastremskiiva\AppData\Roaming\MetaQuotes\Terminal\99193835FC75DE8874B99F9A3B93F15E
И судя по алфавитному порядку переименовать alert2 что бы по алфавиту был более первым чем alert
Да, как вариант, но немного не то, что хотелось-бы.
Спасибо!
Нужно найти профит последнего закрытого ордера. Написал функцию:
Пока ордера открывались через "портянку" в OnTick() (MqlTick latestPrice; MqlTradeRequest request; ... и т.д.), функция работала. Как только ордера начал открывать с помощью #include <Trade\Trade.mqh>, выписав отдельную функцию:
функция нахождения профита перестала работать (хотя ордера открываются исправно). Возвратил "портянку" - опять заработала. Почему такая ***? В чем разница? В include не нашел ни чего, что выдает профит закрытого ордера. Например в #include <Trade\HistoryOrderInfo.mqh> есть все, но профита ордера не нашел.
Пока ордера открывались через "портянку" в OnTick() (MqlTick latestPrice; MqlTradeRequest request; ... и т.д.), функция работала. Как только ордера начал открывать с помощью #include <Trade\Trade.mqh>, выписав отдельную функцию:
Не забывайте устанавливать идентификатор эксперта
Не забывайте устанавливать идентификатор эксперта
Спасибо. В mql5 таких лабиринтов на сооружали. Вместо того,чтобы прямо прийти к цели, нужно идти какими-то обходными путями, через кучу ответвлений, тупиков и препятствий. Язык ради языка.
Спасибо. В mql5 таких лабиринтов на сооружали. Вместо того,чтобы прямо прийти к цели, нужно идти какими-то обходными путями, через кучу ответвлений, тупиков и препятствий. Язык ради языка.
Вы же в MQL4 тоже устанавливаете магик для позиции.
Здесь вы решили воспользоваться торговым объектом из СБ. А это значит, что при его создании и инициализации вам нужно установить его параметры. А потом просто к нему обращаться за торговым функционалом. Таких объектов может быть множество, и у каждого вы установите свои параметры. А далее - обращайтесь к нужному объекту для управления торговыми приказами по тем символам и магикам, которые установлены для каждого конкретного объекта, и которые требуются в разные моменты времени в зависимости от ТС.
Всё просто.
Вы же в MQL4 тоже устанавливаете магик для позиции.
Здесь вы решили воспользоваться торговым объектом из СБ. А это значит, что при его создании и инициализации вам нужно установить его параметры. А потом просто к нему обращаться за торговым функционалом. Таких объектов может быть множество, и у каждого вы установите свои параметры. А далее - обращайтесь к нужному объекту для управления торговыми приказами по тем символам и магикам, которые установлены для каждого конкретного объекта, и которые требуются в разные моменты времени в зависимости от ТС.
Всё просто.
Здравствуйте. Спасибо за ответ. Выскажу свою точку зрения. В MQL4, открывая ордер, указываем его параметры, в том числе и магик. В #include <Trade\OrderInfo.mqh>, указано все, кроме магика. Например - CTrade::BuyLimit(const double volume,const double price,const string symbol=NULL,const double sl=0.0,const double tp=0.0,const ENUM_ORDER_TYPE_TIME type_time=ORDER_TIME_GTC,const datetime expiration=0,const string comment=""). На мой взгляд, это не доработка и ее нужно исправить, введя еще параметр магика. Или в #include <Trade\ HistoryOrderInfo.mqh> есть все, кроме профита (прибыли/убытка) полученного ордером. Это же важная информация об ордере, а ее нет. Еще. Нужно найти профит последнего закрытого ордера. Информацию выведем в Comment(). И что увидим. Пока нет открытого ордера (позиции) в комментарии отображается профит последнего ордера. Как только открывается ордер (позиция) в комментарии получаем 0, пока ордер не будет закрыт. Т.е. ордер еще в рынке, но одновременно и в истории, он пребывает в двух ипостасях одновременно. Но это же нонсенс. Потому и говорю - язык ради языка. На мой взгляд, масса недоработанных мелочей.
Вы путаете понятия (в частности 'ордер'). В рынке может быть ОТЛОЖЕННЫЙ ОРДЕР или ПОЗИЦИЯ. Подробнее ознакомится можно в справке: Общие принципы.
Класс CTrade самодостаточен и в нем нет недоработок - есть только Ваше нежелание смотреть код реализации. При отсылке торгового приказа (хоть на выставление ОТЛОЖЕННОГО ОРДЕРА, хоть на открытие или модификацию ПОЗИЦИИ) экземпляр торгового класса отсылает magic number - Вам только нужно при создании объекта сразу его инициализировать
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Вопросы от начинающих MQL5 MT5 MetaTrader 5
Vladimir Karputov, 2020.09.12 19:11
Не забывайте устанавливать идентификатор эксперта
Все дело в привычке.
Здравствуйте. Спасибо за ответ. Выскажу свою точку зрения. В MQL4, открывая ордер, указываем его параметры, в том числе и магик. В #include <Trade\OrderInfo.mqh>, указано все, кроме магика. Например - CTrade::BuyLimit(const double volume,const double price,const string symbol=NULL,const double sl=0.0,const double tp=0.0,const ENUM_ORDER_TYPE_TIME type_time=ORDER_TIME_GTC,const datetime expiration=0,const string comment=""). На мой взгляд, это не доработка и ее нужно исправить, введя еще параметр магика. Или в #include <Trade\ HistoryOrderInfo.mqh> есть все, кроме профита (прибыли/убытка) полученного ордером. Это же важная информация об ордере, а ее нет. Еще. Нужно найти профит последнего закрытого ордера. Информацию выведем в Comment(). И что увидим. Пока нет открытого ордера (позиции) в комментарии отображается профит последнего ордера. Как только открывается ордер (позиция) в комментарии получаем 0, пока ордер не будет закрыт. Т.е. ордер еще в рынке, но одновременно и в истории, он пребывает в двух ипостасях одновременно. Но это же нонсенс. Потому и говорю - язык ради языка. На мой взгляд, масса недоработанных мелочей.
Юрий, это не масса недоработанных мелочей, а масса недопониманий.
Зачем в каждом открытии ордера или позиции писать магик, если достаточно один раз его обозначить в OnInit()
И всё!!! Дальше точно так-же проверяется магик ордера, сделки или позиции для идентификации «свой-чужой». Проблема в вашем понимании.
У ордера прибыли быть не может!!! Прибыль у позиции в текущее время. И у сделки закрытия позиции, или её части, но это уже в истории торгов. Ордер это всего лишь распоряжение совершить сделку на рынке.
По колхозному попробую объяснить. Приходите вы на рынок, решили купить урюк.
ордер: дайте мне килограмм урюка…
сделка: отдаёте деньги, берёте урюк…
позиция: в вашей сумке урюк…
С точки зрения продавца:
позиция: урюк на прилавке…
ордер: получаете распоряжение отвесить килограмм урюка…
сделка: отдаёте урюк, кладёте деньги в мешок…
Здравствуйте. Спасибо за ответ. Выскажу свою точку зрения. В MQL4, открывая ордер, указываем его параметры, в том числе и магик. В #include <Trade\OrderInfo.mqh>, указано все, кроме магика. Например - CTrade::BuyLimit(const double volume,const double price,const string symbol=NULL,const double sl=0.0,const double tp=0.0,const ENUM_ORDER_TYPE_TIME type_time=ORDER_TIME_GTC,const datetime expiration=0,const string comment=""). На мой взгляд, это не доработка и ее нужно исправить, введя еще параметр магика. Или в #include <Trade\ HistoryOrderInfo.mqh> есть все, кроме профита (прибыли/убытка) полученного ордером. Это же важная информация об ордере, а ее нет. Еще. Нужно найти профит последнего закрытого ордера. Информацию выведем в Comment(). И что увидим. Пока нет открытого ордера (позиции) в комментарии отображается профит последнего ордера. Как только открывается ордер (позиция) в комментарии получаем 0, пока ордер не будет закрыт. Т.е. ордер еще в рынке, но одновременно и в истории, он пребывает в двух ипостасях одновременно. Но это же нонсенс. Потому и говорю - язык ради языка. На мой взгляд, масса недоработанных мелочей.
Вы мыслите процедурно, но пытаетесь использовать ООП-объекты. К ним иной подход. Например:
Создаётся объект. Ему задаётся магик.
Создаётся второй объект. Ему задаётся второй магик.
Создаётся третий объект. Ему задаётся третий магик.
Теперь у вас есть три торговых объекта для трёх стратегий в одном советнике.
Для открытия позиции или выставления отложенного ордера по первой ТС, вы должны обратиться к первому торговому объекту.
Для открытия позиции или выставления отложенного ордера по второй ТС, вы должны обратиться ко второму торговому объекту.
Для открытия позиции или выставления отложенного ордера по третьей ТС, вы должны обратиться к третьему торговому объекту.
У ордеров нет параметра прибыли. По одной простой причине - ордер это приказ (отложенный ордер - это приказ брокеру совершить некое действие при достижении ценой заданного уровня, т.е., приказ выполнить торговую операцию через некоторое время при достижении заданного критерия). Результатом торгового приказа (ордера) может стать сделка (вот у неё уже есть параметр профита DEAL_PROFIT), которая приведёт либо к порождению позиции, либо к её изменению или закрытию (и у позиции есть параметр профита, но только текущего - плавающего POSITION_PROFIT).
А ещё есть рыночный ордер (маркет-ордер) он всегда появляется перед сделкой при отсылке вами торгового приказа - это и есть ваш торговый приказ. И он виден в списке существующих ордеров. Т.е., любое открытие позиции порождает цепочку: ордер --> сделка --> позиция. Любое действие с открытой позицией порождает цепочку: позиция --> ордер --> сделка --> нет позиции или меньший объём позиции, или больший объём позиции (неттинг), или переворот позиции (неттинг)
Изучайте справку.