Важно: цена стоплимита задана хуже. Это для биржевого исполнения.
Был выставлен buy stop limit, который активировался и был открыт как лимитный ордер.
На скриншоте видно, что в комментарии указаны цены. Первая цена (1,10258) - это ask при выставлении ордера, вторая (1,10268) - это цена активации лимитной части ордера, а третья (1,10263) - цена активации стоповой части ордера.
Логика такая: если рыночная цена ask достигнет 1,10263, то активируется стоповая часть ордера (цена исполнения). И по идее должна сразу сработать лимитная часть ордера, т.к. её цена исполнения хуже рыночной (1,10268).
Смотрим логи:
2019.12.1221:08:10.3062019.12.0200:00:11 buy stop limit 0.10 EURUSD at 1.10263 (1.10268) (1.10239 / 1.10258)
2019.12.1221:08:10.3102019.12.0200:00:11 CTrade::OrderSend: buy stop limit 0.10 EURUSD at 1.10263 (1.10268) [done]
2019.12.1221:08:10.3102019.12.0200:00:11TRADE_TRANSACTION_ORDER_ADD2019.12.1221:08:10.3102019.12.0200:00:11TRADE_TRANSACTION_REQUEST2019.12.1221:08:10.3122019.12.0200:02:15 order [#2buy stop limit 0.10 EURUSD at 1.10263 (1.10268)] triggered2019.12.1221:08:10.3122019.12.0200:02:15TRADE_TRANSACTION_ORDER_UPDATE2019.12.1221:09:18.3332019.12.0200:02:15 order [#2buy limit 0.10 EURUSD at 1.10268] triggered
2019.12.1221:09:18.3332019.12.0200:02:15 deal #2buy 0.10 EURUSD at 1.10265 done (based on order #2)
2019.12.1221:09:18.3332019.12.0200:02:15 deal performed [#2buy 0.10 EURUSD at 1.10265]
2019.12.1221:09:18.3332019.12.0200:02:15 order performed buy 0.10 at 1.10265 [#2buy limit 0.10 EURUSD at 1.10268]
Видим, что в 00:02:15ордер превратился в лимитный (сработала стоповая часть). И сразу же он превратился в рыночную позицию. И что интересно, что логи не дают цены бид-аск, как в первой строчке (1,10239 / 1,10258). И это неудобно. Да, позиция открыта по цене 1,10265. Ожидалось, что будет открыта по 1,10263. Тут, думаю, что было проскальзывание размером в 2 пп.
Смотрим тиковую базу. Да, тестирование было на реальных тиках со 2 декабря 2019 г.
Видим, что есть наш тик (1,10265). Выделил его на скриншоте. Причём с 00:02:15 это был третий тик. Предыдущий ask = 1.10271 (от 00:02:15.428) был даже выше. Хотя и одновременно с нашим тиком. Т.е. зашли по лучшей цене. Вывод: как и предполагал, получили проскальзывание размером в 2 пп для стоповой части ордера.
А разве это правильно? Сначала идёт цена стоплимита, а потом цена исполнения. Смотрим в Документацию:
Это специально сделано, чтобы при переходе стоплимита в лимит, лимит сразу срабатывал. При срабатывания он оказывается где-то там далеко, на цене, указанной в заявке, а не на той, которая активировала стоплимит (которая реально была).
Логика такая: если рыночная цена ask достигнет 1,10263, то активируется стоповая часть ордера (цена исполнения). И по идее должна сразу сработать лимитная часть ордера, т.к. её цена исполнения хуже рыночной (1,10268).
Есть цена 123. BUY_STOP_LIMIT. Стоповая цена 133. Лимитная цена 111.
Если цена прошла стоповую отметку, активируется лимитная. Если цена вернётся к 111 будет открыта позиция.
Если цена не дошла до стоповой и вернулась к лимитной - позиция открыта не будет.
Стоп-лимитный ордер можно проверить в Тестере и для Форекса. Достаточно задать "Исполнение"= Биржевое.
Проверил buy stop limit так: выставил цену лимитного ордера хуже цены активации. Ордер при активации открылся по рынку (цена аск). Так что, кажется, функционал в Тестере работает.
Да, на форексных инструментах, при биржевом исполнении, правильно работает.
А теперь еще поменяйте "Способ расчетов"=FORTS Futures, и увидите как срабатывает на биржевых инструментах.
Если на биржевом инструменте поставить Способ расчетов = Forex, то срабатывает правильно но маржа считается не правильно.
Видимо никто не использует,
ордер открывается по несуществующим ценам:
простенький пример для проверки:
А разве это правильно? Сначала идёт цена стоплимита, а потом цена исполнения. Смотрим в Документацию:
Немного модифицировал код топикстартера.
Привожу пример на форексном инструменте EURUSD.
Важно: цена стоплимита задана хуже. Это для биржевого исполнения.
Был выставлен buy stop limit, который активировался и был открыт как лимитный ордер.
На скриншоте видно, что в комментарии указаны цены. Первая цена (1,10258) - это ask при выставлении ордера, вторая (1,10268) - это цена активации лимитной части ордера, а третья (1,10263) - цена активации стоповой части ордера.
Логика такая: если рыночная цена ask достигнет 1,10263, то активируется стоповая часть ордера (цена исполнения). И по идее должна сразу сработать лимитная часть ордера, т.к. её цена исполнения хуже рыночной (1,10268).
Смотрим логи:
Видим, что в 00:02:15 ордер превратился в лимитный (сработала стоповая часть). И сразу же он превратился в рыночную позицию. И что интересно, что логи не дают цены бид-аск, как в первой строчке (1,10239 / 1,10258). И это неудобно. Да, позиция открыта по цене 1,10265. Ожидалось, что будет открыта по 1,10263. Тут, думаю, что было проскальзывание размером в 2 пп.
Смотрим тиковую базу. Да, тестирование было на реальных тиках со 2 декабря 2019 г.
Видим, что есть наш тик (1,10265). Выделил его на скриншоте. Причём с 00:02:15 это был третий тик. Предыдущий ask = 1.10271 (от 00:02:15.428) был даже выше. Хотя и одновременно с нашим тиком. Т.е. зашли по лучшей цене. Вывод: как и предполагал, получили проскальзывание размером в 2 пп для стоповой части ордера.
А разве это правильно? Сначала идёт цена стоплимита, а потом цена исполнения. Смотрим в Документацию:
Это специально сделано, чтобы при переходе стоплимита в лимит, лимит сразу срабатывал. При срабатывания он оказывается где-то там далеко, на цене, указанной в заявке, а не на той, которая активировала стоплимит (которая реально была).
Логика такая: если рыночная цена ask достигнет 1,10263, то активируется стоповая часть ордера (цена исполнения). И по идее должна сразу сработать лимитная часть ордера, т.к. её цена исполнения хуже рыночной (1,10268).
Есть цена 123. BUY_STOP_LIMIT. Стоповая цена 133. Лимитная цена 111.
Если цена прошла стоповую отметку, активируется лимитная. Если цена вернётся к 111 будет открыта позиция.
Если цена не дошла до стоповой и вернулась к лимитной - позиция открыта не будет.
Разве не так?
Стоп-лимитный ордер можно проверить в Тестере и для Форекса. Достаточно задать "Исполнение"= Биржевое.
Проверил buy stop limit так: выставил цену лимитного ордера хуже цены активации. Ордер при активации открылся по рынку (цена аск). Так что, кажется, функционал в Тестере работает.
Да, на форексных инструментах, при биржевом исполнении, правильно работает.
А теперь еще поменяйте "Способ расчетов"=FORTS Futures, и увидите как срабатывает на биржевых инструментах.
Если на биржевом инструменте поставить Способ расчетов = Forex, то срабатывает правильно но маржа считается не правильно.
Используете StopLimit в реальной торговле?
Понятно что в тестере StopLimit работает неадекватно.
В реальной торговле есть ли смысл использовать? Какие преимущества и недостатки?
Не вижу смысла использовать этот тип ордеров.
Гораздо проще сразу выставить отложенный ордер, ведь можно указать любой срок жизни ордера.
Находясь на бирже, а не на сервере MQ, этот ордер гарантированно сработает по указанной в нем цене.
А сервак может и "глюкнуть"