Как автоматизировать передачу однотипных заявок каждый день?
- 09 января 2019, 12:21
- |
- Arti
Всем привет!
Скажите, как можно автоматизировать процесс массового создания заявок на покупку бумаг на Московской Бирже каждый день?
Специфика следующая: есть на мониторинге 10-20 корп. облигаций.
Для каждой бумаги есть цена и кол-во, которое я хочу купить (заявка), несколько ниже текущей рыночной цены. Заявки на покупку НЕ условные.
Цена и кол-во бумаг в моих заявках в теч. дня не меняются (для простоты).
На следующий день цена актуализируется (может поменяться) после ручного пересмотра. Но может и не поменяться. То есть опять нужно загрузить список из этих заявок.
Можно, конечно, каждое утро вручную заводить каждую из этих 10-20 заявок, но на это уходит минут 10 каждый день, плюс повышается вероятность ошибки/опечатки.
Список заявок могу вести в Excel.
Подскажите, можно ли либо сделать так, чтобы заявки на покупку на фондофом рынке МБ не отменялись после окончания сессии (либо автоматически пересоздавались), либо как-то упростить процедуру массового ввода заявок с помощью какого-нибудь механизма экспорта таблицы/списка заявок?
P.S. Работаю в Quik/WebQuik/ЛК Открытии.
И еще: можно ли с помощью кармана транзакций заводить айсберг-заявки или какое-то подобие их? Мне это нужно не для того, чтобы скрыть реальный объем заявки, а просто для того, чтобы иметь возможность довыставлять заявку по той же цене после исполнения. Т.е. я не могу выставить полные заявки (скажем, по 10 т.р. каждую) по 20 бумагам (нет свободных средств на счете в данный момент времени), хочу выставить маленькие заявки (скажем, по 2 т.р.) по каждой из бумаг, а при исполнении каждой заявки добавлять еще одну такую же. Возможно ли такое?
Ваш вариант, похоже, самый близкий к тому, что я ищу. Карман транзакций — это хорошо, но мне хотелось бы его усовершенствовать:
1. Чтобы в начале сессии без моего участия все заявки выставлялись, т.е. не приходилось бы вручную их перетаскивать. Это связано с тем, что в теч. рабочего дня (с 10 до 19) у меня нет доступа к QUIK, а только к WebQuik (где кармана нет, насколько я понимаю). Честно говоря не знаю, как организовать работу QUIK в удаленном режиме, чтобы он не «заснул» без моего личного присутствия. Есть ли какой-нибудь удаленный вариант? Возможно, я установлю себе QUIK на ноутбук (вернее, буду брать ноутбук себе на работу) или рабочий компьютер, но пока не принял такого решения.
2. Хотел бы создавать лимитные заявки. Но при этом на мониторинге может быть, скажем, 20 бумаг. По каждой из них я готов купить на сумму, к примеру, 10 т.р. Но если я создам все эти заявки, мне нужно иметь средств в деньгах или ликвидных бумагах, которые могут пойти в залог (т.е. в РЕПО), эту сумму: 20*10=200 т.р. Такой суммы именно на этом счете у меня нет, и я пока не планирую ее там держать. Поэтому я хотел бы иметь возможность создавать лимитные заявки на покупку, но на меньшие суммы, скажем, по 3 т.р. на каждую из бумаг. Таким образом, в этом случае в сумме мне надо будет иметь 20*3=60 т.р. деньгами или бумагами, которые принимаются в залог под РЕПО. Эта сумма у меня есть на этом счете, и я готов ее постоянно поддерживать. Но при этом, если какая-нибудь заявка исполняется, то тут же создается точно такая же заявка по этой бумаге, на эту же сумму (для простоты). Единственное — дополнительно контролируется общий лимит по всем сделкам в день, а также лимит по каждой из бумаг в день. При достижении этих лимитов прекращается выставление заявок всех, либо по отдельным бумагам.
Кстати, возможно, все, что я описал в п.2 реализуется с помощью т.н. айсберг-заявки, вы не знаете? Хотя даже если п.2. нельзя будет реализовать, то все равно возможность автоматического выставления заявок из кармана в начале дня была бы полезна.
3. Пока не понял, можно ли создавать лимитные заявки в кармане транзакций. У меня на демо доступе QUIK доступны только условные заявки (стоп-лимит, тейк-профит):
В рабочий QUIK не могу зайти сейчас, возможно, сервер не работает (сейчас ночь).
Если не секрет, в помощью каких технологий вы это реализовали?
Вот здесь есть описание и исходники, как это делается https://karim.whotrades.com/
Технология торговли графической формации «черепаший суп». Часть 2.
Извините, не могу поставить плюс из-за низкого рейтинга.
Ваш XLSM файл скачал, запустил. Думаю, в VBA для EXCEL смогу разобраться. Файлы .*tri ваш макрос создает. Насколько я понимаю, их можно загружать в «карман транзакций» в QUIK? Но у вас, как я понял, реализован более сложный механизм:
Я подумал, что мне может быть интересна следующая схема: в начале дня загружается общий список заявок ( в виде *.tri файла или как-то еще), при этом объем по каждой бумаге небольшой. При исполнении заявки по любой из бумаг создается новая такая же заявка на тот же самый объем. Все это происходит в рамках общего дневного лимита по всем бумагам, а также в рамках индивидуальных лимитов по каждой из бумаг.
То есть, к примеру, общий суммарный лимит в день: 50 т.р. (т.е. при достижении этой суммы все заявки снимаются).
Индивидуальные лимиты по каждой из бумаг: 10-20 т.р. (при достижении этой суммы заявки по отдельной бумаге снимаются).
При этом сумма индивидуальных лимитов по всем бумагам: 200 т.р.
Объемы заявок по каждой бумаге: 2-3 т.р. Если заявка исполнилась, но индивидуальный лимит по бумаге не достигнут, то создается новая заявка на покупку по этой бумаге с такими же параметрами, как и раньше.
Как вы думаете, как наиболее просто это можно реализовать? С помощью LUA? Или QPile? Или как-то еще? Я прочитал, что QPile несколько устаревшая технология?
Я заметил, что у вас есть связка Lua и DLL. А на чем вы пишете код, который потом идет в DLL? C? C#? Есть ли какие-то альтернативы Visual Studio?
Стоит ли менять брокера для этого — это вопрос дискуссионный.
Да Про квик не знаю
только это было больше 10 лет назад
квик до этого уровня пока не дорос
Галочку ставить не пробовали?
А человек хочет облигации каждый день переставлять.
Написать свою программу.
Данные о текущих котировках вытягивать через LUA или DDE.
Отправлять заявки и контролировать их исполнение через trans2quik.dll
Как вы думаете, как наиболее просто это можно реализовать? С помощью LUA? Или QPile? Или как-то еще? Я прочитал, что QPile несколько устаревшая технология?
Я подумал, что мне может быть интересна следующая схема: в начале дня загружается общий список заявок ( в виде *.tri файла или как-то еще), при этом объем по каждой бумаге небольшой. При исполнении заявки по любой из бумаг создается новая такая же заявка на тот же самый объем. Все это происходит в рамках общего дневного лимита по всем бумагам, а также в рамках индивидуальных лимитов по каждой из бумаг.
То есть, к примеру, общий суммарный лимит в день: 50 т.р. (т.е. при достижении этой суммы все заявки снимаются).
Индивидуальные лимиты по каждой из бумаг: 10-20 т.р. (при достижении этой суммы заявки по отдельной бумаге снимаются).
При этом сумма индивидуальных лимитов по всем бумагам: 200 т.р.
Объемы заявок по каждой бумаге: 2-3 т.р. Если заявка исполнилась, но индивидуальный лимит по бумаге не достигнут, то сразу же создается новая заявка на покупку по этой бумаге с такими же параметрами, как и раньше.
Как вы считаете, такую логику можно будет реализовать в LUA или QPile?
Насколько я понимаю, DLL могут быть разработаны на C/C# и вызываться уже из LUA?