Избранное трейдера Nikolay
Мои родители всю жизнь работали на севере и откладывали деньги для меня и моей сестры, вкладывались в моё образование, я регулярно в школе выигрывал все олимпиады, я думал, что я умный, хотел двигать науку. Мои родители утонули на кануне развала СССР, всё что они копили сожрала инфляция, как и у большинства советских людей, я по окончанию школы остался один с несовершеннолетней сестрой, которая залетела от дага, даг закономерно свалил, я сестре помогал как мог, а мог финансово я мало, но зато я ей полностью оставил квартиру родителей, не претендуя на свою часть наследства, где сестра до сих пор живёт. Я думал то, как мои родители потеряли всё что они копили, не коснётся меня, я ведь умный, а ещё я упорный.
В январе 2014 года, видя, как майдауны разносят свою страну, сразу понял, что это приведёт к падению рубля раза в два, потому что, когда соседи жгут свои хаты, неминуемо сгорит и твоя хата. Встала задача спасти деньги что накопил с 2009 года. В юани не захотел вкладываться т.к. спред был грабительским, что то в районе 10-15% от вкладываемых денег. В баксах держать побоялся, ибо начитался статей на афтершоке про не именуемый конец бакса. Решил купить квартиру, заодно пристроить маткапитал. Так как на покупку не хватало около ляма, я взял ипотеку. После покупки квартиры цены на квартиры стали закономерно падать, потому что лох — это судьба, а рубль, как и предполагалось обвалился, каждый месяц я платил квартплату за квартиру, в которой не жил, платил ипотеку, ещё тратился на ремонт, приходя в магазин считал, что лучше купить, яйца + спагетти или картошку + лук + морковь или молоко + рис, но меня грела всё время оправдалка, ведь я купил квартиру не для перепродажи, а для своей любимой дочурки, вот она окончит школу, а я ей ключики от квартиры. Но квартиру мне стали топить, сначала соседи, потом управляющая компания, судится с ним я был не в состоянии, я на тот момент чуть не умер то ли от инсульта, толи от инфаркта, всё перенёс на ногах, но слабость чувствовал везде в теле. Вообщем продал я квартиру, устал я делать ремонты после потопов, устал платить квартплату за то чем не пользуюсь, продал до истечения срока в 5 лет, но т.к. продал по той цене что купил, думал, что налогов мне не будет, наивный я чувак, налоговая насчитала мне налоги на доход моих детей, ведь согласно условиям предоставления маткапитала я должен выделить им доли в квартире, ну я и выделил им доли от души, а когда эти доли были проданы мои дети получили “доход”. Итого я потерял маткапитал, он ушёл полностью строителям и банку, я потерял примерно 500тысяч что вложил в ремонт, я потерял проценты уплаченные по ипотеке, я потерял квартплату за несколько лет, мои деньги обесценились инфляцией. Что дальше произошло? Ну да, через полгода квартиры стали дорожать в цене.
import sqlite3 as sql from scipy.stats import logistic import math import numpy as np import numpy.random as rnd import matplotlib.pyplot as plt from sklearn.neural_network import MLPRegressor 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() Ldata = len(sdata) N = 8000 # Количество сделок ld = 5 #Продолжительность сделки NNinterval = 20 # Количество входов NN # Генерация случайных чисел rng = rnd.default_rng() rm=rng.integers(0, Ldata, N ) class Candle: tr = 0 dt = 1 o = 2 h = 3 l = 4 c = 5 v = 6 cl = Candle DataC =[sdata[i][cl.c] for i in range(0,Ldata)] # sigmoid линейность до 0.5 def sigmoidnorm(x, alfa = 0.9, xmin = -1.3, xmax = 1.3): return (xmax - xmin)*((1 / (1 + math.exp(-x*2.0*alfa))) - 1.0) + xmax x = [0.002 * i - 3 for i in range(0,3000)] y = [sigmoidnorm(x[i]) for i in range(len(x))] plt.plot(x,y) plt.grid() plt.show() # формируем сделки. def DealsGenL(rm,ld): #Lm = len(rm) ix = [] x = [] pr = [] for i in range(0,N): if rm[i] + ld < Ldata and rm[i] - NNinterval - 1 > 0: delta = (sdata[rm[i]+ld][cl.c] - sdata[rm[i]][cl.c])/sdata[rm[i]+ld][cl.c]*100 x0 = [sigmoidnorm((sdata[rm[i] - j][cl.c] - sdata[rm[i]][cl.c])/sdata[rm[i]][cl.c]*100) \ for j in range(0, NNinterval)] ix.append(rm[i]) x.append(x0) pr.append(delta) return ix, x, pr Ix, X, Pr = DealsGenL(rm,ld) Ib = 0 Ie = 100 plt.plot(X) plt.legend() plt.grid() plt.show() plt.plot(Pr, label = 'Prof') plt.legend() plt.grid() plt.show() regr = MLPRegressor(hidden_layer_sizes = [30,20,15,10,5], \ max_iter=500, activation = 'tanh') regr.fit(X, Pr) Out = regr.predict(X) plt.plot(Pr, Out, '.') plt.grid() plt.show()И вот результат прогнозирования:
А на этом пока всё.
¡Adiós!
Ещё с самого начала, в первой части, писал, что проект является экспериментальным, что из него получится я не знаю.Получится — хорошо, не получится — останутся наработки, которые могут пригодиться в дальнейшем.Тем не менее, обещал освещать ход проекта.
На сегодняшний день удалось получить на тестах некоторую незначительную и неустойчивую прибыль. Эти копейки не произведут впечатления на читателя — такое вы и сами получали неоднократно. Даж позориться не хочется.)
Но, что это дало? Это позволило алгоритмически более-менее разграничить области возможных лонгов и шортов.
Дальше есть следующие возможности:
а. Накручивать на ТС различные индикаторы и долго и нудно подбирать их параметры и условия входа в сделку и соответствующую логику.
в. Попробовать использовать для построения ТС методы машинного обучения (МО. Тем более, какие-то наработки в этой области у меня уже есть.
«И так как с детства его влекло к технике, то он всею душою отдался пункту «в» (тайное похищение чужого имущества, совершенное с применением технических средств или неоднократно».© Пункт «в» мне тоже более интересен, однако я совсем не исключаю и параллельного применения элементов из пункта «а».
Для тех, кто не в теме, немного подробней.
Если мы возьмём рыночные данные, каким-то образом их идеально подготовим, попробуем обучить какое нибудь МО (нейросеть (НС), скажем), то мы, скорее всего, сразу получим великолепные результаты. Единственным недостатком этих результатов будет то, что прибыль мы сможем получить только на той истории, на которой мы обучали МО. На реале и даже на другом отрезке истории такая ТС работать скорее всего не будет.
Рыночные зависимости очень неявные, встречаются в ценовом ряду нечасто и выделить их на общем фоне удачных и неудачных сделок не представляется возможным. В результате МО при обучении находит некоторые зависимости или псевдозависимости имеющиеся только в обучающей последовательности, нигде более не встречающиеся и обучается им. Т.е., псевдозависимости оказываются более явными, чем то что мы пытаемся найти.
Как с этим планируется бороться, это, возможно, обсудим уже в следующий раз.
Иногда читаю: «Сделал десять систем на Si» или «Сделал 100 систем для разных инструментов».
Это что, так просто — наделать 100 зарабатывающих систем?
Я за все годы только 1 устраивающую систему сделал: идея + набор зарабатывающих параметров.
Может быть мы под системами подразумеваем совсем разные вещи?
То есть те, кто говорят, что сделали 50 систем — может сделали тоже 1 систему и 50 наборов параметров или применили, в каждом случае, 50 разных индикаторов?
Тогда, получается, что это 50 настроек, а не 50 систем.
Кто может это разъяснить?