"New Neural" è un progetto di motore di rete neurale Open Source per la piattaforma MetaTrader 5. - pagina 12

 
NeuroOpenSource:
Dovrebbe essere qualcosa da codificare. Stiamo ancora aspettando l'amministratore del progetto per discutere il piano di attuazione.

Infatti, l'opzione è quella di iscriversi sullo stesso sorsforge e iniziare...

Ma probabilmente è meglio aspettare che i Metakwots tirino fuori l'ambiente giusto.

 
A proposito, non è una cattiva idea pensare al parallelismo. Solo che non ho idea di come possa essere implementato.
 
TheXpert:
A proposito, non è una cattiva idea pensare al parallelismo. Solo che non ho idea di come possa essere implementato.
Stai parlando di mettere in parallelo la formazione NS? Non c'è modo di farlo secondo me, a meno che il comitato di rete non lo metta in parallelo in qualche modo
 
TheXpert:
A proposito, è bello pensare al parallelismo. Solo che non ho idea di come implementarlo.

Andrew, ho controllato il tuo messaggio sulla ricorsione, hai ragione, la ricorsione è 1,5 volte più lenta e limitata in profondità, quindi i loop hanno vinto senza ambiguità.


Non preoccupatevi del parallelismo, finché non ci sarà l'API per il processore grafico non vale un accidente, le reti neurali sono compiti troppo semplici per il parallelismo tra i core (la chiamata al thread richiede centinaia di cicli di clock).

A meno che MQ non ci fornisca almeno delle API per le reti neurali, ma questo richiede una formalizzazione della rete universale. Quindi prima un progetto, e poi bussare alla porta darmi un'API per la GPU.

 

Ho fatto un'immagine esplicativa del codice a pagina 5:

Quelle gialle sono celle di memoria collegate (per essere più precisi, sono una stessa cella di memoria, ma si riferiscono a oggetti di memoria diversi),

gli altri, associazioni di oggetti di memoria, rosso prossimo, verde prev, blu lato.

La direzione della freccia indica la direzione in cui viene passato il puntatore.

La cella zero della memoria dell'operatore di ritardo è usata come cella di memoria di uscita.


La memoria è collegata in ordine inverso, poiché un ingresso ha solo un'uscita (da cui riceve i dati) ma non il contrario.

Beh, probabilmente è intuitivamente chiaro che i cerchi sono ingressi, i quadrati pesi, i triangoli operatore di ritardo (operatore zero cella Z uscita neurone).

ZZZY Lo schema è definitivo e non lo cambierò più :o)

 

1. Imha, la cosa più importante è specializzarsi nel trading e qui è importante sistematizzare la pre-elaborazione dei dati di input. Sia i segnali discreti (per esempio, una rottura di un certo estremo o un cambiamento di prezzo in un periodo di tempo che supera una certa soglia) che i segnali continui (per esempio, la distanza tra 2 ruote o il cambiamento di prezzo in un periodo di tempo) dovrebbero essere input. Naturalmente NS può ottenere apprendimenti discreti da quelli continui, ma poi va in black-boxing e non è sempre necessario. In generale, per gli input abbiamo bisogno di una classe separata, dove il calcolo del prezzo-azione sarà definito da un metodo virtuale e gli utenti possono scegliere tra quelli già scritti, o scriverli loro stessi.

2. l'EA standard è essenzialmente lo stesso dei segnali elementari di price action e dell'algebra booleana con essi (e/o/non). Pertanto, l'EA standard può anche essere descritto sotto forma di NS di una certa topologia e pesi di impostazione. Forse una buona opzione - il convertitore automatico degli EA standard in NS (è difficile farlo :)), o almeno permettere di progettare i NS usando modelli di logica booleana. Per dare un punto di partenza per la creazione di una logica, dal punto di vista del commercio, NS, ma non solo un insieme di strati con una certa topologia.

E anche per aggiungere elementi di algebra booleana alla NS costruita. Per esempio, abbiamo costruito un CS e vogliamo controllare l'influenza di un semplice filtro su di esso, per esempio compriamo quando il prezzo è superiore a МА200 e vendiamo - viceversa. Naturalmente possiamo inserire una nuova voce e riaddestrare la rete, ecc. Oppure possiamo semplicemente aggiungere questo filtro come logica booleana e controllare la sua influenza sul risultato.

