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

 
Ivan Negreshniy:

IMHO, devi lavorare prima in python, dove è più o meno debuggato, altrimenti c'è molta incertezza

Sì, sembra che la dll sia a 32bit e mt5 a 64.

Tornerò più tardi, per ora python è ok.

 
Maxim Dmitrievsky:

Non credo di poterlo fare da solo, dovrò usare Python dopo tutto :D

Dovresti essere insignito del titolo di "Eccezionale specialista nel creare difficoltà a te stesso"! Esclusivamente dal film: gli eroi normali vanno sempre al contrario.


Ecco il proverbiale sonaglio, solo pochi click per il modello xgboost che hai menzionato.

Lo prendiamo per il campionamento dell'allenamento:

Error matrix for the Extreme Boost model on Df1.num [**train**] (counts):

      Predicted
Actual    0    1 Error
     0 1930   90   4.5
     1   42 2152   1.9

Error matrix for the Extreme Boost model on Df1.num [**train**] (proportions):

      Predicted
Actual    0    1 Error
     0 45.8  2.1   4.5
     1  1.0 51.1   1.9

Overall error: 3.1%, Averaged class error: 3.2%

Rattle timestamp: 2018-05-31 11:21:20 user

Per il campione di convalida.

Error matrix for the Extreme Boost model on Df1.num [validate] (counts):

      Predicted
Actual   0   1 Error
     0 306 119  28.0
     1 111 367  23.2

Error matrix for the Extreme Boost model on Df1.num [validate] (proportions):

      Predicted
Actual    0    1 Error
     0 33.9 13.2  28.0
     1 12.3 40.6  23.2

Overall error: 25.5%, Averaged class error: 25.6%

Rattle timestamp: 2018-05-31 11:22:15 user

Per il campionamento di prova.

Error matrix for the Extreme Boost model on Df1.num [test] (counts):

      Predicted
Actual   0   1 Error
     0 314 118  27.3
     1 112 360  23.7

Error matrix for the Extreme Boost model on Df1.num [test] (proportions):

      Predicted
Actual    0    1 Error
     0 34.7 13.1  27.3
     1 12.4 39.8  23.7

Overall error: 25.5%, Averaged class error: 25.5%

Rattle timestamp: 2018-05-31 11:22:50 user


Se siete soddisfatti del risultato, potete guardare il codice in R. Ecco la sfida:

crs$ada <- xgboost(Long_Short ~ .,
  data              = crs$dataset[crs$train,c(crs$input, crs$target)],
  max_depth         = 6,
  eta               = 0.3, 
  num_parallel_tree = 1, 
  nthread           = 2, 
  nround            = 50,
  metrics           = 'error',
  objective         = 'binary:logistic')


Infatti potete prendere tutto il codice R da rattle e chiamare questa funzione da MT4/5 Expert Advisor e vedere il risultato nel tester. Dll primitivo, funziona da molto tempo e costantemente, un sacco di gente che lo usa...

Tutto questo in un'ora! NON CI SONO PROBLEMI CON I MODELLI!

Ci sono problemi con i target e i corrispondenti predittori di target o viceversa. Ma per risolvere questo problema è necessario avere un toolkit con un lavoro estremamente basso per provare le varianti.


PS.

Se andate su rattle, potete costruire in un clic un albero (rPart), randomForest, SVM, regressione logistica glm, la vostra rete neurale preferita, anche se la nnet più semplice. E per uno spuntino, un modello vivente (per ottenere profitti esorbitanti o raggiungere una discarica di depositi), se si è in grado di formulare l'obiettivo e i suoi predittori.


ASAP.

Poiché avete risvegliato un amore per xgboost e potete alimentare questo amore con calcoli preliminari accettabili in rattle, ecco la documentazione per voi:

Descrizione del pacchetto - https://cran.r-project.org/web/packages/xgboost/xgboost.pdf

Capire il tuo set di dati con Xgboost - https://cran.r-project.org/web/packages/xgboost/vignettes/discoverYourData.html

xgboost: eXtreme Gradient Boosting - https://cran.r-project.org/web/packages/xgboost/vignettes/xgboost.pdf

E per un aggiornamento, la presentazione di Xgboost https://cran.r-project.org/web/packages/xgboost/vignettes/xgboostPresentation.html


Considerando il livello che dimostrate qui, non avete alcun problema con R.


Buona fortuna.

 
SanSanych Fomenko:

Grazie sanSanSanych... solo non l'ho capito, rattle ha xgb? abbastanza divertente

Comunque, ho solo bisogno di attaccare questo modello al posto dell'impalcatura algleb, per compiti RL

Non ho bisogno di ricercare nulla, ho solo bisogno di una cosa migliore con regolarizzazione e cross-validazione... Non so in R, ma in python, per esempio, la convalida incrociata è facilmente applicabile anche al fallback di xgb

e poi R non ha librerie appropriate per RL, tutte sono in python, cioè devo mettere di nuovo R sopra python... quindi non ho ancora deciso di cosa ho bisogno :)

 

Stiamo parlando di alberi...

Non conosco gli obiettivi a una barra, ma quando gli obiettivi sono effettivamente eventi che si verificheranno dopo N barre (sto considerando specificamente il trading di tendenza, o altri casi in cui la posizione viene chiusa da SL/TP, dopo N barre o un periodo di tempo fisso), e il loro risultato sarà considerato e classificato, è importante prestare attenzione non alla tabella di contingenza per valutare i risultati, ma a

1. La frequenza di variazione dei risultati di classificazione in una finestra di N barre

2. Raggruppamento di regole per N barre (densità di regole)

Nel primo caso, un indicatore è necessario per stimare la frequenza di cambiamento del target previsto, se è alto, allora il modello è instabile, anche se può segnare una grande percentuale di soluzioni corrette.

Nel secondo caso, abbiamo bisogno di applicare una regola per finestra (N barre) una regola ripetuta per stimare il rinforzo e la propagazione di questa regola attraverso il modello.

Quindi, è necessario cambiare le stime quando si allena la qualità del modello, compresi gli scaffolding e altri modelli che richiedono l'autoanalisi dei loro risultati per apportare correzioni.

Cosa pensi di questi pensieri?

 

Ancora una volta mi sono convinto che R non fa per me :) la sintassi non è quasi evidenziata, il codice è illeggibile, gli errori non sono quasi evidenziati. Il codice stesso e il linguaggio non sono esteticamente piacevoli

ecco le vostre controargomentazioni

Sì, si può addestrare un algoritmo in 3 righe invece di 5 in python, tutto qui. La leggibilità in python sarebbe migliore. Non vedo alcun vantaggio per i pacchetti MO, è tutto uguale.

 
Maxim Dmitrievsky:

Ancora una volta mi sono convinto che R non fa per me :) la sintassi non è quasi evidenziata, il codice è illeggibile, gli errori non sono quasi evidenziati. Il codice stesso e il linguaggio non sono esteticamente piacevoli

ecco le vostre controargomentazioni

Sì, si può addestrare un algoritmo in 3 righe invece di 5 in python, tutto qui. La leggibilità in python sarebbe migliore. Non vedo nessun vantaggio nei pacchetti MO, è tutto uguale.

Sono alle prese con la visione di un videocorso in russo sulla programmazione R :) Il linguaggio è certamente un inferno di sintassi e presupposti, per esempio, la possibilità di dichiarare una variabile globale in una funzione può distorcere il codice, soprattutto se la funzione viene chiamata più di una volta, dopo di che si inciampa e si cerca l'errore, ma non sarà per il compilatore.

Sono davvero arrabbiato con l'uso della memoria in R - attualmente 187 megabyte di file csv sono sparsi in memoria come 1,5 Gbyte per lavorare con l'albero (mentre in Rattle 7,5 Gbyte per costruire la foresta), il multi-threading è implementato come processi separati lanciati che non possono lavorare con la memoria condivisa, così invece di caricare 6 core di processore posso caricarne solo 4, essendo limitato da 8 Gbyte di memoria disponibile.

Come gestisce python questo caso?

 
Aleksey Vyazmikin:

Sto guardando un videocorso in russo sulla programmazione in R :) Il linguaggio è certamente il più difficile in termini di sintassi e presupposti, per esempio, la possibilità di dichiarare una variabile globale in funzione può fare un casino del codice, soprattutto se la funzione viene chiamata più di una volta, allora si inciampa e si cerca l'errore, ma non sarà per il compilatore.

Sono davvero arrabbiato con l'uso della memoria in R - attualmente 187 megabyte di file csv sono sparsi nella memoria come 1,5 Gbyte per lavorare con l'albero (mentre in Rattle 7,5 Gbyte per costruire la foresta), il multi-threading è implementato come processi separati lanciati che non sanno come lavorare con la memoria condivisa, come risultato invece di caricare 6 core del processore posso caricarne solo 4, limitandomi con uno spazio disponibile di 8 Gbyte.

Come si comporta python in questo caso?

Non ho guardato la memoria, perché non ho mai usato file così grandi :) Ma ho sentito che le prime versioni di R avevano un problema con la memoria e la sua cancellazione

Python è un linguaggio più avanzato sotto tutti i punti di vista, poiché è usato per una grande varietà di compiti.

Non capisco anche divertente sulla visualizzazione della trama di R - è miserabile rispetto a python, Rstudio IDE è anche un mostro di foresta, come è possibile supportare nel 2018

Ho scritto 100 righe di codice e mi sono confuso, tutto si è confuso in un casino illeggibile con una sintassi non illuminata :) quindi se vuoi ottenere un ronzio, usa python in vscode o jupyter notebooks

Gliaggiornamenti degli alberi e delle foreste occupano molta memoria, a seconda delle dimensioni dell'insieme, del numero di alberi e della loro profondità. Per esempio, il mio comitato di 20 foreste di 50 alberi e un insieme di 1000 esempi richiede ~40mb
 

Scrivere sciocchezze su R: non so, non posso e non voglio.

1. La velocità e la facilità di debug del codice in R è sorprendente rispetto ai linguaggi che hanno il vantaggio del compilatore e dell'interprete. C'è un'evidenziazione molto limitata a questo proposito, poiché non c'è nulla da evidenziare - il codice è quasi immediatamente lavorabile. Codice ad altissima capacità. La scrittura di codice "rovinoso" è molto probabilmente il risultato di una mancanza di conoscenza di R stesso e delle funzionalità dei pacchetti. E se davvero è successo così, un buon mauvais ton chiede di dividerlo in funzioni, OOP è presente.

2. l'uso delle variabili globali in tutte le lingue deve essere attento. In R la loro necessità è molto dubbia, perché i parametri delle funzioni e il ritorno da esse possono essere "oggetto", mentre in R è qualsiasi cosa. A parte questo, potete controllare lo spazio a cui sono attaccati i nomi delle variabili.

2. La grafica è una delle migliori al mondo - c'è di tutto, dalla trama più semplice ai cartoni animati, diversi livelli di grafica: da quella primitiva a quella specializzata per le statistiche.

3. È impossibile fare un paragone con python: sono approssimativamente uguali nella prevalenza, ma python ha un sacco di utenti "alieni", principalmente sviluppatori di siti, mentre R è un sistema di statistica, il nostro nativo, doppiamente nativo, perché il MO è incluso nella statistica. Se parliamo di pacchetti per noi, dovremmo confrontarci con altri pacchetti specializzati (SAS...), ma sono a pagamento.

4. R è lo standard algoritmico della statistica. Quasi tutte le pubblicazioni moderne contengono necessariamente del codice R.


L'ultimo. R fa parte di Microsoft, mentre python è un subdeluge, qui su un thread vicino molto abile nella programmazione le persone non potevano essere d'accordo sulla fonte della distribuzione. Per me questo è un verdetto.


Nella programmazione si sceglie molto spesso ciò che è più conveniente rispetto a ciò che è utile, funzionale, ma annacquare per fare una scelta estremamente discutibile non lo è.

 
SanSanych Fomenko:

SanSanych, l'unica fonte della distribuzione è il sito web di python :)

Per le statistiche e l'estensione di apprendimento automatico IPython e anaconda. Vai alla comunità di opendatascienza in lingua russa o guarda i video di Yandex. Non hanno mai sentito parlare di R. Quindi cosa conta come standard? Provate il pitone per farvi un'opinione e confrontarlo. Inoltre conoscere python, come hai detto tu, ti permetterà di fare non solo statistiche ma altre cose, se necessario.

È anche un linguaggio interpretato, ma è perfettamente evidenziato e controlla la sintassi al volo, non solo dopo aver eseguito lo script, + piegatura del codice, blocco note e un sacco di altre chicche

 
Maxim Dmitrievsky:

Non ho guardato la memoria perché non ho mai usato file così grandi :) Ma ho sentito che le prime versioni di R avevano un problema con la memoria e la sua cancellazione

Python è un linguaggio molto più maturo sotto tutti i punti di vista, in quanto viene utilizzato per una grande varietà di scopi.

Non capisco anche divertente circa la visualizzazione di R plot - è miserabile rispetto a python, Rstudio IDE è anche un mostro di foresta, come è possibile supportare nel 2018

Ho scritto 100 righe di codice e mi sono confuso, tutto si è confuso in un casino illeggibile con una sintassi non illuminata :) in breve, se vuoi ottenere un ronzio, usa python in vscode o jupyter notebooks

Gliaggiornamenti degli alberi e la foresta stessa occupano molta memoria, a seconda della dimensione del set e del numero di alberi e della loro profondità. Per esempio, il mio comitato di 20 foreste di 50 alberi e un insieme di 1000 esempi richiede ~40mb

La mia sensazione finora è che R sia un calcolatore figo. L'assenza di aiuto in lingua russa sulle funzioni principali mi uccide, beh, è molto importante per me a causa della mia debolezza in linguistica.

Visualizzazione - ci sono alcune difficoltà, per me gli alberi di grandi dimensioni non si adattano alla visualizzazione correttamente, solo la conversione in PDF aiuta, questo è già buono.