Блог им. 3Qu
1 GAZR-6.21 GZM1
2 GAZR-9.21 GZU1
3 SBRF-6.21 SRM1
4 SBRF-9.21 SRU1
5 Si-6.21 SiM1
6 Si-9.21 SiU1
С фьючем РТС работать и отрабатывать технологии сложнее, если и нужен будет, то оч нескоро.
У меня заготовлено несколько новых индикаторов для этой ТС. Конечно я на что-то рассчитывал при их проектировании, но все это умозрительно, и о реальных свойствах индикаторов я, ровным счетом, ничего не знаю. Для начала хотелось бы выяснить их возможности.
Для этого на множестве 1м истории (~66000 свечей) генерируем ~6600 равномерно распределенных по интервалу истории случайных сделок продолжительностью 5 минут ( потом будет и 10 и 15 минут), пока только Лонг (потом и Шорт будет, рассматривается отдельно) и находим прибыль в каждой из этих сделок.
Выглядеть это будет вот так:
Далее, эти сделки будут накладываться на индикатор, и будем смотреть как меняется распределение удачных и неудачных сделок относительно значений индикатора — это все называется: метод Монте-Карло. Но об этом в следующий раз.
Ну, и просили код. Вот он, полностью рабочий:
import matplotlib.pyplot as plt import sqlite3 as sql import MyPack.Filters as flt import MyPack.StDevm as stdm import numpy.random as rnd sdata =[] sql1= "select ticker, date, open, high, low, close, vol \ from Hist_1m where ticker_id=1 order by Date;" con=sql.connect('C:/Users/ubase/Documents/StockDB/StockDB21.sqlite') cur=con.cursor() cur.execute(sql1) sdata=cur.fetchall() con.commit() con.close() L = len(sdata) N = 6628 Ld = 5 # Генерация случайных чисел rng = rnd.default_rng() rm=rng.integers(0, L, N ) class Candle: tr =0 dt = 1 o = 2 h = 3 l = 4 c = 5 v = 6 cl = Candle # формируем сделки. def DealsGenL(rm,ld): #Lm = len(rm) Pr =[] for i in range(0,N): if rm[i] + ld >= L: continue pr = sdata[rm[i]+ld][cl.c] - sdata[rm[i]][cl.c] Pr.append(pr) return Pr Pr = DealsGenL(rm,Ld) plt.plot(Pr)
Комментов к коду не будет. Заодно и в Python разберетесь.
ЗЫ Ну, вот и распределение наших случайных сделок по прибыли нарисовалось.
Все как и ожидалось, вполне симметричное распределение. Но, об этом уже в другой раз.
Однако во вселенной лимитных ордеров рандомным образом работающий в плюс индикатор подобрать нельзя. И угадать сложно.
С уважением
Читайте - Почему не работают индикаторы.
До конца года выложу пост с подробным доказательством (и кодом)
Правда у меня моделирование на Matlab (продакшн на C#), но, думаю, с восприятием кода проблем не будет.
С уважением
P.S. Все, что я написал, относится только к лимитному исполнению. При маркетном исполнении это не так.
А анализ на Питоне — хоть веками, если оно нужно.)
Собственно, сейчас все так делают, включая NASA и пр.))
Питон оч хорош для бигдата.
Если писать быстрый векторизованный код, то на Matlab это получается лаконично и изящно, а на Питоне — через ж… (IMHO)
С уважением
Конкретно — библиотечных вызовов с векторизацией
С уважением
Но, работал некогда с МатЛаб — это ужас — от синтаксиса до быстродействия — тягомотина. Питон с аналогичными задачами справляется в разы быстрее.
Однако, с МатЛаб работал давно, а на Питоне сейчас. Может что и поменялось.
С 2020 есть даже оптимизация кода под AMD )))
С уважением
equity = cumsum(sgn(ind) .* diffMatrix(:, N + 1));
Как это будет на Питоне?
С уважением
ind — массив значений индикатора
diffMatrix — некая матрица приращений цен
У меня в последнем проекте решаются СЛАУ (не разреженные) примерно 100,000 на 100,000. Матлаб пыхтит, но тянет… На Питоне пробовать не стал. На C#/C++ у меня только на устранение собственных ошибок ушел бы месяц, наверное (там не только матрицы).
Я делал тест на меньших размерах — C# не выигрывает у Матлаб вообще ничего (если код векторизованный и все массивы в статике в ОЗУ).
С уважением
Большинство либ Питона — это С++, и Питон отводится роль только языка сценариев, что на быстродействие влияет мало. В общем, вопрос быстродействия Питон — это, по большей части, вопрос использования библиотек.
Надо писать на том, где быстрее пишется, а оптимизировать ровно там, где затык. Писать все на плюсах — в среднем даром растрачивать свое время.
Ну если быстродействия хватает, а чаще чем реже хватает чего угодно.
просто графики удивили своим сходством…
Подскажите, пож-та, если кто знает, где можно раздобыть исторические тики FORTS, с миллисекундами, номерами сделок и открытым интересом, т.е. такие как в Квике.
Сразу, про Финам знаю, но там не то, время урезано, ОИ нет, внебиржевых нет, спредов нет.
Нужно именно как в Квике, всего несколько дней не хватает из 2019 и 2020 года, но весь FORTS, по всем инструментам FUT и OPT.
Может у кого свой архив есть, но тоже не все данные, могу поменяться.
Я сам собираю, если надо, но мне много не надо, архивы не держу.
Ищу всего нескольких прошлых дней — не хватает для корректной работа тестера.
Вы, очевидно, ПО на заказ пишете, архивы не нужны. Заказчики где тики добывают, если знаете?
http://erinrv.qscalp.ru
Но спасибо!
В auxinfo есть OI, правда это не тики, но соединить можно.
ftp://ftp.zerich.com/pub/Terminals/QScalp/History/
ордер-логи есть, правда, только до января 2021
Если Вас смущает неравномерность дохода ТС во времени ( я, кстати, не использую дисперсию при оценке этого показателя), то тут уж ничего не поделать, не мы такие, рынок такой. Диверсификация по активам и по системам только частично решает эту проблему.
ЗЫ Подход, кстати, вполне типовой — метод Монте-Карло.