Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 1208

 
Vladpedro:

Да без разницы. У меня возникло подозрение в разнице, потому что я при выставлении ордеров и позиций присваивал им "коменты" для позиций свои, для ордеров свои. В результате когда ордер переходит в позицию он наследует коментарий ордера.

Потом при проверке позиций через комментарии  возникла путаница... комментарии то у них разные получились.  Ну это я поправил.

У Вас в коде, я вообще не нашёл или не понял, как закрываются позиции для условия сработал SELL_LIMIT.  по Эквити. 

Вроде бы выполнено проверка на возможность закрытие всех позиций и установлен по ней флаг

но в блоке CloseAllPositions();  

отсутствует что то типа. 

По которому нужно закрыть все позиции для случая - сработал сработал SELL_LIMIT

Возможно у Вас это же m_account.Equity()>= m_account.Balance()+15 реализовано как то иначе?

Или оно у Вас действительно не выполняется?  Быть может из-за того что я не так объяснил что такое усреднение в моём понимании.

Я уже выше обратил Ваше внимание - отложенные ордера вообще не причём. Не может быть у отложенного ордера прибыль. От слова "совсем". Пока это не проясните, дальше двигаться нельзя.


Добавлено: я показал пример решения для двух случаев:

  1. Имеем всего две позиции - значит ищет ту, у которой прибыль больше и её закрываем.
  2. Имеем более двух позиций - если их суммарная прибыль больше заданной - закрываем все позиции.
Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Свойства ордеров
Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Свойства ордеров
  • www.mql5.com
Приказы на проведение торговых операций оформляются ордерами. Каждый ордер имеет множество свойств для чтения, информацию по ним можно получать с помощью функций Идентификатор позиции, который ставится на ордере при его исполнении. Каждый исполненный ордер порождает сделку, которая открывает новую или изменяет уже существующую позицию...
 
Vladimir Karputov:

Я уже выше обратил Ваше внимание - отложенные ордера вообще не причём. Не может быть у отложенного ордера прибыль. От слова "совсем". Пока это не проясните, дальше двигаться нельзя

Владимир. Ну  конечно у отложенного ордера не может быть прибыли. Речь о прибыли конечно об открытых позициях.

Только есть разница в том как были открыты эти позиции.  Метод закрытия для них нам нужен разный. 

Если вторая позиция открылась от отл. ордера SELL_STOP, то одна из них должна быть закрыта, та у которой профит позиции больше.  Это у Вас получилось и работает.

Если вторая позиция открылась от отл. ордера SELL_LIMIT, то они обе должны быть закрыты по Эквити (m_account.Equity()>= m_account.Balance()+15)  Если SL одной из них не сработает раньше.

Добавлено.

 я показал пример решения для двух случаев:

  1. Имеем всего две позиции - значит ищет ту, у которой прибыль больше и её закрываем.
  2. Имеем более двух позиций - если их суммарная прибыль больше заданной - закрываем все позиции

Вроде бы всё нормально по второму условию. Но почему то у меня у меня на втором условии открывает вторую позицию и закрывает её сразу близко к 0 -1,2. 

Быть может я не там указываю суммарную прибыль?

InpProfitTarget      = 15;  Если здесь, то это не срабатывает. 


 
Vladpedro:

Владимир. Ну  конечно у отложенного ордера не может быть прибыли. Речь о прибыли конечно об открытых позициях.

Только есть разница в том как были открыты эти позиции.  Метод закрытия для них нам нужен разный. 

Если вторая позиция открылась от отл. ордера SELL_STOP, то одна из них должна быть закрыта, та у которой профит позиции больше.  Это у Вас получилось и работает.

Если вторая позиция открылась от отл. ордера SELL_LIMIT, то они обе должны быть закрыты по Эквити (m_account.Equity()>= m_account.Balance()+15)  Если SL одной из них не сработает раньше.

Извините:

 я показал пример решения для двух случаев:

  1. Имеем всего две позиции - значит ищет ту, у которой прибыль больше и её закрываем.
  2. Имеем более двух позиций - если их суммарная прибыль больше заданной - закрываем все позиции.


Дальше пожалуйста сами хоть что то сделайте.

 
Vladimir Karputov:

Извините:

 я показал пример решения для двух случаев:

  1. Имеем всего две позиции - значит ищет ту, у которой прибыль больше и её закрываем.
  2. Имеем более двух позиций - если их суммарная прибыль больше заданной - закрываем все позиции.


Дальше пожалуйста сами хоть что то сделайте.

Спасибо за помощь Владимир, я пытаюсь. 

2.Имеем более двух позиций - если их суммарная прибыль больше заданной - закрываем все позиции.

Но мне было нужно не это, а двух и более позиций, где вторая из них была открыта через срабатывание SELL_LIMIT.  

Всё равно спасибо за терпение и труд. Решу я конечно, как нибудь по своему, помучаюсь и решу)))

 
Добрый вечер,ребята, чтоб не плодить темы - вопрос такой - выставлен скриптом отложенный стоп-ордер с вполне определенным  тейком и стопом, он не исполняется, а в комментах прописывается    [illiquidity]  - как бороться - зациклить скрипт до исполнения,установить бОльшее проскальзывание, или прописать количество повторных запросов или что ? Или ткните носом тему где рыть. 
 
neitrino22:
Добрый вечер,ребята, чтоб не плодить темы - вопрос такой - выставлен скриптом отложенный стоп-ордер с вполне определенным  тейком и стопом, он не исполняется, а в комментах прописывается    [illiquidity]  - как бороться - зациклить скрипт до исполнения,установить бОльшее проскальзывание, или прописать количество повторных запросов или что ? Или ткните носом тему где рыть. 

Рыть надо всегда в документации

ORDER_TIME_GTC

Ордер будет находится в очереди до тех пор, пока не будет снят

Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Свойства ордеров
Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Свойства ордеров
  • www.mql5.com
Приказы на проведение торговых операций оформляются ордерами. Каждый ордер имеет множество свойств для чтения, информацию по ним можно получать с помощью функций Идентификатор позиции, который ставится на ордере при его исполнении. Каждый исполненный ордер порождает сделку, которая открывает новую или изменяет уже существующую позицию...
 
Alexey Viktorov:

Рыть надо всегда в документации

ORDER_TIME_GTC

Ордер будет находится в очереди до тех пор, пока не будет снят

Вот спасибо, наверное это самое оно

 

Добрый вечер!

Есть 1 открытая позиция.

Советник закрывает позицию методом PositionClose();

Принтуется результат ResultRetcode= 10009. Code description: done at 0.00

Ниже по коду расположена проверка if(PositionSelect(_Symbol)), которая блин успешно проходится.

Т.е. между выполнением PositionClose() и исчезновением открытой позиции проходит некоторое время за которое программа успевает свернуть не туда.

Как грамотно разрешить данное обстоятельство?


 

Почему приходится каждый раз перезапускать терминал после тестирования для запуска нового теста?

2020.04.27 15:19:08.415 Tester  XAUUSD: history data begins from 2014.02.12 00:00
2020.04.27 15:19:08.415 Tester  XAUUSD: history data begins from 2014.02.12 00:00
2020.04.27 15:19:08.415 Core 01 connecting to 127.0.0.1:3000
2020.04.27 15:19:08.415 Core 01 connected
2020.04.27 15:19:08.425 Core 01 authorized (agent build 2361)
2020.04.27 15:19:08.427 Tester  XAUUSD,M15 (Alpari-MT5-Demo): testing of Experts\ExpertTest.ex5 from 2017.07.26 00:00 to 2020.02.06 00:00
2020.04.27 15:19:08.466 Core 01 disconnected
2020.04.27 15:19:08.466 Core 01 connection closed

Все объекты удаляю. Файлы закрываю. Вот лог при остановке тестирования:

2020.04.27 15:15:43.188 Core 01 disconnected
2020.04.27 15:15:43.188 Core 01 connection closed
2020.04.27 15:15:43.189 Tester  stopped by user

А в следующий раз уже не запускается - приходится закрывать терминал и открывать снова. Билд 2361.

 
Как получить коммент закрытой позиции в OnTradeTransaction?
Причина обращения: