Как закрыть имеющийся ордер, если подскочил спред?

 

В конструкторе советников с помощью набора стандартных блоков я написал алгоритм открытия ордера BUY.

Но чтобы закрыть этот ордер, если спред подскочил, надо написать нестандартный для этого конструктора код. В языке программирования и ни бум-бум.(((

Подскажите, пожалуйста, какой конкретно код написать, чтобы имеющийся такой ордер закрылся, если спред подскочил выше 20, например?

 
Две рекомендации:
- не работать с ДЦ у которых гуляют условия: спред, стоплевелы, кредитные плечи;
- использовать только отложенные ордера.
 
DmitriyN:
- использовать только отложенные ордера.
не все отложенные ордера одинаково полезны. стоповые ордера (все) исполняются по рынку
 

Огромное спасибо за рекомендации (не отногсящиеся правда к вопросу, но ничего, бывает)!

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

Но вопрос был другой: какие буковки КОНКРЕТНО написать для конкретной ситуации.

 
//для начала где-то должно быть OrderSelect(), но т.к. полного кода вы не приводите, то уж извините))

int slippage = 0;// или другое проскальзывание, какое надо

if(MarketInfo(Symbol(),MODE_SPREAD)>20)// спред больше 20
{
   OrderClose(OrderTicket(),OrderLots(),MarketInfo(Symbol(),MODE_BID),slippage);// закрыть ордер BUY
}
 
alsu:


Спасибо, alsu !
Я не привожу кода, так как программа мне его не показывает, показывает только блоки.

А какая информация нужна для OrderSelect() ? На скрине видно? что _Order ID 1 и что slippage = 3 - может, эта?

 
Igogo:


Спасибо, alsu !
Я не привожу кода, так как программа мне его не показывает, показывает только блоки.

А какая информация нужна для OrderSelect() ? На скрине видно? что _Order ID 1 и что slippage = 3 - может, эта?



попробовал вставить этот код, и MT4 теперь пишет в журнале: " invalid ticket for OrderClose function"
 
Igogo:


попробовал вставить этот код, и MT4 теперь пишет в журнале: " invalid ticket for OrderClose function"

Учите язык или приведите код полностью.
 
Igogo:


Спасибо, alsu !
Я не привожу кода, так как программа мне его не показывает, показывает только блоки.

А какая информация нужна для OrderSelect() ? На скрине видно? что _Order ID 1 и что slippage = 3 - может, эта?

Ну, слиппаж это да, а вот _Order ID не знаю, что такое. Для OrderSelect необходим либо тикет ордера, либо его номер в пуле открытых ордеров. Как правило, способ использования OrderSelect определяется предшествующей логикой программы, с наскоку тут не скажешь. Почитайте справку к конструктору, как пишутся custom-блоки, возможно, там есть указания, каким образом в них отслеживать ордера, может есть какие-то подстановочные комбинации.
 
Igogo:


попробовал вставить этот код, и MT4 теперь пишет в журнале: " invalid ticket for OrderClose function"

alsu!
если нельзя определить этот тикет (не видя кода) то может быть напишете код, который просто закроет все существующие ордера?
 
alsu:
Ну, слиппаж это да, а вот _Order ID не знаю, что такое. Для OrderSelect необходим либо тикет ордера, либо его номер в пуле открытых ордеров. Как правило, способ использования OrderSelect определяется предшествующей логикой программы, с наскоку тут не скажешь. Почитайте справку к конструктору, как пишутся custom-блоки, возможно, там есть указания, каким образом в них отслеживать ордера, может есть какие-то подстановочные комбинации.



Они пишут в описании

" If you ever programmed MT4 or MT5 you have probably came across so called “magic number”. “Order Id” is the same as “magic
number”. We have used a term “Order Id” because it is easier to understand main purpose of this numeric identifier and its use in
the Generator."

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