ВНИМАНИЕ! КОММЕНТАРИИ ПЕРВОГО УРОВНЯ В ВОПРОСАХ УПОРЯДОЧИВАЮТСЯ ПО ЧИСЛУ ПЛЮСИКОВ, А НЕ ПО ВРЕМЕНИ ПУБЛИКАЦИИ.
Мне посоветовали самое простое решение. Не самое высококлассное, а именно простое и стабильное.
А именно:
1. в ведущем квике делается скрипт, который выгружает все действия в текстовый файл.
2. в ведомых запускается скрипт, который считывает оттуда и полностью повторяет, использую поправочные коэффициенты на сайз.
И второй момент: не хотелось бы изобретать велосипед, возможно ктото уже даже не только столкнулся с этим, но и успешно решил. Буду благодарен коллеге, который посчитает возможным поделиться решением. С меня большая вкусная ватрушка.
Ajax, спасибо, видел этот софт, но насколько понятно из описания — он дублирует сделки, а не приказы. Нужно же дублирование всех ордеров, в том числе стоп и тейк.
mark_money, в дублировании сделок и ордеров есть некоторый опыт. Ровно 10 лет назад, в мае 2007-го изобрёл дубликатор МТ4->Квик. Дубликатор сделок QUIK-QUIKhttp://pmntrade.ru/double_trades_quik-quik.html
Дублирует сделки по факту совершения. Само собой, дублируются и стоп заявки, но после исполнения заявки в отправителе (входа в позицию). Есть коэффициенты, позволяющие изменять дублируемое количество в каждом из получателей отдельно. Можно использовать виртуальные диски, например для копирование на другой ПК через локальную сеть или Интернет. Программа понятна и работает стабильно. Дубликатор заявок QUIK-QUIK http://pmntrade.ru/double_orders_quik-quik.html Организована также, как дубликатор сделок, но при дублировании заявок возникают большие проблемы. Дело в том, что заявка далеко не всегда исполняется в полном объёме. Часто бывает, что в отправителе исполнилась, а в получателе не исполнилась. Что будем делать с неисполненной заявкой? В моей версии неисполненная заявка снимается через указанное время. Но можно сделать, чтобы неисполненный объём исполнялся по рынку через это же указанное время. Поэтому использование заявок может не улучшить цены входа.
Михаил Понамаренко, Добрый день, Михаил, да Ваше решение как раз близко к тому что нужно. Я не стал писать Вам в личку, чтобы наша переписка осталась тут и, возможно, пригодилась кому-то еще в будущем.
Давайте посмотрим по деталям?
Отталкиваемся от:
1. Есть Квик, на который заведено масса софта, через который ведется работа. Иногда и через сам квик.
2. Есть ведомые квики, которые должны в точности повторять ордера.
3. Ордера могут быть: обычные и отложенные (стопы, тейки).
4. Ордера могут как ставиться так и сниматься.
5. Квики могут быть разных брокеров, как следствие — могут быть разные коды бумаг (прежде всего фортса).
6. Внутри одного ведомого квика, на одном UID, может быть несколько счетов. Соответственно, дублирование может проводиться на все. Должна быть возможность выбора списка ведомых.
7. При подаче заявок в комментарии к заявке может передаваться служебная информация в примечаниях, она также требует дублирования.
8. При исполнении дублирования могут возникать коллизии и ошибки екзекьюшена:
а. Выставленные лимитники по всем счетам исполнились по разному (то, о чем вы писали).
б. При попытке выставления ведомые не повторили, по любой причине, например нехватка средств, отсутствие связи с брокером, неверный код инструмента или любой другой.
Соответственно мы должны контролировать процесс дублирования и предусмотреть решения этих проблем.
9. Должно быть стабильно.
10. Должно быть быстро.
11. Должно быть расширяемо/дополняемо в будущем.
mark_money, из описанного выше, вам, всё же нужно дублирование заявок. А эта задача несёт в себе массу коллизий. Поэтому иметь одинаковые позиции будет невозможно. Будет накапливаться очень большой перекос позиций на счетах. Или нужно исполнять не исполненные позиции в получателе по рынку через определённый тайм-аут.
Михаил Понамаренко, либо делать положительное проскальзывание. Не полностью по рынку, а на размер удовлетворяющего проскальзывания. Тогда в большинстве случаев будем брать весь объем, а остатки можно также брать по рынку через тайм аут.
Либо предусмотреть дополнительную логику. Например, можно заложить логику, например, смотреть на ликвидность, учитывать ее. Как вариант можно опираясь на ликвидность, повторяя транзакцию — бить ее частями и ставить лучшим бидом например. В итоге в 10 выставлений наберется объем полюбому, с меньшими затратами на проскальзывании.
mark_money, выставлять нужно заявку, по такой же цене, как в отправителе. После тайм-аута, почти всегда лучше работает выставление и переставление заявки внутри спреда или по цене последней сделки, т.е. выгодней входы, чем по рынку. Правда, иногда на рынке бывают тренды, в этом случае лучше сразу запрыгивать по цене, какую дали.
Далее уже вопросы:
1. Наиболее близко к этому — это Дубликатор заявок. Отдельно хотел сказать, что сделано все качественно, и видеоинструкции и сам софт, и документация.
2. Насколько он решает обозначенные задачи и где есть белые пятна?
3. Он сделан на qpile, есть ли недостатки в сравнении с реализацией на lua?
mark_money, белое пятно в том, что система дублирует только лимитные заявки, т.е. стоп-заявки не дублируются. Здесь сложность в том, чтобы получатель отличал заявки выставленные трейдером и заявки порождённые стоп-заявками. Сейчас при исполнении стоп-заявки в отправителе, порождается лимитная заявка, которая и дублируется в получатель.
Михаил Понамаренко, может тогда имеет смысл реализовать это на qlua?
честно говоря, 1 секунда не принципиальное время. больше беспокоят другие моменты, а именно узкая функциональность языка, стабильность, прекращение его поддержки.
Возможно есть более современные способы реализации. Например, есть тот же quiksharp, amisharp.
mark_money, имеет, конечно смысл. Перехожу потихоньку. Есть одна очень неприятная вещь для меня. Таблицы QLUA не помнят на какой вкладке были открыты https://forum.quik.ru/messages/forum10/message20140/topic2264/. При запуске Квик все таблицы роботов и скриптов открываются на одной вкладке. Для меня очень неудобно. Люблю, когда всё по полочкам.
Михаил Понамаренко, у меня все таблицы внешнего софта вынесены в отдельную вкладку, куда я даже не заглядываю, и как пользователю — это не фактор. Хотя наверно для разработчиков неудобен момент.
Михаил Понамаренко, думаю, что это можно решить путем прописывания служебной информации в заявку. например, в мастере в стопе есть запись в поле брокерреф, тогда при срабатывании стопа эта инфа по идее запишется в брокерреф порождаемой лимитной заявки. Слейвы же, считывая данную транзакцию увидят не пустое поле и пропустят данную транзакцию.
Если предположения верны, то можно таким образом сделать.
Либо еще варианты подумать.
Михаил Понамаренко, получается можно все таки таким образом фильтровать заявки? имею ввиду стопы, имея примечание или другой любой блок, переносят эту информацию в порождаемую заявку?
Михаил Понамаренко, либо, можно сделать со стопами и тейками, так что по умолчанию копируем только заявки, а когда мастер делает дисконнект — выгружаем все стопы в ведомые. а при подключении — опять снимаем и работаем только с заявками?
mark_money, да, такой вариант вполне имеет место быть
и не нагружает работу программы (нет необходимости постоянно отслеживать условные заявки).
В свою версию Дубликатора заявок пока добавлять возможность дублирования условных заявок не буду. Сначала нужно перейти на QLUA, но времени для этого потребуется немало. Программирование всё также остаётся в рамках хобби.
Avkzn, 1. Брокеры разные и изменить это невозможно. 2. В рамках даже одного брокера — все равно нужно дублирование. Не подача консолидированных заявок, а именно дублирование действий.
mark_money, вопрос так понимаю именно в синхронизации действий, причем моментально по разным счетам? Взять например Открытие, открываешь субсчет, например сделка по Ри, ставишь в стакан заявку по одному счету, тут же в стакане выбираешь другой счет и ставишь заявку по другому счету, дело мне кажется секунды. Затем ставишь стоп по одному счету, потом ctr+A, счет в стоп-заявке меняешь и получается +сто-заявка по другому счету. Или я чет не догоняю?
Mr Gold, спасибо, да, видел этот софт, на мой взгляд действительно одна из лучших альтернатив стоковому траст менеджеру. Натыкался на него, когда нужно было просто управление несколькими счетами.
Но в моем случае, немного другая специфика, поскольку нужно именно не интерфейс работы с несколькими счетами, удобный, пользовательский, а именно дубликатор ордеров.
Почему?
1. У меня к ведущему терминалу подключен софт. Скальперский, опционный, и малая автоматизация через с#.
2. Соответственно мне нужно чтобы работа разносилась на остальные квики, самим же квиком.
А собственно, в чем вопрос?
Сделать можно, но есть один нюанс. Поскольку способов выставления заявок много, типов условных заявок еще больше и далее в том же роде, то если делать все серьезно и качественно, то махать лопатой придется долго и яму выкопать придется большую. Собственно, иных сложностей и нет, если не рассматривать случаи, когда рынок не позволяет дублировать действия...
s_mike@rambler.ru, способы выставления заявок будут влиять? мы ведь просто видим конечные заявки в квике, как они туда прилетели имеет значение, или я что то не учел? условных заявок только 2- тейк и стоп.
Рынок не позволяет дублировать — это если цена уходит имеете ввиду или какие-то другие ситуации?
Посмотрел по ссылке- появилась мысль. Если мы дублируем все заявки, рыночные и лимитные, но не дублируем стоп-заявки, то они все равно будут продублированы в случае исполнения, НО при условии что все терминалы работают и обмениваются данными.
Отсюда идея. Возможно ли просто реализовать такую вещь, что стоп-заявки выгружаются в ведомые только в момент выключения мастер-квика?
ПС. Я понимаю, что если решать эту задачу под сферического коня в вакууме, то сделать нужно много защит и много что учесть. Но думаю, то у каждого эти моменты будут индивидуальны и какие-то вещи и моменты, я например, могу взять риск на себя.
ПСПС. Можете в личку написать какого размера ватрушка будет в самый раз, чтобы поделиться своими наработками?
А именно:
1. в ведущем квике делается скрипт, который выгружает все действия в текстовый файл.
2. в ведомых запускается скрипт, который считывает оттуда и полностью повторяет, использую поправочные коэффициенты на сайз.
И второй момент: не хотелось бы изобретать велосипед, возможно ктото уже даже не только столкнулся с этим, но и успешно решил. Буду благодарен коллеге, который посчитает возможным поделиться решением. С меня большая вкусная ватрушка.
Дубликатор сделок QUIK-QUIK http://pmntrade.ru/double_trades_quik-quik.html
Дублирует сделки по факту совершения. Само собой, дублируются и стоп заявки, но после исполнения заявки в отправителе (входа в позицию). Есть коэффициенты, позволяющие изменять дублируемое количество в каждом из получателей отдельно. Можно использовать виртуальные диски, например для копирование на другой ПК через локальную сеть или Интернет. Программа понятна и работает стабильно.
Дубликатор заявок QUIK-QUIK
http://pmntrade.ru/double_orders_quik-quik.html
Организована также, как дубликатор сделок, но при дублировании заявок возникают большие проблемы. Дело в том, что заявка далеко не всегда исполняется в полном объёме. Часто бывает, что в отправителе исполнилась, а в получателе не исполнилась. Что будем делать с неисполненной заявкой? В моей версии неисполненная заявка снимается через указанное время. Но можно сделать, чтобы неисполненный объём исполнялся по рынку через это же указанное время. Поэтому использование заявок может не улучшить цены входа.
Давайте посмотрим по деталям?
Отталкиваемся от:
1. Есть Квик, на который заведено масса софта, через который ведется работа. Иногда и через сам квик.
2. Есть ведомые квики, которые должны в точности повторять ордера.
3. Ордера могут быть: обычные и отложенные (стопы, тейки).
4. Ордера могут как ставиться так и сниматься.
5. Квики могут быть разных брокеров, как следствие — могут быть разные коды бумаг (прежде всего фортса).
6. Внутри одного ведомого квика, на одном UID, может быть несколько счетов. Соответственно, дублирование может проводиться на все. Должна быть возможность выбора списка ведомых.
7. При подаче заявок в комментарии к заявке может передаваться служебная информация в примечаниях, она также требует дублирования.
8. При исполнении дублирования могут возникать коллизии и ошибки екзекьюшена:
а. Выставленные лимитники по всем счетам исполнились по разному (то, о чем вы писали).
б. При попытке выставления ведомые не повторили, по любой причине, например нехватка средств, отсутствие связи с брокером, неверный код инструмента или любой другой.
Соответственно мы должны контролировать процесс дублирования и предусмотреть решения этих проблем.
9. Должно быть стабильно.
10. Должно быть быстро.
11. Должно быть расширяемо/дополняемо в будущем.
Либо предусмотреть дополнительную логику. Например, можно заложить логику, например, смотреть на ликвидность, учитывать ее. Как вариант можно опираясь на ликвидность, повторяя транзакцию — бить ее частями и ставить лучшим бидом например. В итоге в 10 выставлений наберется объем полюбому, с меньшими затратами на проскальзывании.
Далее уже вопросы:
1. Наиболее близко к этому — это Дубликатор заявок. Отдельно хотел сказать, что сделано все качественно, и видеоинструкции и сам софт, и документация.
2. Насколько он решает обозначенные задачи и где есть белые пятна?
3. Он сделан на qpile, есть ли недостатки в сравнении с реализацией на lua?
Недостатки QPILE, прежде всего, в скорости. Его нельзя обрабатывать чаще, чем раз в 1 сек. Многие функции выполняются дольше.
честно говоря, 1 секунда не принципиальное время. больше беспокоят другие моменты, а именно узкая функциональность языка, стабильность, прекращение его поддержки.
Возможно есть более современные способы реализации. Например, есть тот же quiksharp, amisharp.
Если предположения верны, то можно таким образом сделать.
Либо еще варианты подумать.
и не нагружает работу программы (нет необходимости постоянно отслеживать условные заявки).
В свою версию Дубликатора заявок пока добавлять возможность дублирования условных заявок не буду. Сначала нужно перейти на QLUA, но времени для этого потребуется немало. Программирование всё также остаётся в рамках хобби.
ПС. Насколько долго добавить этот функционал в Дубликатор на qpile? Возможно, хотя это решение подойдет в качестве временного?
QPILE не позволяет работать с внешними функциями.
Но в моем случае, немного другая специфика, поскольку нужно именно не интерфейс работы с несколькими счетами, удобный, пользовательский, а именно дубликатор ордеров.
Почему?
1. У меня к ведущему терминалу подключен софт. Скальперский, опционный, и малая автоматизация через с#.
2. Соответственно мне нужно чтобы работа разносилась на остальные квики, самим же квиком.
Сергей < o-s-a.net > buybackoff Prophetic FateevVV XXM А. Г.
Здравствуйте.
А собственно, в чем вопрос?
Сделать можно, но есть один нюанс. Поскольку способов выставления заявок много, типов условных заявок еще больше и далее в том же роде, то если делать все серьезно и качественно, то махать лопатой придется долго и яму выкопать придется большую. Собственно, иных сложностей и нет, если не рассматривать случаи, когда рынок не позволяет дублировать действия...
Частный случай, когда нужно копировать только заявки: http://www.bot4sale.ru/projects/robots/robots-list/427-quik-data-exchange.html
Рынок не позволяет дублировать — это если цена уходит имеете ввиду или какие-то другие ситуации?
Посмотрел по ссылке- появилась мысль. Если мы дублируем все заявки, рыночные и лимитные, но не дублируем стоп-заявки, то они все равно будут продублированы в случае исполнения, НО при условии что все терминалы работают и обмениваются данными.
Отсюда идея. Возможно ли просто реализовать такую вещь, что стоп-заявки выгружаются в ведомые только в момент выключения мастер-квика?
ПС. Я понимаю, что если решать эту задачу под сферического коня в вакууме, то сделать нужно много защит и много что учесть. Но думаю, то у каждого эти моменты будут индивидуальны и какие-то вещи и моменты, я например, могу взять риск на себя.
ПСПС. Можете в личку написать какого размера ватрушка будет в самый раз, чтобы поделиться своими наработками?
Только зарегистрированные и авторизованные пользователи могут оставлять ответы.
Залогиниться
Зарегистрироваться