На кануне выходных получил экземпляр библиотеки TAutoTraderDLL.
В комплект поставки входит пустая база данных, TAutoTrader.mdb, куда подгружаются из Quik данные по портфелям и состоянию счета. Reg-файл для регистрации в реестре настроечной информации для библиотеки, инструкции и несколько вспомогательных библиотек.
В данный момент занимаюсь настройкой системы для использования библиотеки. Забегая наперед скажу, что в справке все подробно и понятно описано. в идеальных условиях проблем с настройкой возникнуть не должно, но мои условия были не идеальными... :) При том что я не являюсь трейдером, и имею весьма скудный опыт общения с клиентским терминалом Quik, то настройки библиотеки TAutoTraderDLL для меня была не такой гладкой как хотелось бы.
Первое с чем пришлось столкнуться - это отсутствие пункта меню "Лимиты". Долго искал этот пункт, открывая все подряд по очереди, думая что пункт "переехал" куда-то в ходе развития программы, а нет... Все оказалось весьма интереснее. Пункт меню "Лимиты" отображается лишь тогда, когда трейдеру назначены лимиты... Иначе этот пункта просто нет. (хотя я бы просто заблокировал его, чтобы исключить замешательство заблудших программистов). В общем... RTFM.
Лимиты получили, таблицы настроили. Вперед!
Главное не забыть активировать автоматический прием транзакций в Quik. При идеальных условиях - трудно забыть, но когда приходится отвлекаться на нюанса - это может стать одной из причин того, что вроде все работает но результат нет.
Для тестов был взят пример с исходного сайта библиотеки. (http://www.stop-loss.ru/node/186)
Текст примера:
BuySell := 0;
BuySell := If(Cross(Mov(C,2,E), Mov(C,1,E)), -1, BuySell);
BuySell := If(Cross(Mov(C,1,E), Mov(C,2,E)), 1, BuySell);
CP := ExtFml("TAutoTrader.MSGetCurrentPortfolio", "L01-00000F00", "GAZP", "ххххх");BuySell := If(Cross(Mov(C,2,E), Mov(C,1,E)), -1, BuySell);
BuySell := If(Cross(Mov(C,1,E), Mov(C,2,E)), 1, BuySell);
PR := 0;
PR := If(BuySell = 1, C*0.99, PR);
PR := If(BuySell = -1, C*1.01, PR);
ExtFml( "TAutoTrader.MSPushOrder", "L01-00000F00", "EQNE", "GAZP", "L", LastValue(PR), LastValue(CP)/10, 2,LastValue(BuySell), "ххххх");
BuySell;
Я его немного модифицировал "под себя". Заменил код газпрома на код сбербанка, подставил свои счета, и в строке генерации транзакции поставил жесткое количество лотов - 1.
При дальнейших тестированиях нареканий на работу библиотеки не было. Она ведет подробный Log, куда записывается результат каждой попытки отправить транзакцию в Quik.
В общем, удобная система.
Далее на ее основе буду пытаться применять различные стратегии. Но об этом позже...
Комментариев нет:
Отправить комментарий