L'apprendimento automatico nel trading: teoria, modelli, pratica e algo-trading - pagina 644
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
Sì, ho dimenticato di dirlo.
Gli stati sono considerati un insieme di dati che caratterizzano quasi completamente una particella. Cioè è un insieme di dati, in parole povere - volume campione, con le sue caratteristiche - curtosi, asimmetria, non-entropia, ecc.
Cioè con la fiducia di R. Feynman è possibile affermare, che avendo definito correttamente il volume del campione per la coppia di calcestruzzo, avendo calcolato sulla storia valori medi caratteristici di questi coefficienti per questo campione, è possibile prevedere, che avendo al momento attuale il certo insieme di parametri, in un certo intervallo di tempo, il sistema passerà ad uno stato con i suoi parametri di stato stazionario.
Questo è quello che mi aspetto da questo thread. Se hai bisogno di aiuto per determinare la giusta dimensione del campione - scrivi, cercherò di aiutarti.
Supponiamo che ci sia un processo autoregressivo, cioè la dipendenza degli stati presenti dagli stati passati.
come selezionare correttamente una combinazione di incrementi con diversi ritardi al fine di prevedere il sistema? I ritardi devono essere costanti o variare nel tempo, e in tal caso come determinarlo (oltre alla banale enumerazione)?
perché se c'è una tale combinazione di incrementi che predice in modo robusto l'obiettivo, allora non si dovrebbero avere problemi ad addestrare NS su di essa.
allora questa domanda - diciamo che c'è un processo di autoregressione, cioè la dipendenza degli stati presenti da quelli passati
come selezionare correttamente un insieme di incrementi con diversi ritardi per prevedere il sistema? I ritardi dovrebbero essere costanti o cambiare nel tempo, e se dovessero cambiare, come determinarlo (tranne una banale enumerazione)?
C'è un punto qui che ovviamente causa difficoltà.
Il set di dati non è locale nel tempo.
Questo è un punto cruciale!
Cioè, se lavoriamo con il tempo, dobbiamo capire che in un intervallo di tempo strettamente definito abbiamo a che fare con un diverso set di dati. Questa è la pietra angolare della pietra d'inciampo. Cercando di lavorare con lo stesso campione di valori specifici ci ritroviamo con una finestra "fluttuante" di osservazioni nel tempo.
Io aggiro questo problema in 2 modi:
1. Lavorare esclusivamente con un particolare set di tick (volume di campioni) - è lo stesso per una particolare coppia una volta per tutte. Ma questo insieme è caratterizzato da diversi tempi di formazione, e non si possono fare previsioni.
2. lavorare esclusivamente con una finestra temporale costante. In questo caso, al contrario, abbiamo un volume fluttuante di campionamento di zecche in esso. Come evitare questa difficoltà? La risposta è di inserire degli "pseudo-stati", cioè di riempire la quantità di dati nella finestra di osservazione fino alla dimensione del campione richiesta. Lo faccio forzando il lavoro in scala temporale esponenziale. Cioè leggo i dati in una finestra temporale strettamente definita attraverso l'esponente e non è importante se era un tick realmente arrivato o no. In questo caso è possibile fare delle previsioni . L'unica cosa è che dubito che gli intervalli esponenziali siano la soluzione giusta. Feynman ha lavorato con intervalli uniformi.
Se si sceglie 1 modo - il problema della previsione non è risolvibile in linea di principio.
Il modo 2 è risolvibile, ma non ci sono archivi di questo tipo.
Su questo sono bloccato e finora ho stupidamente digitato i miei archivi. Non vedo un altro modo, ahimè...
2. lavorare esclusivamente con una finestra temporale permanente. In questo caso, al contrario, abbiamo un volume di campione galleggiante. Come possiamo aggirare questa difficoltà? La risposta è introdurre i cosiddetti "pseudo-stati", cioè portare il numero di dati nella finestra di osservazione alla dimensione del campione richiesta. Lo faccio forzando il lavoro in scala temporale esponenziale. Cioè leggo i dati in una finestra temporale strettamente definita attraverso l'esponente e non è importante se era un tick realmente arrivato o no. In questo caso è possibile fare delle previsioni . L'unica cosa è che dubito che gli intervalli esponenziali siano la soluzione giusta. Feynman lavorava con intervalli uniformi.
In effetti, gli intervalli esponenziali sono esattamente la soluzione giusta al problema della finestra costante, per quanto ne so (dovrebbe essere). Diciamo che il campione di allenamento è di 1000 barre (ticks), qualunque cosa. Naturalmente con una finestra scorrevole i modelli cambiano e l'NS deve essere riqualificato. Ma se il nostro campione contiene una combinazione di incrementi il cui ritardo aumenta esponenzialmente... Mi chiedo di quanti diversi ritardi in totale il sistema avrebbe bisogno non solo per uscire dalla finestra (diciamo, ritardo 1500), ma anche per descrivere tutti gli stati possibili per la stessa finestra, solo ora scorrevole.
Forse sono sciocco :D ma non è difficile da provare. Ma la domanda è quando fermarsi
Questo è in realtà gli intervalli esponenziali come soluzione al problema della finestra costante, per quanto ho capito, è la soluzione giusta (dovrebbe esserlo). Diciamo che il campione di allenamento è di 1000 barre (tick), qualunque cosa. Naturalmente con una finestra scorrevole i modelli cambiano e l'NS deve essere riqualificato. Ma se il nostro campione contiene una combinazione di incrementi il cui ritardo aumenta esponenzialmente... Mi chiedo di quanti diversi ritardi in totale il sistema avrebbe bisogno non solo per uscire dalla finestra (diciamo, ritardo 1500), ma anche per descrivere tutti gli stati possibili per la stessa finestra, solo ora scorrevole.
Forse sono sciocco :D ma non è difficile da provare. Ma la domanda è quando fermarsi.
E bisogna fermarsi quando il sistema passa da uno stato instabile a uno stabile.
Per esempio, se in un dato momento del tempo vediamo l'aumento della nonentropia (è iniziata una tendenza), allora in un certo intervallo di tempo la nonentropia tornerà al suo caratteristico valore medio calcolato dalla storia.
Come determinare questo intervallo di tempo di transizione? Beh, questa è la vera previsione, non si scherza. Questo è quello che mi aspetto dalle reti neurali e ho letto questo thread :)
Ed è necessario fermarsi quando il sistema passa da uno stato instabile a uno stabile.
Cioè, per esempio, se in un dato momento del tempo abbiamo visto un aumento della non-entropia (è iniziata una tendenza), allora dopo un certo intervallo di tempo la non-entropia tornerà al suo caratteristico valore medio calcolato dalla storia.
Come determinare questo intervallo di tempo di transizione? Beh, questa è la vera previsione, non si scherza. Questo è quello che mi aspetto dalle reti neurali e leggere questo thread :)
Ah, il problema era abbastanza banale - addestrare il modello in incrementi esponenziali, e costruire un grafico di spread tra i prezzi previsti e attuali, vedere come si distribuiscono le deviazioni dalla media (residui)
lo farà la prossima settimana :) basta sostituire la parola inentropia con la parola varianza
ah, bene, il compito era abbastanza banale - addestrare il modello su incrementi esponenziali, e tracciare lo spread tra i prezzi previsti e attuali, vedere come sono distribuite le deviazioni dalla media (residui)
Lo farò la prossima settimana :)
Non vedo l'ora, Maxim. Seriamente - sono sicuro che si può fare. Non dimenticate di aprire il segnale - sarò il primo ad iscrivermi.
Solo 2 cose possono davvero funzionare sul mercato: le reti neurali e il teorico. Tutti gli altri sono spazzatura, fandonie e tasche vuote come risultato.
Non vedo l'ora, Maxim. Seriamente - sono sicuro che si può fare. Non dimenticate di aprire il segnale - sarò il primo ad iscrivermi.
Solo 2 cose possono davvero funzionare sul mercato: le reti neurali e un teorico. Tutto il resto è spazzatura, armeggiare e svuotare le tasche come risultato.
Vi mostrerò il bot come esempio, potete modificarlo più tardi :D Lo farò come indicatore all'inizio per chiarezza
In seguito a questo -https://www.mql5.com/ru/forum/86386/page643#comment_6472393
Ho trovato un altro pacchetto interessante per setacciare i predittori. Si chiama FSelector. Offre circa una dozzina di metodi per vagliare i predittori, compresa l'entropia.
La funzione per setacciare i predittori random.forest.importance() ha mostrato risultati abbastanza buoni su alcuni test. È sconveniente che a suo parere tutti i predittori siano almeno un po' importanti. ma se si calcola l'importanza media, per esempio, e si prendono solo i predittori che sono importanti sopra la media, si ottengono ottimi risultati.
Ha preso solo eurusd m1 per circa gennaio di quest'anno, e una finestra scorrevole di 1 giorno.
Logicamente, se l'entropia aumenta, si dovrebbe sospendere il trading, e continuare il trading a bassa entropia. Ma qui abbiamo una tendenza a bassa entropia per qualche motivo, anche se è più facile fare trading a piatto, è insolito.
(corretto questo refuso nel codice allegato, scaricatelo di nuovo se avete già avuto il tempo di scaricare il vecchio codice)
Non ha senso condurre test yf la quotazione iniziale, perché a occhio è chiaro che la serie non è stazionaria.
E interessanti (non per me - lo uso sempre) sono i grafici per serie temporali log(p/p-1).
Cosa c'è lì dentro? E naturalmente una scala sull'asse delle ordinate è necessaria.
Ho trovato un altro pacchetto interessante per setacciare i predittori. Si chiama FSelector. Offre circa una dozzina di metodi per vagliare i predittori, compresa l'entropia.
C'è anche un ampio set molto interessante di strumenti di Rilievo nel pacchetto CORElearn.
Nei miei lunghi esercizi su questo argomento non ho trovato niente di meglio delle funzioni di selezione dei predittori in caret, specialmente saf.
Ma niente di tutto questo funzionerà a meno che la preselezione dei predittori non sia fatta su una base "deve fare" per la variabile obiettivo.
Ripeto ancora con un esempio di due classi:
PS.
Discusso i componenti principali e avete visto il difetto che l'algoritmo è senza insegnante.
Qui è con l'insegnante:
Il pacchetto spls