Fazendo um sistema comercial Python para MT. - página 11

 
Yuriy Asaulenko:

Quem leu o tópico Da teoria à prática já sabe que meu sistema e o sistema do A_K2 são construídos aproximadamente sobre a mesma ideologia - trabalho de canal. A única diferença é que a mina foi construída há um ano. Já escrevi antes, que agora esta estratégia é implementada e testada em Python, com algumas pequenas mudanças, mas não há sentido em lançá-la - nada de novo é esperado.

Como eu não tinha idéias em particular, desenvolvi todo tipo de indicadores - um deles está no posto acima. Já fiz cerca de dez delas. Como resultado, decidi cruzar o ouriço com o ouriço: combinar o trabalho no canal com a tendência seguindo em um sistema consistente. Ainda não experimentei como um todo, mas pratiquei alguns elementos. Tudo parece se encaixar, mas ainda tenho algumas perguntas. Eu não posso dizer o que sairá na prática, pode não ser nada. Vamos esperar para ver.

Yuriy, olá! Posso baixar / olhar a última versão de seu desenvolvimento a fim de desenvolver o conhecimento Python e aprender com ele? :-)
 

Só por precaução, notícias para quem usa Python. A versão 3.6 não está mais em desenvolvimento, haverá apenas atualizações de segurança. O apoio será de até 21.

A versão atual é a 3.7. O atual é o 3.7.2. Estou usando o 3.7.1 com o mais recente Anaconda.

Na verdade, quebrei meu Anaconda, e quando fui instalar o novo, descobri que muita coisa mudou. Como eles dizem, a versão 3.7 é mais rápida (ainda não notei, eu estava bem com ela antes), a sintaxe foi atualizada e novas funções foram adicionadas.

 

Ainda não cheguei às redes neurais e outras coisas do ML - gosto de medição. Eu faço ferramentas para medir os parâmetros atuais do mercado e suas tendências. O problema é que nenhuma rede neural, árvores florestais e outros Ml podem nem pensar nem calcular estes parâmetros, mas podem usar tudo e generalizá-lo.

E aqui está outra ferramenta em Python.

Aqui temos apenas 3 horas, a 1 min TF. A curva mede a atividade do mercado. Como regra, a atividade do mercado aumenta significativamente mesmo antes do preço começar a se mover, e é um bom indicador, um precursor para o início do movimento. O início de um declínio na atividade é quase sempre o início de uma mudança para um apartamento. Na figura você pode ver que o indicador está mesmo à frente do MA(12) na tabela de preços.

Mas o indicador não determina a direção do movimento futuro. É uma coisa simples desenhar pequenos retângulos cruzando pontos e mudar a direção, como é feito no ramo MO, você pode desenhá-los em sua mente e aqui está um indicador de tendência))). Se olharmos para o algoritmo, veremos que não é apenas uma questão trivial, mas também desnecessária e prejudicial - ele destrói uma série de parâmetros indicadores. E o sistema fará o processamento conjunto de indicadores, e o fará de forma mais otimizada.

PS Foi-me sugerido em particular que o indicador é semelhante ao ATR.

Na verdade, sim, também mede a volatilidade, mas a matemática é diferente. É volatilidade como eu a entendo,)) e em minha mente reflete melhor a atividade comercial.

 

Por sugestão de alguém aqui no fórum, eu implementei um filtro Kalman. Fui tão elogiado, tão elogiado...

Em geral, escrevi lá, que é improvável que haja um resultado tangível, mas mesmo assim decidi verificá-lo.

Tenho figura de MA 48 e filtro Kalman feito com base neste MA (para uma correta comparação devemos lidar com um e o mesmo objeto).

Bem, sim, é mais rápido em cerca de 1,5 vezes, mas pode muito bem ser substituído por MA com um período de 28-30. Eles não se sobreporão completamente, mas é difícil dizer qual deles é melhor, MA ou Kalman.

Conclusão: causa muitos problemas, mas é de pouca utilidade. Para fins comerciais, é claro. Não estamos engajados na navegação).

 

Precisava de uma regressão polinomial para um modelo Python. Talvez você também possa precisar dele.

Código fonte:

import matplotlib.pyplot as plt
import numpy as np 
from sklearn.preprocessing import PolynomialFeatures 
from sklearn.linear_model import LinearRegression
from sklearn.linear_model import Ridge
from sklearn.pipeline import make_pipeline

# Подготовка данных
x=np.linspace(-5,5,num=100)
Y =np.array([(0.13*x1**3-0.5*x1**2-0.8*x1-0.1) for x1 in x])
# график исходной кривой.
plt.plot(Y)
X=x[:, np.newaxis]
N=3
# полином регрессия
model=make_pipeline(PolynomialFeatures(N, include_bias=False), Ridge())
model.fit(X,Y)
y_plot = model.predict(X)
# накладываем поверх графика линию регрессии
plt.plot(y_plot)

Gráfico:

Isto não é um gráfico, mas dois. Eles estão completamente sobrepostos, o que é de se esperar, já que tanto a curva original quanto a regressão são polinômios de grau 3. O erro é da ordem de 1e-3.

 

Outro modelo de regressão polinomial. Seu erro já está na ordem de 1.0e-15.

import matplotlib.pyplot as plt
import numpy as np 
from sklearn.preprocessing import PolynomialFeatures 
from sklearn.linear_model import LinearRegression
#from  sklearn.linear_model import Ridge
#from  sklearn.pipeline import make_pipeline

#  Подготовка данных
x=np.linspace(-5,5,num=100)
Y =np.array([(0.13*x1**3-0.5*x1**2-0.8*x1-0.1) for x1 in x])
plt.plot(Y)
X=x[:, np.newaxis]
N=3
#  расчет и вычисление линии регрессии
poly=PolynomialFeatures(N,include_bias=False)
Xm=poly.fit_transform(X)
reg = LinearRegression().fit(Xm, Y)
y_plot=reg.predict(Xm)
#  график линии регрессии
plt.plot(y_plot)

Eu não mostro o gráfico, ele não mudou. Ver post acima.

 

Agora veja se o MA pode substituir a linha de regressão. Veja foto.

Verde - linha de regressão (polinômio de 3º grau), laranja - MA(350).

Demorei muito tempo para selecioná-lo, mas nem mesmo consegui igualá-lo de perto. Este Mestrado, talvez, é um dos melhores. A propósito, trata-se também da utilidade dos indicadores sintonizáveis).

No futuro, poderemos realizar mais algumas experiências com linhas de regressão.

 
Yuriy Asaulenko:

Por sugestão de alguém aqui no fórum, eu implementei um filtro Kalman. Recebi tantos elogios, tantos elogios...

- Eu não gostava de Pavarotti, ele tem um sotaque ruim, ele não consegue acertar as notas...

- Você esteve no show do Pavarotti?

- Não, Rabinovich me disse ao telefone.

 
TheXpert:

- Então eu não gostava de Pavarotti, ele tem um sotaque ruim, ele não consegue acertar as notas...

- Você já foi a algum concerto de Pavarotti?

- Não, Rabinovich me disse ao telefone.

Se você for implementar o filtro Kalman no comércio, posso enviar-lhe um artigo. Trata-se de um algoritmo clássico, sem nenhum pensamento artificial. Mas você mesmo terá que programá-lo. O artigo contém apenas matemática. Você formará sua própria opinião, e não será guiado por Rabinowitz).