Monday 30 October 2017

Open Source Learning Forex Trading


Forex Trading Diary 3 - Aprire Sourcing il Forex Trading System Nell'odierna ingresso del Trading Forex Diario voglio discutere il piano a lungo termine per il sistema di trading forex. Oltre voglio delineare come Ive ha usato Pythons Decimale tipo di dati per fare calcoli più precisi. Fino ad oggi, weve modo di sperimentare con il OANDA Resto API al fine di vedere come rispetto al API fornite da Interactive Brokers. Weve anche visto come aggiungere un elemento di replica portafoglio di base, come il primo passo verso un adeguato sistema di backtesting event-driven. Ive ha avuto anche alcuni commenti utili su entrambi i precedenti articoli (1 e 2), il che suggerisce che molti di voi sono pronti a cambiare e l'estensione dei stessi codici. Aprire Sourcing il Forex Trading System Per le ragioni sopra esposte ho deciso di open-source del sistema di trading forex. Cosa significa Ciò significa che tutto il codice attuale e futuro sarà disponibile gratuitamente, sotto una licenza open source liberale MIT, sul sito web di controllo della versione Github al seguente URL: githubmhallsmooreqsforex. Per quelli di voi che hanno usato git e GitHub prima, sarete in grado di git clone del pronti contro termine e iniziare a modificarlo per i propri scopi. L'Automated Forex Trading System QuantStart è ora open-source sotto licenza MIT liberale. È possibile trovare le ultime codice su Github sotto il repository qsforex a githubmhallsmooreqsforex. Per quelli di voi che sono nuovi per il controllo di versione sorgente, probabilmente vorrete leggere come git (e la versione di controllo in generale) lavora con il fantastico e-Book gratuito Pro Git. Vale la pena di spendere un po 'di tempo conoscere controllo del codice sorgente in quanto vi farà risparmiare una quantità enorme di futuro mal di testa se si spende un sacco di tempo nella programmazione e aggiornamento dei progetti L'avvio rapido di un sistema Ubuntu è quello di installare git: Sarà quindi necessario fare una directory per il progetto qsforex di vivere e clonare il progetto dal sito Github come segue: a questo punto è necessario creare un ambiente virtuale in cui eseguire il codice: sarà quindi necessario installare i requisiti (questo richiederà po 'di tempo): Finalmente sarà necessario creare un link simbolico nel proprio ambiente virtuale, Python per consentire di digitare importazione qsforex nel codice (ed eseguirlo): Come ho detto nelle voci precedenti è necessario creare le variabili di ambiente necessarie per le credenziali di autenticazione OANDA. Si prega di consultare diario 2 per le istruzioni su come fare questo. Si prega di prestare attenzione al README associato con il pronti contro termine, in quanto contiene istruzioni per l'installazione, una dichiarazione e una garanzia sull'uso del codice. Dal momento che il software è in modalità alfa, queste istruzioni diventano più semplice come passare del tempo. In particolare cercherò di avvolgere il progetto in un pacchetto di Python in modo che possa essere facilmente installato tramite pip. Se avete domande circa la procedura di installazione, quindi non esitate a scrivermi su mikequantstart. Longer-Term Plan La filosofia del sistema di trading forex, come con il resto del sito QuantStart, è quello di cercare di imitare il commercio di vita reale quanto più possibile nel nostro backtesting. Questo significa includere i dettagli che sono spesso esclusi dai più ricerca orientata situazioni backtesting. Latenza, interruzioni del server, automazione, controllo, i costi di transazione realistici saranno tutti inclusi all'interno dei modelli per darci una buona idea di quanto bene una strategia rischia di eseguire. Dal momento che avremo accesso a spuntare dati (timestamp bidask) saremo in grado di integrare la diffusione nei costi di transazione. Possiamo anche modellare lo slittamento. E 'meno straighforward di impatto sul mercato del modello, anche se questo è meno di una preoccupazione a valori commerciali più piccoli. Oltre ai costi di transazione vogliamo robusto modello di gestione del portafoglio con sovrapposizioni di rischio e la posizione di dimensionamento. Quindi, ciò che è attualmente incluso nel Forex Trading System fino ad oggi Architettura Event-Driven - Il sistema di forex trading è stato progettato come un sistema event-driven da zero, in quanto questo è il modo in un sistema di trading intraday verrà implementato in un ambiente vivo . Prezzo Streaming - Abbiamo un oggetto prezzo base streaming. Questo attualmente gestisce sottoscrizione di solo una singola coppia, ma possiamo facilmente modificare questo per iscriversi a più coppie di valute. Signal Generation - Siamo in grado di integrare le strategie di trading (basate direttamente sul prezzo di zecche passati e presenti) utilizzando l'oggetto strategia, che crea oggetti SignalEvent. Di esecuzione degli ordini - Abbiamo un sistema di esecuzione degli ordini ingenua che invia ciecamente gli ordini dal portafoglio di OANDA. Con ciecamente voglio dire che non ci sia la gestione del rischio o la posizione di dimensionamento in corso, né alcuna esecuzione algoritmica che potrebbe portare a una riduzione dei costi di transazione. GBP Valuta base - Per mantenere le cose semplici, Ive ha scritto solo il sistema per la valuta di base GBP. Questo è forse l'aspetto più importante di modificare data quanti di voi avranno conti pratica denominate in USD, EUR, CAD, JPY, AUD e NZD GBPUSD Trading - Ho scelto il cavo come la coppia di valute per testare la posizione iniziale e oggetti Portfolio con. La gestione di più coppie di valute è un importante passo successivo. Ciò comporterà modifiche alla posizione e di portafoglio calcoli. Manipolazione decimale - Qualsiasi sistema di produzione commerciale deve gestire correttamente calcoli di valuta. In particolare, i valori di valuta non devono essere conservati in virgola mobile tipi di dati, dal momento che gli errori di arrotondamento si accumulano. Si prega di vedere questo fantastico articolo sul floating point rappresentazioni per ulteriori dettagli. LongShort Trading - Tra le voci di diario 2 e 3 ho aggiunto la possibilità di breve una coppia di valute (al contrario di solo essere in grado di andare a lungo). Fondamentalmente, questo è anche unità testata. Local Manipolazione Portfolio - A mio parere la realizzazione di un backtest che gonfia le prestazioni strategia a causa di ipotesi irrealistiche è fastidioso al meglio e molto redditizio nel peggiore dei casi introduzione di un oggetto portafoglio locale che replica i calcoli OANDA significa che siamo in grado di controllare i nostri calcoli interni nello svolgimento delle pratiche negoziazione. che ci dà maggiore fiducia quando in seguito usiamo questo stesso oggetto portafoglio per backtesting sui dati storici. Unit test per PositionPortfolio - Mentre Ive non menzionato direttamente a pagine di diario 1 e 2, Ive stato effettivamente scrivendo alcuni test di unità per il Portafoglio e posizionare gli oggetti. Dal momento che questi sono così cruciali per il calcolo della strategia, si deve essere estremamente fiducioso che essi svolgono come previsto. Un ulteriore vantaggio di questi test è che permettono il calcolo sottostante da modificare, in modo tale che se tutti i test ancora passano, possiamo essere certi che il sistema nel suo complesso continuerà a comportarsi come previsto. In questa fase il Forex Trading System manca le seguenti funzionalità: Manipolazione Unità - Il sistema sta generando un sacco di slittamento a causa della natura ad alta frequenza dei dati forniti da tick OANDA. Ciò significa che l'equilibrio di portafoglio calcolato a livello locale non è che riflette l'equilibrio calcolato da OANDA. Fino corretta gestione degli eventi e la regolazione slittamento avviene, questo significa che un backtest non riflettere correttamente la realtà. Valute multiple Base - Ci sono attualmente limitati a GBP. Per lo meno abbiamo bisogno di includere i principali denominazioni di valute - USD, EUR, CAD, AUD, JPY e NZD. Coppie di valute multiple - Allo stesso modo abbiamo bisogno di sostenere le principali coppie di valute al di là di Cavo (GBPUSD). Ci sono due aspetti di questo. Il primo è quello di gestire correttamente i calcoli quando né la base o citazione di una coppia di valute è uguale alla valuta del conto denominazione. Il secondo aspetto è quello di supportare più posizioni in modo da poter scambiare un portafoglio di coppie di valute. Gestione del rischio - Molti estensivi di ricerca completamente ignorare la gestione del rischio. Purtroppo questo è generalmente necessario per brevità nel descrivere le regole di una strategia. In realtà abbiamo - must - utilizziamo una sovrapposizione di rischio quando trading, altrimenti è molto probabile che ci sarà una perdita sostanziale a un certo punto. Questo non vuol dire che la gestione del rischio in grado di prevenire questo del tutto, ma rende certamente meno probabile Ottimizzazione Portfolio - In un contesto istituzionale avremo un mandato d'investimento, che detterà un sistema di gestione del portafoglio solido con diverse regole di allocazione. In un ambiente retailpersonal si potrebbe desiderare di utilizzare un approccio di dimensionamento posizione così come il criterio di Kelly per massimizzare il nostro tasso di crescita composto a lungo termine. Strategie robusti - mi hanno dimostrato solo qualche semplice segnale casuale generare strategie di giocattoli fino ad oggi. Ora che stiamo cominciando a creare un sistema di forex trading intraday affidabile, dovremmo iniziare a svolgere alcune strategie più interessanti. diario del futuro si concentreranno sulle strategie tratte da una miscela di indicatorsfilters tecnici così come i modelli di serie storiche e tecniche di apprendimento automatico. Remote Deployment - Dal momento che siamo potenzialmente interessati nel commercio di 24 ore (almeno durante la settimana) abbiamo bisogno di una messa a punto più sofisticati di gestione del backtester su una macchina locale desktoplaptop a casa. E 'fondamentale che si crei un robusto dispiegamento server remoto del nostro sistema con ridondanza e monitoraggio adeguato. Backtesting Storico - Abbiamo costruito l'oggetto portafoglio per permetterci di effettuare backtesting realistico. A questo punto ci manca un sistema di archiviazione dei dati tick storici. Negli articoli successivi vedremo ottenere dati storici tick e la memorizzazione in un database appropriato, ad esempio HDF5. Commercio Database - Alla fine ci vorranno memorizzare i nostri mestieri dal vivo nel nostro database. Questo ci permetterà di svolgere le nostre analisi sui dati di trading dal vivo. Una buona raccomandazione per un database relazionale sarebbe PostgreSQL o MySQL. Monitoraggio e High Availability - Dal momento che stiamo prendendo in considerazione un sistema intraday ad alta frequenza, dobbiamo mettere un monitoraggio completo e la ridondanza elevata disponibilità sul posto. Questo significa che la segnalazione su l'utilizzo della CPU, l'utilizzo del disco, della rete IO, la latenza e la verifica che gli script periodici sono impostati per continuare a correre. Inoltre abbiamo bisogno di una strategia di backup e ripristino. Chiedetevi che cosa riserva piani si avrebbe in atto se si ha grandi posizioni aperte, in un mercato volatile, e il server improvvisamente morto. Credetemi, succede multipla Integrazione BrokerFIX - Al momento stiamo fortemente accoppiati al broker OANDA. Come ho già detto questo è semplicemente perché mi sono imbattuto in loro API e trovato ad essere un'offerta moderna. Ci sono un sacco di altri broker là fuori, molti dei quali supportano il protocollo FIX. Aggiunta di una capacità FIX aumenterebbe il numero di mediatori che potrebbero essere utilizzati con il sistema. GUI di controllo e reporting - In questo momento il sistema è linea completamente consolecommand base. Per lo meno avremo bisogno di un po 'di grafici di base per visualizzare i risultati backtest. Un sistema più sofisticato incorporerà statistiche di riepilogo di mestieri, metriche di performance a livello di strategia e le prestazioni complessive del portafoglio. Questa GUI può essere implementato usando un sistema a finestre multi-piattaforma, come Qt o Tkinter. Potrebbe anche essere presentato con un front-end web-based, utilizzando un web-quadro come Django. Come si può vedere c'è un sacco di funzionalità a sinistra sulla tabella di marcia Detto questo, ogni nuova voce del diario (e potenziali contributi della comunità) si sposta avanti il ​​progetto. Decimali tipi di dati Ora che abbiamo discusso il piano a lungo termine voglio presentare alcuni dei cambiamenti che ho fatto per il codice dal diario 2. In particolare, voglio descrivere come ho modificato il codice per gestire il data - decimale digitare invece di utilizzare lo stoccaggio in virgola mobile. Questo è un cambiamento estremamente importante in quanto floating point rappresentazioni sono una notevole fonte di errori a lungo termine in sistemi portafoglio e gestione degli ordini. Python supporta nativamente rappresentazioni decimali ad una precisione arbitraria. La funzionalità è contenuto all'interno della libreria decimale. In particolare abbiamo bisogno di modificare il valore Chiunque usi che appare in un calcolo della posizione di un decimale di dati-tipo. Questo comprende l'utile di unità, l'esposizione, pip, il profitto e la percentuale. In questo modo siamo in pieno controllo di come i problemi di arrotondamento sono gestiti quando si tratta di rappresentazioni di valute che hanno due cifre decimali di precisione. In particolare abbiamo bisogno di scegliere il metodo di arrotondamento. Python supporta alcuni tipi differenti, ma abbiamo intenzione di andare con ROUNDHALFDOWN. che arrotonda all'intero più vicino con i legami che vanno verso lo zero. Ecco un esempio di come il codice viene modificato per gestire decimali tipi di dati dai loro precedenti rappresentazioni in virgola mobile. Di seguito è riportato un elenco di position. py: Si noti che dobbiamo fornire decimale con un argomento stringa, piuttosto che un argomento in virgola mobile. Questo perché una stringa è specificare precisamente la precisione del valore, mentre un tipo a virgola mobile non. Si noti anche che quando si comincia immagazzinare i nostri mestieri in un database relazionale (come sopra descritto nella tabella di marcia) abbiamo bisogno di fare in modo che una volta utilizzato il corretto tipo di dato. PostgreSQL e MySQL supportano una rappresentazione decimale. E 'fondamentale che noi utilizziamo questi tipi di dati quando creiamo il nostro schema di database, altrimenti incorrere in errori di arrotondamento che sono estremamente difficili da diagnosticare Per coloro che sono interessati ad una discussione più approfondita di questi problemi, in matematica e informatica, la oggetto di Analisi numerica copre i problemi di archiviazione in virgola mobile, tra molti altri argomenti interessanti. Nelle successive pagine di diario che ci accingiamo a discutere di come ho applicato test delle unità di codice e come possiamo estendere il software a più coppie di valute modificando i calcoli di posizione. Pieno Codice Python Dal momento che il codice sorgente completo per il progetto è ora open source, sotto licenza MIT. si può sempre essere scoperto a githubmhallsmooreqsforex. con la documentazione di accompagnamento. Se volete leggere le altre voci della serie, si prega di seguire i link qui sotto: appena iniziato con Quantitative TradingWould ti piace una copia dei sorgenti QuantConnect codeso è possibile codice, backtest e il commercio a livello locale dal computer Si potrebbe progettare ed eseguire il debug strategie dal vostro computer portatile in Visual Studio, utilizzando un data-fonte locale, e poi, quando you8217re pronto semplicemente distribuirlo al cloud di backtest su tutta la nostra libreria di dati a livello di tick si potrebbe senza utilizzare la nostra ottimizzazione basata nuvola di backtest massicciamente in parallelo e testare la vostra strategia per la sensibilità dei parametri, in minuti 8230 Con la piattaforma open-source, si potevano commerciare a livello locale da il proprio server, o inviare l'algoritmo di QuantConnect a vivere commercio dalla nostra bella interfaccia HTML5 quando you8217re lontano dal desk8230 server Dedicato trading dal vivo correndo le vostre strategie con interfaccia HTML e byworking a livello locale si può garantire yourproprietary issafe dei dati, e mantenere la privacy strategia completa. Pensiamo che questa sarebbe stata una piattaforma di trading algoritmico perfetto e vogliamo farlo accadere Quando raggiungiamo 100 abbonamenti hobbisti we8217ve impegnati ad aprire di sourcing la QuantConnect LEAN Algorithmic Trading Engine Vogliamo 100 fan. credenti. quants appassionati che formeranno i pionieri di base della piattaforma QuantConnect. Con il vostro aiuto faremo guidare il futuro di trading algoritmico. Pionieri saranno per sempre ricordati sulla nostra pagina sostenitori, oltre a ricevere un apposito server di trading dal vivo per l'esecuzione di vostre strategie (1 trasferimento CPU 512MB di RAM 20GB HD 1TB di dati). We8217re solo raschiando la superficie di ciò che è possibile con QuantConnectWe8217re entusiasta di essere l'aggiunta di nuove e potenti funzionalità, e rendendo il motore più veloce e più robusta ogni day. For i primi 100 pionieri you8217ll ottenere una vita. 10Mo abbonamento hobbista. Una volta che si aggiorna we8217ll applicare lo sconto, ma è un limite dei primi 100 utenti Nei prossimi mesi abbiamo in programma di offrire: Cloud Ottimizzazioni cloudbacktesting parallela massiva, ottimizzare i parametri per ridurre la sensibilità algoritmo in minuti in tutta la nostra cloud. Eseguire simulazioni Monte Carlo e curve di sensibilità viewstrategy. Altre Tipologie degli attivi e di importazione startingfutures e le opzioni di assistenza We8217re supporto patrimoniale dati, insieme con uno strumento per importare facilmente i dati esterni per progettare robusti algoritmi redditizie Meglio Browser Coding We8217re lavorare su anObject treeinspector andtrue C completamento automatico, in combinazione con le cartelle di progetto in modo da poter facilmente costruire strategie complesso universo di selezione e dati fondamentali dati fondamentali powered by Mattina Starso si canselect un universo di aziende per indice, i guadagni e altri fondamentali chiave di aggiornamento di oggi e ci aiutano a costruire la migliore piattaforma di trading algoritmico nel mondo. driven. Trading piattaforma open source Software Trading Application Platform Open Source Piattaforma di Trading M4 sostenibile, indipendente e comunità è una piattaforma di trading white-label disponibile con il codice sorgente completo che può essere concesso in licenza da pagare una tassa di una volta. La piattaforma di trading può essere personalizzato e ri-branded poi distribuita ai vostri clienti di trading o utilizzati per scopi di negoziazione in-house. M4 è un'applicazione commerciale estremamente flessibile che può essere personalizzata in qualsiasi misura, senza limiti imposti per quanto riguarda le personalizzazioni. Non ci sono limitazioni imposte sono attualmente pagando canoni esorbitanti per un'applicazione commerciale che non si possiede Sei irritabile che non si può risolvere momento delicato, problemi mission software critica, perché non si ha accesso al codice sorgente di M4 è la soluzione perfetta se si sono infelici con le limitazioni ei costi elevati associati alla tua piattaforma di trading corrente o software grafici. M4 è accessibile con un prezzo e ricco di funzioni. Costo più basso, maggior parte delle caratteristiche di creazione di grafici e analisi tecnica professionale. in tempo reale magazzino, future e forex schermi di citazione. linguaggio di scripting facile da usare per gli avvisi in tempo reale, la scansione di mercato, back testing e trading automatico. Bassa motore di commercio di latenza. Gli ordini possono essere trasmessi a qualsiasi destinazione. Ogni provider di dati può essere implementato. Tutte le finestre, barre degli strumenti, menu, grafici ed altre caratteristiche sono completamente personalizzabili. servizi di personalizzazione poco costose.

No comments:

Post a Comment