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

 
Probabilmente in tempo reale tali cifre sono accettabili (anche se non c'è limite alla perfezione :), ma con i test di storia, per quanto ho capito, la situazione è piuttosto difficile, anche con un campione breve. Spero che non sospettiate che io sia un oppositore dell'uso dei calcoli al computer? :). Solo dopo aver letto il thread ho avuto l'impressione che sarebbe auspicabile accelerare notevolmente l'algoritmo.

Naturalmente non c'è dubbio che ci piacerebbe avere un algoritmo più veloce per i calcoli, soprattutto per i test storici, ma d'altra parte questa metodologia non richiede un multimilione di corse sul tester, come è richiesto per il fitting tradizionale su dati storici, che la maggior parte degli utenti MT4 ama usare assiduamente attaccando i creatori di questo prodotto (Date più pillole avide!!!); o). È necessario rendersi conto che una corsa di Expert Advisor, creato da questa metodologia in termini di applicabilità dei risultati sarà consapevolmente superiore a ottimizzato da 10000000000 corse EA, i risultati di cui il suo autore è in grado di aspettare per sempre in questa vita;o))). Lo dico solo in base alla mia esperienza di creazione di un sistema di indovinelli casuali descritto sopra in questo thread all'inizio. L'ottimizzazione di un Expert Advisor basato su metodi di matstatistica consiste principalmente in un miglioramento logico dell'algoritmo con parametri minimi da adattare (ogni parametro ha anche un'area limitata di variazione), ma non nella ricerca di alcuni valori "ottimali" di diversi oscillatori e medie mobili e alcuni rapporti trovati sul massimo globale nello spazio n-dimensionale come richiesto per l'adattamento della storia standard. Il risultato ottenuto mostrato nei post precedenti è stato probabilmente ottenuto conducendo non più di cinquanta esecuzioni complete dell'algoritmo sulla storia disponibile. Dopo ogni esecuzione, l'algoritmo è stato raffinato e migliorato. E al momento attuale sto ancora facendo la stessa cosa. Faccio 2-3 corse al giorno, analizzo i risultati e miglioro l'algoritmo. Non ho ancora finito del tutto, ma ho già lanciato la prima versione più o meno funzionante sull'account reale. Non ho ancora eseguito alcun affare su di esso. L'Expert Advisor sta aspettando che l'euro scenda.
 
solandr, per accelerare/ottimizzare il tempo di test - hai usato un indicatore personalizzato o array contenenti X,X^2, e così via?
 
Non uso gli indicatori personalizzati come ho scritto che ogni chiamata di esso viene timbrata nel log del tester. Ho introdotto un indicatore dei livelli di Murray nell'Expert Advisor stesso. Non ho ancora inventato gli array che accelerano specificamente i calcoli dell'Expert Advisor. Francamente, non so cosa si possa inventare. Le informazioni sul calcolo delle barre precedenti (bordi del canale) sono naturalmente memorizzate negli array e non vengono ricalcolate su una nuova barra. Penso di aver praticamente esaurito tutto il mio algoritmo in termini di velocità e non sarò in grado di velocizzarlo ulteriormente. Ma non mi è molto chiaro riguardo agli array che contengono X,X^2. In che misura trovare valori su un grande array di X,X^2 può ridurre il tempo di calcolo (quadratura)? Avete dati di confronto computazionale? Sarebbe interessante dargli un'occhiata.
 
Cioè per Y=A*X+B su ogni nuova barra per ogni nuovo canale?

Ora ho guardato e capito: è possibile ottimizzare l'EA. Il guadagno dovrebbe essere (N+1)/2 , dove N è la lunghezza massima del canale (la tua versione attuale usa 300 - quindi il guadagno dovrebbe essere 150 volte).
 
Per quanto ho capito tu stai proponendo di organizzare un array cubico, ogni riga del quale sarà qualche milione e in esso cercare risposte pronte Y con 3 diversi parametri A,X,B? O non sto capendo bene l'idea?
 
No, propongo solo di fare il calcolo su ogni barra solo una volta, e poi usare quel valore N volte (si forma un array, senza dubbio :))
 
Come è possibile, se abbiamo canali su ogni barra che si muovono leggermente, cambiando i loro confini?
 
Non ho potuto sostituire completamente l'algoritmo (devo ancora fare del lavoro serio), ma ho potuto incollare un po' di algoritmo ottimizzato in uno regolare. Significa che tutti i calcoli preliminari per l'algoritmo ottimizzato sono fatti, ma il canale è calcolato nel solito modo. Ecco il registro:
2006.07.04 23:04:37 ChannelStDev3 GBPCHF,M15: Execute deinit()<br / translate="no"> 2006.07.04 23:04:37 ChannelStDev3 GBPCHF,M15: Normal script time+optimization579 ms
2006.07.04 23:04:36 ChannelStDev3 GBPCHF,M15: a=-0.0001 b=2.2628 lastBar1 firstBar=105 StDev=0.001
2006.07.04 23:04:36 ChannelStDev3 GBPCHF,M15: 140 canali corrispondenti al criterio sono stati trovati su 1000 barre
2006.07.04 23:04:36 ChannelStDev3 GBPCHF,M15: Sono in 1 serie
2006.07.04 23:04:36 ChannelStDev3 GBPCHF,M15: inizializzato
2006.07.04 23:04:35 ChannelStDev3 GBPCHF,M15: caricato con successo
2006.07.04 23:04:28 ChannelStDev GBPCHF,M15: rimosso
2006.07.04 23:04:28 ChannelStDev GBPCHF,M15: deinizializzato
2006.07.04 23:04:28 ChannelStDev GBPCHF,M15: esecuzione di deinit()
2006.07.04 23:04:28 ChannelStDev GBPCHF,M15: Tempo di script normale 547 ms
2006.07.04 23:04:27 ChannelStDev GBPCHF,M15: a=-0.0001 b=2.2628 lastBar1 firstBar=105 StDev=0.001
2006.07.04 23:04:27 ChannelStDev GBPCHF,M15: 140 canali corrispondenti al criterio sono stati trovati su 1000 barre


Così, il tempo dell'algoritmo ottimizzato dovrebbe essere circa (579-547)=32 millisecondi. Approssimativamente, il guadagno è 547/32=17 volte. Questo non è certamente 500 volte come ho supposto, è ancora necessario controllare. Forse non ho tenuto conto delle procedure incomprimibili che richiedono più tempo del previsto. Cercherò di controllare domani.
 
Misurato i due blocchi di calcolo separatamente.
2006.07.05 14:34:17 ChannelStDev3 EURJPY,M15: deinitialized<br/ translate="no"> 2006.07.05 14:34:17 ChannelStDev3 EURJPY,M15: Execute deinit()
2006.07.05 14:34:17 ChannelStDev3 EURJPY,M15: a=0.0071 b=146.7474 lastBar1 firstBar=50 StDev=0.1056
2006.07.05 14:34:17 ChannelStDev3 EURJPY,M15: Trovati 820 canali che soddisfano il criterio su 1000 barre
2006.07.05 14:34:17 ChannelStDev3 EURJPY,M15: Sono in 8 serie
2006.07.05 14:34:17 ChannelStDev3 EURJPY,M15: Tempo di algoritmo convenzionale390 ms
2006.07.05 14:34:17 ChannelStDev3 EURJPY,M15: tempo dell'algoritmo ottimizzato0 ms
2006.07.05 14:34:17 ChannelStDev3 EURJPY,M15: inizializzato
2006.07.05 14:34:15 ChannelStDev3 EURJPY,M15: caricato con successo


Resta da vedere se il blocco ottimizzato calcolerà correttamente. Allo stesso tempo ho scoperto che lavorare con gli oggetti richiede un tempo considerevole (quasi un terzo della variante non ottimizzata) - disegnare nel backtest è indesiderabile. Anche se
 
Rifatto, con Print
<br/ translate="no"> 14:54:04 ChannelStDev3 EURJPY,M15: k=64 a=0.002 b=146.8379 sigma=-1370529.6008
14:54:04 ChannelStDev3 EURJPY,M15: k=63 a=0.0025 b=146.829 sigma=-1348950.2071
14:54:04 ChannelStDev3 EURJPY,M15: k=62 a=0.0029 b=146.8197 sigma=-1327370.2369
14:54:04 ChannelStDev3 EURJPY,M15: k=61 a=0.0033 b=146.8105 sigma=-1305795.8008
14:54:04 ChannelStDev3 EURJPY,M15: k=60 a=0.0038 b=146.8016 sigma=-1284233.323
14:54:04 ChannelStDev3 EURJPY,M15: k=59 a=0.0042 b=146.7921 sigma=-1262664.9732
14:54:04 ChannelStDev3 EURJPY,M15: k=58 a=0.0046 b=146.7844 sigma=-1241133.5221
14:54:04 ChannelStDev3 EURJPY,M15: k=57 a=0.005 b=146.7769 sigma=-1219610.1431
14:54:04 ChannelStDev3 EURJPY,M15: k=56 a=0.0055 b=146.7678 sigma=-1198064.4492
14:54:04 ChannelStDev3 EURJPY,M15: k=55 a=0.0058 b=146.7611 sigma=-1176563.0841
14:54:04 ChannelStDev3 EURJPY,M15: k=54 a=0.0062 b=146.754 sigma=-1155059.1345
14:54:04 ChannelStDev3 EURJPY,M15: k=53 a=0.0066 b=146.7469 sigma=-1133558.635
14:54:04 ChannelStDev3 EURJPY,M15: k=52 a=0.007 b=146.7398 sigma=-1112061.7881
14:54:04 ChannelStDev3 EURJPY,M15: k=51 a=0.0073 b=146.7342 sigma=-1090593.6002
14:54:04 ChannelStDev3 EURJPY,M15: k=50 a=0.0074 b=146.7327 sigma=-1069186.857
14:54:04 ChannelStDev3 EURJPY,M15: k=49 a=0.0074 b=146.733 sigma=-1047808.1245
14:54:04 ChannelStDev3 EURJPY,M15: k=48 a=0.0073 b=146.7346 sigma=-1026446.748
14:54:04 ChannelStDev3 EURJPY,M15: k=47 a=0.0069 b=146.7404 sigma=-1005141.2611
14:54:04 ChannelStDev3 EURJPY,M15: k=46 a=0.0064 b=146.7494 sigma=-983876.6836
14:54:04 ChannelStDev3 EURJPY,M15: Tempo algoritmo ottimizzato 31 ms
14:54:05 ChannelStDev3 EURJPY,M15: Tempo algoritmo ordinario 875 ms
14:54:05 ChannelStDev3 EURJPY,M15: Sono in 6 serie
14:54:05 ChannelStDev3 EURJPY,M15: Trovati 824 canali che soddisfano i criteri, oltre 1000 barre
14:54:05 ChannelStDev3 EURJPY,M15: a=0.0064 b=146.7494 lastBar1 firstBar=46 StDev=0.1044
14:54:05 ChannelStDev3 EURJPY,M15: Execute deinit()
14:54:05 ChannelStDev3 EURJPY,M15: deinitialized
14:54:05 ChannelStDev3 EURJPY,M15: removed


Problema con sigma però :)