MQL5 - вопрос по ORDER_TYPE_BUY_STOP_LIMIT

 

К своему стыду, ни разу не пользовался этим типом ордера. В справке описано несколько туманно, а рынок уже закрыт для проверки. У меня тут клиента обуревают идеи, хочется прояснить вопрос.

В справке по MqlTradeRequest описаны поля

price

Цена, при достижении которой ордер должен быть исполнен. Для рыночных ордеров по инструментам с типом исполнения "Market Execution" (SYMBOL_TRADE_EXECUTION_MARKET), имеющих тип TRADE_ACTION_DEAL, указание цены не требуется

stoplimit

Цена, по которой будет выставлен отложенный Limit ордер, при достижении ценой значения price (это условие является обязательным). До этого момента отложенный ордер в торговую систему не выводится


 Вопрос: например, я хочу, чтобы при возрастании цены и пересечении ей уровня price==1.1 выставился Sell Limit=1.0. Это возможно? Или цена Sell Limit должна быть больше, чем price? (Правда, тогда смысл такого типа ордера теряется)

Это меня клиент спрашивает, опять у него идеи возникли. Дам ему ссылку на ветку.

 
Характеристики ордеров и правила проведения торговых операций - Торговые операции - Учебник по MQL4
Характеристики ордеров и правила проведения торговых операций - Торговые операции - Учебник по MQL4
  • book.mql4.com
Характеристики ордеров и правила проведения торговых операций - Торговые операции - Учебник по MQL4
 
Renat Akhtyamov:

где то тут

https://book.mql4.com/ru/trading/orders

В MQL4 таких типов ордеров нет.
 
Alexey Volchanskiy:
В MQL4 таких типов ордеров нет.

да ладно

Вы же про отложки спросили

По ссылке есть:

"Установка и удаление отложенных ордеров"

Там принцип выставления, а пишем на MQL5.

Всё тоже самое, только другими буквами

 
Они нужны для покупки/продажи не хуже цены лимитной заявки. Например, берём buy stop limit, стоп цена = 1, цена лимитного ордера = 1,1. Когда цена доходит до 1, выбрасывается buy limit с ценой 1,1 и если заявок на продажу в стакане не хватит, то хуже лимитной цены мы не купим.

Но в МТ всё иначе - лимитную цену не выставить выше стоп цены (для покупок).  Зачем они такие нужны я не знаю. Можно почитать про описание стоп-лимитных заявок в quik.
 
Alexey Volchanskiy:
В MQL4 таких типов ордеров нет.
таких нет, этот тип ордеров устанавливает отложенный ордер при достижении цены определенного уровня
 
pavlick_:
Они нужны для покупки/продажи не хуже цены лимитной заявки. Например, берём buy stop limit, стоп цена = 1, цена лимитного ордера = 1,1. Когда цена доходит до 1, выбрасывается buy limit с ценой 1,1 и если заявок на продажу в стакане не хватит, то хуже лимитной цены мы не купим.

Но в МТ всё иначе - лимитную цену не выставить выше стоп цены (для покупок).  Зачем они такие нужны я не знаю. Можно почитать про описание стоп-лимитных заявок в quik.

Спасибо, но мне сейчас надо именно по МТ5. Конечно, в понедельник проверю или в тестере на выхи скрипт напишу для тестера, проверю.

Не очень ясно, зачем в стакане надо такой ордер выставлять?

Я так понимаю, смысл тут в установке "защелки" -  threshold по английски. Кто занимался электроникой, сразу поймет. То есть цена растет, нам надо выставить sell limit, но такие ордера обычно срабатывают сразу, так как цена при росте все время прыгает, а не растет линейно. 

А "защелка" дает цене вырасти до какой-то величины, после которой при обратном ходе может сработать лимитник. Правда, тогда получается, что он уже как бы не лимитник, а стоповый ордер на sell... неясно короче

Лана, всех со старым НГ, завтра проснусь, напишу скрипт для тестера, разберусь )) 

 
Alexander Bereznyak:
таких нет, этот тип ордеров устанавливает отложенный ордер при достижении цены определенного уровня

Повторяю вопрос из первого поста

Вопрос: например, я хочу, чтобы при возрастании цены и пересечении ей уровня price==1.1 выставился Sell Limit=1.0. Это возможно? Или цена Sell Limit должна быть больше, чем price? 

Дополнение: это исключительно про ордер ORDER_TYPE_BUY_STOP_LIMIT  

Кстати, даже в СБ нет прямых методов для установки таких ордеров, только через обертку OrderSend и прямым заполнением

MqlTradeRequest 


Видно, разрабы СБ тоже не разобрались, что к чему и решили не рисковать)) 

 
Alexey Volchanskiy:

К своему стыду, ни разу не пользовался этим типом ордера. В справке описано несколько туманно, а рынок уже закрыт для проверки. У меня тут клиента обуревают идеи, хочется прояснить вопрос.

В справке по MqlTradeRequest описаны поля

price

Цена, при достижении которой ордер должен быть исполнен. Для рыночных ордеров по инструментам с типом исполнения "Market Execution" (SYMBOL_TRADE_EXECUTION_MARKET), имеющих тип TRADE_ACTION_DEAL, указание цены не требуется

stoplimit

Цена, по которой будет выставлен отложенный Limit ордер, при достижении ценой значения price (это условие является обязательным). До этого момента отложенный ордер в торговую систему не выводится


 Вопрос: например, я хочу, чтобы при возрастании цены и пересечении ей уровня price==1.1 выставился Sell Limit=1.0. Это возможно? Или цена Sell Limit должна быть больше, чем price? (Правда, тогда смысл такого типа ордера теряется)

Это меня клиент спрашивает, опять у него идеи возникли. Дам ему ссылку на ветку.

Если я правильно понял, то sell limit всегда должен выставляться выше текущей цены. Потому как открываться будет ордер на продажу, при касании верхней цены, которую мы выьрали. Buylimit так же не может быть выше текущей цены и должен всегда быть ниже чтобы открывать бай ордера при касании нижней отметки.
 

В общем такая котовасия...

Текущий аск по gbpusd 1.22042 байстоплимит можно поставить только выше этой цены, скажем 1.22142. При том, цена price должна быть ещё выше, ну пусть будет 1.22342. Таким образом, сначала аск должен достичь указанную цену price 1.22342 и при возврате до 1.22142 активируется наш установленный ордер. Если-же аск после касания цены 1.22342 не вернётся до 1.22142, то ордер останется висеть в ожидании.

 
Alexey Viktorov:

В общем такая котовасия...

Текущий аск по gbpusd 1.22042 байстоплимит можно поставить только выше этой цены, скажем 1.22142. При том, цена price должна быть ещё выше, ну пусть будет 1.22342. Таким образом, сначала аск должен достичь указанную цену price 1.22342 и при возврате до 1.22142 активируется наш установленный ордер. Если-же аск после касания цены 1.22342 не вернётся до 1.22142, то ордер останется висеть в ожидании.

Алексей, я так логически и предполагал. То есть этот тип ордера организует защелку-threshold. 

Проверю и отпишусь со скриптом.

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