Блог им. igor12
Сам (к сожален) не программист… Попробовал формализовать простую логику через ИИ на Python… та ещё задача.
Может есть продвинутые платные ресурсы -специализирующиеся на кодинге… работающие с минимальными косяками — но пробовал на бесплатных… В том числе на Алисе.. Косяков море со стороны ИИ. Возможно- если заказчик сам программист всё существенно проще проходит!?
Суть вопроса в который упёрлись… Данные получаю с Демо Квика. Классическая связка- Spyder –QuikPy- QuikSharp.lua –QuikDemo..
Упёрлись в итоге в проблему сохранения истории нужного инструмента выбранного фрейма (история хранится или в файле … или в памяти!?) и в некоторые моменты скрипт должен обращаться к данным истории для некоторых расчетов…Есть скрипт на Луа который легко тянет нужные данные с Квика и грузит их в нужном формате (CSV) в файл..
В принципе основной скрипт может в нужные моменты грузить нужные данные из этого файла… Но это какие то грабли получаются… Основной скрипт на питоне а данные качает другой скрипт на луа который нужно запускать с питоновским скриптом.
В итоге ИИ заявил- что Демо версия Квика не даёт возможность сохранять исторические данные автоматически(нужен спец блок в коде для этой задачи.
Вопрос – с помощью какой то функции из QuikPy ( может библиотеки BackTrader ) можно «малой кровью» сохранять исторические данные выбранного инструмента и фрейма при запуске скрипта для того чтобы в нужное время скрипт мог загружать нужные данные из истории?
Если не корректно изложил суть вопроса уточню..
Насколько понял- изначально библиотеку обёртку QuikPy, BackTrader… –писал Чечет… Вроде есть последователи со своими версиями ..- что в итоге работает в моменте стабильнее по мнению опытных челов !??
Мысль про «грабли» я бы перевернул. Терминал это не архив, а кран с текущим потоком. Квик отдаёт ровно то, что лежит в датасорсе, на демо тем более, и никакая обёртка это не обойдёт. Своё локальное хранилище тут не костыль, а нормальная схема: один раз забрали N свечей при старте, дальше дописываете новые по мере прихода.
Отдельный луа-скрипт для этого не нужен. QuikPy и так разговаривает с QuikSharp.lua, свечи запрашиваются из питона и сразу кладутся в свой файл, csv или sqlite, что привычнее. Два процесса с обменом через csv, который вы описали, это как раз лишнее звено.
И я бы разделил задачу. История для расчётов и бэктеста берётся с ISS Мосбиржи, он открытый и бесплатный, дневки и часовки тянутся вообще без терминала. Квик оставить на живые данные и заявки. Тогда «демо не даёт сохранять историю» перестаёт быть проблемой в принципе.
Про ИИ отдельно: на квике и луа он врёт особенно уверенно, материала в обучении мало, и он спокойно выдумывает функции которых нет. Просите куски строк по двадцать и сверяйте имена методов с исходниками библиотеки. Целиком сгенерированный скрипт вы будете отлаживать дольше, чем писали бы руками.
Есть у меня загрузчик данных с биржи на Python… Но не нравится что при этой схеме возрастают риски что один из каналов может отвалится в любой момент м мы встанем.. Да и работа через Python не заходит.. Ранее хороший программист писал движок для нашей песочницы… Логика и интерфейс управления на C# и коннектор на Lua.Это было более достойное решение по мне…
igor12, риск тут как раз наоборот падает. Локальная база лежит у вас на диске, и если ISS сегодня недоступен или квик отвалился, вы всё равно считаете на том, что уже скачано. Останавливает всё обратная схема, когда источник данных и есть живой поток.
Язык вторичен, C# с луа ничем не хуже питона. Важно только чтобы история хранилась отдельно от терминала, а не запрашивалась заново каждый раз.
На каком таймфрейме гоняете? На минутках свои радости с пропусками баров, там и схема другая.
KuzmaShevelev, про базу согласен, csv держится ровно до первого вопроса «дай май 2023 по трём тикерам». Но главная причина даже не в запросах. Квик при переподключении отдаёт кусок свечей внахлёст с тем, что уже забрали, и в csv это дубли, которые потом ловишь глазами. В sqlite уникальный индекс по (тикер, таймфрейм, дата) плюс INSERT OR REPLACE, и дубль физически не ляжет. Файл нормален только когда один инструмент, один таймфрейм и дописываешь строго в хвост.
ИИ попробуйте поинтереснее, алиса опаздывает от хороших моделей, думаю — на год, а реально хорошие иностранные модели появились примерно весной. Модели последних недель еще более продвинуты. Доступ к моделям, например — через кодикроутер, цена апи чуть выше оригинала, не нужен впн, оплата в рублях. Поставьте opencode, подключите в него хорошие модели и терзайте. Самый свежий флэш дипсик хорош и стоит копейки — отлично для генерации, ненапряжно генерить сотни миллионов токенов. Затем проверять результат другой моделью.
И странным выглядит желание принципиально получать данные именно через квик, проще через любого брокера с нормальным апи брать данные и заливать в базу, как вариант — просто дергать запрос по таймеру.
Тут смущает меня два момента..
Что читал о наших брок. с API (финам, бкс, Т, Алор ) — стабильность работы через их API далека от желаемого.. Да и по жизни это не мои брокеры по многим соображениям. вот и остаётся вариант Квика… Вариант API биржи- тож как бы не мой случай…
Самый стабильный — транзак финама, как калаш — может отвалиться раз в месяц, но старая технология, с питоном нет смысла пытаться, однако на сишарп отлично. Алор отваливатся чаще, 2-3 раза в неделю. Но это стримы, а если Вам надо просто пополнять базу запросом по таймеру, без стримов, то проблемы будут очень редким событием.
Счёт у брокера можно просто открыть на минимальную сумму ради маркетдаты по апи. Какие-то данные по исс биржи удобнее дергать.
igor12, имхо — вместо того, чтобы для еды купить в любом магазине удобные ложки из нержавейки за копейки, Вы пытаетесь следовать практикам предков, поехать на реку, наловить моллюсков, вычистить створки, привязать палочки и сделать ложки. Не в обиду, первая пришедшая на ум аналогия.
Потерзайте оупенкоде с хорошей моделью, программа простая, разобраться можно за день начинающему. Это окупится. И про оптимальную архитектуру расскажет и скрипты напишет. Луа не пробовал, но на питоне и сишарпе код генерится хорошего уровня, при качественном техзадании.