Закрывать все сделки через 30м после открытия - страница 2

 
Evgeniy Zhdan:

В документации такого нет, следовательно, разговаривать не о чем. У некоторых брокеров в цену закрытия хоть 0 ставь (у а-ри, например), будет закрываться по текущей бид или аск-цене. У других - будет ошибка.

Если-бы мы все жили исключительно по правилам и документациям, то и сейчас ездили на кобылах и быках.

 
Evgeniy Zhdan:    Кто вам такое сказал? Приведите ваши доказательства.

Читайте справку внимательно. Скрипт такой сами сумеете написать?

Там такая строчка среди прочего:     Alert(StringSubstr((string)OrderTicket(),7),   types[OrderType()],   Ask, "   ", Bid, "   ",OrderClosePrice());


 
Alexey Viktorov:

Ничего он не перепутал. Всё именно так и работает на ура. Только есть некоторые опасности и Ренат об этом предупреждал. Если ордер не закрылся, по какой либо причине, то изменение цены Ask или Bid можно обновить вызвав соответствующую функцию, а для обновления OrderClosePrice() надо ордер ещё раз выбрать обновив свойства ордера.

Ищите и читайте. Этот вопрос обсуждался лет 12-15 назад.

ticket=OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),5,Black);

В данной строке (предварительно ордерселект на ордертикет конечно) OrderClosePrice() = 0, а не нулевое значение он получает после закрытия ордера. Что правильного в такой записи. Цена закрытия либо Аск либо Бид. Как она может быть другой.

Где-то сработает, а где-то даст ошибку, при нулевом значении. А при не нулевом значении всегда даст ошибку.

 
Konstantin Erin:

Читайте справку внимательно


Это после закрытия ордера присваивается значение, при открытом ордере оно равно нулю. Это уже исторические ордера / позиции.

 
Konstantin Erin:

Читайте справку внимательно


Это Вы читайте справку двумя глазами.

Выдержку из справки, подтверждающую мои слова я привел. 

 
Valeriy Yastremskiy:

В данной строке (предварительно ордерселект на ордертикет конечно) OrderClosePrice() = 0, а не нулевое значение он получает после закрытия ордера. Что правильного в такой записи. Цена закрытия либо Аск либо Бид. Как она может быть другой.

Где-то сработает, а где-то даст ошибку, при нулевом значении. А при не нулевом значении всегда даст ошибку.

Проверял?

Читайте внимательно сообщения разработчиков.

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Применение функция OrderClosePrice() к открытым ордерам

Renat Fatkhullin, 2006.09.11 18:14

В общем случае нельзя. OrderClosePrice содержит закешированное значение на момент вызова OrderSelect и это значение может устареть к моменту вызова OrderClose.

А в частном случае, когда идет такая вот последовательность:
if(OrderSelect(...))
  {
    ... // что-то очень быстрое и незатратное
   if(OrderClose(..., OrderClosePrice()) ....
 
  }
то можно использовать. Но если будут появляться сообщения об частых реквотах или ошибках, то стоит серьезно подумать над более корректной реализацией.
Или тут https://www.mql5.com/ru/forum/53002
Вопрос разработчикам OrderClosePrice
Вопрос разработчикам OrderClosePrice
  • 2005.11.17
  • www.mql5.com
Общее обсуждение: Вопрос разработчикам OrderClosePrice
 
Konstantin Erin:

Читайте справку внимательно. Скрипт такой сами сумеете написать?

Там такая строчка среди прочего:     Alert(StringSubstr((string)OrderTicket(),7),   types[OrderType()],   Ask, "   ", Bid, "   ",OrderClosePrice());


У одного брокера прокатит, у другого нет. Потом будете бегать по форумам и удивляться почему не работает. 

 
Evgeniy Zhdan:

Это Вы читайте справку двумя глазами. Выдержку из справки, подтверждающую мои слова я привел. 

Справку надо читать, да. Но еще ее надо осмысливать. В вашей выдержке отсутствует указание на закрытый ордер.

В справке говорится, то функция OrderClosePrice() дает цену закрытия ордера.

А если ордер еще не закрыт, то это цена, по которой его СЕЙЧАС можно закрыть.

 
Evgeniy Zhdan:

У одного брокера прокатит, у другого нет. Потом будете бегать по форумам и удивляться почему не работает. 

Вы прежде чем что-то утверждать, напишите скрипт и проверьте разных брокеров.

Функции языка MQL обеспечивает терминал, а не брокеры

 
Konstantin Erin:

Вы прежде чем что-то утверждать, напишите скрипт и проверьте разных брокеров.

Функции языка MQL обеспечивает терминал, а не брокеры

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

Осмыслите эту часть справки:


Причина обращения: