L'apprendimento automatico nel trading: teoria, modelli, pratica e algo-trading - pagina 145

 
Alexey Burnakov:

Questo è un grosso problema. È qualcosa che è quasi impossibile da risolvere senza compromettere l'apprendimento.
Il punto qui è che più si guarda al passato, più si è dipendenti dalle osservazioni vicine.

Se si alimenta la macchina con osservazioni non parziali, si perde la cosa più importante: il requisito di indipendenza delle osservazioni. Dopo di che, l'apprendimento sarà drasticamente inadeguato. E le statistiche non funzionano.

E per evitare questo bisogna sfoltire le osservazioni in modo che il ritardo del massimo ritorno sia inferiore o uguale al passo di sfoltimento delle osservazioni. E questo a cosa porterebbe? Riduzione centuplicata della dimensione del campione di allenamento.

C'è un compromesso da fare qui. Profondità dello sguardo rispetto al numero di esempi nel campione.

Sono d'accordo che è un problema, ci sto ingrigendo sopra da settimane...

cosa significa che più si guarda indietro, più le osservazioni vicine sono dipendenti . Non ha senso...

E per quanto riguarda lo slashing per favore, non lo capisco nemmeno io...

 
mytarmailS:

Sono d'accordo che è un problema, ci sto ingrigendo sopra da qualche settimana...

cosa significa che più si guarda al passato, più le osservazioni del vicinato sono dipendenti . ♪ non è chiaro...

E lo slashing si prega di chiarire... non lo capisco nemmeno io...

Ok. Usando il tuo stesso esempio.

Per due barre adiacenti nel tempo si disegnano quasi al 100% istogrammi identici dei prezzi passati. Cioè, i due esempi di allenamento saranno molto simili solo perché sono adiacenti nel tempo. Questo contraddice la proprietà di base dei processi statistici in cui le osservazioni sono indipendenti. La macchina non imparerà modelli cronologicamente invarianti, ma imparerà modelli ripetitivi (quasi uguali). Immaginate di aver intervistato Vasya 200 volte in un sondaggio d'opinione e di cercare di diffondere la conoscenza che trovate a 1000 persone diverse.
 
Alexey Burnakov:
Ok. Sul suo esempio.

Per due barre adiacenti nel tempo, si disegnano quasi al 100% istogrammi identici dei prezzi passati. Cioè, i due esempi di allenamento saranno molto simili solo perché sono adiacenti nel tempo. Questo contraddice la proprietà di base dei processi statistici in cui le osservazioni sono indipendenti. La macchina non imparerà modelli cronologicamente invarianti, ma imparerà modelli ripetitivi (quasi gli stessi). Immaginate di aver intervistato Vasya 200 volte in un sondaggio d'opinione e di cercare di estendere la conoscenza che avete trovato a 1000 persone diverse.

Ooh!!! è diverso, ora tutto è cristallino :)

1) Potete ridurre la dimensione della finestra più volte, poi le sezioni saranno meno simili in ogni fetta

2) Si possono aumentare lepause il più possibile, il che toglierebbe anche un po' dilisciatura

PRICE <- cumsum(rnorm(300))+1000
layout(1:2)
plot(PRICE,t="l",ylab = "цена" , xlab = "индексы",lwd=2)
Max <- max(PRICE)
Min <- min(PRICE)
range.vector <- seq(Min, Max, length.out=200)
H <- hist(PRICE, breaks = range.vector)
          

 
mytarmailS:

Ooh!!! Questo è diverso, tutto ha perfettamente senso ora :)

1) Potete ridurre la dimensione della finestra più volte, poi le sezioni saranno meno simili in ogni fetta

2) Si potrebbero massimizzare lepause, il che eliminerebbe anche un po' dilisciatura

Io lo faccio in questo modo. Pseudocodice:

Esempio1 = p[0]
passo = 720
casuale = [0;50]
Esempio 2 = p[passo+casuale]

dove il ritardo massimo al passato = 720

Significa che sto affettando in modo tale da assicurarmi che le osservazioni non si sovrappongano.

Lo stesso principio è necessario per evitare la dipendenza dell'obiettivo dal guardare avanti.
 

La prima cosa da determinare è: di che tipo di orizzonte di previsione avete bisogno. Questo determinerà la profondità della storia che dovete indagare.

Guarda i grafici di tendenza con una profondità storica di 3000, 1000, 300 e 150 barre (AUDUSD/H1).

> library("PolyTrend", lib.loc="K:/RRO/R-3.3.1/library")
> trend3000 <- PolyTrend(price[ ,4], alpha = 0.05)
> require(magrittr)
Loading required package: magrittr
> trend1000 <- PolyTrend(price[ ,4] %>% tail(., 1000), alpha = 0.05)
> trend300 <- PolyTrend(price[ ,4] %>% tail(., 300), alpha = 0.05)
> trend150 <- PolyTrend(price[ ,4] %>% tail(., 150), alpha = 0.05)
> plot(trend3000, t="l")
> plot(trend1000, t="l")
> plot(trend300, t="l")
> plot(trend150, t="l")


Ho inserito le immagini in ordine inverso.

E per 3000 barre la direzione è "Up".

Trend type: 3 (cubic)
Slope: 0.0000
Direction: 1 (positive)
Significance: 1 (statistically significant)
Polynomial degree: 3 (cubic)

Per i più corti

#  trend1000
PolyTrend classification:

Trend type: 2 (quadratic)
Slope: -0.0000
Direction: -1 (negative)
Significance: 1 (statistically significant)
Polynomial degree: 2 (quadratic)
#  trend300
PolyTrend classification:

Trend type: 2 (quadratic)
Slope: 0.0000
Direction: 1 (positive)
Significance: 1 (statistically significant)
Polynomial degree: 2 (quadratic)
#trend150
 PolyTrend classification:

Trend type: 3 (cubic)
Slope: -0.0000
Direction: -1 (negative)
Significance: 1 (statistically significant)
Polynomial degree: 3 (cubic)

Se mi interessa l'orizzonte di previsione di 24 barre (un giorno) non ho bisogno di guardare 3000 barre all'indietro. 300 barre sarebbero sufficienti.

Buona fortuna






 

Trovo discutibile l'idea di prevedere 24 passi avanti.

Sia nella classificazione che nella regressione si dovrebbe sempre prevedere esattamente UN passo avanti, ma per esempio su H1, H4 e D1. Quando si fa trading su H1 si ottengono previsioni di 4 e 24 passi avanti per H1.

Idealmente il TF dovrebbe essere fatto artificialmente dal quoziente sottostante. Nel mio esempio carichiamo H1 e non prendiamo altri dal terminale. Con questo approccio non otterremo D1 legato alle 00:00, ma rigorosamente 24 ore avanti rispetto all'ora corrente

 
SanSanych Fomenko:

Trovo discutibile l'idea di prevedere 24 passi avanti.

Sia nella classificazione che nella regressione dovremmo sempre prevedere esattamente UN passo avanti, ma per esempio su H1, H4 e D1. Quando si fa trading su H1 si ottengono previsioni di 4 e 24 passi avanti per H1.

Idealmente il TF dovrebbe essere fatto artificialmente dal quoziente sottostante. Nel mio esempio carichiamo H1 e non prendiamo altri dal terminale. Con questo approccio non otterremo D1 legato alle 00:00, ma rigorosamente 24 ore avanti rispetto all'ora corrente

Dipende da cosa stiamo prevedendo. Per esempio, una previsione di tendenza su 24 ore è abbastanza soddisfacente (la curva è molto liscia). Cioè quando avete bisogno di vedere la FORMA della curva senza particolari esigenze di precisione.

Altrimenti il tuo esempio è assolutamente corretto (come principio). E l'opzione della finestra scorrevole (24 ore) è anche molto fattibile. Molto dipende dai dettagli.

Buona fortuna

 

Domanda veloce...

Ho fatto una distribuzione dei prezzi, cioè un vettore regolare, e ottengo una specie di profilo di mercato, ma posso costruire un vero profilo di volume, cioè collegare il prezzo al volume nella distribuzione?

 
mytarmailS:

Domanda veloce...

Ho fatto una distribuzione basata sul prezzo, cioè un vettore regolare, e ho una specie di profilo di mercato, ma è possibile costruire un vero profilo di volume, cioè collegare il prezzo con il volume nella distribuzione?

Ci sono indicatori che prendono prezzo e volume e costruiscono un grafico generale. E la distribuzione può essere calcolata per questo. Per esempio, Chaikin Oscillator o qualche altro indicatore nella cartella Indicator/Volumes. Ma nel forex saranno i volumi di tick, non quelli reali. Anche se sono correlati, è ancora male, è meglio cercare i volumi reali di borsa.

 
Dr.Trader:

Ci sono indicatori che prendono il prezzo e il volume e costruiscono un grafico generale. E potete leggerne la distribuzione. Per esempio, Chaikin Oscillator o qualche altro indicatore nella cartella Indicator/Volumes. Ma nel Forex avranno volumi in tick, non quelli reali. Anche se sono correlati, è ancora male, è meglio cercare i volumi reali del mercato azionario.

Non faccio trading sul forex, non ho nemmeno familiarità con Metatrader :)

Vorrei sperimentare diversi profili in P, ma non capisco come costruire una distribuzione di due vettori

Non devono essere necessariamente i volumi, è un inizio, si può mettere qualsiasi cosa nel profilo ma deve essere collegato al prezzo e questo significa due vettori

Motivazione: