Test di sistemi di previsione in tempo reale - pagina 53

 
grasn писал(а) >>

a Yurixx

Suggerisco di giocare ai buoni vecchi ditali, puoi usare qualsiasi strategia e guardare ovunque :o) Previsione su EURUSD M15 per 300 campioni (da lunedì a mercoledì inclusi):

Opzione 1:

Entropia del processo: 13,84

Variante 2:

Entropia del processo: 13,01

Opzione 3:

Entropia del processo: 14,36

Quale ditale stai raccogliendo? :о)

Io propendo per l'opzione 1, dato che questa situazione si sta evolvendo da molto tempo e aspetta solo di essere continuata

 
forte928 >> :

Propendo per l'opzione 1, dato che questa situazione si sta sviluppando da molto tempo e aspetta solo di essere portata avanti

Cioè il prezzo sta passando una specie di zona di inversione? Solo per curiosità, se non è troppo disturbo, potresti spiegarti meglio?

 
grasn писал(а) >>

Quindi il prezzo ora sta passando una specie di zona pivot? Solo per curiosità, se non è troppo disturbo, per favore elaborate.

Al momento, c'è il primo fattore sulla base del quale possiamo concludere circa la piatta laterale sulla coppia EUR-dollaro -

La coppia ha raggiunto il livello di consolidamento della linea OP a 1.4850. Esattamente le stesse fluttuazioni sono state osservate a 1.3437 e 1.3937 con un successivo rollback, che corrisponde ai livelli 0.382, 0.618 e 1.00.

la seconda figura è lo stesso grafico ma con i livelli di crescita calcolati rispetto al basso - 1,4162 e 1,4951 corrente e se si prende sulla base di questo grafico dei prezzi i livelli 1,4951 e 1,4851 si può vedere che il prezzo è solo nel punto di equilibrio al livello medio di fluttuazioni di questi indicatori gli ultimi due giorni ... Inoltre, l'indicatore di saturazione ha mostrato a lungo livello di saturazione a cui l'inversione dovrebbe verificarsi

ma ci sono un paio di cose che non permettono che questo accada:

1) il grafico giornaliero mostra un movimento di crescita negativo (indicatore inferiore)

2) Il grafico giornaliero ha raggiunto il livello di consolidamento di 0,382 a 1,4877 sul primo indicatore

3) Il grafico giornaliero ha raggiunto il livello di consolidamento di COP a 1.4892 sul secondo indicatore

4) C'è un'opposizione attiva al movimento verso l'alto sul grafico H4

5) Presenza di due livelli di consolidamento relativi al minimo di fine settembre OP e 0,236 (1,4931 e 1,4933), che è una forte indicazione della presenza di una correzione prolungata

Per continuare...

 

Grasn, posso farti una domanda? Avete provato a cercare i punti di ribaltamento in una serie temporale?

aggiornamento: lo chiedo perché sto scavando in questa direzione (e qualcosa si sta muovendo). Ecco un esempio di come appare la mia ricerca dei punti critici:


Punti critici

Come potete vedere, prima che la serie cambi il suo comportamento, il carattere delle oscillazioni dell'indicatore cambia bruscamente (ci sono esplosioni di grande ampiezza, per essere più precisi, i massimi/minimi cominciano ad adattarsi perfettamente al grafico della funzione f(x)=a^x). I picchi si verificano un po' prima (di solito :)) che il comportamento della serie cambia. Tuttavia, non ho capito tutto finora. Devo lavorare al limite della doppia precisione (i numeri sono molto piccoli) + mi mancano le previsioni direzionali.

 
grasn писал(а) >>

Supponiamo che esista un tale costrutto:

Come ho capito aumenterà dinamicamente l'array memRow[] quando si innesca qualche condizione. Cioè non conosco in anticipo la lunghezza dell'array. Ho capito bene?

1. In MKL4 non si può operare con array la cui dimensione non è stata definita. Se non avete specificato la dimensione di un array, dovrete farlo in init(). Inoltre, mentre si lavora, si può cambiare questa dimensione secondo necessità.

2. 2. I consigli di Lea sono abbastanza pratici, vale la pena ascoltarli. In generale, perché i consigli siano adeguati, è meglio spiegare chiaramente a cosa serve l'array e perché è necessario cambiarne le dimensioni. È possibile che vi accontentiate di allocare solo lo spazio e di avere una variabile con l'indice dell'ultimo elemento. Allora, che tu sappia o meno il numero di elementi di cui hai bisogno non avrà molta importanza.

.

Non gioco ai ditali. Ma preferisco la variante 2. O voglio solo che l'euR cresca? :-)

Ma anche le varianti 1 e 3 sono ok, anche se differiscono molto poco l'una dall'altra.

 
Yurixx >> :

1. In MKL4 non si può operare con array, la cui dimensione non è impostata. Se non specificate la dimensione dell'array, dovrete farlo in init().

1 Non è affatto obbligatorio.

Dichiarare un array senza definirne la dimensione divide il processo di preparazione dell'array in tre parti:

1 dichiarazione come tale - con questa procedura, il programmatore dice al compilatore se l'array è globale o locale.

2 impostare la dimensione attraverso ArrayResize() - dopo questa procedura, l'array è effettivamente pronto a lavorare.

3 Inizializzazione - se non è specificato, l'array rimane com'era (e memorizza i valori degli inizi passati), quando l'array viene creato, viene automaticamente inizializzato a 0.

 
grasn >> :

Grazie, farò una prova, ma non posso valutare quale sarebbe ottimale. D'altra parte, per un array piccolo non conoscerò nemmeno la sua dimensionalità, e inoltre, in questa implementazione dovrò raddoppiare l'array, prima quello piccolo e poi quello grande, in cui si accumulano i valori calcolati. Ma dovrò sperimentare, grazie per il suggerimento.

Nella mia esperienza, raccomando di definire e usare gli array direttamente dove devono essere usati, tali array sono per lo più locali, usano la memoria dinamicamente, il che è meglio in confronto agli array statici, che vogliono o no il vento li sposta nel file di swap, e quindi il loro lavoro diventa molte volte più lento che dalla RAM, soprattutto se l'array è piccolo, non ha senso riservare staticamente molto spazio per loro. Il compilatore MQL-4 è progettato in modo che non si senta la differenza tra dichiarare un array con indicazione esplicita della dimensione e uno ritardato.

 
Urain писал(а) >>

Nella mia esperienza consiglio di dichiarare e utilizzare gli array direttamente dove hanno bisogno di utilizzare tali array per la maggior parte si rivelano essere locali quelli dinamicamente utilizzare la memoria che è meglio in confronto con gli array statici che si desidera o non Windows li mette in file di swap e quindi il loro lavoro diventano molte volte più lento che da RAM, più se l'array piccolo allora non ha senso staticamente per loro di riservare molto spazio.

Non capisco... Perché un array locale non può essere preimpostato in un file di swap? In realtà, viene preemplificato lì quando c'è una carenza di memoria; sono sicuro che sia gli array locali che quelli globali saranno preemplificati esattamente allo stesso modo. Qual è la differenza?

 
lea >> :

Qualcosa che non capisco... Perché un array locale non può essere preimpostato in un file di swap? Generalmente, è spinto lì quando c'è una carenza di memoria; sono sicuro che sia locale che globale saranno spinti esattamente allo stesso modo. Qual è la differenza?

Gli array statici hanno tutte le possibilità di essere creati ad ogni chiamata del programma e di essere schiacciati da nuovi array creati su swap. Anche se, se la RAM è più che sufficiente, questo potrebbe non accadere.

 
Urain >> :

1 Non è affatto necessario.

Dichiarare un array senza definirne la dimensione divide il processo di preparazione dell'array in tre parti:

1 dichiarazione come tale - con questa procedura, il programmatore dice al compilatore se l'array è globale o locale.

2 impostare la dimensione attraverso ArrayResize() - dopo questa procedura, l'array è effettivamente pronto a lavorare.

3 Inizializzazione - se non è specificato, l'array rimane com'era (e memorizza i valori degli inizi passati), quando si crea un array, esso si inizializza automaticamente a 0.

Se impostate la dimensione in init() con ArrayResize(), questo array non avrà alcuna dimensione in start(), dovreste specificare la dimensione nella funzione in cui l'array sarà utilizzato, e lo stesso vale per l'utilizzo dell'array nelle funzioni utente. Se l'array è passato come parametro, la sua dimensione non dovrebbe essere specificata nella funzione definita dall'utente, ma in start() (o in init() se la funzione è chiamata dall'initiate), quindi nella funzione chiamata. L'eccezione sono gli array di indicatori, la cui dimensione è assegnata uguale a Bars quando lo stato dell'indicatore è assegnato al nome dell'array in SetIndexBuffer(), e cambia in accordo con il cambiamento di Bars.

Quindi, caro, le tue spiegazioni non solo sono inutili ma anche dannose perché tolgono tempo alla gente per scoprire la verità.

Urain, stai ingannando le persone. Gli array MQL, compresi gli array locali, hanno persistenza - la loro dimensione e il loro contenuto sono conservati tra le chiamate di funzione e i tick. Si prega di leggere l'Aiuto. Gli array globali si comportano allo stesso modo, l'unica differenza è che hanno uno scopo globale. Un array distribuito in una funzione init è leggibile in start e altrove. Consiglierei di aprire un nuovo thread, se qualcuno ha domande su alcuni aspetti della programmazione MQL. Mi piacerebbe vedere conversazioni più sostanziali sulle previsioni qui. ;-)

Se hai delle domande, filtra le informazioni da questo forum ;-). Se descrivi il problema in modo più dettagliato (puoi farlo di persona), noi (io) capiremo come implementarlo meglio.

Motivazione: