una strategia di trading basata sulla teoria dell'onda di Elliott - pagina 273

 
<br / translate="no"> Il calcolo di Hearst per 3000 barre in MQL4 mi ha preso circa 40 millisecondi. Probabilmente intendiamo cose diverse (la parola calcolo), quindi se puoi mandarmi l'algoritmo del tuo calcolo (preferibilmente) o il codice in MathCad (se necessario posso anche usare Matcad).

In ogni caso c'è qualcosa di sbagliato nei calcoli. La mia email è rosh AT metaquotes DOT ru.


Forse mi sono di nuovo espresso male. Non intendevo un solo campione - 600 conteggi per 20 minuti. Approssimativamente 500 iterazioni, cioè primo campione, per la zona morta [0; 100], secondo [0; 101], poi [0; 102], [0; 103].... [0; 600]. Inoltre, questo è MathCAD, e i prodotti di questa classe non sono i migliori in termini di calcolo ottimale. Gli sviluppatori hanno introdotto una seria ottimizzazione solo nella versione 13 che sto usando. Prima anche la soluzione numerica di una semplice equazione poteva richiedere molto tempo.

Il mio calcolo dell'indice è leggermente diverso da quello che si può trovare nelle fonti disponibili, mentre non mi discosto dall'ideologia classica di Hearst. In altre parole, non posso dire che calcolo le statistiche per nome. :о) L'algoritmo stesso è scritto in modo ottimale, controllato e ricontrollato.

PS: Grazie mille per la vostra disponibilità ad aiutare. È molto probabile che sia necessario. Condividerò l'algoritmo, se posso implementare un meccanismo migliore nel prossimo futuro. Ho un paio di idee.
 
<br/ translate="no"> Il calcolo di Hearst per 3000 barre in MQL4 mi ha preso circa 40 millisecondi. Molto probabilmente intendiamo cose diverse con esso (la parola calcolo), quindi se puoi mandarmi in parole generali il tuo algoritmo di calcolo (preferibilmente) o il codice in MathCad (se necessario userò anche Matcad).


Ci sono parecchi algoritmi. Ho trovato un calcolo dello spettro di singolarità nel mio archivio. È descritto concettualmente in molti libri, per esempio da Feder, Bozhokin e molti altri. Il numero di iterazioni per un campione è abbastanza decente. In particolare, un processo iterativo di esponenziazione viene eseguito per stimare il "movimento" contribuito da ogni intervallo, rivelando diversi tipi di comportamento del segnale (ad esempio, gli intervalli "ora" con deviazioni maggiori dalla tendenza contribuiscono più "movimento", ecc.)

Puoi leggere tutto, ma lascia che ti ricordi la caratteristica principale - il valore alfa, al quale F(alfa) raggiunge il massimo, è l'indice Hurst generalizzato (a volte, il parametro skyline)


Calcolo per il campione di 500 campioni. L'indice Hurst generalizzato è uguale a 0,6.


Ed ecco la serie stessa (fino alla linea rossa verticale) per la quale è stato fatto il calcolo e cosa è successo dopo.



Non sono entrato nel "business" (anche se è molto interessante) perché non ho ancora capito alcune cose, in particolare il metodo di rimozione delle tendenze locali. Utilizzando metodi diversi si ottengono caratteristiche diverse della serie. Un'altra particolarità è che richiede campioni decenti.

a Rosh, solandr

Ho una domanda per il futuro. Mi preoccupa il fatto che l'Expert Advisor sarà "fuori uso" per un tempo oggettivamente lungo e quindi non sarà impegnato nel processo di monitoraggio degli ordini correnti. Suppongo che anche chiamare lo script non servirà - l'Expert Advisor aspetterà fino a quando lo script non verrà eseguito. Così mi sono chiesto se devo introdurre una variabile esterna (o globale, cosa è meglio?), per esempio:

extern string SIGNAL_FORECAST



Quando ricevo un segnale che non c'è una previsione per qualche motivo, l'Expert Advisor imposta il valore appropriato di questo parametro con il requisito per la sua esecuzione. In questo momento, qualche indicatore (non fa previsioni ma ha funzioni di calcolo) legge questa variabile in continuazione. Non appena riceve un ordine di esecuzione della previsione, inizializza il calcolo, ma prima scrive "calcolo iniziato" nella variabile. Dopo l'esecuzione "calcolo fatto". L'Expert Advisor legge che il calcolo viene fatto ....

Funzionerà tutto? Cioè l'Expert Advisor sarà teoricamente sollevato dall'onere di calcolare tutto?

 
Ciao Sergey. Mi sembra che il modo migliore per farlo sia sotto forma di bundle Expert+Expert o Expert+Script. La seconda opzione è preferibile, credo.
Expert Advisor esegue i calcoli e salva il flag del segnale e i relativi parametri in un insieme di variabili globali alla ricezione del segnale. Lo script apre gli ordini secondo le istruzioni ricevute e li implementa. Lo script gira in un ciclo infinito, cambiando la frequenza di questo ciclo stesso a seconda della situazione. L'Expert Advisor, naturalmente, funziona dopo il completamento dei calcoli, con l'arrivo di un tick.

L'indicatore non è adatto qui perché (per quanto ne so) i suoi calcoli vengono interrotti quando arriva un nuovo tick.

In ogni caso, ho deciso di seguire esattamente questo schema.
 
Gli esperti, gli script e gli indicatori sono calcolati in MT4 in parallelo, cioè allo stesso tempo con l'appropriata condivisione delle risorse di CPU disponibili. È possibile organizzare 2 Expert Advisor, uno dei quali calcolerà per diverse ore, e l'altro sarà un esecutore, che attraverso le variabili globali del terminale riceverà i risultati del precedente ciclo di calcoli del primo Expert Advisor ed effettuerà le operazioni commerciali necessarie. Entrambi gli Expert Advisors lavoreranno indipendentemente (in termini di esecuzione) l'uno dall'altro. Il primo Expert Advisor verrà avviato per alcune ore all'arrivo del primo tick, e il secondo verrà avviato ad ogni nuovo tick, o, per esempio, con un periodo specificato (nel caso di un ciclo infinito con la pausa necessaria).
 
Ciao Sergey. Mi sembra che il modo migliore per farlo sia sotto forma di bundle Expert+Expert o Expert+Script. La seconda opzione è preferibile, credo. <br/ translate="no">.

La seconda variante ha l'inconveniente di dover passare manualmente questo stesso script al grafico ad ogni prossimo lancio del terminale. Ci stancheremo molto rapidamente. È meglio usare la prima variante. Potreste anche organizzare esattamente lo stesso ciclo infinito nella funzione start() come nello script.
 
a Yurixx, solandr

Grazie mille per il consiglio. Non lavoro con MT da molto tempo, mentre facevo ricerche ho dimenticato che gli script possono essere eseguiti in un ciclo e non ho nemmeno pensato a due Expert Advisors.

Ma d'altra parte non si può impostare un tester su un tale astrolabio, giusto? Anche se probabilmente non è così cruciale.

Grazie ancora. :о)))
 
Cosa succede se si esegue uno script dall'indicatore? In questo caso, l'arrivo di nuovi dati all'indicatore interromperà ancora i calcoli?
 
2 grasn:
Tuttavia, il tuo tempo di calcolo è troppo lungo. Penso che in questa situazione sarebbe meglio farli fuori da MT (dopo tutto C è 17 volte più veloce di MQL4). Non so se Matcad può generare codice C, ma sarebbe utile. Il risultato verrebbe scritto in un file e letto dall'Expert Advisor. Questo file può essere una sorta di istruzioni passo dopo passo per l'Expert Advisor (in generale il trasferimento di dati a MT non mi ha interessato molto finora, forse ci sono altri modi). Avendo scritto l'"istruzione" per un certo intervallo di storia, si può usare il tester. Ma il tester supporterà Expert Advisor+Expert o Expert Advisor+Script? Ho il sospetto che non sarà così.
 
A proposito, per quanto ho capito, i calcoli non vengono interrotti ora. Viene eseguita sui valori dei dati all'inizio del calcolo, dopo di che il terminale passa ai dati freschi.
 
a Candid

2 grasn:
Tuttavia, il tuo tempo di calcolo è troppo lungo. Penso che in questa situazione sarebbe meglio farli fuori da MT (dopo tutto C è 17 volte più veloce di MQL4). Non so se Matcad può generare codice C, ma sarebbe utile. Il risultato verrebbe scritto in un file e letto dall'Expert Advisor. Questo file può essere una sorta di istruzioni passo dopo passo per l'Expert Advisor (in generale il trasferimento di dati a MT non mi ha interessato molto finora, forse ci sono altri modi). Avendo scritto l'"istruzione" per un certo intervallo di storia, si può usare il tester. Ma il tester supporterà Expert Advisor+Expert o Expert Advisor+Script? Ho il sospetto che non sarà così.


È vero, il tempo di calcolo è piuttosto lungo, me ne occuperò. MathCAD non può generare codice C, ma MathLab può farlo (se non stanno mentendo ovviamente :o) Il test in MT è necessario per ottenere risultati più o meno fondati dal punto di vista del commercio (e non test di previsioni multiple in MathCAD, anche se positivo). Dopo aver testato in MT penserò a cosa fare dopo, incluso lo spostamento dei calcoli su un server separato, su quello che ho scritto prima. Ma è come per gli scalatori, più nodi ci sono sulla corda, peggio è.
Motivazione: