Жизнеспособность идеи - 100 контрактов = 100 стоп-ордеров по 1 контракту каждый

Страницы: 1
RSS
Жизнеспособность идеи - 100 контрактов = 100 стоп-ордеров по 1 контракту каждый
 
Обычно выставление стоп-лосса затачивается на то какой объем был куплен или продан. Продали 100 контрактов = 1 стоп на 100 контрактов
Учитывая то что продажа 100 контрактов может происходить частями по 45 по 5 и по 50 контрактов, то соответственно можно и стопы также выставить по 45 по 5 и по 50. И здесь при закрытии позиции начинаются сложности - закрытие также может произойти частями по 30, по 20 и по 50. И сложно пересчитать каждый из ордеров.

Другое дело если каждый ордер это 1 контракт. Продалось 30 контрактов - сняли 30 стопов. Продалось еще 20 - сняли 20 и т.д.
Насколько вообще в принципе жизнеспособна идея купив к примеру 100 контрактов выставить не 1 стоп, а 100 стопов по 1 контракту.

При торговле на 10 контрактов по инструменту допускаю что все это допустимо 10 продано = 10 ордеров.
А вот когда число контрактов 100, 500?
Торговый привод на Lua: https://github.com/iv-litovchenko/Quik-Enter-Trade
 
Цитата
Иван написал:
Обычно выставление стоп-лосса затачивается на то какой объем был куплен или продан. Продали 100 контрактов = 1 стоп на 100 контрактов
Учитывая то что продажа 100 контрактов может происходить частями по 45 по 5 и по 50 контрактов, то соответственно можно и стопы также выставить по 45 по 5 и по 50. И здесь при закрытии позиции начинаются сложности - закрытие также может произойти частями по 30, по 20 и по 50. И сложно пересчитать каждый из ордеров.

Другое дело если каждый ордер это 1 контракт. Продалось 30 контрактов - сняли 30 стопов. Продалось еще 20 - сняли 20 и т.д.
Насколько вообще в принципе жизнеспособна идея купив к примеру 100 контрактов выставить не 1 стоп, а 100 стопов по 1 контракту.

При торговле на 10 контрактов по инструменту допускаю что все это допустимо 10 продано = 10 ордеров.
А вот когда число контрактов 100, 500?
теоретически можно сколько душе угодно.
практически - трудно придумать смысл этому.
----------------
Надо учитывать следующее:
-----------------
стопы хранятся в очереди стопов на сервере брокера и отсылаются им на биржу,
если условие true
------------------
ордер находится на бирже
-----------------
Если вы хотите выставить ордер на продажу на 100,  а стопы выставлять по мере исполнения ордера,
то надо делать HFT робот и ставить максимально близко к бирже.
---------------
на квике -  как на велосипеде обгонять самолет. Упаритесь.
 
Не совсем понял при чем здесь HFT роботы (высокочастотники как понимаю)?

Сейчас у меня стоп выставляется через функцию OnTrade().
Прошла сделка объемом 7 = выставился стоп объемом 7.

Сложность начинается тогда, когда мне нужно сделать закрытие частями.
К примеру хочу закрыть 30% сделки - это будет 3 контракта.

Соответственно сделка прошла и OnTrade() вижу что мне нужно изменить стоп на 7 контрактов. И здесь начинаются сложности - удали стоп 7, выставь стоп 4.
Это хорошо сработает если исполнится 3 контракта сразу. А если они исполнятся по 1, 1 и 1. Т.е. мне нужно удалить стоп 7, выставить стоп 6. Удалить стоп 6 (которого возможно еще нет в живых), поставить стоп 5, удалить стоп 5 (которого также еще нет), поставь стоп 4. Сложность в этом.
Торговый привод на Lua: https://github.com/iv-litovchenko/Quik-Enter-Trade
 
Цитата
Иван написал:
Это хорошо сработает если исполнится 3 контракта сразу. А если они исполнятся по 1, 1 и 1. Т.е. мне нужно удалить стоп 7, выставить стоп 6. Удалить стоп 6 (которого возможно еще нет в живых), поставить стоп 5, удалить стоп 5 (которого также еще нет), поставь стоп 4. Сложность в этом.
Сложностей в этом нет. Программно все решается.
 
На какие принципы лучше опираться?
И как лучше производить перерасчет стоп-ордеров при закрытии позиции?
Торговый привод на Lua: https://github.com/iv-litovchenko/Quik-Enter-Trade
 
Цитата
Иван написал:
И как лучше производить перерасчет стоп-ордеров при закрытии позиции?
Если стоп 10 лотов исполняется частично по 1-1-5-3, то о каком перерасчете идет речь? Исполнился частями и хорошо. Обрисуйте задачу более подробно.
 
Суть проблемы описал выше.
У меня стоп выставляется сейчас когда срабатывает событие OnTrade().

Купили 30 лотов.
Сработало в OnTrade() 10 лотов - выставиться стоп 10 лотов.
Сработало в OnTrade() 20 лотов - выставиться стоп 20 лотов.
Итого 2 стопа на 30 лотов.

А вот как быть когда начинаем закрытие частями этих 30 лотов.
Как объем стопов пересчитать?
Если бы у меня стояло не 2 стопа, а 30 стопов по 1 лоту каждый, то здесь также можно сделать через OnTrade(). Закрыли 15 лотов (50% позиции), убрали 15 стопов.
Торговый привод на Lua: https://github.com/iv-litovchenko/Quik-Enter-Trade
 
Цитата
Иван написал:
А вот как быть когда начинаем закрытие частями этих 30 лотов.
Закрываем то не по стопу, а по тейку? Есть поза 30 лотов и есть уже 2е стоп-заявки 10 и 20 лот. Закрыли по тейку 7 лотов - поза = 23, стопов пока что 30, снимаем скажем стоп 10 лот и вместо него ставим стоп на 3 лота.
OnTrade() - давно уже не пользуюсь. 7 лотов прошли - отследили по Таблице сделок. Бот видит что поза стала 23 - пересчитали объем стоп-заявок.
 
Цитата
Константин Рейм написал:
Цитата
Иван написал:
А вот как быть когда начинаем закрытие частями этих 30 лотов.
Закрываем то не по стопу, а по тейку? Есть поза 30 лотов и есть уже 2е стоп-заявки 10 и 20 лот. Закрыли по тейку 7 лотов - поза = 23, стопов пока что 30, снимаем скажем стоп 10 лот и вместо него ставим стоп на 3 лота.
OnTrade() - давно уже не пользуюсь. 7 лотов прошли - отследили по Таблице сделок. Бот видит что поза стала 23 - пересчитали объем стоп-заявок.
Я имею в виду про ручное закрытие. Цена может подойти к стопу, в ручную закрылись. Цена может подойти  к тейку. В ручную закрылись.
Торговый привод на Lua: https://github.com/iv-litovchenko/Quik-Enter-Trade
 
Стопы вы то же в ручную выставляете или скрипт это делает?
 
Цитата
Константин Рейм написал:
Стопы вы то же в ручную выставляете или скрипт это делает?
Стопы ставятся через OnTrade().
Торговый привод на Lua: https://github.com/iv-litovchenko/Quik-Enter-Trade
 
Константин Рейм, а как понять какие сделки актуальны на данный момент в таблице сделок? Допустим было куплено 10 контрактов, и в ручную закрыто 3. 7 никак не висят в статусе активно в отличие от таблицы заявок и таблицы стоп-ордеров.
Торговый привод на Lua: https://github.com/iv-litovchenko/Quik-Enter-Trade
 
Простой пример. Есть робот - отслеживает ваши ручные манипуляции. Открыли руками 10 лотов - робот это увидел через Таблицу сделок (они - сделки там появились). Как только открыли 10 лотов, бот самостоятельно уже без вашего участия выставил по за ранее заданным вами параметрам стоп и тейк. Потом вы решили закрыть руками 3 лота - закрываем 3 лота - 3 закрытых лота так же появились в Таблице сделок - бот видит что закрыто 3 лота - значит открытая ранее позиция на 10 лотов сократилась и стала 7 лотов. Бот заявки стоп и тейк по 10 лотов снимает и выставляет по 7 лотов.
 
Цитата
Иван написал:
Не совсем понял при чем здесь HFT роботы (высокочастотники как понимаю)?

Сейчас у меня стоп выставляется через функцию OnTrade().
Прошла сделка объемом 7 = выставился стоп объемом 7.

Сложность начинается тогда, когда мне нужно сделать закрытие частями.
К примеру хочу закрыть 30% сделки - это будет 3 контракта.

Соответственно сделка прошла и OnTrade() вижу что мне нужно изменить стоп на 7 контрактов. И здесь начинаются сложности - удали стоп 7, выставь стоп 4.
Это хорошо сработает если исполнится 3 контракта сразу. А если они исполнятся по 1, 1 и 1. Т.е. мне нужно удалить стоп 7, выставить стоп 6. Удалить стоп 6 (которого возможно еще нет в живых), поставить стоп 5, удалить стоп 5 (которого также еще нет), поставь стоп 4. Сложность в этом.
поясню
Проблема в скорости поступления в терминал(ваш комп)  информации с сервера биржи и в скорости исполнения сервером квика поручений с терминала
В HFT  задержки составят десятки микросекунд
а в квике сотни миллисекунд.
Поэтому пока вы снимаете старый стоп и выставляете новый - это все будет исполнять сервер квика, сервер биржи уже продаст следующую часть в вашей заявке.
-----------------
Поэтому для высоколиквидного инструмента квик не обеспечит нужной скорости исполнения
------------------
поэтому для конкретного ответа надо рассматривать конкретный алгоритм конкретный инструмент
иначе это лишь теория.
Программу можете написать, но реально это не всегда будет работать как хочется.
 
