Vi è un grande corpo di letteratura sul successo della domanda di algoritmi evolutivi in generale, e l'algoritmo genetico in particolare, ai mercati finanziari. Tuttavia, mi sento a disagio ogni volta che la lettura di questa letteratura. Gli algoritmi genetici possono over-adattare i dati esistenti. Con così tante combinazioni, è facile a venire con alcune regole che funzionano. Esso non può essere robusto e non ha una spiegazione coerente del perché questa regola funziona e queste regole dont al di là della mera (circolare) argomento che funziona perché il test mostra che funziona. Qual è l'attuale consenso sull'applicazione dell'algoritmo genetico in finanza chiesto 18 Feb 11 in 09:00 Ive ha lavorato presso un hedge fund che ha permesso strategie GA-derivati. Per motivi di sicurezza, è necessario che tutti i modelli presentati molto prima della produzione per assicurarsi che ancora lavoravano nei estensivi. Quindi ci potrebbe essere un ritardo fino a diversi mesi prima di un modello sarebbe stato permesso di correre. La sua anche utile per separare l'universo di esempio utilizzare un mezzo casuale dei possibili stock per analisi GA e l'altra metà per backtests conferma. E 'questo un processo diverso da quello che avrebbe usato prima di fidarsi di qualsiasi altra strategia di trading (Se è così, non mi è chiaro che cosa si guadagna da fare un modello GA utilizzando i dati al tempo t, poi prova fino tN prima affidandola, rispetto all'utilizzo dei dati al tempo tn, testando da TN a T e utilizzare immediatamente.) ndash Darren Cook 23 novembre 11 a 2:08 DarrenCook un problema che vedo è che se si prova da TN a T e trovare doesn39t funziona bene, poi andare you39re per creare un altro modello che viene testato in quello stesso periodo di tempo tN a t (all'infinito). Che introduce la probabilità di quotmetaquot-overfitting durante il processo di creazione del modello. ndash Chan-Ho Suh 22 luglio 15 a 5:24 quanto riguarda i dati-snooping, se un GA è implementato correttamente, che shouldn39t essere una preoccupazione. funzioni di mutazione sono specificamente inclusi per la ricerca in modo casuale attraverso lo spazio problema, ed evitare di snooping dei dati. Detto, trovando i livelli mutazione giusti può essere qualcosa di un'arte e se i livelli di mutazione sono troppo bassi, quindi it39s come se la funzione wasn39t implementata in primo luogo. ndash BioinformaticsGal 6 Aprile 11 alle 16:28 BoinformaticsGal ho don39t capire come l'inserimento di funzioni di mutazione ci permette di evitare di dati snooping. Al termine della ricerca, there39s una funzione di fitness che rende ogni generazione 39fit39 i dati sempre più. O sto non ho capendo correttamente ndash Vishal Belsare 15 settembre 11 alle 18:05 Theres un sacco di persone qui a parlare di come il gas sono empirici, non hanno fondamenti teorici, sono scatole nere, e simili. Mi permetto di dissentire C'è un intero ramo di economia dedicati a guardare i mercati in termini di metafore evolutive: Evolutionary Economics consiglio vivamente il libro Dopfer, I fondamenti evolutivi di Economia, come un intro. cambridge. orggbknowledgeisbnitem1158033sitelocaleenGB Se la vostra visione filosofica è che il mercato è fondamentalmente un casinò gigante, o un gioco, poi un GA è semplicemente un black-box e doesnt hanno alcun fondamento teorico. Tuttavia, se la vostra filosofia è che il mercato è una ecologia di sopravvivenza-of-the-forte, poi a gas hanno un sacco di fondamenti teorici, e il suo perfettamente ragionevole per discutere di cose come la speciazione aziendale, ecologie di mercato, genomi di portafoglio, i climi di trading, e la piace. ha risposto 5 Apr 11 in 15:42 In breve tempo scale è più un casinò. Come la natura, in effetti. ndash quantdev 5 Apr 11 in 20:46 quantdev, il problema è che GA-- come qualsiasi altro methods-- quantitativa funziona solo con scala di tempo breve, se non sbaglio I39m. Quindi, se il mercato azionario è più simile a un mercato azionario, quindi GA sarebbe del tutto inutile. ndash Graviton 6 Aprile 11 alle 8:56 Graviton. There39s alcuna ragione intrinseca per cui un programma couldn39t un GA a fare analisi a intervalli di tempo più lunghi. Il dominio del tempo di un GA è misurata in generazioni, non anni o giorni. Quindi, si potrebbe semplicemente bisogno di definire una popolazione contenente individui i cui generazioni sono anni o decenni lunghi (es. Corporazioni). C'è stato sicuramente un lavoro che si avvicina la definizione 39genomes39 aziendale dai loro processi di produzione. In tale modello, si potrebbe ottimizzare per un modello di business aziendale efficiente, dato un particolare clima di mercato. Non It39s un modello di portafoglio di prezzo delle azioni, però. ndash BioinformaticsGal 6 Aprile 11 alle 15.12 Supponendo di evitare distorsioni dei dati-snooping e tutti i potenziali insidie di utilizzare il passato per predire il futuro, confidando algoritmi genetici per trovare la giusta soluzione bolle più o meno verso la stessa scommessa che si fanno quando si gestire attivamente un portafoglio, sia quantitativamente o discrezionale. Se si crede in efficienza del mercato quindi aumentando i costi di transazione da una gestione attiva è illogico. Se, tuttavia si ritiene che ci sono ampli modelli psicologici strutturali o difetti da sfruttare e la vincita vale il tempo e denaro per la ricerca e l'attuazione di una strategia la scelta più logica è la gestione attiva. Esecuzione di una strategia di GA derivata è una scommessa implicita contro l'efficienza del mercato. Youre fondamentalmente dicendo Penso che ci siano errori di valutazioni che si verificano da qualche ragione (masse di persone irrazionali, fondi comuni di allevamento a causa di mis-allineati incentivi, etc.) e l'esecuzione di questo GA può ordinare questa massa di dati via d'uscita più veloce che posso . risposto 18 febbraio 11 alle 15:49 gestire manualmente un portafoglio attivo implica l'utilizzo di tutte le informazioni che abbiamo e derivare una conclusione logica sul mercato e quindi eseguire strategie su di esso si tratta di un'attività razionale. OTOH, utilizzando GA sta usando uno strumento di black-box abbiamo can39t spiegare il risultato che ne deriva da eventuali principi accettati. I39m non troppo sicuro se questi due sono in realtà la stessa. ndash Graviton 18 febbraio 11 alle 15:57 Graviton Si, pero 'considerare le somiglianze tra GA39s e noi come gli esseri umani conoscere i mercati, sviluppare strategie, imparare dagli errori, e di adattarsi alle mutevoli condizioni di mercato. Quando si ricerca ciò che vincere e perdere le scorte hanno in comune, o ciò che di volume e di prezzo i modelli creano buone mestieri, o quale modello è il più preciso per la valutazione dei derivati quello che stai facendo è di data mining il passato in un certo senso. Quando le condizioni di mercato si cambiano o scambiare nuove strategie o eventualmente uscire dal mercato. Se ci sono spigoli sfruttabili nel mercato allora l'unica differenza tra voi e un GA è ndash Joshua Chance 18 11 Feb alle 16:46 Graviton (in un senso molto ampio), è che si dispone di una narrazione, una storia di andare con la vostra strategia . Noi esseri umani rischio di trovare un modello apparentemente ricorrente e quindi la razionalizzazione e la creazione di una narrazione. GA39s rischiano la stessa cosa, solo i loro potenzialmente falsi parole utilizzare il modello doesn39t, usano la matematica e la logica. ndash Joshua Chance 18 febbraio 11 alle 16:54 Il ritardo Thomas Cover. (Probabilmente il principale Informazioni teorico della sua generazione), considerato universale si avvicina a cose come la compressione dei dati e allocazioni di portafoglio come veri algoritmi genetici. L'evoluzione non ha parametri per adattarsi o in treno. Perché i veri algoritmi genetici approcci universali non fare ipotesi circa la distribuzione sottostante dei dati. Essi non fanno alcun tentativo di predire il futuro da schemi o qualsiasi altra cosa. L'efficacia teorica di universale si avvicina (presentano notevoli difficoltà di implementazione vedere il mio recente domanda: Geometria per portafogli universali) seguire da loro di fare ciò che le richieste di evoluzione. Il Dont più veloce, più intelligente, più forte o necessariamente sopravvivere nella prossima generazione. L'evoluzione favorisce quel gene, organismo, meme, portafoglio, o algoritmo di compressione dei dati posizionata per più facilmente adattarsi a qualunque cosa succede dopo. Inoltre, poiché questi approcci fanno fare alcuna ipotesi e funzionano non parametrico, si può prendere in considerazione tutte le prove, anche su tutti i dati storici, come out-of-sample. Certamente hanno dei limiti, certamente cant lavorano per ogni tipo di problema che dobbiamo affrontare nel nostro dominio, ma accidenti, quanto un modo interessante per pensare alle cose. risposto 14 luglio 13 alle 15:42 Ebbene, l'obiettivo di un algo genetica è quello di trovare la soluzione migliore senza passare attraverso tutti i possibili scenari perché sarebbe troppo lungo. Così, naturalmente, è montaggio di curva, questo è l'obiettivo. rispose 6 11 Mar alle 20:40, ma vi è una differenza significativa tra overfitting campione (cattivo) e il montaggio della popolazione (buono). È per questo che molti suggeriscono che si cross-convalidare l'algoritmo con il test out-of-sample. ndash Joshua 17 luglio 13 a 2:34 tua risposta 2017 Stack Exchange, IncSnowCron Genetic Algorithm nel forex trading sistemi che utilizzano algoritmi genetici per creare proficua strategia di trading Forex. Genetic Algorithm nella corteccia Neural Networks Software Feedforward Backpropagation Neural Network Application per i calcoli genetica sulla base di trading Forex. Questo esempio utilizza i concetti e le idee del precedente articolo, quindi si prega di leggere Neural Network Genetic Algorithm in FOREX Trading Systems prima, anche se non è obbligatorio. A proposito di questo testo Prima di tutto, si prega di leggere il disclaimer. Questo è un esempio di utilizzo di reti neurali Cortex Software funzionalità algoritmo genetico, non è un esempio di come fare trading profittevole. Io non sono il vostro guru, né dovrei essere responsabile per le perdite. Cortex reti neurali software ha reti neurali in esso, e FFBP abbiamo discusso prima è solo un modo di scegliere un strategie di trading forex. Si tratta di una buona tecnica, potente e se applicato correttamente, molto promicing. Tuttavia, si ha un problema - insegnare tne Neural Network. abbiamo bisogno di conoscere l'output desiderato. E 'piuttosto facile da fare quando facciamo approssimazione di funzioni, dobbiamo solo prendere il valore reale di una funzione, perché sappiamo quello che dovrebbe essere. Quando facciamo la previsione rete neurale. usiamo la tecnica (descritta in precedenti articoli) di insegnare la Rete Neurale sulla storia, ancora una volta, se si prevede, ad esempio, un tasso di cambio, sappiamo che (durante l'allenamento) ciò che la previsione corretta è. Tuttavia, quando stiamo costruendo un sistema di negoziazione, non abbiamo idea di quello che la decisione di trading corretto è, anche se sappiamo che il tasso di cambio Come il dato di fatto, abbiamo molte strategie di trading forex che possiamo usare in qualsiasi punto del tempo, e abbiamo bisogno di trovare un buon compromesso - come cosa dovremmo mangiare come l'output desiderato della nostra rete neurale Se avete seguito il nostro articolo precedente, si sa, che abbiamo truffato per affrontare questo problema. Ci ha insegnato la rete neurale da fare (indicatore di base o il tasso di cambio) la previsione del tasso di cambio, e quindi utilizzato questa previsione per fare trading. Poi, al di fuori della parte rete neurale del programma, abbiamo preso una decisione su cui Neural Network è il migliore. Gli algoritmi genetici possono affrontare questo problema direttamente, si può risolvere il problema indicato come trovare i migliori segnali di trading. In questo articolo ci accingiamo ad utilizzare Cortex Reti Neurali Software per creare un tale programma. Uso genetici algoritmo genetico algoritmi sono molto ben sviluppato, e molto diversificata. Se volete imparare tutto su di loro, ti suggerisco di usare Wikipedia, come questo articolo è solo di ciò che Cortex Neural Networks Software in grado di fare. Avendo Cortex reti neurali software. siamo in grado di creare una rete neurale che richiede un po 'di input, ad esempio, i valori di un indicatore, e produce un output, ad esempio, segnali di trading (comprare, vendere, detenere.) e fermare la perdita di livelli di prendere profitto per le posizioni da aprire. Naturalmente, se seminiamo pesi questa rete neurale s a caso, i risultati di negoziazione sarà terribile. Tuttavia, diciamo che abbiamo creato una dozzina di tali NNS. Poi possiamo provare le prestazioni di ciascuno di loro, e scegliere il migliore, il vincitore. Questa è stata la prima generazione di NNS. Per continuare con la seconda generazione, dobbiamo permettere che il nostro vincitore di procreare, ma per evitare di ottenere copie identiche, permette di aggiungere un po 'di rumore casuale per le sue descentants pesi. Nella seconda generazione, abbiamo il nostro vincitore di prima generazione e le sue imperfette copie (mutato). Consente di fare di nuovo il test. Avremo un altro vincitore, che è meglio di qualsiasi altra rete neurale nella generazione. E così via. Abbiamo semplicemente permettiamo vincitori per riprodursi, ed eliminare perdenti, proprio come nella vera e propria evoluzione della vita, e noi ci metteremo il nostro Neural Network best-trading. senza alcun knowlege prima su ciò che il sistema di scambio (algoritmo genetico) come dovrebbe essere. Neural Network Algoritmo genetico: Esempio 0 Questo è il primo esempio algoritmo genetico. e molto semplice. Ci accingiamo a camminare attraverso un passo alla volta, per imparare tutti i trucchi che esempi riportati di seguito verranno utilizzati. Il codice ha commenti in linea, così lascia solo concentrarsi sui momenti chiave. In primo luogo, abbiamo creato una rete neurale. Sta usando pesi casuali, e non era ancora insegnato. Poi, nel ciclo, facciamo 14 copie, utilizzando MUTATIONNN fumction. Questa funzione crea una copia di una sorgente Neural Network. aggiungendo valori casuali da 0 a (nel nostro caso) 0.1 a tutti i pesi. Teniamo maniglie per risultante 15 NNS di un array, siamo in grado di farlo, come maniglia è solo un numero intero. La ragione per cui usiamo 15 NNS non ha nulla a che fare con il commercio: Cortex Neural Networks Software in grado di tracciare fino a 15 linee su un grafico contemporaneamente. Possiamo usare diversi approcci alla sperimentazione. In primo luogo, possiamo utilizzare il set di apprendimento, tutto in una volta. In secondo luogo, siamo in grado di testare su, diciamo, 12000 resords (su 100000), e camminare attraverso il set di apprendimento, dall'inizio alla fine. Che renderà learnigs diverso, come avremo modo di cercare Neural Network s che sono redditizi in un dato parte dei dati, non solo l'intero set. Il secondo approccio ci può dare problemi, se i dati cambiano, dall'inizio alla fine. Poi la rete si evolverà, ottenendo capacità di commerciare alla fine del set di dati, e perdere la capacità di commerciare al suo inizio. Per risolvere questo problema, stiamo andando a prendere casuali frammenti 12000 record da dati e mangimi per la rete neurale. è semplicemente un ciclo senza fine, come 100000 cicli non saranno mai raggiunti presso la nostra velocità. Di seguito si aggiunge un bambino per ogni rete, con pesi leggermente diverse. Si noti, che per 0,1 mutazione Tange non è l'unica scelta, come dato di fatto, anche questo parametro può essere ottimizzata utilizzando algoritmi genetici. NNS appena creati vengono aggiunti dopo 15 quelli già esistenti. In questo modo abbiamo 30 NNS di un array, 15 vecchi e 15 nuovi. Poi ci accingiamo a fare il prossimo ciclo di test, e per uccidere i perdenti, da entrambe le generazioni. Per fare il test, applichiamo Neural Network i nostri dati, per produrre risultati, e quindi chiamare la funzione di test, che utilizza queste uscite per simulare trading. I risultati di negoziazione sono utilizzate per DeSide, che NNS sono i migliori. Usiamo un intervallo di record nUlteriori, da nStart a nStart nUlteriori, dove nStart è un punto casuale all'interno set di apprendimento. Il codice che segue è un trucco. Il motivo per cui lo usiamo è quello di illustrare il fatto, che algoritmo genetico può creare algoritmo genetico. ma non sarà necessariamente sarà la migliore, e anche, a suggerire, che possiamo migliorare conseguenza, se implichiamo alcune limitazioni al processo di apprendimento. E 'possibile che il nostro sistema commerciale funziona molto bene su lunghi traffici, e molto povera con breve, o viceversa. Se, per esempio, lungo i commerci sono molto buoni, questo algoritmo genetico può vincere, anche con grandi perdite su brevi commerci. Per evitare questo, assegniamo più peso a lunghi mestieri in dispari e a brevi mestieri in anche cicli. Questo è solo un esempio, non vi è alcuna garanzia che migliorerà qualcosa. Più sottostante, nella discussione su correzioni. Tecnicamente, non dovete farlo, o si può fare diversamente. Aggiungere profitto per un array ordinato. Esso restituisce una posizione di inserimento, quindi usiamo questa posizione per aggiungere gestire Neural Network, l'apprendimento e la sperimentazione profitti per gli array non ordinato. Ora abbiamo i dati per i seguenti Rete Neurale allo stesso indice di matrice come il suo profitto. L'idea è quella di arrivare alla gamma di NNS, ordinati per redditività. Come matrice è sortes dal profitto, per rimuovere 12 reti, che sono meno redditizie, abbiamo solo bisogno di togliere NNS 0 a 14 decisioni di trading si basa sul valore del segnale Neural Network, da questo punto di vista il programma è identico a esempi articolo precedente. FOREX Trading strategia: Discussione esempio 0 Prima di tutto, permette di dare un'occhiata a grafici. Il primo grafico per profitto durante la prima iterazione non è buono a tutti, come dovrebbe essere previsto, la rete neurale perde soldi (immagine evolution00gen0.png copiata dopo la prima iterazione dalla cartella immagini): L'immagine a scopo di lucro nel ciclo 15 è meglio, a volte , algoritmo genetico può imparare molto velocemente: Tuttavia, si noti la saturazione su una curva di profitto. E 'interessante anche guardare al cambiamento modo i singoli profitti, tenendo presente che il numero della curva, per esempio, 3 non è sempre per la stessa rete neurale. come si stanno nascendo e terminati per tutto il tempo: Si noti inoltre, che il piccolo sistema automatizzato di forex trading fuori effettua poveri su brevi commerci, e molto meglio su anela, che può o non può essere legato al fatto che dollaro cadeva rispetto al euro in quel periodo. Essa può anche avere a che fare con i parametri del nostro indicatore (forse, abbiamo bisogno di periodi diversi per corti), o la scelta degli indicatori. Ecco la storia dopo 92 e 248 cicli: Con nostra sorpresa, algoritmo genetico non è riuscita del tutto. Proviamo a capire perché, e come aiutare la situazione. Prima di tutto, isnt ogni generazione dovrebbe essere migliore di PRECEDENTE uno la risposta è no, almeno non nel modello che abbiamo usato. Se abbiamo preso insieme l'apprendimento INTERO in una sola volta, e l'ho usato ripetutamente per insegnare ai nostri NNS, allora sì, che miglioreranno in ogni generazione. Invece, abbiamo preso frammenti casuali (12000 record in tempo), e li hanno usati. Due domande: perché il sistema non è riuscito a frammenti casuali di set di apprendimento, e perché havent abbiamo usato tutto il learning set Bene. Per rispondere alla seconda domanda, l'ho fatto. NNS eseguito notevolmente - sull'apprendimento set. E hanno fallito sul set di test, per lo stesso motivo failes quando abbiamo usato apprendimento FFPB. Per dirla diversamente, i nostri NNS GOT overspecialized, hanno imparato come sopravvivere in un ambiente cui sono abituati, ma non al di fuori di esso. Questo succede molto in natura. L'approccio che abbiamo preso invece aveva lo scopo di compensare questo, costringendo NNS per eseguire bene su qualsiasi frammento casuale di set di dati, in modo che si spera, si potrebbe anche eseguire su un insieme di test non familiare. Al contrario, non sono riusciti sia a test e sull'apprendimento set. Immaginate di animali, che vivono in un deserto. Tanto sole, senza neve affatto. Si tratta di un Metafor per Rizing mercato, come per i nostri NNS dati svolgono il ruolo di ambiente. Gli animali hanno imparato a vivere in un deserto. Immaginate gli animali, che vivono in un clima freddo. Neve e sole non a tutti. Ebbene, essi regolati. Tuttavia, nel nostro esperimento, abbiamo messo casualmente nostri NNS in un deserto, neve, in acqua, sugli alberi. presentando loro diversi frammenti di dati (in modo casuale ascendente, discendente, piatta.). Animali morti. O, per dirla in modo diverso, abbiamo selezionato la migliore rete neurale per i dati casuali set 1, che, per esempio, è stato per l'aumento del mercato. Poi abbiamo presentato, ai vincitori e ai loro figli, una caduta di dati mercati. NNS eseguito male, abbiamo preso meglio di artisti poveri, forse, uno dei bambini mutanti, che hanno perso la capacità di operare sul mercato in crescita, ma ha una certa capacità di affrontare con la caduta uno. Poi ci siamo rivolti al tavolo ancora, e ancora, abbiamo ottenuto migliore interprete - ma migliore tra esecutori poveri. Abbiamo semplicemente scesi ai nostri NNS alcuna possibilità di diventare universale. Ci sono tecniche che permettono algoritmo genetico di apprendere nuove informazioni senza perdere prestazioni su vecchie informazioni (dopo tutto, gli animali possono vivere in estate e in inverno, proprio così l'evoluzione è in grado di gestire i cambiamenti che si ripetono). Si possono discutere queste tecniche più avanti, anche se questo articolo è più sull'utilizzo di reti neurali della corteccia Software. di circa la costruzione di un sistema automatizzato di forex trading di successo. Neural Network Algoritmo genetico: Esempio 1 Ora è il momento di parlare di correzioni. Un semplice algoritmo genetico che abbiamo creato nella fase precedente ha due grossi difetti. In primo luogo, non è riuscito a commerciare con profitto. E 'ok, possiamo provare a utilizzare il sistema parzialmente addestrato (era redditizia all'inizio). Il secondo difetto è più grave: non abbiamo alcun controllo sulle cose, che questo sistema fa. Ad esempio, può imparare ad essere redditizia, ma con enormi prelievi. E 'un fatto ben noto, che nella vita reale, evoluzione può ottimizzare più parametri contemporaneamente. Ad esempio, siamo in grado di ottenere un animale, che può essere eseguito velocemente ed essere resistente al freddo. Perché non provare a fare lo stesso nel nostro sistema di trading automatico forex. Quello è quando usiamo le correzioni, che non sono altro che l'insieme delle pene accessorie. Dire, i nostri commerci di sistema con prelievo di 0,5, mentre noi vogliamo confermarlo a 0-0,3 intervallo. A dire il sistema che ha fatto un errore, riduciamo l'utile (quello usato per determinare, quale algoritmo genetico vinto) al grado, che è proporzionale alla dimensione del DD. Quindi, l'algoritmo di evoluzione si prende cura di tutto il resto. Ci sono pochi altri fattori, che vogliamo prendere in considerazione: si può desiderare di avere il numero più o meno uguale di comprare e vendere le operazioni, vogliamo avere più di redditività, quindi di fallimenti, possiamo vogliamo che il grafico dei profitti di essere lineare e così via. In evolution01.tsc implementiamo un semplice insieme di correzioni. Prima di tutto, usiamo qualche numero elevato per un valore di correzione iniziale. Ci moltiplichiamo ad una piccola (di solito, tra 0 e 1) valori, a seconda del pene vogliamo applicare. Poi moltiplichiamo il nostro profitto a questa correzione. Come risultato, il profitto viene corretto, in modo da riflettere quanto l'algoritmo genetico corrisponde ai nostri altri criteri. Poi usiamo il risultato di trovare un vincitore Neural Network. FOREX Trading strategia: Discussione Esempio 1 Esempio 1 funziona molto meglio, rispetto ad esempio 0. Durante i primi 100 cicli, ha imparato molto, e grafici di profitto aspetto rassicurante. Tuttavia, come nell'esempio 0, lunghe commerci sono molto più vantaggioso, che molto probabilmente significa che c'è un problema nel nostro approccio. Tuttavia, il sistema ha trovato un equilibrio tra paio di condizioni iniziali contraddittorie: Ci sono alcune dinamiche positive sia a imparare insieme e, cosa più importante, in set di testing. Per quanto riguarda ulteriore apprendimento, a ciclo 278 si può vedere, che il nostro sistema ha sovrallenato. Significa, abbiamo ancora i progressi sul set di apprendimento: Ma testing set dimostra debolezza: Questo è un problema comune con NNS: quando insegniamo su imparare insieme, si impara a trattare con esso, e, a volte, si viene a sapere troppo bene - per la laurea, quando perde le prestazioni sul set di test. Per far fronte a questo problema, una soluzione tradizionale viene utilizzato: noi continuare a cercare la rete neurale. che funziona in modo ottimale sul set di test, e salvarlo, sovrascrivendo precedente migliore, viene raggiunta ogni volta nuovo picco. Questo è lo stesso approccio, abbiamo usato in allenamento FFBP, ad eccezione, questa volta dobbiamo farlo noi stessi (codice aggiungendo, che cerca una migliore rete neurale su una serie di test, e chiamando SAVENN, o l'esportazione di pesi di Neural Network ad un file). In questo modo, quando si smette l'allenamento, youll hanno il miglior interprete ON TEST SET salvato e in attesa per voi. Si noti anche che non è il massimo. profitto si sono dopo, ma le prestazioni ottimali, in modo da considerare l'utilizzo di correzioni, quando alla ricerca di un best performer su un set test. Algoritmo genetico per la forex analisi tecnica: Dove ora Dopo aver ottenuto il vostro vincitore Neural Network. è possibile seguire le fasi, descritte nel precedente articolo, per esportare i pesi di quella rete neurale. e poi usarli nella vostra piattaforma di trading in tempo reale, come la Meta Trader, stazione di commercio e così via. In alternativa, è possibile concentrarsi su altri modi di ottimizzare la rete neurale. a differenza con l'algoritmo FFBP, qui è possibile ottenere avay dall'utilizzo di apprendimento e test set, e spostare l'apprendimento sequenziale. Scarica Cortex Cortex Order Visualizza Prezzo List La visibilità è molto importante per questo sito. Se lo trovate utile link a questo articolo Biblioteca costruzione Trading Systems URLTrading utilizzando il codice automatico Generazione di Michael R. Bryant Come sempre più i commercianti si sono spostati in trading automatizzato, l'interesse per strategie di trading sistematico è aumentato. Mentre alcuni commercianti sviluppare le proprie strategie di trading, la curva di apprendimento ripida richiesto per sviluppare e implementare un sistema di negoziazione è un ostacolo per molti commercianti. Una soluzione recentemente sviluppato a questo problema è l'uso di algoritmi informatici per generare automaticamente il codice sistema commerciale. L'obiettivo di questo approccio è di automatizzare molte delle fasi del processo tradizionale di sviluppo di sistemi di trading. software di generazione automatica di codice per la costruzione di sistemi di trading è spesso basata su programmazione genetica (GP), che appartiene a una classe di tecniche chiamati algoritmi evolutivi. algoritmi evolutivi e GP, in particolare, sono stati sviluppati dai ricercatori nel campo dell'intelligenza artificiale basata sui concetti biologici di riproduzione ed evoluzione. Un algoritmo GP si evolve una popolazione di strategie di trading da una popolazione iniziale di membri generati in modo casuale. I membri della popolazione competono uno contro l'altro in base alla loro forma fisica. I membri sono selezionati montatore come genitori per la produzione di un nuovo membro della popolazione, che sostituisce un (meno in forma) membro più debole. Due genitori sono combinati utilizzando una tecnica chiamata di crossover, che imita incrocio genetico in riproduzione biologica. Nel crossover parte di uno dei genitori genoma è combinato con parte del altri genitori genoma per produrre il genoma bambino. Per la generazione di sistema di trading, genomi possono rappresentare diversi elementi della strategia di trading, tra cui vari indicatori tecnici, come ad esempio le medie mobili, stocastico, e così via diversi tipi di entrata e di uscita degli ordini e le condizioni logiche per entrare e uscire dal mercato. Altri membri della popolazione sono prodotte tramite mutazione, è che è selezionato un membro della popolazione di essere modificata da a caso modifica parti del suo genoma. In genere, la maggior parte (ad esempio 90) di nuovi membri della popolazione sono prodotte via di crossover, con i restanti membri prodotte tramite mutazione. Nel succedersi delle generazioni di riproduzione, la forma fisica generale della popolazione tende ad aumentare. La forma fisica è basata su una serie di obiettivi di compilazione che rango o punteggio ogni strategia. Esempi di obiettivi di build includono diverse misure di performance, come ad esempio l'utile netto, prelievo, percentuale di vincitori, fattore di profitto, e così via. Questi possono essere indicate come requisiti minimi, ad esempio un fattore utile di almeno 2,0, o come obiettivi per massimizzare, come massimizzare il risultato netto. Se ci sono più obiettivi di generazione, una media ponderata può essere usato per formare la metrica fitness. Il processo viene interrotto dopo un certo numero di generazioni o quando si arresta l'idoneità crescente. La soluzione è generalmente considerato come il più forte membro della popolazione risultante, o l'intera popolazione potrebbe essere ordinato per il fitness e salvato per un'ulteriore revisione. Poiché programmazione genetica è un tipo di ottimizzazione, over-montaggio è una preoccupazione. Questo è tipicamente affrontato utilizzando out-of-campione di verifica, in cui i dati non utilizzato per valutare le strategie durante la fase di costruzione viene utilizzato per testare in seguito. In sostanza, ogni strategia candidato costruito durante il processo di compilazione è un'ipotesi che si sia supportato o confutata dalla valutazione e l'ulteriore supportato o confutata dai risultati out-of-sample. Ci sono diversi vantaggi per la costruzione di sistemi di trading attraverso la generazione automatica del codice. Il processo di GP consente la sintesi di strategie dati soltanto un insieme elevato livello di obiettivi di rendimento. L'algoritmo fa il resto. Questo riduce la necessità di una conoscenza dettagliata degli indicatori tecnici e principi di progettazione strategia. Inoltre, il processo di GP è imparziale. Mentre la maggior parte dei commercianti hanno sviluppato pregiudizi a favore o contro specifici indicatori Andor logica commerciale, GP è guidato solo da ciò che funziona. Inoltre, incorporando corretta semantica delle regole di negoziazione, il processo di GP può essere progettato per produrre regole di negoziazione logicamente corretto e il codice senza errori. In molti casi, il processo GP produce risultati che sono non solo unico ma non ovvio. Queste gemme nascoste sarebbe quasi impossibile trovare un altro modo. Infine, automatizzando il processo di generazione, il tempo richiesto per sviluppare una strategia praticabile può essere ridotto da settimane o mesi per pochi minuti, in alcuni casi, a seconda della lunghezza del file di dati di input prezzo e altre impostazioni di generazione. Se youd come per essere informato su nuovi sviluppi, notizie, e offerte speciali da Adaptrade Software, si prega di unirsi alla nostra mailing list. Grazie you. Disclaimer IPOTETICI O RISULTATI prestazioni simulate HANNO LIMITI DETERMINATI. A DIFFERENZA DI UN RECORD effettive prestazioni, risultati simulati NON RAPPRESENTANO trading reale. Inoltre, poiché i mestieri NON SONO EFFETTIVAMENTE stato eseguito, i risultati possono avere sovra o sotto-compensato l'eventuale impatto, dei fattori di mercato certi, come la mancanza di liquidità. Programmi di trading simulato in GENERALI sono inoltre soggetti a FATTO CHE sono stati progettati con il senno di poi. Non viene stato fatto che qualsiasi account volontà o sia idonea a conseguire profitti o le perdite simili a quelli mostrati. EasyLanguage e TradeStation sono marchi registrati di TradeStation Technologies, Inc. Introduzione Una delle maggiori tendenze nel commercio al dettaglio negli ultimi dieci anni è stato l'aumento della popolarità di trading automatico. In questo tipo di commercio, noto anche come esecuzione automatica ordine, acquistare e vendere i segnali generati da un sistema di trading vengono eseguite automaticamente da una piattaforma collegata al conto commercianti di intermediazione. Questo permette per la negoziazione a mani libere, che consente l'esecuzione più veloce, meno errori, e la possibilità di scambiare brevi intervalli di tempo con le strategie di frequenza più elevata. Come sempre più i commercianti si sono spostati al trading automatizzato, l'interesse per strategie di trading sistematico è aumentato. Mentre alcuni commercianti sviluppare le proprie strategie di trading, molti commercianti non hanno le competenze di programmazione necessarie per realizzare le loro idee. Altri commercianti hanno le conoscenze specifiche dei metodi di negoziazione tecnici o l'esperienza necessaria per progettare una strategia praticabile. Anche per i commercianti con le competenze necessarie per lo sviluppo di sistemi di trading, il tempo e lo sforzo richiesto per sviluppare una buona strategia è spesso un deterrente. Una soluzione recentemente sviluppato a questo problema è l'uso di algoritmi informatici per generare automaticamente il codice sistema commerciale. L'obiettivo di questo approccio è di automatizzare molte delle fasi del processo tradizionale di sviluppo di sistemi di trading. Nel tradizionale approccio, manuale per strategia di sviluppo, il commerciante seleziona gli elementi della strategia di trading sulla base di precedenti esperienze e la conoscenza dei tipi di indicatori, di entrata e di uscita di ordine tecnico, e la progettazione di strategia. Comunemente, una strategia si basa su un'ipotesi mercato che è, un'idea di come funziona il mercato. Una strategia di trading praticabile è tipicamente sviluppato attraverso un processo di tentativi ed errori lungo che coinvolge numerose iterazioni, revisioni e test fino a risultati accettabili si ottengono. Questo tradizionale processo di sviluppo di sistemi di trading è molto tempo e comporta sistematicamente eliminando molte idee che semplicemente non funzionano. Inoltre, tutti i commercianti hanno pregiudizi su come i mercati funzionano, e questi pregiudizi possono influenzare il processo di sviluppo del sistema. In alcuni casi, queste distorsioni possono essere utili, ma possono anche limitare i possibili sistemi il commerciante potrebbe prendere in considerazione. Invece di partire da una visione parziale e un set limitato di regole, un generatore automatico di codice inizia con un grande insieme di regole e le ricerche in modo imparziale per le combinazioni che funzionano mentre rapidamente eliminando quelli che dont. Questo articolo presenta una panoramica dei metodi di generazione automatica di codice per la costruzione di sistemi di trading. Entrambi i metodi semplici e complessi sono discussi. Un metodo semplice ad hoc, viene presentato che può essere implementato in TradeStation EasyLanguage linguaggio di scripting per trovare strategie di pattern-based prezzo base. Un approccio più complesso basato sulla programmazione genetica è anche discusso. la generazione automatica di sistemi di trading è un'idea interessante. Tuttavia, ci sono alcuni svantaggi pure. Per prima cosa, approcci rigorosi, come quelli basati sulla programmazione genetica, sono complesse e di difficile applicazione. Inoltre, la generazione automatica del codice si basa generalmente sulla simulazione storica, il che significa che la sua un processo di ottimizzazione. Come tale, il rischio di sovra-adattamento deve essere affrontato. Questi avvertimenti vengono anche discussi. Approccio La base L'algoritmo di base per la costruzione di sistemi di trading con generazione automatica di codice è rappresentato qui di seguito in Fig. 1. Si inizia con un metodo per combinare diversi elementi della strategia commerciale. Questi elementi possono includere vari indicatori tecnici, come ad esempio le medie mobili, stocastico, e così su diversi tipi di entrata e di uscita degli ordini e le condizioni logiche per entrare e uscire dal mercato. Figura 1. algoritmo di base per la costruzione di strategia automatizzata. Dopo diversi elementi sono combinati in una strategia coerente, può essere valutata sul mercato o mercati di interesse. Ciò richiede prezzi di dati di mercato, il volume, l'open interest, ecc per ogni mercato. Generally speaking, you would also have a set of build goals to help rank or score each strategy. Examples of build goals include various performance measures, such as the net profit, drawdown, percentage of winners, profit factor, and so on. These could be stated as minimum requirements, such as a profit factor of at least 2.0, or as objectives to maximize, such as maximizing the net profit. The strategy generation and evaluation steps are repeated until the termination criteria are met. The termination criteria could be as simple as creating a predetermined number of different strategies, or the process might be stopped after no further improvement in the build goals is achieved. Typically, an optimization algorithm is used to guide the strategies towards ones that meet the build goals. The final strategies are the ones with the highest rank or score based on the build goals. You could either take the single best strategy or save some number (or all) of the strategies, ranked by build goals. If there are multiple build goals, a weighted average can be used to form a single metric. This is the most basic view of automatic system building. A more detailed description will be provided below in the section on genetic programming. This description also ignores the important problem of over-fitting, in which the strategy is fit so closely to the market data thats used during the build process that the strategy doesnt perform well in the future when applied to new data. This issue is also addressed below. Theoretical Basis of Automatic Code Generation As described above, building a trading system using automatic code generation is essentially an optimization problem. The combination of strategy elements that maximizes the build goals is taken as the final strategy. Some traders would object that trading systems should be constructed based on a hypothesis of market behavior or action. If you have a good hypothesis for how the markets work, a strategy can be built around that hypothesis and tested. If it works, it supports the hypothesis and justifies trading the strategy. In fact, the approach described here is not fundamentally different than that. Each candidate strategy constructed during the build process, as depicted in Fig. 1, is essentially a hypothesis that is either supported or refuted by the evaluation. If out-of-sample testing is used, the final strategies can be further supported or refuted by the out-of-sample results. Another way to view automatic code generation is as a problem of statistical inference. The price data can be thought of as a combination of signal and noise. The signal is the tradable part of the data, and the noise is everything else. In this context, the strategy building process is a nonlinear curve-fitting problem where the objective is finding strategies that fit the signal while ignoring the noise and avoiding over-fitting. At the same time, market data is often non-stationary: the statistical properties change over time. A successful strategy is therefore one that fits the stationary elements of the market signal with adequate degrees-of-freedom to avoid over-fitting. Although discussed in more detail below, out-of-sample testing is generally used to verify that the strategies are not over-fit to the market. Pattern System Code Generator for TradeStation This section describes an ad hoc approach to automatic code generation in which a trading system for TradeStation automatically generates other, pattern-based trading systems for TradeStation. The AutoSystemGen system searches for a set of trading rules, along with the associated parameter values, that meet a specified set of performance requirements. Depending on the performance requirements, it might find several or even dozens of trading systems that meet the requirements. It then writes the EasyLanguage code for each system to a file. For illustrative purposes, the rules for the generated systems are restricted to price patterns. In principle, this technique could be expanded to automatically generate systems drawing from a wide variety of entry and exit techniques applicable to almost any market. Price Pattern Rules While almost any type of indicator or trading logic could be included in the trading system generator described here, to keep things fairly simple, the rules of the generated systems will be restricted to price patterns. Each entry rule of a generated trading system will have the following form: where P1 and P2 are prices (open, high, low, or close), N1 and N2 are the number of bars to look back (e. g. Close2 is the close two bars ago), and Ineq is an inequality operator, either lt or gt. Examples of rules include the following: Close lt Close2 Low2 lt High10 High3 gt Close4 and so on. P1, P2, N1, N2, and Ineq are all variables to be determined by the system generation process. N1 and N2 will be restricted to the range 0 20. Also, the number of rules, NRules, will be a variable with values ranging from one to 10. A trade entry will be triggered if all the rules are true. In that case, the entry will be taken at the open of the next bar. The trade direction will be set beforehand, so that the system will be generating systems that are either all long or all short trades. To obtain trading logic for both long and short trades, the system can be run twice, once for long trades and the second time for short trades. Trades will be exited at the market after a fixed number of bars, NX, which will range from one to 20. Finding the Rules The key to this process is finding candidate trading systems. A system can consist of between one and 10 rules of the form shown above. Trades are entered at market if all the rules are true, and trades are exited a certain number of bars later. If this were coded as a traditional TradeStation system, with a maximum of 10 rules, there would be 52 inputs. This would make for a cumbersome strategy. Instead, a different approach will be used. At each step of the optimization, the values for each variable (P1, P2, N1, N2, Ineq, NRules, and NX) will be chosen randomly. A different set of values of P1, P2, N1, N2, and Ineq will be selected for each rule, for a total of NRules sets of values. Each step of the optimization will generate a different trading system as the variables are randomly selected. If the performance results of the system meet the requirements entered by the user, the generated system will be written to a file in EasyLanguage code. Putting it All Together The code for the AutoSystemGen system and its related functions is available at Breakout Futures (breakoutfutures ) on the Free Downloads page . The first input to the strategy is called OptStep. To run the system, OptStep should be optimized in TradeStation by varying it from 1 to some large number, such as 10,000, in steps of 1. This will cause AutoSystemGen to generate, for example, 10,000 different trading systems. The ones that meet the specified performance criteria are written to the file shown as an input to the WriteSystem function (e. g. C:AutoSysGen-Output1.txt). The performance criteria are specified via the system inputs (reqNetProfit, reqMaxDD, etc.). Most of the hard work is performed by the functions that the system calls. The function GetPatVars randomly selects the values for the variables that determine the trading rules. To determine whether or not a trade entry will occur on the next bar, the price pattern rules are evaluated by the function EvalPattern. Finally, if the system meets the performance criteria, the corresponding EasyLanguage code is generated and written out to a text file by the function WriteSystem. Example As an example, consider the 30-year treasury bond futures market (symbol US. P in TradeStation 8). AutoSystemGen was optimized over the past 20 years of T-bond prices with the OptStep input incremented from 1 to 10000. This means the system evaluated 10,000 different trading systems. The optimization was run twice, once for long trades and once for short trades. The following performance requirements were used: net profit of at least 30,000, worst-case drawdown no more than 7500, at least 200 trades, percent profitable of at least 50, and profit factor of at least 1.2. On a dual core computer running Vista, it took approximately 10 minutes to run each optimization (10,000 systems per optimization). The systems generated by this process are shown below. These are the systems written to the file AutoSysGen-Output1.txt by the WriteSystem function. The first ones are the long-only systems, followed by a short-only system (the only one that met the performance criteria). System 2332, US. P, 9172007 12:23:00, Long Trades Net Profit 53562.50, Max DD -7381.25, Num Trades 250, Percent Wins 56.80, Prof factor 1.631 Var: EntNext (false) EntNext Open2 gt Low16 and Low9 gt Low3 and Close14 lt Low6 and If EntNext then Buy next bar at market If BarsSinceEntry gt NBarExS then Buy to cover next bar at market If STrailOn then Buy to cover next bar at SStop stop Until recently, most applications of genetic programming to trading strategy generation have been academic studies based on limited rule sets, overly simple entry and exit logic, and custom-written code, making the results unsuitable for most traders. At the same time, most available software that implements GP for market trading has either been targeted to professional traders and priced accordingly or is very complicated to set up and use. Adaptrade Builder was designed to make GP simple to use for any trader, individual or professional, who has a basic understanding of strategy trading and the TradeStation platform. More information on Builder can be found at AdaptradeBuilder . Over-fitting Building trading systems via automatic code generation is a type of optimization. Most systematic traders are probably familiar with parameter optimization, in which the inputs to a strategy are optimized. Unlike parameter optimization, automatic code generation optimizes the strategys trading logic. Nonetheless, the risk of over-optimization, or over-fitting, is also a concern for automatic code generation, just as it is for parameter optimization. Typically, optimization is performed over one segment of data, called the optimization or in-sample segment, and tested on different data, called the test or out-of-sample segment. Over-fitting refers to the problem of optimizing a strategy so that it fits the in-sample segment well but doesnt work well on any other data, including the out-of-sample data. Poor out-of-sample performance is usually caused by one of several factors. One important factor is the so-called number of degrees-of-freedom in the in-sample segment. The number of degrees-of-freedom, which is equal to the number of trades minus the number of rules and conditions of the strategy, determines how tightly the strategy fits the data. Provided inputs are added for each parameter in the strategy, the number of strategy inputs can be used as a proxy for the number of rules and conditions. For example, if a strategy has 100 trades and 10 inputs, it has 90 degrees-of-freedom. The more degrees-of-freedom, the less likely it is that the strategy will be over-fit to the market and the more likely it is that it will have good out-of-sample performance. The number of degrees-of-freedom can be increased during the build process by including the number of trades andor the number of strategy inputs as build goals. Assuming the fitness metric is a weighted average of the build goals, all other things being equal, increasing the weighting for the number of trades will result in strategies with more trades and therefore more degrees-of-freedom. Likewise, increasing the weighting for the (negative) number of inputs will result in strategies with fewer inputs, which will also increase the number of degrees-of-freedom. Another option is to include the statistical significance as a build goal. The statistical significance can be calculated by applying the Students t test to the average trade. This will measure the probability that the average trade is greater than zero. The t test is based on the number of degrees-of-freedom but is a more complete measure of whether a strategy is over-fit than the number of degrees-of-freedom alone. One way, then, to improve out-of-sample performance is to include the significance in the fitness function, which will tend to generate strategies that have a high statistical significance. Another important factor affecting out-of-sample performance is the variety of market conditions in the in-sample segment. Generally speaking, its better to optimize over data that includes a wide variety of market conditions, such as up trending and down trending markets, periods of consolidation, high and low volatility, etc. The more variety in the in-sample segment, the more likely it is that the strategy will perform well on other data, including out-of-sample data and in real-time trading. While the future never exactly duplicates the past, provided the future (or out-of-sample data) is similar enough to at least part of the in-sample segment, the strategy should perform well on new data. The value of optimizing over a variety of market conditions presumes that good performance is achieved over each part of the in-sample segment. One way to measure this is with the correlation coefficient of the equity curve, which measures how closely the equity curve approximates a straight line. If the equity curve is a straight line, it implies that the performance is uniform over all segments of the data. Obviously, this is desirable if the goal is to achieve good performance over as many different types of market conditions as possible. The correlation coefficient for the strategies generated via automatic code generation can be increased by including the correlation coefficient as a build goal and weighting it as part of the fitness function. Unfortunately, there will be cases where even with a high significance, a correlation coefficient close to 1, and a wide variety of market conditions in the in-sample segment, the out-of-sample performance will be poor. This can happen for several reasons. First, even a simple strategy with few parameters can in some cases fit the noise rather than the signal. By definition, noise is any part of the market data that does not contribute to profitable trading signals. Secondly, the market dynamics on which the strategy logic is based (i. e. the signal) may have changed in the out-of-sample segment enough to negatively impact performance. This is sometimes due to a fundamental change in the market, such as the switch from floor-based to electronic trading. However, more subtle changes, often related to the trading patterns of market participants, are also possible, particularly for shorter-term trading. If this appears to be the problem, the solution may be as simple as rebuilding the strategy with new trading logic. Using a tool such as Adaptrade Builder makes this much easier than if a manual approach to trading strategy development were used. Another possible solution is to include the most recent data in the optimization segment and test it out-of-sample by tracking the performance in real-time. In most cases, a strategy that has a large number of trades, a high significance value and good performance on the in-sample segment will continue to perform well for some period of time post-optimization. For information on software for building trading strategies using genetic programming, please click here . If youd like to be informed of new developments, news, and special offers from Adaptrade Software, please join our email list. Grazie.
Come usare l'indicatore ZigZag in MT4 Per Shaun Overton il 16 Giu 2014 03:15:32 GMT Salve, questo è Shaun Overton con ForexNews e OneStepRemoved. In questo video di 5 minuti stavano per discutere l'indicatore ZigZag, che è uno degli indicatori di default che viene nel vostro piattaforma MetaTrader 4. Se non già avere un conto MT4 demo gratuita, è possibile ottenere uno da OANDA cliccando sul link direttamente sotto il video. Il ZigZag è un ottimo strumento, se siete alla ricerca di commercio modelli di grafico come ritracciamenti di Fibonacci, le onde di Elliot o qualsiasi tipo di modello che utilizza il concetto di un elevato sbalzo o swing basso. Un alto dell'oscillazione è essenzialmente massimo assoluto tra una serie di barre. Prendere questa immagine, per esempio. Si può vedere che prima che il prezzo portiere su una forte tendenza, c'era un ritracciamento fino a questo punto. Il punto più basso è quello che i commercianti chiamano lo swing basso e il punto più alt...
Comments
Post a Comment