Избранное трейдера ch5oh
Немного биографии, кому не интересно — без проблем листаем сразу ниже
С трейдингом познакомился осенью 2019 года. Изучал очень многое, в том числе западные источники.
Всерьёз стал подходить к вопросу только ближе к лету 2020 года, там же начал и пробовать ручной скальпинг — в течение пары месяцев уже были в голове наброски основных торговых систем, благо помогали знакомые крупные действующие трейдеры.
Довольно быстро понял, что торговать ручками — не мой вариант, совсем другого я склада характера.
Ближе к концу 2020 года уже узнал про алгоритмический трейдинг и начал плотно изучать варианты.
Тогда же впервые узнал о замечательном софте — TSLab, сразу начал изучать его. В то же время наткнулся на стратегию, о которой и пойдёт речь далее.
После был длительный перерыв в трейдинге — более года по личным обстоятельствам.
Летом 2022 года вернулся к TSLab, обновил знания и погнал тестировать. За плечами десятки разных ботов, тестов, стратегий. Я точно не мастер TSLab и вообще трейдинга — есть сотни более опытных людей и я вдоволь наемся разного рода критики, я не против конструктива.

В 2019 году в TSLab сделал тесты стратегии «Hi_Lo», которая установлена в базовой версии этой программы. Смысл стратегии заключается в том. что вход в лонг осуществляется при пробитии хая предыдущей свечи, вход/переворот в шорт осуществляется при пробитии лоя предыдущей свечи. В TSLab мною был создан скрипт для тестирования одновременной торговли несколькими инструментами с целью диверсификации:

В результате тестирования и опыта торговли остановился на следующем варианте: торгуются фьючерсы RTS, Si, BR в соотношении 1:6:4, дневной таймфрейм. Результаты тестов за период с 01.01.2003 г. по настоящее время без капитализации, без учета комиссии и проскальзывания представлены ниже:

1 Пользую 7 лет выделенный сервак в датацентре. Но тслаб отожрался до 20 гиг, требует 2ух моторного серебряного ксеона о 24ех ядрах и 48ми потоках. А стоит такое чудо ажно 250к в год ну и сам тслаб 40к в год. Т.е 10 за лет сервак прожирает новый авто. И сбоит этот сервак стабильно раз год.
2 На грудь прыгнула здоровенная жаба — платить такие деньжища. И решил попробовать смастерить подходящую замену серверу из говна и палок.
3 Мысль была в том, чтоб взять два компа. Поставить их в разных городах, чтоб исключить проблемы с электричеством, интернетом и техникой. Т.е оба компа сразу не сдохнут, электричество одновременно не отключится и интернет одновременно не пропадет. На обоих компах поставить тслаб, соеденить их через облако, и как только один компов дает сбой — отключать его, включать второй комп и поднимать резервную копию с облаков.

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()И вот результат прогнозирования:


