Как автоматизировать передачу однотипных заявок каждый день?
Всем привет!
Скажите, как можно автоматизировать процесс массового создания заявок на покупку бумаг на Московской Бирже каждый день?
Специфика следующая: есть на мониторинге 10-20 корп. облигаций.
Для каждой бумаги есть цена и кол-во, которое я хочу купить (заявка), несколько ниже текущей рыночной цены. Заявки на покупку НЕ условные.
Цена и кол-во бумаг в моих заявках в теч. дня не меняются (для простоты).
На следующий день цена актуализируется (может поменяться) после ручного пересмотра. Но может и не поменяться. То есть опять нужно загрузить список из этих заявок.
Можно, конечно, каждое утро вручную заводить каждую из этих 10-20 заявок, но на это уходит минут 10 каждый день, плюс повышается вероятность ошибки/опечатки.
Список заявок могу вести в Excel.
Подскажите, можно ли либо сделать так, чтобы заявки на покупку на фондофом рынке МБ не отменялись после окончания сессии (либо автоматически пересоздавались), либо как-то упростить процедуру массового ввода заявок с помощью какого-нибудь механизма экспорта таблицы/списка заявок?
Скальпёр, спасибо! Скажите, вы не знаете, можно ли сделать так, чтобы заявки из кармана автоматически в начале сессии выставлялись без прямого участия человека каждый раз?
И еще: можно ли с помощью кармана транзакций заводить айсберг-заявки или какое-то подобие их? Мне это нужно не для того, чтобы скрыть реальный объем заявки, а просто для того, чтобы иметь возможность довыставлять заявку по той же цене после исполнения. Т.е. я не могу выставить полные заявки (скажем, по 10 т.р. каждую) по 20 бумагам (нет свободных средств на счете в данный момент времени), хочу выставить маленькие заявки (скажем, по 2 т.р.) по каждой из бумаг, а при исполнении каждой заявки добавлять еще одну такую же. Возможно ли такое?
для решения этой задачи я написал отдельную программу. и теперь мне не нужно каждый день перетаскивать что-то из кармана. программа сама выставляет заявки в начале сессии по заранее указанным ценам. более того если по заявкам прошли сделки — завтра и в последующие дни заявки не выставятся — ведется учет. программа работает неделями на автопилоте. кому нужно — велкам в личку.
vfreeman, спасибо! Извините, не могу вам поставить плюс из-за недостатка рейтинга.
Ваш вариант, похоже, самый близкий к тому, что я ищу. Карман транзакций — это хорошо, но мне хотелось бы его усовершенствовать:
1. Чтобы в начале сессии без моего участия все заявки выставлялись, т.е. не приходилось бы вручную их перетаскивать. Это связано с тем, что в теч. рабочего дня (с 10 до 19) у меня нет доступа к QUIK, а только к WebQuik (где кармана нет, насколько я понимаю). Честно говоря не знаю, как организовать работу QUIK в удаленном режиме, чтобы он не «заснул» без моего личного присутствия. Есть ли какой-нибудь удаленный вариант? Возможно, я установлю себе QUIK на ноутбук (вернее, буду брать ноутбук себе на работу) или рабочий компьютер, но пока не принял такого решения.
2. Хотел бы создавать лимитные заявки. Но при этом на мониторинге может быть, скажем, 20 бумаг. По каждой из них я готов купить на сумму, к примеру, 10 т.р. Но если я создам все эти заявки, мне нужно иметь средств в деньгах или ликвидных бумагах, которые могут пойти в залог (т.е. в РЕПО), эту сумму: 20*10=200 т.р. Такой суммы именно на этом счете у меня нет, и я пока не планирую ее там держать. Поэтому я хотел бы иметь возможность создавать лимитные заявки на покупку, но на меньшие суммы, скажем, по 3 т.р. на каждую из бумаг. Таким образом, в этом случае в сумме мне надо будет иметь 20*3=60 т.р. деньгами или бумагами, которые принимаются в залог под РЕПО. Эта сумма у меня есть на этом счете, и я готов ее постоянно поддерживать. Но при этом, если какая-нибудь заявка исполняется, то тут же создается точно такая же заявка по этой бумаге, на эту же сумму (для простоты). Единственное — дополнительно контролируется общий лимит по всем сделкам в день, а также лимит по каждой из бумаг в день. При достижении этих лимитов прекращается выставление заявок всех, либо по отдельным бумагам.
Кстати, возможно, все, что я описал в п.2 реализуется с помощью т.н. айсберг-заявки, вы не знаете? Хотя даже если п.2. нельзя будет реализовать, то все равно возможность автоматического выставления заявок из кармана в начале дня была бы полезна.
3. Пока не понял, можно ли создавать лимитные заявки в кармане транзакций. У меня на демо доступе QUIK доступны только условные заявки (стоп-лимит, тейк-профит):
В рабочий QUIK не могу зайти сейчас, возможно, сервер не работает (сейчас ночь).
Если не секрет, в помощью каких технологий вы это реализовали?
Напишите на VB, который в екселе программку. Пусть скидывает ваш список (он же в екселе) в *.tri файл при нажатии кнопки. А квик их сам выставит.
Вот здесь есть описание и исходники, как это делается https://karim.whotrades.com/
Технология торговли графической формации «черепаший суп». Часть 2.
Karim, спасибо!
Извините, не могу поставить плюс из-за низкого рейтинга.
Ваш XLSM файл скачал, запустил. Думаю, в VBA для EXCEL смогу разобраться. Файлы .*tri ваш макрос создает. Насколько я понимаю, их можно загружать в «карман транзакций» в QUIK? Но у вас, как я понял, реализован более сложный механизм:
Quik с заданной периодичностью считывает этот файл и исполняет команды.
Я подумал, что мне может быть интересна следующая схема: в начале дня загружается общий список заявок ( в виде *.tri файла или как-то еще), при этом объем по каждой бумаге небольшой. При исполнении заявки по любой из бумаг создается новая такая же заявка на тот же самый объем. Все это происходит в рамках общего дневного лимита по всем бумагам, а также в рамках индивидуальных лимитов по каждой из бумаг.
То есть, к примеру, общий суммарный лимит в день: 50 т.р. (т.е. при достижении этой суммы все заявки снимаются).
Индивидуальные лимиты по каждой из бумаг: 10-20 т.р. (при достижении этой суммы заявки по отдельной бумаге снимаются).
При этом сумма индивидуальных лимитов по всем бумагам: 200 т.р.
Объемы заявок по каждой бумаге: 2-3 т.р. Если заявка исполнилась, но индивидуальный лимит по бумаге не достигнут, то создается новая заявка на покупку по этой бумаге с такими же параметрами, как и раньше.
Как вы думаете, как наиболее просто это можно реализовать? С помощью LUA? Или QPile? Или как-то еще? Я прочитал, что QPile несколько устаревшая технология?
Я заметил, что у вас есть связка Lua и DLL. А на чем вы пишете код, который потом идет в DLL? C? C#? Есть ли какие-то альтернативы Visual Studio?
Arti, Я заметил, что у вас есть связка Lua и DLL. А на чем вы пишете код, который потом идет в DLL? C? C#? Есть ли какие-то альтернативы Visual Studio?
Код пишу на С++. Альтернативы есть, но без QLua вы ничего не сделаете. Технология простая, на QLua пишите скрипт, который забирает нужные данные из квика и «вывешивает» их в памяти или сбрасывает в файл, а затем на любом языке вы эти данные забираете и обрабатываете, как вам угодно.
В Альфа-директе это делается автоматом на их сервере (только надо указать срок жизни заявки — у меня 30 дней стоит)...
Стоит ли менять брокера для этого — это вопрос дискуссионный.
kbug, то есть обычные лимитные заявки (не стоп) можно в Альфа-Директе выставлять на срок более 1 сессии? Но это только для их собственной платформы, а не через QUIK? Вообще любопытно, почему в QUIK такое не сделают для всех инструментов, а не только для срочного рынка.
Как вы думаете, как наиболее просто это можно реализовать? С помощью LUA? Или QPile? Или как-то еще? Я прочитал, что QPile несколько устаревшая технология?
Я подумал, что мне может быть интересна следующая схема: в начале дня загружается общий список заявок ( в виде *.tri файла или как-то еще), при этом объем по каждой бумаге небольшой. При исполнении заявки по любой из бумаг создается новая такая же заявка на тот же самый объем. Все это происходит в рамках общего дневного лимита по всем бумагам, а также в рамках индивидуальных лимитов по каждой из бумаг.
То есть, к примеру, общий суммарный лимит в день: 50 т.р. (т.е. при достижении этой суммы все заявки снимаются).
Индивидуальные лимиты по каждой из бумаг: 10-20 т.р. (при достижении этой суммы заявки по отдельной бумаге снимаются).
При этом сумма индивидуальных лимитов по всем бумагам: 200 т.р.
Объемы заявок по каждой бумаге: 2-3 т.р. Если заявка исполнилась, но индивидуальный лимит по бумаге не достигнут, то сразу же создается новая заявка на покупку по этой бумаге с такими же параметрами, как и раньше.
Как вы считаете, такую логику можно будет реализовать в LUA или QPile?
Насколько я понимаю, DLL могут быть разработаны на C/C# и вызываться уже из LUA?
Nikolay, спасибо! Если не секрет, через WebQuik реализация с помощью какой технологии возможна? Там есть возможность запускать скрипты LUA, QPile? Или как-то по-другому?
Arti, Если посредством WebQuik то это только полный рендеринг dom модели браузером. Кастыльно это для трейдинга но если сильно нужно… Первое что приходит на ум это selenium с любым удобным врапером. Доступно будет все что доступно через WebQuik. Повторюсь, это кастыльное решение будет и его надо контролировать внимательнее.
Хотя бы иметь возможность создавать лимитные заявки на покупку, чтобы заявки автоматически в начале сессии выставлялись без прямого участия человека каждый раз например в течении 25 дней или какой то определенной даты? До сих пор ни как не понимаю как это сделать. Брокер — Сбер
octoeye, Тут и не может ничего расти. У нас количество абонентов городской связи не увеличивается. Зато понятно что у дочки 60-70 ярдов на балансе. Как раз Мамке дивы на год.
kad.arbitr.ru/Card/65130412-6329-4c07-8648-13c0db8472e1
Ну, вот кто-то уже подал самостоятельный иск, причем раньше заявления Забродина. Заседание должно состояться 21 ноября.Посмотрим, что скажет с...
И еще: можно ли с помощью кармана транзакций заводить айсберг-заявки или какое-то подобие их? Мне это нужно не для того, чтобы скрыть реальный объем заявки, а просто для того, чтобы иметь возможность довыставлять заявку по той же цене после исполнения. Т.е. я не могу выставить полные заявки (скажем, по 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?