Страницы

18 марта 2012 г.

Metastock... Автоматизация размещения заявок: Использование TAutoTraderDLL


На кануне выходных получил экземпляр библиотеки 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", "ххххх");
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.

В общем, удобная система.

Далее на ее основе буду пытаться применять различные стратегии. Но об этом позже...

Комментариев нет:

Отправить комментарий