Tuesday, October 11, 2016

Die Gebruik Van Python , Ibpy En Die Api Interaktiewe Brokers Om Automatiseer Trades

Die gebruik van Python, IBPy en die API Interaktiewe Brokers om Automatiseer Trades Deur Michael Saal-Moore op 5 Februarie 2014 'N Rukkie terug het ons bespreek hoe om 'n Interaktiewe Brokers demo rekening. Interaktiewe Brokers is een van die grootste makelaars wat gebruik word deur die kleinhandel algoritmiese handelaars as gevolg van sy relatief lae minimale rekeningsaldo vereistes (10000 dollar) en (relatief) eenvoudig API. In hierdie artikel sal ons gebruik van 'n demo rekening te maak om ambagte teen die API Interaktiewe Brokers outomatiseer, via Python en die IBPy plugin. Openbaarmaking: Ek het geen affiliasie met Interaktiewe Brokers. Ek het hulle voor gebruik in 'n professionele fonds konteks en as sodanig is vertroud met hul sagteware. Die Interaktiewe Brokers API Interaktiewe Brokers is 'n groot onderneming en as sodanig maak voorsiening vir 'n wye verskeidenheid van handelaars, wat wissel van diskresionêre kleinhandel outomatiese institusionele. Dit het daartoe gelei dat hul grafiese koppelvlak, Trader Workstation (TWS), 'n beduidende hoeveelheid "klokkies en fluitjies" in besit te neem. Benewens TWS is daar ook 'n liggewig komponent genoem die IB Gateway, wat dieselfde toegang tot die IB bedieners bied, al is dit sonder die ekstra funksie van die GUI. Vir ons outomatiese handel doeleindes sal ons nie eintlik nodig het die TWS GUI, maar ek dink vir hierdie handleiding is dit demonstratiewe om daarvan gebruik te maak. Die onderliggende argitektuur is gebaseer op 'n kliënt / bediener-model wat deur 'n API beide uitvoering en markdata feeds (historiese en real-time) bied. Dit is hierdie API wat ons sal gebruik in hierdie handleiding te outomatiese bestellings stuur, via IBPy. IBPy is geskryf om "draai" die inheemse Java API en maak dit maklik om te bel van Python. Die twee belangrikste biblioteke ons is geïnteresseerd in binne IBPy is ib. ext en ib. opt. Laasgenoemde is 'n hoër vlak en maak gebruik van funksies in die voormalige. In die volgende uitvoering gaan ons 'n uiters eenvoudige voorbeeld, wat net 'n enkele mark om 100 eenhede van Google voorraad aan te koop sal stuur, met behulp van smart order routing skep. Laasgenoemde is ontwerp om die beste prys in die praktyk bereik, hoewel dit in sommige gevalle is dit suboptimale kan wees. Maar vir die doeleindes van hierdie handleiding sal dit voldoende wees. Implementering in Python Voordat ons begin is dit nodig die stappe in die vorige tutoriaal het gevolg op die oprigting van 'n Interaktiewe Brokers rekening. Daarbenewens is dit nodig om 'n vorige Python werkplek het, sodat ons IBPy kan installeer. wat jou sal toelaat om ander aspekte van jou kode saam te bind. Die handleiding oor die installering van 'n afgestorwene navorsingsomgewing sal die nodige werkplek te skep. Die installering van IBPy IBPy is 'n Python wrapper geskryf rondom die Java-gebaseerde interaktiewe Brokers API. Dit maak die ontwikkeling van algoritmiese handel stelsels in Python ietwat minder problematies. Dit sal gebruik word as die basis vir alle daaropvolgende kommunikasie met Interaktiewe Brokers totdat ons kyk na die FIX protokol op 'n latere datum. Sedert IBPy gehandhaaf op GitHub as git bewaarplek sal ons moet git installeer. Op 'n Ubuntu stelsel is dit hanteer deur: Sodra jy git geïnstalleer kan jy 'n subgids op IBPy stoor te skep. Op my stelsel Ek het net sit dit onder my tuisgids: Die volgende stap is om IBPy aflaai via git kloon: Maak seker dat jy die IbPy gids te betree en te installeer met die voorkeur Python virtuele omgewing: Dit voltooi die installasie van IBPy. Die volgende stap is om oop te maak TWS (soos beskryf in die vorige tutoriaal). TWS Portefeulje View (Voor Google Handel) outomatiese handel Die volgende kode sal 'n uiters eenvoudige API gebaseer orde meganisme demonstreer. Die kode is ver van die produksie-gereed maar dit demonstreer die noodsaaklike funksies van die API Interaktiewe Brokers en hoe om dit te gebruik vir die uitvoering orde. Al die volgende kode moet woon in die ib_api_demo. py lêer. Die eerste stap is om die kontrak in te voer en Orde voorwerpe uit die laer vlak ib. ext biblioteek. Daarbenewens voer ons die verbinding en boodskap voorwerpe uit die ib. opt hoër vlak biblioteek: IB gee aan ons die vermoë van die hantering van foute en bediener antwoorde deur 'n terugbel meganisme. Die volgende twee funksies doen niks meer as die druk van die inhoud van die boodskappe teruggekeer van die bediener. 'N Meer gesofistikeerde produksie stelsel sou hê om logika te implementeer om voortdurende bestuur van die stelsel in die geval van uitsonderlike gedrag te verseker: Die volgende twee funksies draai die skepping van die kontrak en Orde voorwerpe, die opstel van hul onderskeie parameters. Die funksie dokumente beskryf elke parameter individueel: Die __main__ funksie aanvanklik skep 'n verbinding voorwerp te Trader Workstation, wat moet hardloop vir die kode te funksioneer. Die fout en antwoord hanteerder funksies word dan geregistreer by die verband voorwerp. Vervolgens 'n order_id veranderlike gedefinieer. In 'n produksie stelsel moet dit geïnkrementeer elke handel orde. Die volgende stappe is om 'n kontrak en 'n bevel wat 'n mark om 100 eenhede van Google voorraad te koop te skep. Die finale taak is om daardie bevel eintlik plaas via die placeOrder metode van die Connection voorwerp. Ons het toe ontkoppel van TWS: Die finale stap is om die kode uit te voer: Onmiddellik dit kan gesien word dat die blad API oopmaak in Trader Workstation, wat die mark om te gaan 'n lang 100 aandele van Google: TWS Tab API oog na Google orde As ons nou kyk na die blad Portefeulje kan ons die Google posisie te sien. Jy sal ook daarop 'n forex posisie in die lys, wat nie was gegenereer deur myself! Ek kan net aanneem dat óf die IB demo rekening is 'n gedeelde "in sommige mode (as gevolg van die identiese login inligting) of IB plaas arbitrêre bestellings in die rekening te maak dit verskyn meer" realistiese ". As iemand het 'n insig in die gedrag sou ek geboei om meer te leer: TWS API Portefeulje sien ná Google orde Dit is die mees basiese vorm van outomatiese uitvoering wat ons kan oorweeg. In die daaropvolgende artikels gaan ons 'n meer robuuste gebeurtenis gedrewe argitektuur wat kan hanteer realistiese handel strategieë te bou. 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