Tuesday, October 11, 2016

Forex api luislang

Forex-luislang 0.3.0 Buitelandse wisselkoerse en huidige wisselkoers. Forex-luislang Bou Status (travis-ci. org/MicroPyramid/forex-python. svgbranchmaster) (travis-ci. org/MicroPyramid/forex-python) Dekking Status (coveralls. io/repos/github/MicroPyramid/forex-python/ badge. svgbranchmaster) (coveralls. io/github/MicroPyramid/forex-pythonbranchmaster) Python Support (img. shields. io/badge/python-2.72C203.32C203.42C203.5-blue. svg) (pypi. python. org/ pypi / forex-luislang) lisensie (img. shields. io/github/license/MicroPyramid/forex-python. svgmaxAge2592000) (pypi. python. org/pypi/forex-python) Kode Gesondheid (landscape. io/github/MicroPyramid/ Forex-luislang / Master / landscape. svgstyleplastic) (landscape. io/github/MicroPyramid/forex-python/master) Gratis Buitelandse wisselkoerse, Bitcoin pryse en huidige wisselkoers. Kenmerke: --------- - Lys al wisselkoerse. - Bitcoin pryse vir alle curuncies. - Converting beloop Bitcoins. - Kry historiese pryse vir enige dag sedert 1999. - Gesprek koers vir een geldeenheid (ex dollar tot INR). - Skakel bedrag van een geldeenheid na ander (US $ 10 tot INR).. - Geld simbole. - Geld name. Geldeenheid Bron: --------------- Fixer. io is 'n gratis API vir huidige en historiese pryse buitelandse valuta gepubliseer deur die Europese Sentrale Bank. Die tariewe is opgedateer elke dag 15:00 CET. Bitcoin Prys Bron: --------------------- Bitcoin pryse bereken elke minuut. Vir meer inligting besoek CoinDesk API (www. coindesk / API /) installeer met Python pakket PIP installeer forex-afgestorwene is of direk kloning die repokoers: luislang setup. py installeer Inisialiseer klas luislang gtgtgt van forexpython. converter invoer CurrencyRates gtgtgt c CurrencyRates () Kry sukses persentasie van dollar tot INR luislang gtgtgt c. getrate (USD, INR) 67,473 Skakel bedrag van USD na INR: luislang gtgtgt c. convert (USD, INR, 10) 674,73 Kry nuutste Bitcoin prys. python gtgtgt van forexpython. bitcoin invoer BtcConverter gtgtgt b BtcConverter () gtgtgt b. getlatestprice (USD) 533,913 Skakel Bedrag Bitcoins gebaseer op die nuutste ruil prys. python gtgtgt b. converttobtc (400, USD) ,7492699301118473 Kry geldeenheid simbool gebruik van valuta-kode luislang gtgtgt van forexpython. converter invoer CurrencyCodes gtgtgt c CurrencyCodes () gtgtgt druk c. getsymbol (GBP) Ons verwelkom jou terugvoer en ondersteuning. gevind fout te samel GitHub kwessie. Nodig nuwe funksies Kontak ons ​​by micropyramid / Contact / Leer Quant vaardighede As jy 'n handelaar of 'n belegger en wil graag 'n stel kwantitatiewe handel vaardighede te bekom, is jy op die regte plek. Die handel met Python kursus sal u voorsien van die beste gereedskap en praktyke vir kwantitatiewe handel navorsing, insluitende funksies en skrifte geskryf deur kundige kwantitatiewe handelaars. Die kursus gee jou maksimum impak vir jou belê tyd en geld. Dit fokus op praktiese toepassing van ontwikkeling te handel eerder as teoretiese rekenaarwetenskap. Die kursus sal vinnig betaal vir homself deur spaar jou tyd in handleiding verwerking van data. Jy sal meer tyd ondersoek jou strategie en implementering van winsgewende bedrywe. Natuurlik oorsig Deel 1: Basics Jy sal leer hoekom Python is 'n ideale hulpmiddel vir kwantitatiewe handel. Ons sal begin deur die oprigting van 'n ontwikkeling omgewing en sal dan stel jy die wetenskaplike biblioteke. Deel 2: Hantering van die data Leer hoe om data uit verskillende gratis bronne soos Yahoo Finansies, CBOE en ander terreine te kry. Lees en skryf verskeie data formate, insluitend CSV en Excel-lêers. Deel 3: Navorsing oor strategieë Leer om PL en gepaardgaande prestasie statistieke soos Sharpe en Onttrekking bereken. Bou 'n handel strategie en sy prestasie te optimaliseer. Veelvuldige voorbeelde van strategieë word in hierdie deel. Deel 4: Gaan lewendige Hierdie deel is gesentreer rondom Interaktiewe Brokers API. Jy sal leer hoe om realtime voorraad data en plek live bestellings te kry. Baie van die voorbeeld kode Die kursusmateriaal bestaan ​​uit notaboeke wat teks saam met interaktiewe kode soos hierdie een bevat. Jy sal in staat wees om te leer deur interaksie met die kode en pas dit om jou eie smaak. Dit sal 'n groot vertrekpunt om te skryf jou eie strategieë Terwyl sommige onderwerpe word in groot detail te help om die onderliggende konsepte verstaan, in die meeste gevalle sal jy nie eens nodig om jou eie lae-vlak-kode skryf, as gevolg van ondersteuning deur bestaande oop wees - Bron biblioteke. TradingWithPython biblioteek kombineer baie van die funksies bespreek in hierdie kursus as 'n gereed-om-te gebruik funksies en sal deur die loop gebruik. Pandas sal u voorsien van al die swaar-opheffing krag wat nodig is in die data knars. Al die kode word onder die BSD lisensie, om die gebruik daarvan in kommersiële toepassings te Kursus gradering 'n vlieënier van die kursus was gehou in die lente van 2013, dit is wat die studente het om te sê: Matej goed ontwerpte kursus en goeie afrigter. Beslis die moeite werd om sy prys en my tyd Lave Jev natuurlik geweet sy dinge. diepte van dekking was perfek. As Jev so iets loop weer, Siek wees die eerste om aan te meld. John Phillips jou kursus het regtig my spring begin oorweeg luislang vir voorraadstelsel analysis. OANDA API Trading Nut in Python Voorbeeld programme handel met die site OANDA API deur Python2.7 Dit repo bevat 'n handel program wat handel dryf as WBG en SMA kruis voer. Daar is ook 'n lêer met 'n paar baie eenvoudige funksies wat 'n bedryf of 'n bevel onderskeidelik sal oopmaak. Kloon hierdie repo om die ligging van jou keuse verander api-order. py om te doen wat jy wil, of net loop api-trade-averages. py behulp Python2.7 Om die script loop spesifiseer asseblief die aantal kerse waaroor die berekening WBG en SMA, die kers korrelig, die instrument en jou accountId. Dit script maak gebruik van die sandbox omgewing, so moet asseblief gebruik jy sandbox accountId. python api-trade-averages. py 10 S5 EURUSD Hierdie program is daarop gemik om site OANDA API funksies demonstreer en is nie bedoel as 'n belegging advies of 'n oplossing te koop of te verkoop enige belegging product. Forex Trading Dagboek 1 - outomatiese forex met die site OANDA API deur Michael Saal-Moore op 21 Januarie 2015 Ek het voorheen in die QuantStart genoem: 2014 in Review artikel wat ek sou spandeer 'n paar van 2015 skryf oor outomatiese forex. Gegewe dat ek myself gewoonlik uit te voer navorsing in aandele en futures markte, het ek gedink dit sou pret (en opvoedkundige) om oor my ervarings van toetrede tot die forex mark in die styl van 'n dagboek te skryf. Elke dagboekinskrywing sal probeer om te bou op al sy voorgangers, maar moet ook relatief selfstandige wees. In hierdie eerste inskrywing van die dagboek Siek word beskryf hoe om 'n nuwe praktyk makelaars rekening met site OANDA asook hoe om 'n basiese multi-gebeurtenis gedrewe handel enjin wat outomaties ambagte in beide 'n praktyk en lewendige omgewing kan voer te skep. Verlede jaar het ons baie tyd op soek na die gebeurtenis gedrewe backtester. hoofsaaklik vir aandele en ETF's. Die een wat ek hieronder aanbied is gerig op forex en kan gebruik word vir óf papier handel of lewende handel. Ek het al die volgende instruksies vir Ubuntu 14.04 geskryf, maar hulle moet maklik vertaal na Windows of Mac OS X, met behulp van 'n Python verspreiding soos Anaconda. Die enigste bykomende biblioteek gebruik word vir die Python handel enjin is die versoeke biblioteek, wat nodig is vir HTTP kommunikasie na die site OANDA API is. Aangesien dit die eerste post direk oor buitelandse valuta handel, en die kode hieronder aangebied kan reguit aangepas word om 'n lewendige handel omgewing, wil ek graag die volgende disclaimers bied: Disclaimer: Trading buitelandse valuta op marge dra 'n hoë vlak van risiko, en mag nie geskik vir alle beleggers nie. Vorige prestasie is nie 'n aanduiding van toekomstige resultate. Die hoë mate van die hefboom kan werk teen jou sowel as vir jou. Voordat jy besluit om te belê in buitelandse valuta moet jy noukeurig oorweeg jou beleggingsdoelwitte, vlak van ervaring, en risiko-aptyt. Die moontlikheid bestaan ​​dat jy 'n verlies van sommige of al jou aanvanklike belegging kan volhou en daarom moet jy nie geld wat jy nie kan bekostig om te verloor belê. Jy moet bewus wees van al die risiko's wat verband hou met die buitelandse valuta handel, en soek advies van 'n onafhanklike finansiële adviseur indien u enige twyfel het. Hierdie sagteware is verskaf soos en enige uitdruklike of geïmpliseerde waarborge, insluitend, maar nie beperk tot, die geïmpliseerde waarborge van verhandelbaarheid en geskiktheid vir 'n spesifieke doel is ontken. In geen geval sal die regente of bydraers aanspreeklik wees vir enige direkte, indirekte, toevallige, spesiale, voorbeeldige, of gevolglike skade (insluitend, maar nie beperk tot, die verkryging van plaasvervanger goedere of dienste verlies van gebruik, data of winste of besigheid onderbreking ) egter veroorsaak en op enige teorie van aanspreeklikheid, hetsy in kontrak, skuldlose aanspreeklikheid, of tort (insluitend nalatigheid of andersins) wat op enige van die gebruik van hierdie sagteware, selfs as hulle oor die moontlikheid van sodanige skade. Die opstel van 'n rekening in site OANDA Die eerste vraag wat opkom is hoekom kies site OANDA. Eenvoudig gestel, nadat 'n bietjie van Googlen rond vir forex makelaars wat APIs het, het ek gesien dat site OANDA onlangs vrygestel van 'n behoorlike REST API wat kan maklik met uit byna enige taal in 'n uiters eenvoudige manier gekommunikeer. Nadat jy deur hul ontwikkelaar API dokumentasie. Ek het besluit om dit te probeer, ten minste met 'n praktyk rekening. Om duidelik te wees - ek het geen vorige of bestaande verhouding met site OANDA en is net die verskaffing van hierdie aanbeveling op grond van my beperkte ervaring rondspeel met hul praktyk API en 'n paar kort gebruik (vir markdata aflaai) terwyl hy by 'n fonds wat voorheen. As iemand in 'n ander forex makelaars wat ook 'n soortgelyke moderne API gekom toe id gelukkig wees vir hulle 'n blik te gee sowel. Voor die gebruik van die API is dit nodig om aan te meld vir 'n praktyk rekening. Om dit te doen, hoof van die teken-up skakel. Jy sal die volgende skerm sien: Jy sal dan in staat wees om aan te meld met jou inskrywing geloofsbriewe. Maak seker dat jy die blad fxTradePractice van die teken-in-skerm te kies: Een in wat jy nodig het om 'n aantekening van jou rekening ID te maak. Dit is gelys onder die swart My Fondse header langs Laerskool. Myne is 'n 7-syfergetal. Daarbenewens sal jy ook 'n persoonlike API teken genereer. Om dit te doen klik Bestuur API Toegang onder die blad Ander aksies op die links onder: Op hierdie stadium sal jy in staat wees om 'n API teken genereer wees. Jy sal die sleutel vir gebruik later nodig, so maak seker om dit neer te skryf sowel. Jy sal nou wil die praktyk toepassing FXTrade, wat sal toelaat dat ons die uitvoer bestellings en ons (papier) wins amp verlies sien stapel te stuur. As jy 'n Ubuntu stelsel loop jy sal nodig hê om 'n effens ander weergawe van Java installeer. In die besonder, die Oracle weergawe van Java 8. As jy dit nie doen dit dan die praktyk simulator sal nie laai van die leser. Ek het hierdie opdragte op my stelsel: Jy sal nou in staat wees om die praktyk handelsomgewing te loods. Terug na die site OANDA paneelbord en klik op die groen uitgelig Begin FXTrade Practice skakel. Dit sal lei tot 'n Java dialoog te vra of jy wil om dit te doen. Klik Run en die instrument fxTrade Practice sal laai. Myne gebreke aan 'n 15-minute kers grafiek van EUR / USD met die kwotasie paneel aan die linkerkant: Op hierdie stadium is ons gereed om te begin ontwerp en kodering ons outomatiese forex stelsel teen die site OANDA API. Oorsig van Handel Architecture As jy na aanleiding van die gebeurtenis gedrewe backtester reeks vir aandele en ETF's wat ek verlede jaar geskep gewees het, sal jy bewus wees van hoe so 'n gebeurtenis gedrewe handel stelsel funksies. Vir dié van julle wat nuut is in gebeurtenis gedrewe sagteware. Ek sou raai die lees van die artikel om 'n insig in hoe dit werk te kry. In wese is die hele program uitgevoer in 'n infinte while lus dat slegs beëindig wanneer die handel stelsel is afgeskakel. Die sentrale kommunikasie meganisme van die program verskyn deur 'n tou wat gebeure bevat. Die tou word voortdurend bevraagteken om te kyk vir 'n nuwe gebeure. Sodra 'n gebeurtenis uit die top van die tou is geneem moet hanteer word deur 'n toepaslike deel van die program. Vandaar 'n mark data feed kan skep TickEvent s wat op die tou geplaas wanneer 'n nuwe mark prys kom. 'N Sein-genererende strategie voorwerp kan skep OrderEvent s wat 'n makelaar te stuur. Die nut van so 'n stelsel gegee word deur die feit dat dit nie saak watter volgorde of tipes van die gebeure op die tou geplaas word, aangesien hulle altyd korrek sal hanteer word deur die regte komponent binne die program. Daarbenewens verskillende dele van die program kan uitgevoer word in 'n aparte drade. Dit beteken dat daar nooit enige wag vir 'n bepaalde komponent voor die verwerking van enige ander. Dit is baie nuttig in algoritmiese handel situasies waar die mark data feed hanteerders en strategie sein kragopwekkers het heeltemal anders prestasie eienskappe. Die vernaamste handelsvennote lus word gegee deur die volgende Python pseudo-kode: Soos ons hierbo die kode lopies wat in 'n oneindige lus. Eerstens, is die tou ondervra om 'n nuwe gebeurtenis te haal. As die waglys is leeg, dan die lus net weer begin na 'n kort slaap tydperk bekend as die hartklop. As 'n gebeurtenis is gevind sy soort is beoordeel en dan die betrokke module (óf die strategie of die uitvoering hanteerder) aangesê word om die gebeurtenis te hanteer en moontlik genereer nuwes wat teruggaan na die tou. Die basiese komponente dat ons sal skep vir ons handel stelsel sluit die volgende in: Streaming Prys Handler - Dit sal 'n lang-lopende verband hou oop vir OANDAs bedieners en stuur bosluis data (dws bod / vra) oor die verband vir enige instrumente wat belang gestel het in Strategie seingenerator -. dit sal 'n reeks van blok gebeure af te gebruik om te handel bestellings wat uitgevoer word deur die uitvoering hanteerder te genereer. Uitvoering Handler - Neem 'n stel van orde gebeure en dan blindelings voer hulle met site OANDA. Events - Hierdie voorwerpe vorm die boodskappe wat geslaag om op die gebeure tou. Ons het net nodig het twee hiervoor implementering, naamlik die TickEvent en die OrderEvent. Main Entry Point - Die belangrikste beginpunt sluit ook die handel lus wat voortdurend stembusse die boodskap tou en versendings boodskappe na die korrekte komponent. Dit is dikwels bekend as die gebeurtenis lus of event handler. Ons sal nou bespreek die implementering van die kode in detail. Aan die onderkant van die artikel is die volledige lys van al die bronkode lêers. As jy dit te plaas in dieselfde gids en hardloop luislang trading. py jy sal begin genereer bestellings, in die veronderstelling jy dit ingestuur het in jou rekening ID en stawingtoken van site OANDA. Python Implementering Dit is slegte praktyk om wagwoorde of verifikasie sleutels slaan binne 'n kodebasis as jy nooit kan voorspel wat sal uiteindelik toegang tot 'n projek toegelaat word. In 'n produksiestelsel sal ons hierdie geloofsbriewe as omgewing veranderlikes met die stelsel stoor en dan navraag hierdie envvars elke keer die kode is herontplooi. Dit verseker dat wagwoorde en auth tekens nooit in 'n weergawe beheer stelsel gestoor word. Maar, aangesien ons slegs belangstel in die bou van 'n speelding handel stelsel, en is nie betrokke by die produksie besonderhede in hierdie artikel, ons sal plaas skei hierdie auth tekens in 'n lêer instellings. In die volgende settings. py konfigurasielêer het ons 'n woordeboek genoem OMGEWINGS wat die API eindpunte vir beide die site OANDA prys streaming API en die handel API stoor. Elke sub woordeboek bevat drie afsonderlike API eindpunte: real. praktyk en sandbox. Die sandput API is suiwer vir die toets-kode en vir die beheer van dat daar geen foute of foute. Dit maak nie die uptime waarborg van die werklike of praktyk APIs het. Die praktyk API, in wese, verskaf die vermoë om papier handel. Dit is, dit gee al die eienskappe van die reële API op 'n gesimuleerde praktyk rekening. Die werklike API is net dat - dit is lewende handel As jy dit eindpunt in jou kode, dit sal handel teen jou live rekening balans. Wees baie versigtig BELANGRIK: Wanneer die handel teen die praktyk API onthou dat 'n belangrike transaksie koste, wat van invloed mark. is nie oorweeg nie. Aangesien daar geen ambagte is eintlik geplaas in die omgewing van hierdie koste moet in berekening gebring word in 'n ander manier elders met behulp van 'n impak mark model as jy wil om realisties te assesseer. In die volgende is ons met behulp van die praktyk rekening soos deur die DOMEIN omgewing. Ons moet twee afsonderlike woordeboeke vir die domeine, een elk vir die streaming en handel API komponente. Ten slotte het ons die ACCESSTOKEN en ACCOUNTID. Ive gevul die twee hieronder met dummy ID's sodat jy sal nodig hê om jou eie, wat kan verkry word vanaf die site OANDA rekening bladsy gebruik: Die volgende stap is om die gebeure wat die tou sal gebruik om jou te help al die individuele komponente kommunikeer definieer. Ons moet twee: TickEvent en OrderEvent. Die eerste winkels inligting oor instrument mark data soos die (beste) bod / vra en die handel tyd. Die tweede is gebruik om bestellings by die uitvoering hanteerder oordra en dus bevat die instrument, die aantal eenhede van verhandeling, die tipe orde (mark of beperking) en die kant (dit wil sê koop en verkoop). Toekoms bestendig ons gebeure kode gaan ons 'n basis klas genoem Event skep en het al die gebeure in besit van hierdie. Die kode word hieronder verskaf in events. py: Die volgende klas gaan ons skep, sal die handel strategie te hanteer. In hierdie demo gaan ons 'n redelik nonsens strategie wat eenvoudig ontvang al die mark bosluise en op elke 5de blok lukraak koop of verkoop 10.000 eenhede van EUR / USD skep. Dit is duidelik dat dit 'n belaglike strategie Maar dit is fantasties vir toetsdoeleindes, want dit is maklik om te kode en verstaan. In die toekoms dagboekinskrywings sal ons hierdie word vervang met iets beduidend meer opwindend wat (hopelik) sal op sy beurt 'n wins Die strategy. py lêer kan hier gevind word. Kom ons daardeur te werk en te sien wat aangaan. Eerstens voer ons die ewekansige biblioteek en die OrderEvent voorwerp van events. py. Ons moet die ewekansige lib ten einde 'n ewekansige koop orde kies of te verkoop. Ons moet OrderEvent as dit is hoe die strategie voorwerp bestellings om die gebeure tou, wat later sal uitgevoer word deur die uitvoering hanteerder sal stuur. Die TestRandomStrategy klas neem net die instrument (in hierdie geval euro / dollar), die aantal eenhede en die gebeure tou as 'n stel van parameters. Dit skep dan 'n bosluise toonbank wat gebruik word om te sê hoeveel TickEvent gevalle het dit gesien. Die meeste van die werk kom in die calculatesignals metode, wat net neem 'n gebeurtenis, bepaal of dit 'n TickEvent (anders ignoreer) en vermeerderings die bosluis toonbank. Dit tjeks dan om te sien of die telling is deelbaar deur 5 en dan lukraak koop of verkoop, met 'n mark orde, die gespesifiseerde aantal eenhede. Sy beslis nie die wêreld se grootste handel strategie, maar dit sal meer as geskik vir ons site OANDA stel API toetsdoeleindes Die volgende komponent is die uitvoering hanteerder wees. Hierdie klas is getaak met daarop reageer OrderEvent gevalle en maak versoeke aan die makelaar (in hierdie geval site OANDA) in 'n stom mode. Dit wil sê, daar is geen risikobestuur of potfolio konstruksie oortrek. Die uitvoering hanteerder sal net 'n bevel dat dit gegee is uit te voer. Ons moet al die verifikasie inligting slaag om die uitvoering klas, insluitend die domein (praktyk, werklike of sandbox), die toegang teken en rekening ID. Ons skep dan 'n veilige verbinding met httplib. een van Luislange gebou in biblioteke. Die meeste van die werk kom in executeorder. Die metode vereis 'n gebeurtenis as 'n parameter. Dit stel dan twee woordeboeke - die kop en die params. Hierdie woordeboeke sal dan korrek geïnkripteer (gedeeltelik deur urllib. 'N ander Python biblioteek) gestuur word as 'n HTTP POST versoek om OANDAs API. Ons stap verby die Content-Type en magtiging kop parameters, wat ons verifikasie inligting insluit. Daarbenewens enkodeer ons die parameters, wat die instrument (EUR / USD), eenhede, tipe en newe-orde (koop / verkoop) insluit. Ten slotte, maak ons ​​die versoek en stoor die antwoord: Die mees komplekse deel van die handel stelsel is die StreamingForexPrices voorwerp, wat die markprys updates from site OANDA hanteer. Daar is twee metodes: connecttostream en streamtoqueue. Die eerste metode maak gebruik van die Python versoeke biblioteek aan te sluit op 'n streaming aansluiting met die toepaslike opskrifte en parameters. Die parameters sluit die rekening ID en die nodige lys instrument wat gevolg moet word geluister na vir updates (in hierdie geval is dit net euro / dollar). Let op die volgende reël: Dit vertel die verbinding met gestroom en dus oopgehou in 'n lang-lopende wyse. Die tweede metode, streamtoqueue. eintlik probeer om toegang tot die stroom. As die antwoord is nie suksesvol (dit wil sê die reaksie-kode is nie HTTP 200), dan kan ons net teruggaan en uitgang. As dit suksesvol is ons probeer om die into pakkie teruggekeer na 'n Python woordeboek laai. Ten slotte, sit ons die Python woordeboek met die instrument, bod / vra en tyd stempel in 'n TickEvent dat die gebeure tou gestuur: Ons het nou al die belangrikste komponente in plek. Die finale stap is om te draai alles wat ons tot dusver in 'n hoofprogram geskryf. Die doel van hierdie lêer, bekend as trading. py. is twee aparte drade skep. waarvan een loop die pryse hanteerder en die ander wat die handel hanteerder loop. Hoekom moet ons twee aparte drade Eenvoudig gestel, is ons die uitvoering van twee afsonderlike stukke kode, wat albei aaneen gebruik. As ons 'n nie-gestruktureerde program te skep, dan is die stroom aansluiting wat gebruik word vir die prys updates sal nooit ooit weer vry te laat om die hoof-kode pad en dus sal ons nooit werklik uit te voer enige handel. Net so, as ons die handel lus het (sien onder), sou ons nooit werklik terugkeer die vloei weg na die prys streaming voetstuk. Vandaar ons nodig het verskeie drade, een vir elke komponent, sodat hulle uit onafhanklik uitgevoer kan word. Hulle sal albei kommunikeer met mekaar deur middel van die gebeure tou. Kom ons ondersoek hierdie 'n bietjie verder. Ons skep twee afsonderlike drade met die volgende reëls: Ons ry verby die funksie of metode naam na die teiken navraag argument en dan slaag 'n iterable (soos 'n lys of tuple) om die argumente navraag argument, wat dan gaan die argumente om die werklike metode / funksie. Ten slotte begin ons albei drade met die volgende reëls: So is ons in staat was om uit te voer twee, doeltreffend oneindige herhaling,-kode segmente onafhanklik, wat beide kommunikeer deur middel van die gebeure tou. Let daarop dat die Python threading biblioteek 'n ware multi-kern multi omgewing produseer nie as gevolg van die CPython implementering van 'n afgestorwene en die Global Interpreter Lock (GIL). As jy wil graag meer inligting oor multi-threading op Python lees, neem 'n blik op hierdie artikel. Kom ons kyk na die res van die kode in detail. Eerstens ons invoer al die nodige biblioteke insluitend Queue. threading en tyd. Ons het toe in te voer al die bogenoemde kode lêers. Ek persoonlik verkies om enige verstellings instellings kapitaliseer, wat is 'n gewoonte wat ek opgetel het van die werk met Django Na dat ons die handel funksie, wat verduidelik word in Python-pseudokode bo definieer. 'N oneindige while lus uitgevoer (terwyl Ware:) wat voortdurend stembusse uit die gebeure tou en net spring die lus as dit leeg gevind. As 'n gebeurtenis dan is gevind dat dit is óf 'n TickEvent of 'n OrderEvent en dan die toepaslike komponent staan ​​bekend as om dit uit te voer. In hierdie geval is dit óf 'n strategie of uitvoering hanteerder. Die lus dan net slaap vir hartklop sekondes (in hierdie geval 0,5 sekondes) en gaan voort. Ten slotte, definieer ons die belangrikste entrypoint van die kode in die hooffunksie. Dit is heelwat laer as gedraai, maar ek sal hier op te som. In wese instansieer ons die gebeure tou en die instrumente / eenhede te definieer. Ons het toe skep die StreamingForexPrices prys streaming klas en dan daarna die uitvoering uitvoering hanteerder. Beide die nodige verifikasie besonderhede wat gegee word deur site OANDA wanneer die skep van 'n rekening. Ons skep dan die TestRandomStrategy byvoorbeeld. Ten slotte definieer ons die twee drade en dan begin hulle: Aan die kode wat jy eenvoudig moet al die lêers in dieselfde gids en noem die volgende by die terminale loop: Let daarop dat die kode in hierdie stadium stop vereis 'n harde slag van die Python proses. via Ctrl-Z of gelykstaande Ive nie 'n bykomende draad te hanteer op soek na die sys. exit () wat nodig sou wees om die kode veilig stop bygevoeg. 'N Potensiële manier om die kode op 'n Ubuntu / Linux masjien te stop is om te tik: En dan slaag die opbrengs van hierdie ( 'n proses nommer) in die volgende: Waar PROCESSID moet vervang word met die opbrengs van pgrep. Let daarop dat dit nie besonder goeie praktyk in latere artikels wat ons sal skep 'n meer gesofistikeerde stop / start meganisme wat gebruik maak van Ubuntus proses toesig ten einde die handel stelsel loop 24/7 het maak. Die uitset na 30 sekondes of so, na gelang van die tyd van die dag met betrekking tot die belangrikste handelsure vir EUR / USD, vir die bogenoemde kode, word hieronder gegee: die eerste vyf lyne wys die into bosluis data teruggekeer van site OANDA met bod / vra pryse. Daarna kan jy die uitvoering van orde uitset asook die into reaksie teruggekeer van site OANDA bevestiging van die opening van 'n koop handel vir 10,000 eenhede van EUR / USD en die prys is op behaal sien. Dit sal bly voortbestaan ​​onbepaald totdat jy die program met 'n Ctrl-Z opdrag of 'n soortgelyke dood te maak. Wat Volgende In later artikels gaan ons 'n paar broodnodige verbeteringe, insluitend om uit te voer: Real strategieë - Behoorlike forex strategieë wat winsgewende seine op te wek. Produksie infrastruktuur - Remote bediener implementering en 24/7 gemonitor handel stelsel, met stop / start vermoë. Portefeulje en risikobestuur - portefeulje en risiko overlays vir al voorgestel bestellings van die strategie. Veelvuldige strategieë - Konstruksie van 'n portefeulje van strategieë wat integreer in die risikobestuur oortrek Soos met die aandele geval-gedrewe backtester, moet ons ook 'n forex back testing module skep. Dit sal toelaat dat ons uit te voer 'n vinnige navorsing en maak dit makliker om strategieë te ontplooi. Volle Kode settings. py (onthou om ACCOUNTID en ACCESSTOKEN verander): Die gebruik van Python, IBPy en die API Interaktiewe Brokers ambagte Deur Michael Saal-Moore Automatiseer op 5 Februarie 2014 'n ruk gelede 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 van klokkies en fluitjies besit. 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 gewoond ons werklik 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 die inheemse Java API draai 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 dit nodig is om 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 die IbPy gids te betree en te installeer met die voorkeur Python virtuele omgewing: dat die installasie van IBPy voltooi. Die volgende stap is om oop te maak TWS (soos beskryf in die vorige tutoriaal). 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 ibapidemo. 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 hanteerfoute 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 te verseker in die geval van uitsonderlike gedrag: 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 hooffunksie 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 orderid 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: As ons nou kyk na die blad Portefeulje kan ons die Google posisie te sien. Jy sal ook 'n forex posisie in die lys, wat nie was gegenereer deur myself daarop Ek kan net aanneem dat óf die IB demo rekening is gedeel in 'n mode (as gevolg van die identiese login inligting) of IB plaas arbitrêre bestellings in die rekening te maak dit blyk meer realisties. As iemand het 'n insig in die gedrag sou ek geboei om meer te leer: 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