Банальный вопрос — сохранение истории из QUIK в нормальном формате, типа как с финама в текстовом виде, где есть дата, время и параметры свечи. Кто-нибудь реализовал такую штуку? У меня робот тупо сосет из финама историю по склеенному фьючу RTS, но хочется брать из QUIKа, так как это надежнее.
Пробовал на lua делать скрипт который выполняет экспорт из квика графика, но там ограничение в один день, и глюки начинаются… при сохранении файла истории меняется текущая дректория и квик теряет путь к файлам ключей и отваливается.
Есть вариант сохранять историю находу… самому запоминать хай, лоу, опен и клоз каждой свечи и по концу свечи сохранять эти данные, полученные из стакана или параметров спрос/предложение. Но может уже есть что-то готовое, как это проще и надежнее сделать… чтобы данные из квика не сильно отличались от тех, что брокеры дают скачивать ?
Romanio, я пробовал использовать функцию get_candels, если не ошибся в названии, у меня не получилось: функция не работала.
— получал текущее время;
— округлял до нужного периода;
— циклил вычитание периода и вызов функции
— функция ничего не выдавала
— делал на демо-счете, может в этом дело.
Не прибегая к помощи дополнительных программ для тех.анализа, на мой взгляд, проблему не разрешить!
starscream, у меня прекрасно работает вот этот lua скрипт(приведен ниже) но сбивается путь к ключам квика… разработчики QUIIK накосячили как обычно, прилепили lua, но как это повлияет на работу базовых функций QUIK — не проверили.
пример скрипта экспорта историии из графика на lua:
f = io.open(contract..os.date("_%Y_%m_%d.txt"),«w»)
i = 2
s = ds1:Size()
while i<=s do
t = ds1:T(i)
f:write(string.format(contract..",5,%.4d%.2d%.2d,%.2d%.2d%.2d,%d,%d,%d,%d,%d",t.year,t.month,t.day,t.hour,t.min,t.sec,ds1:O(i),ds1:H(i),ds1:L(i),ds1:C(i),ds1:V(i)).."\n")
Romanio, а для чего Вам нужна история? Я так понял, для своего индикатора? В среде Lua я не разбираюсь, для её освоения надо еще кучу учебников проштудировать. Я нашел более простое, на мой взгляд, решение этой проблемы: открываем счет в метатрейдере, там пишем индикатор и передаем результат в квик через файл.
Труроботостроители экпортируют ТВС по DDE за день и парсят. Ну и накапливают ессно за предыдущие дни.
Есть еще вариант купайл портфеля который строит бары за день и экспортирует в SQL, а там оно накапливается триггерами. А робот читает оттуда.
Есть еще умельцы которые садяцца на экспорт из квика в проги теханализа, тоже вариант.
Намного проще Вашу перекурвфиченную страту переписать в прогу теханализа ̶п̶р̶о̶т̶е̶с̶т̶и̶р̶о̶в̶а̶т̶ь̶ ̶и̶ ̶в̶ы̶к̶и̶н̶у̶т̶ь̶ и использовать готовый экспорт из Квика.
Промучавшись с купайловскими скриптами формирования баров с графиков, я в итоге пришел к решению:
Качаем по DDE таблицу всех сделок, во внешней программе формируем минутные бары и дописываем в базу данных, а уже робот работает с базой данных минуток (до июня 2012 я базу минуток сформировал, закачав данные с финама с исправлением тех дней, где сформированные часовики не совпали с давно ведущимися мной часовиками с ноября 1998-го).
Как качать таблицу по DDE? Раньше качал в Excel и обрабатывал в VBA, потом переписал все в C# с использованием библиотеки NDDE.
А. Г., а зачем Вам так много данных? Если для тестирования стратегий на истории, то согласен. Но для работы нужны свежие данные, т.е. окно последних свечек максимум в месяц.
В том числе и для тестирования на истории. А данных немного, пока в базе только скленный фьючерс на индекс РТС и 6 наиболее ликвидных акций. А с базой роботам работать удобно для текущих расчетов: можно брать только ту глубину, которая нужна. И трудоемкость небольшая — я же не переписываю всю базу, а дописываю в нее. Вопрос только в секундных задержках: минутка формируется в момент сделки из следующей минуты. Для моих систем это не принципиально.
А. Г., от склеенных данных мало толку, согласен! Интересно, почему биржа не поставит в базу вместо квика что-нибудь типа метатрейдера?!.. не так, как сейчас, а с полным доступом ко всем инструментам!
Не понял про «мало толку от склеенных данных». Для тестирования я их и использую, правда, склеенный у меня только фьючерс. В акциях нечего склеевать.
А метатрейдер, как база данных — это вообще моветон. Есть же оракл, постгри, майэскуэль, на худой конец можно мскуэль использовать. Впрочем биржа историю, кроме дневок, уже сделала платной, хотя и недорогой — всего 5 тыс. Руб.
А. Г.,… в моем понимании, склеенные данные это как геп после выходных: видно начало и конец, но в процессе не участвуешь)))
Я не собираюсь ни с кем спорить, у всех свои методы!!!
С уважением!
starscream, Да, для тестирования стратегий, плавно перетекающего в интрадей реал-тайм торговлю. Просто у меня алгоритм такой — запускается на истории в лет 5 одновременно штук 500 экземпляров одного и того же алгоритма с различными параметрами, различная величина стопов, различная глубина пямяти на максимум минимум и т.п… алгоритм балансировки назначает на каждой свече приоритеты каждой из 500 стратегии, в зависимости от её текущих результатов. Итоговая эквити после балансировки получается раза в 2-3 лучше чем каждая из входящих в отдельности по соотношению прибыль/макс.просадка. Таким образом мне нужен архив лет за 5 + реальные данные за каждый новый день, с задержкой не более 5 минут. Финам временами задерживает минут на 10. Хотелось соединить архив и QUIK, чтобы тест стратегии и реал-тайм торговлю на этой истории делать одновременно, т.к. реал-тайм торговля является продолжением теста на истории, т.е. все текущие переменные должны инициализироваться значениями с момента конца теста. т.к. если запускать алгоритм не за 5 лет а за месяц назад, какие-то факторы не будут учтены, и реальные сделки пойдут по другому…
А. Г., starscream, Да, для тестирования стратегий, плавно перетекающего в интрадей реал-тайм торговлю. Просто у меня алгоритм такой — запускается на истории в лет 5 одновременно штук 500 экземпляров одного и того же алгоритма с различными параметрами, различная величина стопов, различная глубина пямяти на максимум минимум и т.п… алгоритм балансировки назначает на каждой свече приоритеты каждой из 500 стратегий, в зависимости от её текущих результатов. Итоговая эквити после балансировки получается раза в 2-3 лучше чем каждая из входящих в отдельности по соотношению прибыль/макс.просадка. Таким образом мне нужен архив лет за 5 + реальные данные за каждый новый день, с задержкой не более 5 минут. Финам временами задерживает минут на 10. Хотелось соединить архив и QUIK, чтобы тест стратегии и реал-тайм торговлю на этой истории делать одновременно, т.к. реал-тайм торговля является продолжением теста на истории, т.е. все текущие переменные должны инициализироваться значениями с момента конца теста. т.к. если запускать алгоритм не за 5 лет, а за месяц назад, какие-то факторы не будут учтены, и реальные сделки пойдут по другому…
Хорошо, что вышел по 235 месяц назад.
Жалею, что не сделал этого еще в сентябре.
Заметка для себя на будущее: принял для себя минимальную цену для выхода — наступила — выходи. Не жди, что отрас...
Здравствуйте! Появилась красная плашка о том, что для поста про облигации был указан спецтег акций. Подскажите, пожалуйста, как получить доступ к спецтегу облигаций, про них тоже часто пишу. Но выбрат...
Ещё добрал ашинского по 68,55 причём налили не за один раз, а потом резко вниз. В общем пока не ставлю заявок ниже. 15,57 % ашинского у меня 1 место среди торгуемых бумаг.
Друзья, подскажите, почему при покупке опциона блокируется ГО, я же покупатель и не отвечаю ничем, кроме премии, зачем в таком случае нужно гарантийное обеспечение?
— получал текущее время;
— округлял до нужного периода;
— циклил вычитание периода и вызов функции
— функция ничего не выдавала
— делал на демо-счете, может в этом дело.
Не прибегая к помощи дополнительных программ для тех.анализа, на мой взгляд, проблему не разрешить!
пример скрипта экспорта историии из графика на lua:
contract = «RIU4»
ds1 = CreateDataSource(«SPBFUT», contract, INTERVAL_M5, «last»)
f = io.open(contract..os.date("_%Y_%m_%d.txt"),«w»)
i = 2
s = ds1:Size()
while i<=s do
t = ds1:T(i)
f:write(string.format(contract..",5,%.4d%.2d%.2d,%.2d%.2d%.2d,%d,%d,%d,%d,%d",t.year,t.month,t.day,t.hour,t.min,t.sec,ds1:O(i),ds1:H(i),ds1:L(i),ds1:C(i),ds1:V(i)).."\n")
i=1+i
end
f:close()
ds1:Close()
end
f:write(string.format(contract..",
5,%.4d%.2d%.2d,%.2d%.2d%.2d,%d,%d,%d,%d,%d",
t.year,t.month,t.day,t.hour,t.min,t.sec,
ds1:O(i),ds1:H(i),ds1:L(i),ds1:C(i),ds1:V(i)).."\n")
Труроботостроители экпортируют ТВС по DDE за день и парсят. Ну и накапливают ессно за предыдущие дни.
Есть еще вариант купайл портфеля который строит бары за день и экспортирует в SQL, а там оно накапливается триггерами. А робот читает оттуда.
Есть еще умельцы которые садяцца на экспорт из квика в проги теханализа, тоже вариант.
Намного проще Вашу перекурвфиченную страту переписать в прогу теханализа ̶п̶р̶о̶т̶е̶с̶т̶и̶р̶о̶в̶а̶т̶ь̶ ̶и̶ ̶в̶ы̶к̶и̶н̶у̶т̶ь̶ и использовать готовый экспорт из Квика.
Отношение потому что имхо Вы курвфиттер и вряд ли робастный, иначе хвастались бы не бектестами а реальными резалтами.
А стеб над собственным софтом потому что есть некие стандарты как хвастаться бектестами, у Вас даже средний трейд надо считать самому.
Качаем по DDE таблицу всех сделок, во внешней программе формируем минутные бары и дописываем в базу данных, а уже робот работает с базой данных минуток (до июня 2012 я базу минуток сформировал, закачав данные с финама с исправлением тех дней, где сформированные часовики не совпали с давно ведущимися мной часовиками с ноября 1998-го).
Как качать таблицу по DDE? Раньше качал в Excel и обрабатывал в VBA, потом переписал все в C# с использованием библиотеки NDDE.
В том числе и для тестирования на истории. А данных немного, пока в базе только скленный фьючерс на индекс РТС и 6 наиболее ликвидных акций. А с базой роботам работать удобно для текущих расчетов: можно брать только ту глубину, которая нужна. И трудоемкость небольшая — я же не переписываю всю базу, а дописываю в нее. Вопрос только в секундных задержках: минутка формируется в момент сделки из следующей минуты. Для моих систем это не принципиально.
Не понял про «мало толку от склеенных данных». Для тестирования я их и использую, правда, склеенный у меня только фьючерс. В акциях нечего склеевать.
А метатрейдер, как база данных — это вообще моветон. Есть же оракл, постгри, майэскуэль, на худой конец можно мскуэль использовать. Впрочем биржа историю, кроме дневок, уже сделала платной, хотя и недорогой — всего 5 тыс. Руб.
Я не собираюсь ни с кем спорить, у всех свои методы!!!
С уважением!
С историей я не заморачивался, но для текущих данных применяю «хитрую склейку» с убиранием межфьючерсных гэпов.
Думаю, что да, перепишем.
1250 плюс-минус 30 пунктов по ММВБ — максимальная коррекция, но там можем и не быть.
Нет, там курс доллара мешает.
c DDE ни разу не пробовал, считая этом механизм анахронизмом… но возможно стоит попробовать.