Избранное трейдера darkcorp
В 2019 году в TSLab сделал тесты стратегии «Hi_Lo», которая установлена в базовой версии этой программы. Смысл стратегии заключается в том. что вход в лонг осуществляется при пробитии хая предыдущей свечи, вход/переворот в шорт осуществляется при пробитии лоя предыдущей свечи. В TSLab мною был создан скрипт для тестирования одновременной торговли несколькими инструментами с целью диверсификации:
В результате тестирования и опыта торговли остановился на следующем варианте: торгуются фьючерсы RTS, Si, BR в соотношении 1:6:4, дневной таймфрейм. Результаты тестов за период с 01.01.2003 г. по настоящее время без капитализации, без учета комиссии и проскальзывания представлены ниже:
Какой шаг самый трудный на шатком мосту? Первый или последний? Тот, что я сделаю прямо сейчас, ведь только его я могу выбрать. А первый шаг может стать для меня и последним (неизвестный даос)
«Твой номер шестнадцатый, помалкивай в трубочку! Ясно?!» из к/ф «Место встречи изменить нельзя»
В седьмой серии культового сериала “Игра в Кальмара” герои приняли участие в испытании “Хрустальный мост через реку” Каждая из ступеней (панелей) этого моста представляла собой две стеклянных пластины, одна из закалённого стекла, а другая — из обычного. Всего таких ступеней было 18, а участников игры, оставшихся в живых к этому моменту — 16.
Перед началом игроки выбрали свои порядковые номера, еще не догадываясь о том, что их ждёт впереди. Ужас и растерянность, охватившие мужчину, которому выпало стать первопроходцем, совершенно понятны — число возможных траекторий составляет для него 2 в 18-ой степени, и только в одном случае ему удастся пройти весь путь невредимым. Это один шанс из 262144.
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()И вот результат прогнозирования:
Posted on26.08.2021AuthoradminLeave a commentEdit
Статья перевод с zerohedge.com . Рассматриваются некоторые интересные моменты происходившие раньше на фондовом рынке и сопоставляются с текущими событиями.
На самом быстром бычьем рынке в истории, индекс S&P 500 удвоился по сравнению со своими пандемическими минимумами. Несомненно, это достойная внимания веха, однако что по мнению истории произойдет дальше?
Settings={ Name="Buy_osc_v01", period=50, delta=0, lim=100.0, line= { { Name = "cur1", Type =TYPE_LINE, Width = 1, Color = RGB(0, 0, 255) }, { Name = "cur2", Type =TYPE_LINE, Width = 1, Color = RGB(0, 0, 0) }, { Name = "cur3", Type =TYPE_LINE, Width = 1, Color = RGB(0,0, 0) }, { Name = "cur4", Type =TYPE_LINE, Width = 1, Color = RGB(0,0, 0) } } } --[[ описание свойств: period - период, за каротрый делается расчет delta - смещение назад назначение: горизонтальная ширина канала использовался: метод наименьших квадратов (аппроксимация линией) --]] function Init() return 2 end function OnCalculate(index) sz = Size() n = Settings.period d = Settings.delta lim = Settings.lim y = nil if index-n-d > 0 then a1 = 0 a2 = 0 a3 = 0 a4 = 0 for i=index-n+1-d, index-d do a1 = a1+i*C(i) a2 = a2+i a3 = a3+C(i) a4 = a4+i*i end if((n*a4 - a2*a2) ~= 0) then a = (n*a1 - a2*a3)/(n*a4 - a2*a2) b = (a3 - a*a2)/n c1 = 0 c2 = 0 n1 = 0 n2 = 0 for j=index-n+1-d, index-d do y = a*j + b if C(j) < y then c1 = c1 + (y -C(j)) n1 = n1 + 1 end if C(j) > y then c2 = c2 + (C(j) - y) n2 = n2 + 1 end end if n1 ~= 0 then c1 = c1/n1 end if n2 ~= 0 then c2 = c2/n2 end if a==0 then y = 0 else y = (c1+c2)/a if y > lim then y = lim else if y < -lim then y = -lim end end end end end return y,0 end