Блог им. skipjack

Как автоматизировать передачу однотипных заявок каждый день?

    • 09 января 2019, 12:21
    • |
    • Arti
  • Еще
Всем привет!
Скажите, как можно автоматизировать процесс массового создания заявок на покупку бумаг на Московской Бирже каждый день?
Специфика следующая: есть на мониторинге 10-20 корп. облигаций.
Для каждой бумаги есть цена и кол-во, которое я хочу купить (заявка), несколько ниже текущей рыночной цены. Заявки на покупку НЕ условные.
Цена и кол-во бумаг в моих заявках в теч. дня не меняются (для простоты).
На следующий день цена актуализируется (может поменяться) после ручного пересмотра. Но может и не поменяться. То есть опять нужно загрузить список из этих заявок.
Можно, конечно, каждое утро вручную заводить каждую из этих 10-20 заявок, но на это уходит минут 10 каждый день, плюс повышается вероятность ошибки/опечатки.
Список заявок могу вести в Excel.

Подскажите, можно ли либо сделать так, чтобы заявки на покупку на фондофом рынке МБ не отменялись после окончания сессии (либо автоматически пересоздавались), либо как-то упростить процедуру массового ввода заявок с помощью какого-нибудь механизма экспорта таблицы/списка заявок?

P.S. Работаю в Quik/WebQuik/ЛК Открытии.
★9
26 комментариев
карман транзакций в квике существует давно
avatar
Скальпёр, спасибо! Скажите, вы не знаете, можно ли сделать так, чтобы заявки из кармана автоматически в начале сессии выставлялись без прямого участия человека каждый раз?
И еще: можно ли с помощью кармана транзакций заводить айсберг-заявки или какое-то подобие их? Мне это нужно не для того, чтобы скрыть реальный объем заявки, а просто для того, чтобы иметь возможность довыставлять заявку по той же цене после исполнения. Т.е. я не могу выставить полные заявки (скажем, по 10 т.р. каждую) по 20 бумагам (нет свободных средств на счете в данный момент времени), хочу выставить маленькие заявки (скажем, по 2 т.р.) по каждой из бумаг, а при исполнении каждой заявки добавлять еще одну такую же. Возможно ли такое?
avatar
В квике же есть какие-то средства автоматизации. Можно погуглить
avatar
SergeyEgorov, спасибо! Готового решения моей задачи нет, но эта большая тема (автоматические торговые системы), конечно, достойна отдельного изучения.
avatar
Jame Bonds, спасибо!
avatar
для решения этой задачи я написал отдельную программу. и теперь мне не нужно каждый день перетаскивать что-то из кармана. программа сама выставляет заявки в начале сессии по заранее указанным ценам. более того если по заявкам прошли сделки — завтра и в последующие дни заявки не выставятся — ведется учет. программа работает неделями на автопилоте. кому нужно — велкам в личку.
avatar
vfreeman, спасибо! Извините, не могу вам поставить плюс из-за недостатка рейтинга.
Ваш вариант, похоже, самый близкий к тому, что я ищу. Карман транзакций — это хорошо, но мне хотелось бы его усовершенствовать:
1. Чтобы в начале сессии без моего участия все заявки выставлялись, т.е. не приходилось бы вручную их перетаскивать. Это связано с тем, что в теч. рабочего дня (с 10 до 19) у меня нет доступа к QUIK, а только к WebQuik (где кармана нет, насколько я понимаю). Честно говоря не знаю, как организовать работу QUIK в удаленном режиме, чтобы он не «заснул» без моего личного присутствия. Есть ли какой-нибудь удаленный вариант? Возможно, я установлю себе QUIK на ноутбук (вернее, буду брать ноутбук себе на работу) или рабочий компьютер, но пока не принял такого решения.
2. Хотел бы создавать лимитные заявки. Но при этом на мониторинге может быть, скажем, 20 бумаг. По каждой из них я готов купить на сумму, к примеру, 10 т.р. Но если я создам все эти заявки, мне нужно иметь средств в деньгах или ликвидных бумагах, которые могут пойти в залог (т.е. в РЕПО), эту сумму: 20*10=200 т.р. Такой суммы именно на этом счете у меня нет, и я пока не планирую ее там держать. Поэтому я хотел бы иметь возможность создавать лимитные заявки на покупку, но на меньшие суммы, скажем, по 3 т.р. на каждую из бумаг. Таким образом, в этом случае в сумме мне надо будет иметь 20*3=60 т.р. деньгами или бумагами, которые принимаются в залог под РЕПО. Эта сумма у меня есть на этом счете, и я готов ее постоянно поддерживать. Но при этом, если какая-нибудь заявка исполняется, то тут же создается точно такая же заявка по этой бумаге, на эту же сумму (для простоты). Единственное — дополнительно контролируется общий лимит по всем сделкам в день, а также лимит по каждой из бумаг в день. При достижении этих лимитов прекращается выставление заявок всех, либо по отдельным бумагам.

Кстати, возможно, все, что я описал в п.2 реализуется с помощью т.н. айсберг-заявки, вы не знаете? Хотя даже если п.2. нельзя будет реализовать, то все равно возможность автоматического выставления заявок из кармана в начале дня была бы полезна.

3. Пока не понял, можно ли создавать лимитные заявки в кармане транзакций. У меня на демо доступе QUIK доступны только условные заявки (стоп-лимит, тейк-профит):
карман транзакций

В рабочий QUIK не могу зайти сейчас, возможно, сервер не работает (сейчас ночь).


Если не секрет, в помощью каких технологий вы это реализовали?
avatar
vfreeman, Здравствуйте. Мне нужна такая программа, пришлите пожалуйста.
Напишите на VB, который в екселе программку. Пусть скидывает ваш список (он же в екселе) в *.tri файл при нажатии кнопки. А квик их сам выставит.
Вот здесь есть описание и исходники, как это делается https://karim.whotrades.com/

Технология торговли графической формации «черепаший суп». Часть 2.


 
avatar
Karim, спасибо!
Извините, не могу поставить плюс из-за низкого рейтинга.
Ваш XLSM файл скачал, запустил.  Думаю, в VBA для EXCEL смогу разобраться. Файлы .*tri ваш макрос создает. Насколько я понимаю, их можно загружать в «карман транзакций» в QUIK? Но у вас, как я понял, реализован более сложный механизм:
Quik с заданной периодичностью считывает этот файл и исполняет команды.

Я подумал, что мне может быть интересна следующая схема: в начале дня загружается общий список заявок ( в виде *.tri файла или как-то еще), при этом объем по каждой бумаге небольшой. При исполнении заявки по любой из бумаг создается новая такая же заявка на тот же самый объем. Все это происходит в рамках общего дневного лимита по всем бумагам, а также в рамках индивидуальных лимитов по каждой из бумаг.

То есть, к примеру, общий суммарный лимит в день: 50 т.р. (т.е. при достижении этой суммы все заявки снимаются).
Индивидуальные лимиты по каждой из бумаг: 10-20 т.р. (при достижении этой суммы заявки по отдельной бумаге снимаются).
При этом сумма индивидуальных лимитов по всем бумагам: 200 т.р.
Объемы заявок по каждой бумаге: 2-3 т.р. Если заявка исполнилась, но индивидуальный лимит по бумаге не достигнут, то создается новая заявка на покупку по этой бумаге с такими же параметрами, как и раньше.

Как вы думаете, как наиболее просто это можно реализовать? С помощью LUA? Или QPile? Или как-то еще? Я прочитал, что QPile несколько устаревшая технология?

Я заметил, что у вас есть связка Lua и DLL. А на чем вы пишете код, который потом идет в DLL? C? C#? Есть ли какие-то альтернативы Visual Studio?
avatar
Arti, Я заметил, что у вас есть связка Lua и DLL. А на чем вы пишете код, который потом идет в DLL? C? C#? Есть ли какие-то альтернативы Visual Studio?
Код пишу на С++. Альтернативы есть, но без QLua вы ничего не сделаете. Технология простая, на QLua пишите скрипт, который забирает нужные данные из квика и «вывешивает» их в памяти или сбрасывает в файл, а затем на любом языке вы эти данные забираете и обрабатываете, как вам угодно.
avatar
В Альфа-директе это делается автоматом на их сервере (только надо указать срок жизни заявки — у меня 30 дней стоит)...
Стоит ли менять брокера для этого — это вопрос дискуссионный.
avatar
kbug, то есть обычные лимитные заявки (не стоп) можно в Альфа-Директе выставлять на срок более 1 сессии? Но это только для их собственной платформы, а не через QUIK? Вообще любопытно, почему в QUIK такое не сделают для всех инструментов, а не только для срочного рынка.
avatar
Arti, 
то есть обычные лимитные заявки (не стоп) можно в Альфа-Директе выставлять на срок более 1 сессии?
Да
Но это только для их собственной платформы, а не через QUIK?
Про квик не знаю

avatar
в атон лайн тоже раньше можно было их ставить и не заморачиваться каждый день
только это было больше 10 лет назад
квик до этого уровня пока не дорос
avatar
Снежко, 
Галочку ставить не пробовали?
avatar
Karim, на фондовом и валютном рынке к сожалению нет такой галки.
А человек хочет облигации каждый день переставлять.
avatar
В справочника Quik есть Импорт Транзакций, через *.tri файл. Это тот же txt только расширение изменили. И там же есть примеры импорта
avatar
Алексей, спасибо!
avatar

Написать свою программу.

Данные о текущих котировках вытягивать через LUA или DDE.

Отправлять заявки и контролировать их исполнение через trans2quik.dll

Тарас, спасибо!

Как вы думаете, как наиболее просто это можно реализовать? С помощью LUA? Или QPile? Или как-то еще? Я прочитал, что QPile несколько устаревшая технология?

Я подумал, что мне может быть интересна следующая схема: в начале дня загружается общий список заявок ( в виде *.tri файла или как-то еще), при этом объем по каждой бумаге небольшой. При исполнении заявки по любой из бумаг создается новая такая же заявка на тот же самый объем. Все это происходит в рамках общего дневного лимита по всем бумагам, а также в рамках индивидуальных лимитов по каждой из бумаг.

То есть, к примеру, общий суммарный лимит в день: 50 т.р. (т.е. при достижении этой суммы все заявки снимаются).
Индивидуальные лимиты по каждой из бумаг: 10-20 т.р. (при достижении этой суммы заявки по отдельной бумаге снимаются).
При этом сумма индивидуальных лимитов по всем бумагам: 200 т.р.
Объемы заявок по каждой бумаге: 2-3 т.р. Если заявка исполнилась, но индивидуальный лимит по бумаге не достигнут, то сразу же создается новая заявка на покупку по этой бумаге с такими же параметрами, как и раньше.

Как вы считаете, такую логику можно будет реализовать в LUA или QPile?
Насколько я понимаю, DLL могут быть разработаны на C/C# и вызываться уже из LUA?
avatar
Думаю смогу помочь с реализацией через WebQuik. Но правильнее наверное будет сделать на LUA как советовали выше. Стучитесь, если еще актуально.
avatar
Nikolay, спасибо! Если не секрет, через WebQuik реализация с помощью какой технологии возможна? Там есть возможность запускать скрипты LUA, QPile? Или как-то по-другому?
avatar
Arti, Если посредством WebQuik то это только полный рендеринг dom модели браузером. Кастыльно это для трейдинга но если сильно нужно… Первое что приходит на ум это selenium с любым удобным врапером. Доступно будет все что доступно через WebQuik. Повторюсь, это кастыльное решение будет и его надо контролировать внимательнее.
avatar
Хотя бы иметь возможность создавать лимитные заявки на покупку, чтобы заявки автоматически в начале сессии выставлялись без прямого участия человека каждый раз например в течении 25 дней или какой то определенной даты? До сих пор ни как не понимаю как это сделать. Брокер — Сбер
avatar

теги блога Arti

....все тэги



UPDONW
Новый дизайн