L'apprendimento automatico nel trading: teoria, modelli, pratica e algo-trading - pagina 212
Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
R è un sistema incredibile, che personalmente mi ha aperto gli occhi su quanto fossimo lontani in MetaTrader/MQL dalle reali esigenze di "rendere i calcoli complessi semplici e subito".
Noi (sviluppatori C++) abbiamo nel sangue l'approccio "tu puoi fare tutto da solo e noi ti diamo la base di basso livello e la velocità dei calcoli". Siamo fanatici delle prestazioni e siamo bravi a farlo - MQL5 è ottimo su 64 bit.
Quando ho iniziato a lavorare io stesso su R mi sono reso conto che avevo bisogno di quante più funzioni potenti possibili in una linea e di poter fare ricerca in generale.
Quindi abbiamo preso una brusca svolta e abbiamo iniziato ad aggiornare MetaTrader 5:
Certo, siamo all'inizio del cammino, ma il giusto vettore di sforzi è già chiaro.
La tua motivazione è grande! Se è esattamente come dici tu, si fa presto a mordere il ninja all'osso c multichart)))
Tuttavia, IMHO, qui dobbiamo creare qualcosa di radicalmente nuovo, cioè, oltre a quello che ha scritto, signor Reshetov, è necessario proprio uno studio di ricerca, per lavorare con set di dati arbitrari, non solo scaricabili dal mercato, perché molte cose hanno bisogno di provare esempi molto banali e sintetici per capire cosa succede, beh, dovrebbe capirmi come programmatore programmatore)) Avrei bisogno di disegnare diversi grafici, scatter, hitmap, distribuzioni e così via. In generale, sarebbe davvero bello se un tale insieme di strumenti fosse disponibile direttamente da MetaEditor, ma francamente parlando, non ho speranze...
Ma in generale, naturalmente, mi piace la tendenza dei tuoi pensieri))
Era una risposta educata senza dettagli o verifiche. E la risposta non corrispondeva a Wolfram Alpha e Matlab, il che è un problema.
Non c'è bisogno di fare un passo indietro - la questione di fondo è stata chiaramente esposta.
Cosa vuol dire che la sua risposta non corrisponde a Wolfram? Non corrispondeva al fatto che la risposta della persona non era "zero"? L'uomo ha risposto che non pensava che nel punto zero, dove l'integrale = 0, la densità debba necessariamente essere zero (gli ho posto la domanda in questo modo). L'ha detto esplicitamente. E ha aggiunto che il valore della densità in qualsiasi punto è irrilevante (ho letto "irrilevante" come irrilevante per la questione in questione). Questa è un'affermazione matematica abbastanza chiara.
Nella questione in questione, la matematica è importante.
Abbiamo l'integrale della funzione così e così (funzione di densità di probabilità della distribuzione gamma). Tutti sono abituati al fatto che si può dare a Wolfram un'equazione con parametri: specificare l'area di integrazione e i parametri della funzione, e lui integrerà e darà la risposta. Ma avete mai pensato che se voi stessi vi sedeste a calcolare questo integrale su un dato dominio, otterreste 0 a zero e 1 su tutto il dominio, e qualche valore [0,1] su qualche sottoarea. Semplicemente risolvendo l'equazione!
Il fatto che il limite della funzione di densità di probabilità della distribuzione gamma vada da qualche parte nella regione positiva è una proprietà di quella funzione. Non ha niente a che vedere con ciò che si ottiene integrando quella funzione. Questo è ciò che l'uomo ha scritto.
Non sto evitando i problemi alla radice. Ribadisco che il nostro punto è stato confermato da una persona fuori dal nostro controllo - che la densità a zero non ha importanza (irrilevante).
La tua motivazione è grande! Se tutto è esattamente come dici tu, si morde rapidamente all'osso ninja c multichart)))
Tuttavia, IMHO, qui dobbiamo creare qualcosa di radicalmente nuovo, cioè, oltre a quello che ha scritto il signor Reshetov , è necessario proprio uno studio di ricerca, per lavorare con set di dati arbitrari, non solo scaricabili dal mercato, perché molte cose hanno bisogno di provare molto banale, esempi sintetici per capire cosa succede, beh, si dovrebbe capire me come un programmatore programmatore)) Avrei bisogno di disegnare diversi grafici, scatterplot, hitmap, distribuzioni e così via. In generale, sarebbe davvero bello se un tale insieme di strumenti fosse disponibile direttamente da MetaEditor, ma francamente parlando, non ho speranze...
Ma in generale, naturalmente, mi piace la tendenza dei tuoi pensieri)))
Si riferisce a questo "tiro" di Reshetov?
"Questa R è una specie di bicicletta marcia con ruote quadrate. Cosa dire di alcuni dei suoi pacchetti, quando la base, cioè il nucleo in R è storto e ha bisogno di una seria messa a punto con un "file matita"? Che credibilità può avere chi non si è nemmeno preoccupato di controllare la correttezza delle funzioni di base in R per tanti anni? Quale può essere la "forza" nella debolezza di R - la scorrettezza dei calcoli attraverso di esso?
È bene che MetaQuotes ha aperto gli occhi di alcuni utenti al fatto e ai test con l'open source, così ognuno potrebbe indipendentemente ricontrollare e assicurarsi, piuttosto che infondato. Non tutto l'open source, naturalmente, perché alcuni fanatici religiosi della setta distruttiva di R continueranno a credere ciecamente nell'"infallibilità" dei calcoli nel loro linguaggio e pacchetti storti, invece di rivolgersi ai test presentati e ricontrollarli indipendentemente, invece di dire cazzate bigotte, difendendo la stortura di R come "standard generalmente accettato".
Ora è abbastanza ovvio che sarebbe meglio utilizzare la funzionalità MQL per creare strategie di trading, in quanto il risultato sarà più corretto, piuttosto che cercare di farlo tramite curva e pendenza R.
Un ringraziamento speciale agli sviluppatori di MetaQuotes per l'approccio costruttivo, i test e il loro codice sorgente, così come per aver identificato il "re nudo - R"!"
È questo il "colpo" a cui si riferisce Reshetov?
No, questo è il messaggio:
R, così come molti altri linguaggi, è molto più conveniente per l'apprendimento automatico di MQL perché ha una funzionalità intrinseca per elaborare i dati in array. Il fatto è che un campione per l'apprendimento automatico è molto spesso un array di dati bidimensionale, quindi ha bisogno di un funzionale per lavorare con gli array:
Fino a quando MQL non avrà implementato il suddetto funzionale necessario per gestire i campioni negli array, la maggior parte degli sviluppatori di algoritmi di apprendimento automatico preferirà altri linguaggi di programmazione che hanno già tutto questo a disposizione. Oppure useranno senza pretese MLP (algoritmo degli anni '60) dalla libreria AlgLib dove, se ricordo bene, per comodità gli array bidimensionali sono rappresentati come monodimensionali.
Naturalmente, le funzioni per le densità delle distribuzioni casuali sono anche funzionalità necessarie. Ma tali funzioni non sono sempre necessarie nei compiti di apprendimento automatico, e in alcuni compiti non sono utilizzate affatto. Ma le operazioni con i campioni come array multidimensionali sono ciò che l'implementazione degli algoritmi di apprendimento automatico è sempre necessaria per qualsiasi compito, a meno che, naturalmente, non sia un compito di insegnare a una griglia a imparare dati ovviamente normalizzati da banali CWR.
È questo il "colpo" a cui si riferisce Reshetov?
"Questa R è marcia - una bicicletta con ruote quadrate. Cosa dire di alcuni dei suoi pacchetti, quando la base, cioè il nucleo di R è storto e ha bisogno di una seria revisione con un "file matita"? Che credibilità può avere chi non si è nemmeno preoccupato di controllare la correttezza delle funzioni di base in R per tanti anni? Quale può essere la "forza" nella debolezza di R - la scorrettezza dei calcoli attraverso di esso?
È bene che MetaQuotes ha aperto gli occhi di alcuni utenti al fatto e ai test con l'open source, così tutti potrebbero indipendentemente ricontrollare e assicurarsi, piuttosto che infondato. Non tutto l'open source, naturalmente, perché alcuni fanatici religiosi della setta distruttiva di R continueranno a credere ciecamente nell'"infallibilità" dei calcoli nel loro linguaggio e pacchetti storti, invece di rivolgersi ai test presentati e ricontrollarli indipendentemente, invece di fare fanaticamente stronzate, difendendo la stortura di R come "standard generalmente accettato".
Ora è abbastanza ovvio che sarebbe meglio usare la funzionalità MQL per creare strategie di trading, perché il risultato sarà più corretto, piuttosto che cercare di farlo tramite curva e pendenza R.
Un ringraziamento speciale agli sviluppatori di MetaQuotes per il loro approccio costruttivo, i test e le loro fonti, così come per l'identificazione del "Naked King - R"!"
Hai già cancellato il tuo post sul "minky MQL"? Stai strofinando i tuoi post nello stesso modo in cui le figure Radoviane strofinano i loro Facebook dopo l'elezione di Trump.
Ecco un esempio di una distribuzione gamma in Wolfram Alpha per divertimento.
Gli viene data una funzione, una funzione di densità di distribuzione gamma leggermente semplificata.
Il punto è nel denominatore x. Il limite a destra, come potete vedere, a x->0 Wolfram stima correttamente: inf.
Cioè, nel limite a destra la densità a zero è all'infinito (questa è esattamente la risposta a dgamma).
Integriamo questa funzione sul grande saport:
L'integrale è 1 (arrotondato, ovviamente, perché non viene preso l'intero supporto).
Conclusione, nonostante il fatto che la funzione vada all'infinito nel punto estremo, l'integrale di questa funzione conta bene come dovrebbe.
Ecco un esempio della distribuzione gamma in Wolfram Alpha, solo per divertimento.
La conclusione è che anche se la funzione va all'infinito nel punto estremo, l'integrale di quella funzione conta bene come dovrebbe.
Grazie per l'esempio, hai ragione. Questo integrale è convergente.
L'estremo nel punto x=0 può anche essere usato per determinare la densità e non porterà alla divergenza.
Grazie per l'esempio, hai ragione. Questo integrale è convergente.
I valori limite a x=0 possono anche essere usati per determinare la densità e questo non porterà alla divergenza.
Grazie! Rispetto.
Esempio di R con pacchetti di elaborazione rapida.
library(data.table)
library(ggplot2)
start <- Sys.time()
set.seed(1)
dummy_coef <- 1:9
x <- as.data.table(matrix(rnorm(9000000, 0, 1), ncol = 9))
x[, (paste0('coef', c(1:9))):= lapply(1:9, function(x) rnorm(.N, x, 1))]
print(colMeans(x[, c(10:18), with = F]))
x[, output:= Reduce(`+`, Map(function(x, y) (x * y), .SD[, (1:9), with = FALSE], .SD[, (10:18), with = FALSE])), .SDcols = c(1:18)]
x[, sampling:= sample(1000, nrow(x), replace = T)]
lm_models <- x[,
{
lm(data = .SD[, c(1:9, 19), with = F], formula = output ~ . -1)$coefficients
},
by = sampling]
lm_models[, coefs:= rep(1:9, times = 1000)]
avg_coefs <- lm_models[, mean(V1), by = coefs]
plot(dummy_coef, avg_coefs$V1)
lm_models[,
print(shapiro.test(V1)$p.value)
, by = coefs]
ggplot(data = lm_models, aes(x = V1)) +
geom_histogram(binwidth = 0.05) +
facet_wrap(~ coefs, ncol = 3)
Sys.time() - start
Tempo di esecuzione: 5 sec. Sono stati costruiti 1.000 modelli lineari. Ognuno su 1000 osservazioni.
[1] 0.8908975
[1] 0.9146406
[1] 0.3111422
[1] 0.02741917
[1] 0.9824953
[1] 0.3194611
[1] 0.606778
[1] 0.08360257
[1] 0.4843107
Tutti i coefficienti sono distribuiti normalmente.
E ggplot-ic per la visualizzazione.
E un altro esempio. Si riferisce anche alla rotazione di grandi campioni per la simulazione statistica.
########## simulate diffference between mean density with different sample size
library(data.table)
library(ggplot2)
rm(list=ls());gc()
start <- Sys.time()
x <- rnorm(10000000, 0, 1)
y <- rnorm(10000000, 0, 1)
dat <- as.data.table(cbind(x, y))
dat[, (paste0('sampling_', c(100, 1000, 10000))):= lapply(c(100, 1000, 10000), function(x) sample(x, nrow(dat), replace = T))]
dat_melted <- melt(dat, measure.vars = paste0('sampling_', c(100, 1000, 10000)))
critical_t <- dat_melted[,
{
mean(x) - mean(y)
}
, by = .(variable, value)]
ggplot(critical_t, aes(x = V1, group = variable, fill = variable)) +
stat_density(alpha = 0.5)
Sys.time() - start
gc()
Tempo di esecuzione 3,4 secondi.
Vengono creati campioni normalmente distribuiti e centrati su zero:
1.000 per 10.000 coppie di valori
10 000 su 1 000 coppie di valori
100.000 di 100 coppie di valori
Si conta la differenza tra le medie (MO == 0) per ogni campione.
Le densità delle distribuzioni delle medie di campionamento per campioni di diverse dimensioni sono derivate.
Solo qui sampling_100 significa che avete bisogno di 10.000.000 / 100 per ottenere la dimensione del campione. Cioè, per campioni più piccoli, l'errore standard è più grande...