Блог им. mic_pdn

*** MIC_PDN-Robot_Slivala: первый тест

Ну что! Первое рабочее детище прошло успешное тестирование выставления заявок на демо счету по акции сбербанка по тиковой информации пересылаемой DDE протоколом ))

Вот такой получился скрин (1 минутный график и тиковый)

*** MIC_PDN-Robot_Slivala: первый тест
Вот часть лога формирования заявок модулем робота:

--MyDDE_Server--
[start]
# ACCOUNT=S01-00000F00; CLIENT_CODE=J32257; TYPE=L; TRANS_ID=2; CLASSCODE=EQBR; SECCODE=SBER; ACTION=NEW_ORDER; OPERATION=B; PRICE=94.72; QUANTITY=1;
deals=1 0.0 pose=0 price=94.7
# ACCOUNT=S01-00000F00; CLIENT_CODE=J32257; TYPE=L; TRANS_ID=3; CLASSCODE=EQBR; SECCODE=SBER; ACTION=NEW_ORDER; OPERATION=S; PRICE=94.7; QUANTITY=1;
Response# ACCOUNT=S01-00000F00; CLIENT_CODE=J32257; TYPE=L; TRANS_ID=4; CLASSCODE=EQBR; SECCODE=SBER; ACTION=NEW_ORDER; OPERATION=B; PRICE=94.71; QUANTITY=1;
Responsedeals=2 0.0 pose=0 price=94.7
# ACCOUNT=S01-00000F00; CLIENT_CODE=J32257; TYPE=L; TRANS_ID=5; CLASSCODE=EQBR; SECCODE=SBER; ACTION=NEW_ORDER; OPERATION=S; PRICE=94.7; QUANTITY=1;
Response# ACCOUNT=S01-00000F00; CLIENT_CODE=J32257; TYPE=L; TRANS_ID=6; CLASSCODE=EQBR; SECCODE=SBER; ACTION=NEW_ORDER; OPERATION=B; PRICE=94.71; QUANTITY=1;
Responsedeals=3 0.0 pose=0 price=94.7
# ACCOUNT=S01-00000F00; CLIENT_CODE=J32257; TYPE=L; TRANS_ID=7; CLASSCODE=EQBR; SECCODE=SBER; ACTION=NEW_ORDER; OPERATION=S; PRICE=94.7; QUANTITY=1;

Response# ACCOUNT=S01-00000F00; CLIENT_CODE=J32257; TYPE=L; TRANS_ID=8; CLASSCODE=EQBR; SECCODE=SBER; ACTION=NEW_ORDER; OPERATION=B; PRICE=94.71; QUANTITY=1;
 

Стратегия не была контр трендовой ) само собой каждая сделка — мелкий убыток ;) )))) но! даже за эти 2 минуты набомбило 1 контрактом -90 рублей ))))) гыгыг
Но не это сейчас было главным!!! Важно было справится ли мой робот в моей студии на java, через недавно написанный шлюз на С++ к библиотеке trans2quik.dll  со скоростью движения цены на тиковом графике… вывод — справился! :)

Скажу что я выключил шорт — все сделки покупка и закрытие одного контракта

вот лог сделок из квика (повторяю — это демо счет!)

*** MIC_PDN-Robot_Slivala: первый тест

все сделки, что не с 1 контрактом — делались руками «от балды»


=======

Вывод: для того чтобы разобрать боковик даже на тиковом графике в 90% случаев достаточно тех скоростей что есть сейчас в моей инфраструктуре. Допилю модуль контроля сделок (проскальзывание, не исполнение *когда цена уходит от заявки* и прочие нюансы), а затем начну кропотливо впихивать в стратегию торговли весь свой годовой опыт :)

Моя инфраструктура:
—  робот, как модуль моей студии написанный как и она на J2SE (java)
— шлюз на C++ к trans2quik.dll (ява косячит с колбэками) получает заявки от робота по внутреннему постоянному сокету, отправляет роботу статусы исполнения заявок и прочие интерактивные нюансы заявок-сделок, предусмотренных в рамках колбэка trans2quik.dll
— торговый терминал quik с включенной опцией «прием внешних транзакций» и настройко нужных мне таблиц (количество не ограничено) на экспорт по DDE протоколу
— студия получает данные через DDE протокол в мой внутренний DDE-сервер (в рамках модуля студии, написан тоже на java) с информацией таблиц квика, в частности тиковые котировки и стаканы интересующих акций, прочие таблицы (выбор будет определятся стратегиями)
★23
38 комментариев
отличный робот. куклу такие нужны))
avatar
Zorkiy, Психонавтика является новым витком в передовом трейдинге.
Разработана швейцарскими учеными на основе анализа участников конкурса ЛЧИ, активных трейдеров биржи РТС, пользователей Альфа-директа и не которых видов разумных пингвинов, а так же мальчиков, которые очень любят математику.
Психонавтика долгое время пряталась в тени и замалчивалась.
Но русский ученый Вернадский еще в ранних своих работах писал, что в ноосфере есть темные пятна. Предполагалось, что это облака мыслей психически больных граждан. Но с появлением новых технологий удалось внедрить туда Зонды.

smart-lab.ru/blog/94003.php
avatar
Круто, робот-сливала! Осталось самая малость, научить его зарабатывать.
Сергей Кудрявцев, суть топика была не в том что он сливает — стратегия была примитивная до безобразия и к тому же трендовая. Суть — что робот успевает в большинстве своем за микро движениями и если правильно научить работать по тренду и контр тренду… успеет собрать очень много
Дмитрий Интрадей, я давно понял, что с технической реализацией у вас проблем нет, но вот что с алгоритмом?
Сергей Кудрявцев, об этом вы узнаете в следующих постах серии :)) которая будет уже не абстрактным сферическим конем в вакууме… а на 95% приближением к реальной торговле. На свои кровные деньги перейду лишь при 99% уверенности что стратегия хорошая и с минимальными просадками. Пока на эту тему нечего ответить.
++
avatar
Ты же его долго делал, сколько времени потратил?
avatar
Алексей, фишка в том, что я не затачивал робота на тики :) у меня рабочие стратегии сейчас не были подключены, для тиков их нет поэтому накодил простую тему за 15 минут, просто чтобы разные заявки ставило… Я больше занимался исследовательским модулем (делал разные индикаторы, собирал статистику)… т.е. работал с хистори разных акций и искал закономерности.
Инфраструктуры с реальным терминалом не было. За 1.5 недели все сделал.
Дмитрий Интрадей, Ну не пуха не пира))
avatar
Алексей, к черту! :)
А что за бай в космосе?
avatar
Станислав Иванов, вот и мне интересна эта сделка… я думал глюк, перегрузил тики — нет все верно… :( вот и спрашивается разводит нас кукл или же нет? по факту -разводит… ну или это глюк демо сервера квика
Дмитрий Интрадей, у меня тоже так бывает, скорее всего она неправильно накладывается на график, потому-что в таймстампе сделок нет миллисекунд
avatar
а есть самплы, которые позволяют забрать данные по DDE? Я что то не нашел, не заморачиваюсь пока, сливаю по ODBC, но DDE быстрее по идее
avatar
RuTicker.com, на моей машине задержки на получение одного пакета по DDE составляет 15-16 миллисекунд (на старте есть легкие лаги… вот лог
Time: 47
Time: 31
Time: 15
Time: 31
Time: 15
Time: 16
Time: 16
Time: 15
Time: 16
Time: 16
Time: 15
Time: 16
Time: 15
RuTicker.com, задержка на синхронный вызов выставления заявки из шлюза к trans2quik.dll (акция сбербанк — заявка на покупку 1 контракта)

d:\Program Files\TROIK@\
EQBREMU
SBER03

ACCOUNT=S01-00000F00; CLIENT_CODE=J32257; TYPE=L; TRANS_ID=1; CLASSCODE=EQBREMU; SECCODE=SBER03; ACTION=NEW_ORDER; OPERATION=B; PRICE=23; QUANTITY=1;

// задержка синхронного вызова
test: 287
test: 278
test: 264
test: 263
test: 234
test: 187
test: 195
test: 67
test: 212
test: 311
test: 231
test: 425
test: 266
test: 237
test: 257
test: 225
test: 276
test: 178
Дмитрий Интрадей, акция эмулятора, не проверял задержки на боевом сервере… возможно будут отличаться, но по этим данным выходит что на отправку одной заявки выходит порядка 0.25-0.4 секунды
RuTicker.com, какие задержки в ODBC?
Дмитрий Интрадей, нажимаю в квике экспорт DDE — предлагает EXEL, страницу и прочее. Есть самплы, как экспортировать по DDE?
Задержки не мерял, да и не понятно как. У меня же нет точного времени, когда сделка приходит в квик.
К тому же такие маленькие задержки померять невозможно, у таймера погрешность около 1/50 милисекунды, если не знали.
avatar
RuTicker.com, 1/50 секунды, т.к. 20 милисекунд конечно
avatar
RuTicker.com, ну если ODBC 20 миллисекунд )) то DDE дает 15-16 (логи смотри выше)… при том что отправка синхронной заявки 200… то нахуа тебе DDE? )))))
Дмитрий Интрадей, нет не 20… Не знаю сколько, не замерял. 20 — это погрешность таймера! Я написал тебе что бы ты знал, что нужно быть аккуратней с замерами. Нужно замерять в цикле. Мне ODBC не нравится скорее из за ненадежности и кривизны. Был бы какой колбек — радовал бы больше
avatar
RuTicker.com, я под каждый вопрос завел в исходниках иерархию папок листом которых являются текстовые файлы, так вот в файле по DDE протоколу у меня следующие ссылки:

// ___описание XLTable DDE для quik!!!
www.kamynin.ru/archives/1183

// пример настройки таблиц в quik на экспорт DDE
stocksharp.com/doc/html/5c13da7b-b6e4-4fd4-958a-66c93c58b941.htm

// настройка quik на режим DDE
myquik.narod.ru/setup.html

//================
// DDE sourceFree GOOGLE!!! исходники клиента-сервера от гугла!
code.google.com/p/jdde/source/browse/trunk/java/src/com/google/code/jdde/server/DdeServer.java?r=12

//================

// описание __протокола_DDE__
msdn.microsoft.com/en-us/library/windows/desktop/ms648774(v=vs.85).aspx#_win32_Dynamic_Data_Exchange_Protocol

// описание работы CountDownLatch синхронизации
docs.oracle.com/javase/1.5.0/docs/api/java/util/concurrent/CountDownLatch.html

//================

// пример кода сервера на сторонней библиотеке
www.nevaobject.com/_docs/_javadde/JavaDde.htm

//библиотека pretty-tools-JDDE-1.0.2 — предоставляет клиента, но не сервер!
jdde.pretty-tools.com/downloads.php?lang=ru

// обсуждение экспорта данных из quik
www.kamynin.ru/archives/2517
www.kamynin.ru/archives/2525
www.kamynin.ru/archives/2912

// обсуждение DDE сервера для quik
www.quik.ru/forum/iwr/82419/82419/

// pretty-tools-JDDE-1.0.2 — библиотека для работы с DDE форматом

// Импорт транзакций в quik через текстовый файл
www.quik.ru/user/client/quik/features/import/

// qpile глобальные переменные
www.kamynin.ru/archives/4414

//==========================
DDE технология древняя и берет свое начало аж с Windows 3.1. Поэтому ее поддержку и исключили из .NET. Но вот со многими программами иногда приходится работать именно через DDE (т.к. ничего сложнее авторы не реализовали).
Вот тебе «золотой» набор ссылочек, которые в свое время помогли мне реализовать поддержку DDE .NET:

msdn.microsoft.com/ru-ru/libra...85%29.aspx
citforum.ru/programming/digest/exceldde/#otobr
systemnews.com.ru/?mod=art&part=win3x&id=005
www.lib.csu.ru/DL/bases/prg/fr...17/ch3.htm

Уверен они тебе помогут. Будут вопросы — обращайся.
Удачи!
//==========================

надеюсь ссылки помогут :) так же как и мне ;)
«справится ли мой робот в моей студии...»-что за студия?
avatar
jetta, эта студия у меня почти в каждом скрине где есть график и прогноз ;) )) начиная с первого поста. Она без названия ) не знаю что еще вам сказать… Но если говорить про код, то там за 250 классов… если вам это о чем-то говорит )
Дмитрий Интрадей, ни о чем не говорит, разве что о небрежности проектирования )
avatar
RuTicker.com, «мне не нужен золотой унитаз — дайте посрать!»… пишу проект из этого принципа, если ты не разделяешь его ) ну что ж )) перфекционируй дальше ;) я никому свое детище продавать не собираюсь и сдавать в аренду тоже…
Дмитрий Интрадей, задрежка меня не сильно волнует, просто когда происходит обрыв, то данные с начала дня пытаются записаться заново, плюс нужна промежуточная таблица для преобразований из формата квик во внутренний формат.
Так вот когда происходит обрыв, сервис замирает минут на 20, это происходит не часто, но является проблемой все же
avatar
Дмитрий Интрадей, скрин почти такой, как у того робота, который взбесился в Si этим годом)))
avatar
jetta, )))) я тоже, когда увидел итоговое окно сделок — поржал, вспомнив именно тот случай ;) тот случай можно считать нарицательным ;)
Дмитрий Интрадей, тики сохраняешь в БД?
avatar
jetta, как раз думаю как обыграть этот вопрос, насколько это важно и как компактнее хранить все… может на рутикер подвяжусь ))))))ахаха
Смысл затеи не понятен, как выше написано quik = раундтрип 200мс+ как минимум, тики нереально ловить по определению. У меня odbc + mysql всё за пару мс успевает, но чисто из-за удобства выбрал его, вообще при таком пинге хоть через файлы обмениваться можно, пень 3й успеет.
avatar
agat50, так как цена как сигнал имеет колебания разной частоты, то мне надо получить на выходе такой адаптивный алгоритм, который бы работал с физически доступной ему частотой без эффекта «не успел». Я лишь констатировал реальные полученные цифры — это может быть кому-то в будущем полезно, ну и пост в первую очередь адресован себе как архивная заметка
молодцом… лишь бы деньги приносило
avatar
нОрмально берет по хаям продает по лоям видел подобное не раз!
avatar

теги блога Дмитрий Интрадей

....все тэги



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