Monday, October 17, 2016

Oop Java Trading System Tutorial

W e l c o m e Welkom by die Huis van die Open Java Trading System Die Open Java Trading System (OJTS) is bedoel om 'n gemeenskaplike infrastruktuur te-beurs stelsels te ontwikkel. Dit bestaan ​​uit vier dele: die byeenkoms van rou data oor die internet die erkenning van handel seine n visualisering module en modules aan te sluit by die programmatiese koppelvlakke van handel platforms soos banke. Die projekte is gemik is om voorsiening te maak 'n self vervat suiwer Java (platform onafhanklik) algemene infrastruktuur vir ontwikkelaars van handel stelsels. Sommige van die aspekte wat aangespreek moet word is om 'n gemeenskaplike SQL92 voldoen databasis skedule vir die berging van finansiële data, algemene Java koppelvlakke vir hoe om te wissel data tussen verskillende modules, visualisering van rou finansiële data en handel seine en verskeie ander algemene aspekte wat nodig is om te skep 'n finale handel system. Because van my werk en familie Ek het nie die tyd om OJTS langer te verbeter. Ek voortgaan om die artikel skakels hier onder wat werk sal jy meer aktief Java open source projekte te lei in daardie gebied, al is. Om die waarheid te as 'n gevolg van my belangstelling in die dinamiek van aandelemarkte het ek 'n reis na die dieper besonderhede van nasionale ekonomie ten einde wisselkoerse verstaan. Hierdie onderwerp uiteindelik lei my na 'n dieper studie van geld op sigself as die metrieke eenheid wat ons gebruik in die ekonomie om waarde, sukses of nut meet. Hierdie onderwerp blyk baie interessant te wees, maar terselfdertyd was dit baie moeilik om enige inligting oor hoe ons monetêre stelsel werk te vind. Gaan rond en vra mense waar geld vandaan kom, wat skep dit en wat bepaal die waarde daarvan. Jy sal sien dat selfs die mense wat 'n meestersgraad of PhD. in Ekonomie sal nie hierdie besonderhede te ken. O ja, hulle sal beantwoord in sommige kriptiese tegniese terme, maar hulle sal nie in staat wees om 'n eenvoudige diagram wat die proses beskryf trek. H. G. Wells het na berig word gesê: Om te skryf van die munt is oor die algemeen erken as 'n aanstootlike, inderdaad byna 'n onsedelike, praktyk. Redakteurs sal die skrywer smeek byna trane nie om te skryf oor geld, nie, want dit is 'n vervelige onderwerp, maar omdat dit altyd 'n diep ontstellende een is. Ek stel voor om enige persoon wat in 'n demokratiese samelewing te lees oor hierdie onderwerp. Dit raak ons ​​lewens elke dag in 'n mate wat nie op daardie wêreld kan exagerated In my opinie elke burger van 'n demokratiese land moet weet waar ons geld vandaan kom. Heel waarskynlik jy gekom het om hierdie webwerf om te kyk vir gereedskap wat jou help om in die verhoging van jou monetêre rykdom. Om die metrieke eenheid geld (maak nie saak of Dollar of die euro) verstaan ​​sal 'n belangrike bestanddeel in jou toolkit vir die maak van geld wees. As jy 'n bietjie tyd en slegs kan bekostig om 'n enkele boek oor die onderwerp lees dan stel ek voor jy lees Wealth, Virtuele Wealth en skuld deur Frederick Soddy. Ek was in staat om 'n gebruikte kopie via Amazon te koop vir 23,48, maar daar bestaan ​​ook 'n aanlyn weergawe. Jy sal die DjVu plugin nodig het om dit te lees. Hierdie boek is oorspronklik gepubliseer in 1929, maar nog steeds beskryf die werklike feite baie goed. Selfs as ek nie saamstem met al gevolgtrekkings van Frederick Soddy sy werk is lekker nadenke stem en sal jou lei om die regte vrae te vra. N e w e Releases, Foutoplossings en opgedateer Dokumentasie aangekondig die opskorting van 'n aktiewe ontwikkeling en bygevoeg verwysings na inligting oor ons geldstelsels (dollar / euro). Bygevoeg 'n links artikel na ander interessante Java handel stelsel projekte. Ek ondersoek oor hoe om OJTS meer versoenbaar is met ander Java handel stelsel pogings te maak. Belegging en Trading System Dokumentasie Projek te vinde by ITSdoc. org. Daar is 'n nuwe wiki beskikbaar by ITSdoc. org fokus op die verspreiding van kennis op die gebied van die belegging en handel stelsels. Die idee agter ITSdoc. org is 'n samewerking platform soortgelyk aan Wikipedia te help om die gemeenskap om kennis te deel nie. OpenJavaTradingSystem v0.13 vrygestel. Gister het ek vrygestel van die weergawe 0.13 van die OpenJavaTradingSystem biblioteek. Onder die nuwe funksies is: data herwinning vir aandele, fondse en geldeenhede van OnVista. Implementering van die munt hantering en doelskoppe. Portefeuljes geïmplementeer en jy kan werk met portefeuljes op dieselfde manier as met 'n enkele sekuriteit papier items. Bygevoeg 'n algemene raamwerk vir die toepassing van algoritmes te aandelemark tydreekse. Gewissel het vanaf die SISC / Skema interaktiewe dop te ABCL / CommonLisp plus sy redakteur genoem J. bygevoeg 'n algemene data caching meganisme om data wat reeds oor die web in die lêerstelsel is opgespoor kas. Plus baie meer geringe verbeterings As jy belangstel in hierdie nuwe weergawe is jy moet begin by die Quick Start / kiekie artikel. Die handleiding is nog nie opgedateer maar dit kan jy tog 'n paar waardevolle agtergrondinligting gee as jy wil na die biblioteek te gebruik in jou projek. Die dokumentasie moet opgedateer soon. Currently daar nie veel ontwikkeling gedoen nie, want ek opgradering my kennis oor Bayesiaanse netwerke. Sien byvoorbeeld die lys van boeke op my webwerf. Twee baie interessante projekte om daardie opsig is Weka en BNJ. Binnekort sal ek voortgaan ontwikkeling en ek sal begin om die eerste intelligensie te integreer in die stelsel. Vandag het ek die eerste vrylating in die artikel lêers van die source aflaai area. Behalwe dat ek opgedateer die handleiding om die interaktiewe gebruik van die projek via die SISC Skema laag te dokumenteer. Vir die ongeduldig hier is 'n vinnig start / kiekie artikel gaan jy kry. D o c o m e n t a t i o n Dokumente beskryf die internals van die projek. Java data voorwerpe en Interface dokumentasie gtgtHTML gtgtPDF Gebruik dokumentasie gtgtHTML gtgtPDF Investment en Trading System Dokumentasie Projek gtgtITSdoc. org T echnology Derde Party Building Blocks wat in hierdie projek HSQL Database Engine (lisensie: hsqldblic. txt) Die HSQLDB is die databasis enjin verskeep met die projek, sodat jy dadelik kan begin met behulp van die OJTS sonder die installering van 'n derde party databasis. Maar as jy van plan is om 'n ander SQL92 voldoen databasis gebruik, dan is dit 'n opsie te. Castor (lisensie: Die Exolab lisensie) Castor is 'n Open Source data bindend raamwerk vir JavaTM. Dit is die kortste pad tussen Java voorwerpe, XML dokumente en relasionele tabelle. Castor bied Java-tot-XML bindend, Java-tot-SQL volharding, en nog baie meer. Castor Doclet (lisensie: GNU LGPL v2.1) Java doclet beide kartering en DDL lêers vir Castor JDO en Castor XML genereer. TestMaker (lisensie: TestMaker open-source lisensie) Van die TestMaker projek net die implementering van die protokolle soos HTTP of HTTPS gebruik vir die insameling van data van die web. jCookie (lisensie: GNU LGPL v2.1) Die jCookie biblioteek is wat nodig is vir die TestMaker biblioteke te werk. htmlparser (lisensie: GNU LGPL v2.1) Die htmlparser biblioteek word gebruik om die data te onttrek van web hulpbronne. ABCL / CommonLisp (lisensie: GNU GPL v2) ABCL (Gewapende Bear Common Lisp) word gebruik om die algoritmiese hart van die projek in die ANSI Common Lisp programmeertaal te implementeer. JFreeChart (lisensie: GNU LGPL v2.1) JFreeChart word gebruik vir die visualisering van finansiële data as kaarte. JSci (lisensie: GNU LGPL v2.1) JSci - 'n wetenskap API vir Java. JODA Tyd (lisensie: Tuis gegroei open source lisensie) JODA Tyd vervang die oorspronklike JDK Datum en Tyd klasse. L i N k s Skakels na ander projekte Die JavaTraders Google-groep kan die beste inskrywing vir jou om uit te vind oor ander Java-gebaseerde handel stelsels en gereedskap wees. L icense Voorwaardes Die kode van die projek is gelisensieer onder die voorwaardes van die LGPL en alle dokumentasie wat jy in hierdie projek is gelisensieer onder die voorwaardes van die FDL. My reis as 'n quant my het gelei tot 'n groot aantal van lees boeke beskikbaar oor hierdie onderwerp. Ek het gekom om te vind dat terwyl daar is 'n baie goeie boeke daar buite wat werklik help om bruikbare inligting te verkry, is daar nog meer boeke wat net suiwer speel bemarkingsmateriaal afgedruk die kele van die onkundige leser. Hieronder volg my aanbevelings van boeke, geklassifiseer op grond van verskillende aspekte van die besigheid wat jy belangstel in die begrip kan wees. Basics: Vir die leek wat nuut is in hierdie veld en wil 'n voorsprong. 1) Binne die Black Box deur Rishi Narang - Groot boek vir 'n voorsprong op al die verskillende aspekte van Quant handel. Baie algemene inligting, maar oor die algemeen borsels deur elke aspek van die besigheid. 2) Kwantitatiewe Trading deur Ernie Chan - Perfect boek om te begin op al die basiese konsepte met besonderhede oor back testing en 'n paar eenvoudige strategieë om te begin met. Programmering: Dit hang af wat platform wat jy wil gebruik. Daar is ton van die boeke en aanlyn tutoriale beskikbaar op elke programmeertaal. I039d beveel die volgende aan Python en Java. 1) Leer Python deur Mark Lutz - Dek basiese beginsels van 'n afgestorwene. Goed om te kry wat jy begin het. 2) kop eerste Java deur Kathy Sierra - Groot boek op Java, reg van basiese tot gevorderde. Mark Micro: Voordat jy enigiets leer oor algo strategieë, dit is uiters belangrik om te verstaan ​​hoe handel werk en hoe die verskillende rolspelers in wisselwerking met mekaar om 'n mark te skep. Trading en die uitruil van Larry Harris - Dek mark mikrostruktuur in graf diepte. 'N moet lees voordat duik in strategieë om 'n goeie begrip van die markte te kry. Strategieë: Goeie boeke oor strategieë van uiteenlopende aard (Momentum, Trend Na, pare Trading, Grieke, ens). Ek het ook gekategoriseer hierdie boeke wat gebaseer is op die aard van die strategieë wat die boeke fokus op. 1) Algorithmic Trading deur Ernie Chan - 'n meer gevorderde boek deur Ernie, met 'n paar interessante strategieë om te probeer en backtest. Baie goeie teorie verduidelik die basiese konsepte agter die bestaan ​​van verskillende tipes mark behaivour en hoe om hulle te vang. 2) Meganiese Trading Systems deur Richard Weissman - Groot boek vir strategieë. Dek 'n oorvloed van momentum en beteken terugkeer strategieë op verskeie tydraamwerke, saam met backtested resultate. 3) Na aanleiding van die tendens deur Andreas Clenow - Ek dink hierdie boek, een van die beste lees oor die onderwerp van Trend Na, 'n baie gewilde handel strategie. 4) pare Trading deur ganapathy Vidyamurthy - Baie goeie boek op 'n gewilde handel strategie bekend as pare Trading. 5) Hoe om geld te maak in Voorrade deur William O Neil - 'N uitstekende lees op 'n baie interessante beginsels gebaseer Quant model, genaamd CANSLIM. Opsies strategieë: Ek dek opsies strategieë onder 'n ander onderwerp, ag geneem word dat hulle is baie meer kompleks as in vergelyking met aandele / toekoms. 1) Volatiliteit Options en pryse deur Sheldon Natenberg - Een van die beste boeke oor opsies vir 'n begginer, werk jou pad uit die basiese beginsels al die pad Tot Grieke en wisselvalligheid handel. 2) Die Bybel van opsies strategieë deur Guy Cohen - Goeie boek om upto spoed kry op al die verskillende opsies setups en hul spesifieke Grieke. 3) Volatiliteit Trading deur Euan Sinclair - Baie gevorderde en in diepte boek oor die konsep van Volatiliteit Trading. Ek glo dat dit die beste op hierdie onderwerp wees. Risikobestuur: Die mees imporatant aspek van Quant handel wat dikwels oor die hoof gesien. Posisie Sizing deur Van Tharp - 'n juweel van 'n boek wat die idee van risikobestuur en geldbestuur die gebruik van verskillende tegnieke verduidelik. My raad aan 'n ontluikende algo handelaar sou wees om deeglik na te vors voordat live gaan met 'n strategie. Beskou jouself 'n risikobestuurder eerder as 'n geld bestuurder. Die bestuur van risiko kom eerste, dan kom terug. 18.2k Views middot View upvotes middot Nie vir Reproduksie kort antwoord: Inleiding tot Algorithmic Trading met Heikin-Ashi. Kort gids wat jou neem van beginners tot byna Quant. Dit bied 'n gratis ontwikkeling omgewing, wys hoe om 'n tegniese aanwyser bou, en hoe om 'n outomatiese handel strategie te skep. In hierdie Quora post Ek het 'n groter verdeling van hoe om te begin. Meer Antwoord: Om werklik vaardig in die ontwikkeling van algoritmiese handel strategieë te word, sal jy nodig het 'n paar agtergrondkennis. Dit kan gekry word met verloop van tyd en dit isnt noodsaaklik om al mark kennis bemeester het voordat jy begin. Leer die Markte Daar is ton van die hulpbronne vir hierdie, en dis juis hoekom jy moet 'n bietjie versigtig wees oor watter boeke jy kies om af te haal en te lees. Ajusals antwoord het 'n uiteensetting van 'n paar groot boeke. Kom dan in my Trading Kamer deur Alexander Eldar - Fantastic eerste boek vir enigeen nuwe te handel. Dr. Alexander Elder oorbrug die gaping tussen die mark beginsels en besig om winsgewend uit die ontginning van tegniese aanwysers. Daarbenewens Heres 'n gemiddelde leeslys PDF met 'n Volledige uiteensetting van boeke, video's, kursusse, en handel forums. Leer om Program ek beveel Python of MATLAB, hoewel waarskynlik Python is meer veelsydig. MATLAB is baie sterk en word deur quant winkels vir navorsing en ontwikkeling van handel strategieë. Ook as jy kom uit 'n soort van die akademie, waarskynlik u blootstelling aan MATLAB reeds. Leer Python - 'N interaktiewe Python handleiding bedoel vir enigiemand om die programmeertaal te leer. Live voorbeelde van die kode uitgevoer kan word en reg getoets in jou leser. MATLAB Quick Start Guide - Vinnige en deeglike aanlyn inleiding tot MATLAB met baie van die kode voorbeelde om jou voet te kry. Mees intuïtief en maklik MATLAB intro beskikbaar. Kry 'n Trading Platform Im bevooroordeeld en ek beveel Quantiacs, sy 'n gratis open-source platform vir beide Python en MATLAB met historiese data. Die handleiding hieronder gekoppel aanvaar sal jy gebruik Quantiacs en bied kode gebou vir dit, maar die lesse wat geleer is moet van toepassing op enige ander platform te wees as well. Eerste dinge eerste, jy gaan nodig om die Quantiacs toolbox installeer. Dit is 'n relatief eenvoudige proses wat slegs 'n paar minute moet neem. Jy het die opsie van die gebruik van Python of MATLAB, en tensy jy reeds baie belê in net een Ek beveel aflaai en installering van beide. Gaan die installering van die toolbox. Inleiding tot die Quantiacs Gereedskap Neem 'n blik op die struktuur van 'n monster handel stelsel hier in Python en hier in MATLAB. Die belangrikste komponente van 'n Quantiacs algoritme is die instellings, markte, en posisies. Vir beide MATLAB en Python, jou handel algoritme woon in net een lêer dat hierdie algemene sjabloon volg. Vir 'n uiteensetting van die toolbox besoek hier. Hier is meer oor die toolbox hier. moet redelik eenvoudig wees. Dit Quora post 1 het 'n diepgaande ontleding van al die beste praktyke vir eintlik toets jou algoritme na en tydens die ontwikkeling. Voorstelle sluit in die gebruik loop vorentoe ontleding, in-monster en out-of-monster getoets, en hoe om prestasie in die algemeen meet. In hierdie Quora post 2 het ek 'n paar van die uitdagings wat jy in die gesig staar in die bou van outomatiese handel stelsels wat algemeen Arent uitdruklik bekend totdat jy begin. Dit sluit in die versekering van die rand, hoe om faktor in kapitaal en handel koste, en hoe om nie te vernietig deur die voor-handel teen jou. Die gevare van krommepassing Net 'n kant-noot te waarsku oor die algemene slaggat van Quant strategie-ontwikkeling is overfitting. A boogpas strategie is een dis so goed new, dit pas perfek die vorige prestasie van die markte. Die eindresultaat is dat dit heeltemal sal misluk met toekomstige prys aksie en markgebeure. Overfitting sal fantasties back testing resultate van onrealistiese en nuttelose handel strategieë te produseer. Dit wentel gewoonlik rondom parameters verander soos die tydperk van 'n bewegende gemiddelde tot die handel algoritmes prestasie aansienlik verbeter. Terwyl optimalisering strategieë op sigself is 'n geldige praktyk, moet dit noukeurig uitgevoer word om overfitting vermy. Hier is wat overfitting kan doen - dit kan hierdie nuttelose handel strategie te neem: En maak dit 'n ongelooflike mens: Dit new strategie sal nooit werk in die werklike wêreld. Die oomblik toe die begin datum van die backtest word uitgevoer deur 'n paar jaar verskuif, al die vermeende mark rand verdamp. Arbitrêr jag vir 'n goeie back testing resultate is 'n gevaarlike praktyk en gewoond te produseer werklik winsgewend strategieë. (Disclaimer: Ek werk van die Quantiacs) Sodra jy gereed is om geld te maak as 'n quant, kan jy aansluit by die jongste Quantiacs outomatiese handel wedstryd, met 'n totaal van 2.250.000 in beleggings beskikbaar: Kan jy kompeteer met die beste kwantitatiewe 5.2k Views middot View upvotes middot nie vir Reproduksie Full Disclaimer: I039m nie 'n quant of algo handelaar myself. I039ve net gehelp om 'n klomp mense om beter te algo handel (kliënt ingenieur by Quantopian) kry. Here039s 'n paar dinge wat I039ve gesien vanuit my ervaring: Lees Hier is twee boeke wat I039ve gesien aanbeveel dat 'n lot. I039ll gee jou die titel en die rede waarom. Algoritmiese Trading: Wen Strategieë en Hul Rasionaal deur Ernie Chan dek die hele grondvloer van die begin tot die meer gevorderde algoritmiese strategieë. Letterlik, sal dit julle uit quotI het geen idee watter soort strategie Ek kon usequot om quotOkay, ek het die keuse tussen momentum, 'n paar handel, beteken terugkeer strategieë. Wat is die beste vir my portefeulje en doelwitte reg nowquot I039m nie 'n grap, dit is 'n goeie inleidende boek en die bibliografie sal jou neem waar jy nodig het om te gaan. Python vir data-analise. Hierdie een is minder spesifiek te algo handel, maar I039m raai you039re gaan word met behulp van 'n soort van-kode stelsel en eerlik, Python is die maklikste en eenvoudigste manier om te gaan. Begin die beoefening van die beste algo handelaars I039ve gesien word diegene wat 'n baie en baie van algoritmes geskep. Geknutsel, probeer, by gebreke. Dit is alles dinge wat jou help om jou strategieë handwerk van kleins af om moontlike Alpha genereer stelsels. Ek weet hoofsaaklik twee bronne waar mense hul praktyk (weereens, ek werk op Quantopian): Zipline, wat is 'n oop-verkry Python Algorithmic Trading Biblioteek wat almal kan gebruik. Dit het ook magte die backtester enjin agter Quantopian wat my lei om my volgende punt Quantopian, wat die platform, data verskaf, en IDE vir jou om jou strategieë te toets in Python en uit te voer met die regte geld as jy dink jy iets het. Nadeel is dat you039ll moet die Quantopian spesifieke API metodes te leer. Onderstebo is dat there039s nie 'n baie om te leer en daar is 'n ton van tutoriale om jou te help deur dit. Sit jou geld daaragter Neem klein bedrae en eintlik sit 'n paar vel in die spel. Back testing en sulke goed, maar you039ll anders dink as jy iets om te verloor nie. Feynman het 'n goeie kwotasie op hierdie: quot039I kan dit doen, maar ek won039t, 039 - en dit is net nog 'n manier om te sê dat jy can039t. - Net sê jou algoritme kan maak geld is anders as wat dit werklik om geld te maak. So as jy dit nie, leer daaruit en herhaal die proses. As jy wen, wees versigtig dat jy eendag kan misluk. - Net 'n paar waarnemings van sien mense gaan deur die proses oor en oor weer. 15.5k Views middot View upvotes middot Nie vir Reproduksie Ek sou aanbeveel wat begin met die basiese konsepte van tegniese ontleding. Sommige boeke wat ek nuttig gevind het (in die volgende volgorde): Kom na My Trading Kamer: A Complete Guide to Trading deur Alexander Elder - Geskik as 'n eerste boek vir enigeen heeltemal nuut in die handel. Tegniese ontleding van die finansiële markte: 'n omvattende gids tot handel metodes en toepassings van John J. Murphy - Stel die leser om 'n wye verskeidenheid van tegnieke gebruik in tegniese ontleding, 'n goeie beginpunt voor die keuse van verdere rigting. Op die program kant sou ek aanbeveel om te begin met 'n platform waar die handelaar verskeie strategieë in 'n voorwaarde omgewing kan implementeer. Sulke platforms is TradeStation of NinjaTrader byvoorbeeld. Hierdie platforms het baie ingeboude funksies byvoorbeeld kartering, makelaar verbindings ens, sodat hulle is relatief maklik om te leer en gerieflik om te gebruik. As iemand by hierdie vlak gekom het, dan glo ek hy is reeds in staat om te besluit of handel is vir hom of nie en indien ja dan watter rigting hy van voorneme is om te neem. Verdere op sal dit nodig wees vir die handelaar om deeglik te bestudeer en gebruik 'n programmeertaal. Bv. C, C, C of Java 'n paar te noem. Dan sal dit nodig wees om vas te stel one039s eie handel metodologieë en benadering, wat tegnieke te gebruik, hoe om dit te gebruik en hoe om hulle verder te verbeter om voor ander te wees. Dit is 'n breë en komplekse onderwerp en al die verskillende tegnieke kan nie ingesluit word in 'n enkele gids. As iemand beslis is op soek na 'n een-boek gids, kan hulle probeer om te gaan na Amazon en tik quot algoritmiese handel quot in die soektog (www. amazon / s / refnbs.). Dit sal lei tot 'n goeie paar boeke gewy aan die onderwerp. Ek het nog nooit gelees enige van hierdie, maar sover ek onthou, gebaseer op die resensies, sommige van hulle stel 'n sekere metode en lei jou deur stap vir stap hoe om dit te implementeer. Ongeag van watter roete wat jy neem, bereid wees om aan die einde you039ll het om jou eie navorsing te doen, te implementeer jou eie idees en sit in die ekstra werk wat dit neem om 'n suksesvolle handelaar geword. 14.5k Views middot View upvotes middot Nie vir Reproduksie Here039s die lys boek Hierdie boek skets die volle siklus van bekragtiging van 'n handel idee, toets, meet, die optimalisering van handel strategieë. Dit sluit baie van die groot idees en wenke oor elke enkele stap in die proses Ek wens I039ve die boek veel vroeër gelees, there039s 'n hele paar oomblik dat I039ve lees iets daar wat ek gedink het ek myself geskep. En dan there039s nog 'n paar vooraf tegniek wat I039ve nooit al oor daar geskryf. Dit is een van die eerste paar boeke I039ve lees oor die onderwerpe wat is eenvoudig genoeg om te verstaan ​​en dit dek die belangrikste punte. Baie goeie inleidende ek hierdie boek gelees het onlangs na I039ve volgende Ernie in Quora, om eerlik te wees ek haven039t lees die hele boek, maar opgetel diegene onderwerpe I039ve belangstel in It039s n goeie aanvulling tot die bogenoemde twee boeke, waarvan sommige onderwerpe beter as die bogenoemde twee verduidelik . As jy meer wil weet oor sekere onderwerpe in algoritmiese handel kennis nie, my ondervinding is dat you039ve verskeie boeke uit verskillende skrywer lees selfs oor dieselfde onderwerp. There039s nie 'n enkele boek wat alles dek, maar elke boek te doen jy iets. I039ve 'n lys langer boek hangende skryf, maar ek dink die bogenoemde drie moet meer as genoeg wees vir jou om te begin met. Net wil byvoeg, daar is 'n paar webtuistes en boeke oor hierdie onderwerpe eintlik wil jy verkoop dienste of sagteware, die inhoud van die boek is eintlik net bemarkingsmateriaal. Maar die boeke I039ve hierbo gelys is werklik opvoedkundige. Die skrywer is so groot dat sit kwaliteit materiaal op die boek. 2.2k Views middot View upvotes middot Nie vir Reproduction851 Weekliks afgelaai Turquaz Finansiële Rekeningkunde is 'n volledige dubbelinskrywing finansies oplossing gerig op klein en medium grootte enterprizes met voorraadbestuur, rekeninge recievable, rekeninge betaalbaar, algemene grootboek, joernaal, multi geldeenheid, gevorderde verslag en ontleding 569 keer afgelaai per week Quickfix is ​​die wêreld se eerste open source C FIX (finansiële inligting uit te ruil) enjin, help finansiële instellings maklik te integreer met mekaar. Die SVN is nou gesluit. Laaste kode word gehuisves by GitHub. GitHub / Quickfix / Quickfix 343 keer afgelaai per week beursanalise stelsel, met aandele pryse horlosie, intraday en geskiedenis kaarte met aanwysers tegniese ontleding, vlak II / markdrakrag oog, nuus kyk, outomatiese handel stelsels, geïntegreerde handel. Op grond van Eclipse RCP raamwerk. 341 keer afgelaai per week jGnash Persoonlike Finansies 213 keer afgelaai per week Quickfix / J is 'n 100 Java implementering van die gewilde Quickfix open source FIX protokol enjin. Quickfix / J kenmerke sluit in steun vir FIX protokol weergawes 4.0 deur middel van 4,4 en 5,0 / FIXT1.1 (www. fixprotocol. org). Let wel net-lees dat die SourceForge SVN repokoers is. Huidige repokoers kan hier gevind word: GitHub / Quickfix-J 203 keer afgelaai per week Veilige Trading kliënt vir gewildste Bitcoin ruil 232 keer afgelaai per week JStock - Gratis Stock Market sagteware het verskuif na GitHub. GitHub / yccheok / jstock 199 keer afgelaai per week aandelemark, kommoditeit en tegniese ontleding kartering app gebaseer op die Qt toolkit. Rekbaar plugin stelsel vir aanhalings en aanwysers. Portefeulje, terug toets, grafiek voorwerpe en nog baie meer funksies ingesluit. 52 keer afgelaai per week Free Java komponente vir Kwantitatiewe Finansies en Algorithmic Trading 72 keer afgelaai per week Trading stelsel geskryf in Python insluitende aanhalings Management, Historiese en lewendige data, data invoer / uitvoer, kartering, Kandelaar, tegniese ontleding, outomatiese waarskuwings, portefeuljebestuur, risikobestuur, valuta, en nog baie meer. 71 keer afgelaai per week vrye data downloader na 'n Excel vel 38 keer afgelaai per week 'n Grafiese platform vir die monitering van die Amerikaanse aandelemark met behulp OpenTick. Ons fokus is om 'n eenvoudige en intuïtieve nog verskaffing van die algemeen gebruikte instrumente het (tegniese ontleding, erwe.). 33 keer afgelaai per week MT4 JForex Kliënte Bridge - is eenvoudig plug-in vir Dukascopy JForex platform. Dit maak dit moontlik om handel seine te dra van Meta Trader platform om JForex kennisgewings van Meta Trader log lêer ontvang en uit te voer oorgedra handel seine. 30 keer afgelaai per week Aandelemark tegniese ontleding kartering aansoek. 121 keer afgelaai per week jCandle is 'n ryk kliënt vir tegniese grafiek analise. Met jCandle jy in staat is om jou portefeulje, werk aanhalings te bestuur, te besigtig kandelaar kaarte, en kaarte met kandelaar patrone, aanwysers en 'n handel simulator analiseer. Die vakbond simulator simuleer verskeie aanwysers met verskeie parameter kombinasies. Die vakbond simulator autoselects die aanwyser parameters wat die beste wins vir 'n elke aanwyser tipe. Die kombinasie van die aanwyser ommekeer seine en die bespeur kandelaar patrone gee die algehele waarskynlikheid vir 'n aankoop of verkoop. Die aanwysers bereken met die beste wins parameters sal gewys word op verskillende analise kaarte. 55 keer afgelaai per week Stelsel vir ontleding van finansiële markte met behulp van tegniese ontleding. Sluit fasiliteite vir voorraad kartering en futures kartering, asook outomatiese generasie van handel seine wat gebaseer is op die gebruiker gekies kriteria. Bedryf op beide daaglikse en intraday data. 51 keer afgelaai per week Simulasie platform vir outomatiese aandelebeurs handel. Dit lewer statistieke om prestasie op historiese data te ontleed en te kan vergelyking tussen handel strategieë, wat gebruik kan word gekodeer in Java. 25 keer afgelaai per week Chartsy - Open Source voorraad kartering, keuring en verhandelingsplatform 19 keer afgelaai per week Finansies :: aanhaling is 'n perl module wat haal vertraag aanlyn voorraadkwotasies. Die Finansies :: Haal kan quote haal uit 'n verskeidenheid van bronne, insluitend die NYSE, die ASX, en 'n aantal Europese uitruil. 41 keer afgelaai per week The Open Java Trading System (OJTS) is bedoel om 'n gemeenskaplike infrastruktuur wees om (voorraad) handel stelsels te ontwikkel. Daar is vier dele: byeenkoms van rou data oor die internet, erkenning van handel seine, 'n visualisering module en handel met banke. 28 keer afgelaai per week C biblioteek en monsters vir die verwerking van data mark van die Spark API 23 keer afgelaai per week JQuantLib bied 'n gratis, open-source en omvattende raamwerk vir kwantitatiewe finansies. It39s n 100 Java vertaling van QuantLib, wat geskryf is in C. JQuantLib bied pryse waardasie van 'n wye verskeidenheid van bateklasse, metodes en modelle 56 keer afgelaai per week OTC handel netwerk 12 weeklikse downloadsBest Programmering taal vir Algorithmic Trading Systems Deur Michael Saal-Moore op 26 Julie 2013 Een van die mees algemene vrae wat ek ontvang in die QS Koevert is Wat is die beste programmeertaal vir algoritmiese handel. Die kort antwoord is dat daar geen beste taal. Strategie parameters, prestasie, modulariteit, ontwikkeling, veerkragtigheid en koste moet al oorweeg. In hierdie artikel sal uiteensetting van die nodige komponente van 'n algoritmiese handel stelsel argitektuur en hoe besluite oor die implementering invloed op die keuse van taal. Eerstens, sal die belangrikste komponente van 'n algoritmiese handel stelsel in ag geneem word, soos die navorsing gereedskap, portefeulje-optimaliseerder, risikobestuurder en uitvoering enjin. Daarna sal verskillende handel strategieë ondersoek word en hoe hulle invloed op die ontwerp van die stelsel. In die besonder die frekwensie van die saak en die waarskynlike handel volume sal beide bespreek word. Sodra die handel strategie gekies is, is dit nodig om argitek die hele stelsel. Dit sluit in die keuse van hardeware, die bedryfstelsel (s) en stelsel veerkragtigheid teen seldsame, potensieel katastrofiese gebeure. Terwyl die argitektuur oorweeg word, moet daar behoorlik ag gegee word aan prestasie - beide om die navorsing gereedskap sowel as die lewendige uitvoering omgewing. Wat is die handel stelsel probeer om te doen voordat jy besluit op die beste taal waarmee 'n outomatiese handel stelsel is dit nodig om die vereistes te definieer skryf. Is die stelsel gaan suiwer uitvoering gebaseer Sal die stelsel vereis dat 'n risikobestuur of portefeulje konstruksie kursus sal die stelsel vereis dat 'n hoë-prestasie backtester Vir die meeste strategieë die handel stelsel kan verdeel word in twee kategorieë wees: Navorsing en sein generasie. Navorsing handel oor evaluering van 'n strategie prestasie oor historiese data. Die proses van evaluering van 'n handel strategie oor data voor mark staan ​​bekend as back testing. Die grootte van data en algoritmiese kompleksiteit sal 'n groot impak op die rekenaarmatige intensiteit van die backtester het. CPU spoed en samelopendheid is dikwels die beperkende faktore in die optimalisering van uitvoering navorsing spoed. Sein generasie is gemoeid met die opwekking van 'n stel van handel seine van 'n algoritme en sulke bestellings stuur na die mark, gewoonlik deur 'n makelaar. Vir sekere strategieë 'n hoë vlak van prestasie vereis. I / O kwessies soos netwerk bandwydte en latency is dikwels die beperkende faktor in die optimalisering van die uitvoering stelsels. So die keuse van tale vir elke komponent van jou hele stelsel kan heel anders wees. Tipe, frekwensie en volume van Strategie Die tipe algoritmiese strategie in diens sal 'n aansienlike impak op die ontwerp van die stelsel het. Dit sal nodig wees om te oorweeg die markte verhandel word, die konneksie na eksterne data verskaffers, die frekwensie en volume van die strategie, die kompromis tussen gemak van ontwikkeling en verbetering van die prestasie, sowel as enige persoonlike hardeware, insluitend mede geleë persoonlike bedieners, GPU's of FPGAs wat nodig mag wees. Die tegnologie keuses vir 'n lae-frekwensie Amerikaanse aandele strategie sal grootliks verskil van dié van 'n hoë-frekwensie statistiese arbitrage strategie handel oor die termynmark wees. Voor die keuse van taal baie data verskaffers moet geëvalueer alledaagse n strategie aan die hand. Dit sal nodig wees om verbinding met die verkoper, struktuur van enige APIs, tydigheid van die data, bergingsvereistes en veerkragtigheid te oorweeg in die lig van 'n ondernemer gaan af. Dit is ook wys om 'n vinnige toegang tot verskeie verskaffers in besit te neem Verskeie instrumente almal hul eie stoor eienaardighede, voorbeelde van wat insluit verskeie ENKELE simbole vir aandele en verval datums vir Toekomsnavorsing (nie aan enige spesifieke OTC data te noem). Dit moet ingereken in die platform ontwerp. Frekwensie van strategie is waarskynlik een van die grootste oorsake van hoe die tegnologie stapel sal gedefinieer word nie. Strategieë in diens data meer dikwels as fyn of tweedens bars vereis betekenisvolle ag met betrekking tot prestasie. 'N Strategie oorskry tweedens bars (bv merk data) lei tot 'n prestasiegedrewe ontwerp as die primêre vereiste. Vir 'n hoë frekwensie strategieë 'n aansienlike bedrag van die mark data sal moet word gestoor en geëvalueer. Sagteware soos HDF5 of KDB word algemeen gebruik vir hierdie rolle. Met die oog op die uitgebreide volumes van data wat nodig is vir HFT aansoeke te verwerk, moet 'n groot skaal new backtester en uitvoering stelsel gebruik word. C / C (moontlik met 'n paar assembler) is geneig om die sterkste taal kandidaat. Ultrahoëfrekwensie strategieë sal ongetwyfeld vereis persoonlike hardeware soos FPGAs, ruil mede-plek en kernal / netwerk koppelvlak tuning. Navorsing Systems Research stelsels tipies behels 'n mengsel van interaktiewe ontwikkeling en outomatiese script. Die voormalige vind dikwels plaas in 'n IDE soos Visual Studio, Matlab of R Studio. Laasgenoemde behels uitgebreide numeriese berekeninge oor talle parameters en data punte. Dit lei tot 'n taalkeuse verskaffing van 'n eenvoudige omgewing te toets kode, maar bied ook voldoende prestasie om strategieë oor verskeie parameter dimensies evalueer. Tipiese Ides in hierdie ruimte sluit Microsoft Visual C / C, wat uitgebreide ontfouting nuts,-kode voltooiing vermoëns bevat (via IntelliSense) en eenvoudige oorsigte van die hele projek stapel (via die databasis ORM, LINQ) Matlab. wat ontwerp is vir 'n uitgebreide numeriese lineêre algebra en gevectoriseerd bedrywighede, maar in 'n interaktiewe konsole wyse R Studio. wat vou die R statistiese taal konsole in 'n volwaardige IO Eclipse IDE vir Linux Java en C en semi-eiendom Ides soos Enthought Canopy vir Python, wat data-analise biblioteke soos Numpy sluit. Scipy. scikit-leer en pandas in 'n enkele interaktiewe (konsole) omgewing. Vir numeriese back testing, al die bogenoemde tale is geskik, maar dit is nie nodig om 'n GUI / IDE gebruik as die kode in die agtergrond sal uitgevoer word. Die eerste oorweging in hierdie stadium is dat van die uitvoering spoed. A saamgestel taal (soos C) is dikwels nuttig as die back testing parameter dimensies is groot. Onthou dat dit nodig versigtig vir sulke stelsels te wees is as wat die saak gevolge het verduidelik tale soos Python dikwels gebruik van 'n hoë-prestasie biblioteke soos Numpy / pandas vir die back testing stap maak, ten einde 'n redelike mate van mededingendheid te behou met saamgestel ekwivalente. Uiteindelik is die wat gekies is vir die back testing taal sal bepaal word deur spesifieke algoritmiese behoeftes sowel as die verskeidenheid van biblioteke beskikbaar in die taal (meer op wat hieronder). Tog kan die taal wat gebruik word vir die backtester en navorsing omgewings heeltemal onafhanklik van dié wat in die portefeulje konstruksie, risikobestuur en uitvoering komponente, soos gesien sal word. Portefeulje Konstruksie en Risikobestuur Die portefeulje konstruksie en risikobestuur komponente word dikwels oor die hoof gesien deur kleinhandel algoritmiese handelaars. Dit is byna altyd 'n fout. Hierdie gereedskap verskaf die meganisme waardeur kapitaal sal bewaar word. Hulle het nie net probeer om die aantal riskant verbintenis te verlig, maar ook hulself te verminder kansellasies van die ambagte, die vermindering van transaksiekoste. Gesofistikeerde weergawes van hierdie komponente kan 'n beduidende invloed op die gehalte en consistentcy van winsgewendheid het. Dit is maklik om 'n stabiele strategieë as die portefeulje konstruksie meganisme en risikobestuurder skep kan maklik aangepas word om verskeie stelsels te hanteer. So moet hulle in aanmerking kom essensiële komponente aan die begin van die ontwerp van 'n algoritmiese handel stelsel. Die werk van die portefeulje konstruksie stelsel is om 'n stel van gewenste ambagte te neem en te produseer die stel van die werklike ambagte wat kansellasies te verminder, blootstelling aan verskeie faktore (soos sektore, bateklasse, wisselvalligheid ens) in stand te hou en te optimaliseer die toekenning van kapitaal na verskeie strategieë in 'n portefeulje. Portefeulje konstruksie verminder dikwels 'n lineêre algebra probleem (soos 'n matriks faktorisering) en vandaar prestasie is hoogs afhanklik van die doeltreffendheid van die numeriese lineêre algebra implementering beskikbaar. Gemeenskaplike biblioteke sluit uBLAS. LAPACK en NAG vir C. MatLab beskik ook op groot skaal new matriksbewerkings. Python gebruik Numpy / Scipy vir sulke berekeninge. 'N gereeld herbalanseer portefeulje sal 'n saamgestel (en goed new) matriks biblioteek vereis dat hierdie stap uit te voer, sodat dit nie die handel stelsel knelpunt. Risikobestuur is 'n ander baie belangrike deel van 'n algoritmiese handel stelsel. Risiko kan kom in baie vorms: Groter wisselvalligheid (hoewel dit as wenslik vir sekere strategieë kan gesien word), verhoogde korrelasies tussen bateklasse, teenparty verstek bediener kragonderbrekings, Black Swan gebeure en ongemerk foute in die handel kode, te noem 'n paar. Risikobestuur komponente probeer antisipeer die gevolge van oormatige wisselvalligheid en korrelasie tussen bateklasse en hul daaropvolgende effek (s) op die handel kapitaal. Dikwels is dit verminder tot 'n stel van statistiese berekeninge soos Monte Carlo stres toetse. Dit is baie soortgelyk aan die computational behoeftes van 'n afgeleide pryse enjin en as sodanig sal CPU-gebonde wees. Hierdie simulasies is hoogs parallelisable (sien onder), en 'n sekere mate, is dit moontlik om die hardeware te gooi by die probleem. Uitvoering Systems Die werk van die uitvoering stelsel is om gefiltreer handel seine van die portefeulje konstruksie en risikobestuur komponente ontvang en stuur hulle oor na 'n makelaar of 'n ander manier van toegang tot die mark. Vir die meerderheid van die kleinhandel algoritmiese handel strategieë behels dit 'n API of FIX verbinding met 'n makelaars soos Interaktiewe Brokers. Die primêre oorwegings wanneer jy moet besluit op 'n taal insluit gehalte van die API, taal-wrapper beskikbaarheid vir 'n API, uitvoering frekwensie en die verwagte glip. Die kwaliteit van die API verwys na hoe goed gedokumenteer is dit, watter soort prestasie dit bied, of dit moet selfstandige sagteware te verkry of 'n poort vasgestel kan word in 'n onthoofde mode (dit wil sê geen GUI). In die geval van Interaktiewe Brokers, die Trader WorkStation instrument moet hardloop in 'n GUI omgewing ten einde toegang tot hul API. Een keer het ek 'n lessenaar Ubuntu uitgawe installeer op 'n wolk bediener Amazon toegang Interaktiewe Brokers afstand, suiwer vir hierdie rede waarom die meeste API sal 'n C en / of Java koppelvlak verskaf. Dit is gewoonlik tot die gemeenskap te taalspesifieke omhulsels vir C, Python, R, Excel en MatLab ontwikkel. Let daarop dat met elke bykomende plugin gebruik (veral API omhulsels) is daar ruimte vir foute insluip in die stelsel. toets altyd plugins van hierdie soort en verseker dat hulle aktief in stand gehou. 'N waardevolle meter is om te sien hoeveel nuwe updates vir 'n kodebasis is gemaak in die afgelope maande. Uitvoering frekwensie is van die uiterste belang in die uitvoering algoritme. Let daarop dat honderde bestellings elke minuut kan gestuur word en as sodanig prestasie is van kritieke belang. Glip aangegaan sal word deur middel van 'n erg-presterende uitvoering stelsel en dit sal 'n dramatiese impak op winsgewendheid het. Staties-getik tale (sien onder) soos C / Java is oor die algemeen 'n optimale vir uitvoering maar daar is 'n trade-off in die ontwikkeling tyd, toetsing en gemak van die onderhoud. Dinamiese-getik tale, soos Python en Perl is nou algemeen vinnig genoeg. Maak altyd seker dat die komponente is ontwerp om in 'n modulêre wyse (sien onder), sodat hulle kan omgeruil uit die stelsel skale. Argitektoniese beplanning en ontwikkelingsproses Die komponente van 'n handel stelsel, die frekwensie en volume vereistes wat hierbo bespreek is, maar stelsel infrastruktuur het nog gedek moet word. Diegene wat optree as 'n kleinhandel handelaar of besig om in 'n klein fonds sal waarskynlik dra baie regeer. Dit sal die finale implementering van die stelsel wat nodig is om te wees wat die alfa model, risikobestuur en uitvoering parameters wees, en ook. Voordat delf in spesifieke tale die ontwerp van 'n optimale stelsel argitektuur bespreek sal word. Skeiding van Kommer Een van die belangrikste besluite wat by die begin moet word, is hoe om die belange van 'n handel stelsel te skei. In die ontwikkeling van sagteware, beteken dit in wese hoe om op te breek die verskillende aspekte van die handel stelsel in aparte modulêre komponente. Deur bloot koppelvlakke by elk van die komponente is dit maklik om te ruil uit dele van die stelsel vir ander weergawes wat prestasie hulp, betroubaarheid of onderhoud, sonder om die wysiging enige eksterne afhanklikheid kode. Dit is die beste praktyk vir sulke stelsels. Vir strategieë teen laer frekwensies sulke praktyke word aangeraai. Vir ultra hoë frekwensie handel die reëlboek mag hê om dit te ignoreer ten koste van die opstel van die stelsel vir nog meer prestasie. 'N Meer styf gekoppel stelsel wat wenslik mag wees. Die skep van 'n komponent kaart van 'n algoritmiese handel stelsel is 'n artikel op sigself die moeite werd. Maar 'n optimale benadering is om seker te maak daar is afsonderlike komponente vir die historiese en real-time mark data insette, data stoor, toegang tot die inligting API, backtester, strategie parameters, portefeulje konstruksie, risikobestuur en outomatiese uitvoering stelsels. Byvoorbeeld, as die data stoor wat gebruik is tans onderpresteer, selfs teen beduidende vlakke van optimalisering, kan dit omgeruil met 'n minimale herskryf om die data inname of toegang data-API. Sover die as backtester en daaropvolgende komponente betref, is daar geen verskil. Nog 'n voordeel van vervreem komponente is dat dit kan 'n verskeidenheid van programmeertale wat gebruik word in die algehele stelsel. Daar is geen rede om te beperk tot 'n enkele taal as die kommunikasie metode van die komponente is taal onafhanklik. Dit sal die geval wees indien hulle kommunikeer via die TCP / IP, ZeroMQ of 'n ander taal-onafhanklike protokol. As 'n konkrete voorbeeld, kyk na die geval van 'n back testing stelsel in C vir verwerking van syfers prestasie geskryf, terwyl die portefeuljebestuurder en uitvoering stelsels in Python geskryf met behulp van Scipy en IBPy. Prestasie oorwegings prestasie is 'n belangrike oorweging vir die meeste handel strategieë. Vir hoër frekwensie strategieë is dit die belangrikste faktor. Prestasie dek 'n wye verskeidenheid van onderwerpe, soos algoritmiese uitvoering spoed, netwerk latency, bandwydte, data I / O, concurrency / parallelisme en skalering. Elkeen van hierdie gebiede word individueel gedek deur groot handboeke, so hierdie artikel sal net krap die oppervlak van elke onderwerp. Argitektuur en taalkeuse sal nou in terme van hul effek op prestasie bespreek word. Die heersende wysheid soos deur Donald Knuth. een van die vaders van Rekenaarwetenskap, is dat voortydige optimalisering is die wortel van alle kwaad. Dit is byna altyd die geval nie - behalwe wanneer die bou van 'n hoë frekwensie handel algoritme Vir diegene wat belangstel in die laer frekwensie strategieë is, 'n gemeenskaplike benadering is om 'n stelsel te bou in die eenvoudigste manier moontlik en net optimaliseer as knelpunte begin om te verskyn. Profilering gereedskap gebruik om te bepaal waar knelpunte ontstaan. Profiele gemaak kan word vir al die bogenoemde faktore, hetsy in 'n MS Windows of Linux-omgewing. Daar is baie bedryfstelsel en taal gereedskap wat beskikbaar is om dit te doen, sowel as nuts derde party. Taalkeuse sal nou in die konteks van prestasie bespreek word. C, Java, Python, R en MatLab bevat almal 'n hoë-prestasie biblioteke (hetsy as deel van hul standaard of ekstern) vir basiese datastrukture en algoritmiese werk. C skepe met die Standard Sjabloon Biblioteek, terwyl Python bevat Numpy / Scipy. Gemeenskaplike wiskundige take te vinde in hierdie biblioteke en dit is selde voordelig vir 'n nuwe implementering skryf. Een uitsondering is wanneer hoogs persoonlike hardeware argitektuur vereis en 'n algoritme maak uitgebreide gebruik van eiendom uitbreidings (soos persoonlike caches). Maar dikwels heruitvinding van die wiel afval tyd dat 'n beter bestee kan word ontwikkel en die optimalisering van ander dele van die handel infrastruktuur. Ontwikkeling tyd is uiters kosbare veral in die konteks van uitsluitlike ontwikkelaars. Latency is dikwels 'n kwessie van die uitvoering stelsel as die navorsing gereedskap gewoonlik op dieselfde masjien. Vir die eerste keer nie kan latency voorkom by verskeie plekke langs die uitvoering pad. Databasisse moet geraadpleeg word (skyf / netwerk latency), seine moet gegenereer word (bedryfstelsel firmas, kernal boodskappe latency), handel seine gestuur (NIC latency) en bestellings verwerk (ruil stelsels interne latency). Vir hoër frekwensie bedrywighede is dit nodig om intiem vertroud is met kernal optimalisering asook die optimalisering van die netwerk oordrag geword. Dit is 'n diep gebied en is aansienlik buite die bestek van die artikel, maar as 'n UHFT algoritme dan verlang bewus te wees van die diepte van kennis wat nodig is Caching is baie nuttig in die toolkit van 'n kwantitatiewe handel ontwikkelaar. Caching verwys na die konsep van die stoor gereeld besoek data op 'n wyse wat toegang hoër-prestasie kan, ten koste van die potensiële staleness van die data. 'N Algemene gebruik geval kom voor in die web-ontwikkeling by die neem van die data van 'n skyf gerugsteun relasionele databasis en sit dit in die geheue. Enige daaropvolgende versoeke vir die data het nie na die databasis en so prestasie winste kan beduidend wees getref. Vir handel situasies kan caching uiters voordelig wees. Byvoorbeeld, kan die huidige stand van 'n strategie portefeulje bewaar word in 'n kas totdat dit herbalanseer, sodanig dat die lys nie die geval is moet herskep op elke lus van die handel algoritme. Sulke wedergeboorte is geneig om 'n hoë CPU of skyf I / O werking wees. Maar kas is nie sonder sy eie sake. Herlewing van die kas data in 'n keer, as gevolg van die volatilie aard van die kas stoor, kan beduidende vraag op infrastruktuur te plaas. Nog 'n probleem is hond-hei. waar verskeie generasies van 'n nuwe kas kopie onder uiters hoë lading, wat lei tot mislukking waterval gedra. Dinamiese geheuetoekenning is 'n duur operasie in uitvoering sagteware. Dit is dus noodsaaklik vir hoër prestasie handel aansoeke om goed bewus wees hoe geheue word toegeken en deallocated tydens program vloei. Nuwer taal standaarde soos Java, C en Python al uit te voer outomatiese vullisverwydering. wat verwys na deallocation van dinamiese toegeken geheue wanneer voorwerpe uitgaan van omvang. Vullisverwydering is baie nuttig tydens ontwikkeling as dit verminder foute en hulpmiddels leesbaarheid. Dit is egter dikwels sub-optimale vir sekere hoë frekwensie handel strategieë. Custom vullisverwydering word dikwels verlang vir hierdie gevalle. In Java, byvoorbeeld deur tuning die vullis versamelaar en hoop opset, is dit moontlik om 'n hoë werkverrigting vir HFT strategieë te verkry. C nie die geval bied 'n boorling vullis versamelaar en daarom is dit nodig om al geheuetoekenning / deallocation hanteer as deel van 'n implementering voorwerpe. Terwyl potensieel vatbaar fout (potensieel lei tot hangend wysers) is dit baie nuttig om fyn beheer van hoe voorwerpe verskyn op die hoop vir sekere aansoeke het. By die keuse van 'n taal te verseker om te bestudeer hoe die vullis versamelaar werk en of dit kan verander word om te optimaliseer vir 'n spesifieke gebruik geval. Baie bedrywighede in algoritmiese handel stelsels is vatbaar vir Parallellisatie. Dit verwys na die konsep van die uitvoering van verskeie programmatiese bedrywighede op dieselfde tyd, d. w.z in parallel. Sogenaamde embarassingly parallelle algoritmes sluit stappe wat ten volle onafhanklik van ander stappe kan bereken word. Sekere statistiese bedrywighede, soos Monte Carlo simulasies, is 'n goeie voorbeeld van embarassingly parallelle algoritmes soos elke ewekansige trekking en daaropvolgende operasie pad kan bereken word sonder kennis van ander paaie. Ander algoritmes is slegs gedeeltelik parallelisable. Vloeidinamika simulasies is so 'n voorbeeld, waar die domein van berekening kan onderverdeel, maar uiteindelik hierdie domeine moet met mekaar en sodoende die bedrywighede is gedeeltelik opeenvolgende kommunikeer. Parallelisable algoritmes is onderhewig aan Amdahls wet. wat 'n teoretiese boonste limiet aan die prestasie verhoging van 'n parallelised algoritme toe onderhewig aan N aparte prosesse (bv op 'n CPU kern of draad). Parallellisatie het al hoe belangriker as 'n middel van die optimalisering geword sedert verwerker klok-spoed het gestagneer, soos nuwer verwerkers bevat baie kern waarmee parallel berekeninge uit te voer. Die opkoms van die verbruikers grafiese hardeware (predominently vir die video speletjies) het gelei tot die ontwikkeling van grafiese verwerking van eenhede (GPU), wat honderde kerne vir hoogs konkurrente bedrywighede bevat. Sulke GPU's is nou baie bekostigbaar. Hoë-vlak raamwerke, soos Nvidias CUDA het gelei tot wydverspreide aanvaarding in die akademie en finansies. Sulke GPU hardeware is oor die algemeen slegs geskik vir die navorsing aspek van kwantitatiewe finansies, terwyl ander meer gespesialiseerde hardeware (insluitend veldwerk-programmeerbare Gate Arrays - FPGAs) word gebruik vir (O) HFT. Tans is die meeste moderne langauges ondersteun 'n mate van concurrency / multi-threading. Dit is dus maklik om 'n backtester optimaliseer, aangesien alle berekeninge is oor die algemeen onafhanklik van die ander. Skalering in sagteware-ingenieurswese en bedrywighede verwys na die vermoë van die stelsel om konsekwent te verhoog vragte in die vorm van 'n groter versoeke, hoër gebruik verwerker en meer geheue toekenning te hanteer. In algoritmiese handel strategie is in staat om te skaal as dit groter hoeveelhede kapitaal kan aanvaar en steeds lewer konsekwente opbrengste. Die handel tegnologie stapel skale as dit groter handel volumes en verhoogde latency kan verduur, sonder Bottelnek. Terwyl stelsels moet ontwerp volgens skaal, is dit dikwels moeilik om vooraf te voorspel waar 'n bottelnek sal plaasvind. Wettisch meld, toetsing, profilering en monitering sal grootliks help in sodat 'n stelsel op skaal. Tale self dikwels beskryf as onbestygbare. Dit is gewoonlik die gevolg van verkeerde inligting, eerder as harde werklikheid. Dit is die totale tegnologie stapel wat gevolg moet word vasgestel vir scalability, nie die taal. Dit is duidelik dat sekere tale het 'n groter prestasie as ander in die besonder gebruik gevalle, maar een taal is nooit beter as 'n ander in elke sin. Een middel van die bestuur van skaal is kommer skei, soos hierbo genoem. Met die oog op die vermoë om spykers te hanteer in die stelsel (dit wil sê 'n skielike wisselvalligheid wat 'n reeks van bedrywe snellers) verder te voer, is dit nuttig om 'n boodskap toustaan ​​argitektuur te skep. Dit beteken eenvoudig die plasing van 'n boodskap tou stelsel tussen komponente sodat bestellings gestapel as 'n sekere komponent is nie in staat om baie versoeke te verwerk. Eerder as om versoeke verlore hulle is eenvoudig gehou in 'n stapel, totdat die boodskap hanteer. Dit is veral nuttig vir die stuur van ambagte 'n uitvoering enjin. As die enjin is wat ly onder swaar latency dan sal dit te staaf ambagte. 'N tou tussen die handel seingenerator en die uitvoering API sal hierdie kwessie te verlig ten koste van potensiële handel glip. 'N gerespekteerde open source boodskap tou makelaar is RabbitMQ. Hardeware en bedryfstelsels Die hardeware bestuur van jou strategie kan 'n beduidende impak op die winsgewendheid van jou algoritme het. Dit is nie 'n probleem beperk tot 'n hoë frekwensie handelaars nie. 'N swak keuse in hardeware en bedryfstelsel kan lei tot 'n masjien crash of herlaai op die mees ongeleë oomblik. Dit is dus nodig om te oorweeg waar jou aansoek sal woon. Die keuse is oor die algemeen tussen 'n persoonlike lessenaar masjien, 'n afgeleë bediener, 'n wolk verskaffer of 'n ruil mede-geleë bediener. Desktop masjiene is maklik om te installeer en te administreer, veral met nuwer use bedryfstelsels soos Windows 08/07, Mac OSX en Ubuntu. Lessenaar stelsels te doen in besit te neem 'n paar belangrike nadele egter. Die eerste is dat die weergawes van bedryfstelsels ontwerp vir desktop masjiene is geneig om te herselflaai benodig / lap (en dikwels op die slegste tye). Hulle gebruik ook meer computational hulpbronne deur die hoofde van wat 'n grafiese gebruikerskoppelvlak (GUI). Benutting hardeware in 'n huis (of plaaslike kantoor) omgewing kan lei tot die internet konneksie en krag uptime probleme. Die grootste voordeel van 'n lessenaar stelsel is dat beduidende computational perdekrag kan gekoop word vir die fraksie van die koste van 'n afgeleë dedicated server (of wolk-gebaseerde stelsel) van vergelykbare spoed. 'N dedicated server of wolk-gebaseerde masjien, terwyl dikwels duurder as 'n lessenaar opsie, maak voorsiening vir meer betekenisvol ontslag infrastruktuur, soos outomatiese data rugsteun, die vermoë om meer reguit te verseker uptime en afgeleë monitering. Hulle is moeiliker om te administreer, aangesien hulle die vermoë om afgeleë login vermoëns van die bedryfstelsel gebruik vereis. In Windows is dit oor die algemeen deur die GUI Afstandwerkskerm protokol (RDP). In Unix-gebaseerde stelsels Veilige die opdrag-lyn skil (SSH) is gebruik. Unix-gebaseerde bediener infrastruktuur is byna altyd command-line gebaseer wat onmiddellik lewer-GUI gebaseer programmeringshulpmiddels (soos Matlab of Excel) te onbruikbaar wees. 'N mede-geleë bediener, as die frase gebruik word in die finansiële markte, is bloot 'n toegewyde bediener wat woonagtig is in 'n ruil ten einde latency van die handel algoritme te verminder. Dit is absoluut noodsaaklik vir sekere hoë frekwensie handel strategieë, wat staatmaak op 'n lae latency om alfa genereer. Die finale aspek hardeware keuse en die keuse van programmeertaal is platform-onafhanklikheid. Is daar 'n behoefte aan die kode uit te voer oor verskeie verskillende bedryfstelsels Is die kode wat ontwerp is om te loop op 'n spesifieke tipe verwerker argitektuur, soos die Intel x86 / x64 of sal dit moontlik om uit te voer op RISC verwerkers wees soos dié vervaardig deur ARM sal hierdie kwessies hoogs afhanklik van die frekwensie en tipe strategie geïmplementeer word. Michael Saal-Moore Mike is die stigter van QuantStart en is betrokke by die kwantitatiewe finansiële sektor vir die afgelope vyf jaar, in die eerste plek as 'n quant ontwikkelaar en later as 'n quant handelaar konsultasie vir verskansingsfondse.


No comments:

Post a Comment