Fare un sistema di trading Python per la MT. - pagina 11

 
Yuriy Asaulenko:

Chi ha letto l'argomento Dalla teoria alla pratica sa già che il mio sistema e quello di A_K2 sono costruiti più o meno sulla stessa ideologia: il lavoro di canale. L'unica differenza è che il mio è stato costruito un anno fa. Ho già scritto prima, che ora questa strategia è implementata e testata in Python, con alcune piccole modifiche, ma non ha senso lanciarla - non ci si aspetta nulla di nuovo.

Dato che non avevo idee in particolare, ho sviluppato tutti i tipi di indicatori - uno di questi è nel post sopra. Ne ho fatti una decina. Come risultato ho deciso di incrociare il riccio con il riccio: combinare il lavoro nel canale con il trend following in un sistema coerente. Non l'ho ancora provato nel suo insieme, ma ho praticato alcuni elementi. Tutto sembra andare bene, ma ho alcune domande. Non posso dire cosa verrà fuori nella pratica, potrebbe essere niente. Aspettiamo e vediamo.

Yuriy, ciao! Posso scaricare/guardare l'ultima versione del tuo sviluppo per sviluppare la conoscenza di Python e imparare da esso? :-)
 

Nel caso, notizie per chi usa Python. La versione 3.6 non è più in sviluppo, ci saranno solo aggiornamenti di sicurezza. Il supporto sarà fino a 21.

La versione attuale è la 3.7. Quella attuale è la 3.7.2. Sto usando la 3.7.1 con l'ultima Anaconda.

In realtà, ho rotto la mia Anaconda, e quando sono andato a installare quella nuova, ho scoperto che molte cose sono cambiate. Come si dice, la versione 3.7 è più veloce (non l'ho ancora notato, mi andava bene prima), la sintassi è stata aggiornata e sono state aggiunte nuove funzioni.

 

Non mi sono ancora dedicato alle reti neurali e ad altre cose di ML - mi occupo di misurazione. Faccio strumenti per misurare i parametri attuali del mercato e le loro tendenze. Il fatto è che nessuna rete neurale, alberi-foresta e altri Ml possono né pensare né calcolare questi parametri, ma possono utilizzare il tutto e generalizzarlo.

Ed ecco un altro strumento in Python.

Qui abbiamo solo 3 ore, a 1 min TF. La curva misura l'attività del mercato. Di regola, l'attività di mercato aumenta significativamente anche prima che il prezzo inizi a muoversi, ed è un buon indicatore, un precursore dell'inizio del movimento. L'inizio di un declino dell'attività è quasi sempre l'inizio di un movimento verso un appartamento. Nell'immagine si può vedere che l'indicatore è addirittura davanti alla MA(12) sul grafico del prezzo.

Ma l'indicatore non determina la direzione del movimento futuro. È una cosa semplice disegnare piccoli rettangoli incrociando i punti e spostare la direzione, come si fa nel ramo MO, potete disegnarli nella vostra mente ed ecco un indicatore di tendenza)). Se guardiamo l'algoritmo, vedremo che non è solo una questione banale, ma anche inutile e dannosa - distrugge un certo numero di parametri indicatori. E il sistema farà l'elaborazione congiunta degli indicatori, e la farà in modo più ottimale.

PS Mi è stato suggerito in privato che l'indicatore è simile all'ATR.

In effetti, sì, misura anche la volatilità, ma la matematica è diversa. È la volatilità come la intendo io,)) e nella mia mente riflette meglio l'attività di trading.

 
Un po' dimodelli.
 

Su suggerimento di qualcuno qui sul forum, ho implementato un filtro Kalman. Sono stato così lodato, così lodato...

In generale, ho scritto lì, che è improbabile che ci sia un risultato tangibile, ma tuttavia ho deciso di controllare.

Ho figura di MA 48 e filtro Kalman fatto sulla base di questo MA (per un confronto corretto dovremmo trattare uno stesso oggetto).

Beh, sì, è più veloce di circa 1,5 volte, ma può essere sostituito da un MA con un periodo di 28-30. Non si sovrappongono completamente, ma è difficile dire quale sia meglio, MA o Kalman.

Conclusione: causa molti problemi ma è di scarsa utilità. Per scopi commerciali, ovviamente. Non siamo impegnati nella navigazione).

 

Serviva una regressione polinomiale per un modello Python. Forse anche tu potresti averne bisogno.

Codice sorgente:

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)

Grafico:

Questo non è un grafico, ma due. Sono completamente sovrapposti, il che è prevedibile dato che sia la curva originale che la regressione sono polinomi di grado 3. L'errore è dell'ordine di 1e-3.

 

Un altro modello di regressione polinomiale. Il suo errore è già dell'ordine di 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)

Non mostro il grafico, non è cambiato. Vedi il post sopra.

 

Ora vedi se la MA può sostituire la linea di regressione. Vedere l'immagine.

Verde - linea di regressione (polinomio di 3° grado), arancione - MA(350).

Mi ci è voluto molto tempo per selezionarlo, ma non sono stato nemmeno in grado di abbinarlo da vicino. Questo MA, forse, è uno dei migliori. A proposito, si tratta anche dell'utilità degli indicatori sintonizzabili).

In futuro, potremmo fare altri esperimenti con le linee di regressione.

 
Yuriy Asaulenko:

Su suggerimento di qualcuno qui sul forum, ho implementato un filtro Kalman. Ho ricevuto tante lodi, tante lodi...

- Non mi piaceva la voce di Pavarotti, ha un brutto accento, non riesce a colpire le note...

- Eri al concerto di Pavarotti?

- No, mi ha detto Rabinovich al telefono.

 
TheXpert:

- Quindi non mi piaceva Pavarotti, ha un brutto accento, non riesce a colpire le note...

- Sei stato a un concerto di Pavarotti?

- No, mi ha detto Rabinovich al telefono.

Se avete intenzione di implementare il filtro Kalman nel trading, posso inviarvi un articolo. È un algoritmo classico, senza alcun pensiero artificiale. L'articolo contiene solo matematica. Si formerà la propria opinione, e non sarà guidato da Rabinowitz).