Цитата
Николай Камынин
Поэтому пока вы снимаете старый стоп и выставляете новый - это все будет исполнять сервер квика, сервер биржи уже продаст следующую часть в вашей заявке.
-----------------
Можно пожалуйста про эту часть поподробнее что имеется в виду?
Торговый привод на Lua: https://github.com/iv-litovchenko/Quik-Enter-Trade
 
Цитата
Константин Рейм написал:
Простой пример. Есть робот - отслеживает ваши ручные манипуляции. Открыли руками 10 лотов - робот это увидел через Таблицу сделок (они - сделки там появились). Как только открыли 10 лотов, бот самостоятельно уже без вашего участия выставил по за ранее заданным вами параметрам стоп и тейк. Потом вы решили закрыть руками 3 лота - закрываем 3 лота - 3 закрытых лота так же появились в Таблице сделок - бот видит что закрыто 3 лота - значит открытая ранее позиция на 10 лотов сократилась и стала 7 лотов. Бот заявки стоп и тейк по 10 лотов снимает и выставляет по 7 лотов.
Получается это никак не отличается от события OnTrade().
Вы отслеживаете число. Хотя я пробовал отслеживать кол-во из таблицы ограничений по клиентским счетам.  
Торговый привод на Lua: https://github.com/iv-litovchenko/Quik-Enter-Trade
 
Цитата
Константин Рейм написал:
Простой пример. Есть робот - отслеживает ваши ручные манипуляции. Открыли руками 10 лотов - робот это увидел через Таблицу сделок (они - сделки там появились). Как только открыли 10 лотов, бот самостоятельно уже без вашего участия выставил по за ранее заданным вами параметрам стоп и тейк. Потом вы решили закрыть руками 3 лота - закрываем 3 лота - 3 закрытых лота так же появились в Таблице сделок - бот видит что закрыто 3 лота - значит открытая ранее позиция на 10 лотов сократилась и стала 7 лотов. Бот заявки стоп и тейк по 10 лотов снимает и выставляет по 7 лотов.
И получается что вы снимаете всю пачку стоп-пов и их по новому переставляете.
Торговый привод на Lua: https://github.com/iv-litovchenko/Quik-Enter-Trade
 
Цитата
Иван написал:
Получается это никак не отличается от события OnTrade().Вы отслеживаете число. Хотя я пробовал отслеживать кол-во из таблицы ограничений по клиентским счетам.
OnTrade() при обрыве связи вы потеряете сделки, а в таблице сделок нет. В "Ограничения по клиентским счетам" нет объема, вы перепутали видимо с таблицей "Позиции по клиентским счетам (Фьючерсы)".
 
Цитата
Иван написал:
И получается что вы снимаете всю пачку стоп-пов и их по новому переставляете.
Нет не получается. Из примера видно что стоп эта одна заявка объемом в 10 лотов. Если бы у меня было 10 заявок по 1 лоту, то в этом случае вообще ни чего не нужно переставлять.
 
Цитата
Константин Рейм написал:
Цитата
Иван написал:
И получается что вы снимаете всю пачку стоп-пов и их по новому переставляете.
Нет не получается. Из примера видно что стоп эта одна заявка объемом в 10 лотов. Если бы у меня было 10 заявок по 1 лоту, то в этом случае вообще ни чего не нужно переставлять.
Изначально тема - "Жизнеспособность идеи - 100 контрактов = 100 стоп-ордеров по 1 контракту каждый".

Мне на самом деле больше всего сейчас понравилась идея пойти дальше: человек покупает 30 контрактов - будет сделано 30 транзакций по 1 лоту каждый. Т.е. 1 контрат = 1 установленный стоп = 1 снятый стоп. Но получается при торговле 50 контрактами = 50 сделок = 50 транзакций = 50 стопов. 100 контрактов = 100 сделок = 100 стопов и т.д.. Все по 1 лоту. Не надо заморачиваться ни на какие изменения стоп ордеров (только добавить, только снять). Возможно это не очень удобно с точки зрения производительности и избыточно - возможно вернусь к этой идее 1=1=1 позже. Подобный подход кто так реализовывал смог найти только в 1 приводе. Кроме того если какой-то из стоп-ордеров начал исполняться, это тоже удобно анализировать, вернее это не нужно анализировать, т.к. всегда знаешь что исполнился 1 лот, в отличие от стопа когда он весит например на 7 лотов. Хотя это одно и тоже.

Из последний вариантов что осталось попробовать - это реализовать алгоритм отслеживания очереди и по 1 ордеру отрабатывать в main() с подтверждением исполнения ордера в onStopOrder(). Т.е. скажем в 1 раз в 100 мил. отслеживать состояние очереди с заявками на стоп ордера - где добавить, а где снять.
Торговый привод на Lua: https://github.com/iv-litovchenko/Quik-Enter-Trade
 
Как оказалось жизнеспособно - 10, 20, 30 контрактов. И нет нужны заморачиваться на ORDER_MODIFY().
На очень большое кол-во контрактов пока не тестировал.
Торговый привод на Lua: https://github.com/iv-litovchenko/Quik-Enter-Trade
Страницы: 1
Читают тему
Наверх