Cioè si tratta di combinare in modo intuitivamente comprensibile per una persona la logica booleana e i NS in diverse fasi della progettazione del TS.

3. È logico fare un'opportunità per fissare alcune connessioni in modo che non partecipino alla formazione successiva. Cioè c'è una spina dorsale del sistema che non deve essere ricostruita frequentemente, e c'è una parte più frequentemente adattabile. La riqualificazione di tutti i pesi è un aumento del montaggio.

4. non è male, se la spina dorsale del punto 3 può essere selezionata automaticamente. Per esempio, abbiamo una sezione di test. È diviso in N parti. NS è addestrato in modo sequenziale su ogni parte, ma in modo che una parte di esso rimanga fissa (non ri-addestrato su ogni parte).

Cioè il punto è costruire un NS robusto che richiede un minimo di adattamento al mercato attuale.

5. l'obiettivo f-study non deve essere costituito da successi individuali nella previsione (trade), ma da una caratteristica della curva dell'equity. Un fattore di profitto, per esempio, o uno definito dall'utente.

6. Un'interfaccia visiva per la proiezione NS è necessaria per tutto questo e per altre opportunità.

 

puramente come inizio, si potrebbe considerare un qualche tipo di modello open-source orientato agli oggetti come http://www.basegroup.ru/library/analysis/neural/fastneuralnet/.

Cosa ha senso fare per analogia, quali sono gli svantaggi date le specificità del trading e di MQL5. O un modello open-source più avanzato, per non reinventare la ruota :)

BaseGroup.ru :: NeuralBase - нейросеть за 5 минут
  • basegroup.ru
Библиотека компонентов , предназначена для программной реализации нейронных сетей. В качестве примера, созданы компоненты реализующие две нейросетевые парадигмы: рекуррентную нейронную сеть, в нашем случае – это сеть Хопфилда и многослойную нейронную сеть обучаемую по алгоритму обратного распространения ошибки (back propagation). Основным...
 
Avals:

1. Imha, la cosa più importante è specializzarsi nel trading e qui è importante sistematizzare la pre-elaborazione dei dati di input. Sia i segnali discreti (per esempio, una rottura di un certo estremo o un cambiamento di prezzo in un periodo di tempo che supera una certa soglia) che i segnali continui (per esempio, la distanza tra 2 ruote o il cambiamento di prezzo in un periodo di tempo) dovrebbero essere input. Naturalmente NS può ottenere apprendimenti discreti da quelli continui, ma poi va in black-boxing e non è sempre necessario. In generale, per gli input abbiamo bisogno di una classe separata, dove sarà definito il metodo virtuale per calcolare il prezzo-azione e gli utenti possono scegliere tra quelli già scritti, o scrivere il proprio.

Sì, ne ho scritto. Tuttavia, l'ho scritto in un modo diverso. Puoi fare un piccolo e semplice esempio di come sarebbe un input di price action?

E anche aggiungere elementi di algebra booleana alla NS costruita. Per esempio, abbiamo costruito un NS e vogliamo controllare l'influenza di un semplice filtro, per esempio comprare trade solo quando il prezzo è superiore a МА200 e vendere viceversa. Naturalmente, possiamo inserire una nuova voce e riaddestrare la rete, ecc. Oppure possiamo semplicemente aggiungere questo filtro sotto forma di logica booleana e controllare la sua influenza sul risultato.

Che senso ha metterlo in rete? È facile e semplice da controllare senza la rete...

Cioè si tratta di combinare una logica booleana intuitiva e comprensibile all'uomo e NS in diverse fasi della progettazione di TC.

Che senso ha allora la NS? Imho, NS dovrebbe essere in ogni caso considerato come una scatola nera, che converte gli input in output.

3. È logico fare un'opportunità per fissare alcune connessioni in modo che non partecipino all'apprendimento successivo. Cioè c'è una spina dorsale del sistema che non deve essere ricostruita frequentemente, e c'è una parte più frequentemente adattabile. Riallenare tutti i pesi significa aumentare l'adattamento.

E su quale principio? Beh, la topologia può essere cambiata (hehe :) ). È possibile ridurre la quantità. Ma per addestrare solo sinapsi scelte manualmente...

4. Sarebbe bello se la nocca invariata dal passo 3 potesse essere selezionata automaticamente. Per esempio, abbiamo una sezione di test. È diviso in N parti. NS è addestrato successivamente su ogni parte, tuttavia una parte di NS rimane fissa (non ri-addestrata su ogni parte).

Basta controllare il funzionamento della colla. In ogni caso non ci si può sbarazzare dell'adattamento con queste macchinazioni.

Cioè il punto è quello di costruire NS robusti che richiedono un minimo di messa a punto per il mercato attuale.

5. L'obiettivo f-study non deve essere costituito da singoli successi nella previsione (trade), ma da una caratteristica della curva dell'equity. Fattore di profitto, per esempio, o uno impostato dall'utente.

Non funziona così. Non tutte le voci possono essere trasferite alla strategia. Dopo tutto, la NS è separata dalla TS, sono indipendenti. Ma può essere fatto a livello di formazione degli ingressi/uscite del campione di allenamento.

_________________________________

O allora devi impostare gli obiettivi in modo diverso in generale.

 
TheXpert:

Sì, ne ho scritto. Ma in una vena leggermente diversa. Puoi darmi un piccolo esempio semplice, come sarebbe un input di price action?

bool F1(int period){

se (High[0]>iHighest(NULL,0,MODE_HIGH,period,1)) return(true); altrimenti return(false);

}

doppio F2(int ma1P,int ma2P){

return(iMA(...ma1P ...)-iMA(...ma2P....))

}

TheXpert:

Che senso ha inserirlo nella rete? È facile e semplice controllarlo senza rete...

Che senso ha allora la NS? Imho, NS dovrebbe in ogni caso essere considerato come una scatola nera, che converte gli input in output.

Per combinare NS e logica convenzionale. La soluzione di NS può risolvere solo una parte di un problema di trading, per esempio il filtraggio e il risultato del suo lavoro sarà o comprare o vendere o non fare trading. Ma i punti di entrata e di uscita, così come altri filtri possono essere contenuti nella logica booleana standard. Come insegnare il NS necessario, se non deve funzionare senza la parte booleana (dare profitti o prevedere i cambiamenti dei prezzi)? Cioè ogni passo dell'addestramento NS deve includere il lancio dell'algoritmo sulla logica booleana.

TheXpert:

E su quale principio? Beh, puoi cambiare topologia (hehe :) ). È possibile ridurre una quantità. Ma si possono allenare solo sinapsi scelte manualmente.

perché no? :) Per esempio, un comitato di diverse NS, ognuna delle quali essenzialmente risolve problemi diversi. Non devono essere addestrati esattamente sugli stessi campioni e con la stessa periodicità, vero? Compiti diversi richiedono periodi di formazione diversi.

C'è, per esempio, un NS che è abbastanza bravo a identificare un trend/flop. Possiamo usarlo in vari progetti e aggiungerlo ad altri NS, per esempio. Ma non per riqualificarlo ogni volta che è necessario addestrarlo.

TheXpert:

Basta controllare il suo lavoro di incollaggio. Non vi sbarazzerete comunque dell'adattamento con queste macchinazioni.

Penso che sia l'unico modo in cui funzionerà per NS :)

TheXpert:

Dopo tutto, la NS è separata dalla TS, sono generalmente indipendenti. Ma può essere fatto a livello di formazione degli input/output del campione di allenamento.

E perché non possono essere combinati? Allora il NS risolverà solo una parte dei problemi, ma sarà addestrato come parte dell'intero sistema. E in generale, combinare il processo di ottimizzazione della strategia e la formazione del NS che è parte di esso, perché è essenzialmente la stessa cosa. Cioè, per esempio, ad ogni esecuzione del tester l'NS viene addestrato sul campione di prova. Naturalmente, questo ha senso se il NS non è un tester autonomo))) prezzo, ma solo una parte della logica generale del sistema

 

No, non funziona così.

Parlare così è demagogia. Possiamo parlare di cose diverse senza capirci e chiamarle più o meno la stessa cosa.

Motivazione: