Monday 13 November 2017

Forex Python Api


Lær kvant ferdigheter. Hvis du er handelsmann eller investor og ønsker å skaffe seg et sett med kvantitative handelsferdigheter, er du på rett sted. Trading With Python kurset vil gi deg de beste verktøyene og rutene for kvantitativ handelsforskning, inkludert funksjoner og skrifter skrevet av ekspert kvantitative handelsfolk Kurset gir deg maksimal innvirkning på din investerte tid og penger. Det fokuserer på praktisk anvendelse av programmering til handel i stedet for teoretisk datavitenskap. Kurset vil betale seg raskt ved å spare tid i manuell databehandling Du vil bruke mer tid på å undersøke strategien din og gjennomføre lønnsomme handler. Kursoversikt. Part 1 Grunnleggende Du lærer hvorfor Python er et ideelt verktøy for kvantitativ handel. Vi starter med å etablere et utviklingsmiljø og vil da introdusere deg til de vitenskapelige biblioteker. Del 2 Håndtere data Lær hvordan du får data fra ulike gratis kilder som Yahoo Finance, CBOE og andre nettsteder Les og skriv flere dataformater, inkludert CSV - og Excel-filer. Part 3 Forskerstrategier Lær å beregne PL og tilhørende resultatmålinger som Sharpe og Drawdown Bygg en handelsstrategi og optimaliser ytelsen Flere eksempler på strategier diskuteres i denne delen. Part 4 Going live Denne delen er sentrert rundt Interactive Brokers API Du lærer hvordan du får realtids lagerdata og legger live-ordrer. Massevis av eksempelkoden. Kursmaterialet består av notatbøker som inneholder tekst sammen med interaktiv kode som denne. Du vil kunne lære av samhandle med koden og endre den til din egen smak Det vil være et godt utgangspunkt for å skrive dine egne strategier. Mens noen emner blir forklart i stor detalj for å hjelpe deg å forstå de underliggende konseptene, vil du i de fleste tilfeller ikke vant å skrive Din egen lavnivåkode, på grunn av støtte fra eksisterende åpen kildebibliotek TradingWithPython bibliotek kombinerer mye av diskens funksjonalitet ssed i dette kurset som ferdige funksjoner og vil bli brukt i løpet av kurset, vil Pandas gi deg all den kraftige løftekraften som trengs for datatrykk. Alle koden er gitt under BSD-lisensen, og tillater bruk i kommersiell aplications. Course rating. A pilot av kurset ble holdt våren 2013, dette er hva studentene fikk å si. Mat godt designet kurs og god trener Definitivt verdt sin pris og min tid Lave Jev visste tydeligvis at hans ting dybde av dekning var perfekt Hvis Jev kjører noe som dette igjen, vil jeg bli den første til å melde på John Phillips. Ditt kurs fikk meg til å hoppe, begynte å tenke på python for aksjesystemanalyse. Forex Trading Diary 1 - Automatisert Forex Trading med OANDA API. I tidligere nevnt i QuantStart 2014 I Review-artikkelen som jeg ville tilbringe litt av 2015, skriver om automatisert forex trading. Given at jeg selv selv utfører forskning på aksjer og futures markeder, syntes jeg det ville vært morsomt og educa for å skrive om mine erfaringer med å inngå forexmarkedet i stil med en dagbok. Hver dagbokspost vil forsøke å bygge videre på alle de tidligere, men bør også være relativt selvforsynt. I denne første oppføringen i dagboken vil jeg beskrive hvordan å sette opp en ny praksismeglingskonto med OANDA, samt hvordan man lager en grunnleggende multithreaded hendelsesdrevet handelsmotor som automatisk kan utføre handler både i praksis og i live-setting. Det siste året brukte vi mye tid på å se på arrangementet - drevet backtester primært for aksjer og ETFer Den ene jeg presenterer nedenfor, er rettet mot forex, og kan brukes til enten papirhandel eller live trading. Jeg har skrevet alle følgende instruksjoner for Ubuntu 14 04, men de burde enkelt oversettes til Windows eller Mac OS X, ved hjelp av en Python-distribusjon som Anaconda Det eneste ekstra biblioteket som brukes til Python-handelsmotoren, er forespørselsbiblioteket, som er nødvendig for kommunikasjon til OANDA API. Siden dette er det første po St direkte om valutahandel, og koden som presenteres nedenfor, kan rett og slett tilpasses et levende handelsmiljø, vil jeg gjerne presentere følgende ansvarsfraskrivelser. Ansvarsfraskrivelse Valutakurs på margen har høy risiko, og kan ikke være egnet for alle investorer Tidligere resultater er ikke en indikasjon på fremtidige resultater Høy grad av innflytelse kan virke mot deg så godt som for deg Før du bestemmer deg for å investere i utenlandsk valuta, bør du nøye vurdere investeringsmålene dine, nivået på erfaring og risikoen for appetitten. Muligheten er at du kan opprettholde et tap av noe eller hele din opprinnelige investering og derfor bør du ikke investere penger som du ikke har råd til å miste. Du bør være oppmerksom på alle risikoene knyttet til valutahandel, og søke råd fra en uavhengig finansiell rådgiver hvis du Ingen tvil. Denne programvaren er gitt som det er og eventuelle uttrykte eller underforståtte garantier, inkludert, men ikke begrenset til, underforståtte garantier om salgbarhet og egnethet for et bestemt formål, blir fraskrevet. Regentene eller bidragsyterne skal under ingen omstendigheter være ansvarlige for direkte, indirekte, tilfeldige, spesielle, eksemplariske eller følgeskader, inkludert, men ikke begrenset til, anskaffelse av erstatningsvarer eller tjenester tap av bruk, data eller fortjeneste eller driftsavbrudd, men forårsaket og på noen teori om ansvar, uansett om det er kontrakt, strenge erstatningsansvar eller tort inkludert uaktsomhet eller på annen måte oppstår i noen ut av bruken av denne programvaren, selv om det er anbefalt av muligheten av slike skader. Sette opp en konto med OANDA. Det første spørsmålet som kommer til å tenke er, hvorfor velge OANDA. Bare sett, etter litt Googling rundt for forex meglere som hadde APIer, så jeg at OANDA nylig hadde gitt ut en riktig REST API som kunne lett kommuniseres med fra nesten hvilket som helst språk på en ekstremt grei måte. Etter å ha lest gjennom dokumentasjonen til utviklerens API, bestemte jeg meg for å prøve dem, en minst med en øverkonto. For å være klar - Jeg har ingen tidligere eller eksisterende forhold til OANDA og gir bare denne anbefalingen basert på min begrensede erfaring med å spille rundt med deres praksis API og litt kort bruk for nedlasting av markedsdata mens de er ansatt i et fond tidligere Hvis noen har kommet over noen andre forex meglere som også har en tilsvarende moderne API, så vil jeg gjerne gi dem en titt også. Før du bruker API, er det nødvendig å registrere deg for en brukerkonto. For å gjøre dette, gå til påloggingslinken Du vil se følgende skjerm. OANDA registreringsskjerm. Du vil da kunne logge inn med påloggingsinformasjonen. Pass på å velge fanen fxTradePractice fra påloggingsskjermbildet. OANDA påloggingsskjerm. En gang i trenger du å notere konto-ID-en. Den er oppført under den svarte Min Funds-overskriften ved siden av Primary Mine er et 7-sifret tall. I tillegg må du også generere en personlig API-token. For å gjøre dette, klikk på Administrer API Tilgang under fanen Andre handlinger nederst til venstre. På dette stadiet vil du kunne generere en API-token. Du må ha nøkkelen til bruk senere, så sørg for å skrive det ned også. Du vil nå starte FXTrade Practice-programmet , som gjør det mulig for oss å se de utførte ordrene og vårt tap av papiroverskudd. Hvis du kjører et Ubuntu-system, må du installere en litt annen versjon av Java. Spesielt Oracle-versjonen av Java 8 Hvis du ikke gjør dette da treningssimulatoren lastes ikke fra nettleseren. Jeg kjørte disse kommandoene på systemet mitt. Du kan nå starte handelsmiljøet. Gå tilbake til OANDA-dashbordet og klikk på den grønne uthevede Launch FXTrade Practice-lenken. Det vil hente en Java-dialog som spør om du vil kjøre den, klikk Kjør, og fxTrade Practice-verktøyet vil laste Mine-gruven til et 15-min lysdiagram over EUR USD med Quote Panel på venstre. OANDA fxTrade Practice-skjerm. På dette punktet er vi klare til å begynne å designe og codi ng vårt automatiserte forex trading system mot OANDA API. Overvåking av Trading Architecture. Hvis du har fulgt hendelsesdrevet backtester-serien for aksjer og ETFs som jeg opprettet i fjor, vil du være klar over hvordan et slikt hendelsesdrevet handelssystem funksjoner For de av dere som er nybegynner med hendelsesdrevet programvare, anbefaler jeg sterkt at du leser gjennom artikkelen for å få innblikk i hvordan de fungerer. I det hele tatt utføres hele programmet i en infinte mens sløyfe som bare avsluttes når handelssystemet er avstengt Programmets sentrale kommunikasjonsmekanisme er gitt via en kø som inneholder hendelser. Køen blir kontinuerlig bedt om å se etter nye hendelser Når en begivenhet er tatt av toppen av køen, må den håndteres av en passende komponent av programmet Derfor kan en markedsdatainnmatning skape TickEvent s som er plassert på køen når en ny markedspris ankommer. Et signalgenererende strategibjekt kan skape OrderEvent s som er ar e skal sendes til megling. Brukbarheten av et slikt system er gitt av det faktum at det ikke spiller noen rolle hvilken rekkefølge eller typer hendelser er plassert på køen, da de alltid vil bli håndtert riktig av den rette komponenten i programmet . I tillegg kan forskjellige deler av programmet kjøres i separate tråder, noe som betyr at det aldri venter på noen bestemt komponent før du behandler andre. Dette er ekstremt nyttig i algoritmiske handelssituasjoner der markedsdatainnmatingshåndterere og strategisignalgeneratorer har betydelig forskjellig ytelse egenskaper. Hovedhandelen er gitt av følgende Python pseudo-kode. Som sagt ovenfor kjører koden i en uendelig sløyfe. Først blir køen pollet for å hente en ny hendelse. Hvis køen er tom, starter sløyfen bare på nytt etter en kort søvnperiode kjent som hjerteslag Hvis en hendelse er funnet, vurderes typen, og deretter blir den aktuelle modulen enten strategien eller henrettelseshandleren pålagt å handle e hendelsen og muligens generere nye som går tilbake til køen. De grunnleggende komponentene som vi vil opprette for vårt handelssystem, inkluderer følgende. Streaming Price Handler - Dette vil holde en langvarig forbindelse åpen for OANDAs servere og sende tick data dvs. bud spørre over tilkoblingen for alle instrumenter vi er interessert i. Strategi Signal Generator - Dette vil ta en sekvens av tick hendelser og bruke dem til å generere handelsordrer som vil bli utført av utførelsen handler. Execution Handler - Tar et sett med ordne hendelser og deretter blindt utføre dem med OANDA. Events - Disse objektene utgjør meldingene som sendes rundt på hendelseskøen. Vi krever bare to for denne implementeringen, nemlig TickEvent og OrderEvent. Hovedinngangspunktet - Hovedinngangen inkluderer også handelsløkken som kontinuerlig avstemmer meldingskøen og sender meldinger til riktig komponent Dette kalles ofte hendelsesløkken eller hendelseshandleren. Vi vil nå diskutere implementeringen av koden i detalj nederst i artikkelen er det en fullstendig liste over alle kildekodefiler Hvis du plasserer dem i samme katalog og kjører python, begynner du å generere bestillinger, forutsatt at du har fylt ut konto-ID og autentiseringstoken fra OANDA. Python Implementation. It er dårlig praksis å lagre passord eller autentiseringsnøkler innenfor en kodebase som du aldri kan forutse hvem som til slutt vil få tilgang til et prosjekt. I et produksjonssystem lagrer vi disse legitimasjonene som miljøvariabler med systemet og deretter spørre disse envvars hver gang koden er omfordelt Dette sikrer at passord og auth tokens aldri blir lagret i et versjonskontrollsystem. Men siden vi bare er interessert i å bygge et leketøyhandelssystem og ikke er opptatt av produksjonsdetaljer i denne artikkelen, vi vil i stedet skille disse auth tokens i en innstillingsfil. I den følgende konfigurasjonsfilen har vi en ordbok som heter MILJØ som st ores API-endepunktene for både OANDA-prisavspillings-API og handels API. Hver underordbok inneholder tre separate API-endepunkter, virkelig praksis og sandbox. Sandbox-API er rent for testingskode og for å kontrollere at det ikke er feil eller feil. Det har ikke oppetidsgarantiene til de virkelige eller praktiske APIene. Practice API gir i utgangspunktet muligheten til papirhandel. Det gir den alle funksjonene i den virkelige API på en simulert praksiskonto. Den virkelige API er bare det - det er live handel Hvis du bruker det endepunktet i koden din, vil det handle mot din livekontosaldo. VÆRE EKSTRA NØYAKTIG. VIKTIGT Når du handler mot praksis-API, husk at en viktig transaksjonskostnad, det som påvirker markedsvirkningen, blir ikke vurdert. Siden ingen handler faktisk plasseres inn i miljøet må denne kostnaden redegjøres for på en annen måte andre steder ved hjelp av en markedsvirkningsmodell hvis du ønsker å realistisk vurdere ytelsen. I det følgende bruker vi trene konto som gitt av DOMAIN-innstillingen Vi trenger to separate ordbøker for domenene, en hver for streaming - og trading API-komponentene Endelig har vi ACCESSTOKEN og ACCOUNTID Jeg har fylt de to med dummy-IDer, så du må bruke din egen , som kan nås fra OANDA-kontosiden. Det neste trinnet er å definere hendelsene som køen skal bruke for å hjelpe alle de enkelte komponentene til å kommunisere. Vi trenger to TickEvent og OrderEvent. De første lagrer informasjon om instrumentmarkedsdata som de beste bud spør og handelstid Den andre brukes til å overføre ordrer til utførelsen handler og dermed inneholder instrumentet, antall enheter til handel, ordren type marked eller grense og siden ie kjøpe og selge. For fremtidssikre våre hendelser kode vi skal lage en baseklasse som heter Event og har alle hendelser arvet fra dette Koden er gitt nedenfor. Den neste klassen vi skal skape, skal håndtere handelsstrategien I denne de mo vi kommer til å skape en ganske nonsensisk strategi som bare mottar alle markedsklikkene og på hver 5. kryss kjøper eller selger 10.000 enheter av EUR USD. Dette er en latterlig strategi. Det er imidlertid fantastisk for testformål fordi det er rett og slett å kode og forstå I fremtidige dagbokoppføringer vil vi erstatte dette med noe betydelig mer spennende som forhåpentligvis vil vinne. Filen finner du nedenfor. La oss jobbe gjennom det og se hva som skjer. Først importerer vi tilfeldig biblioteket og OrderEvent-objektet fra Vi trenger tilfeldig lib for å velge en tilfeldig kjøps - eller salgsordre. Vi trenger OrderEvent, da dette er hvordan strategibjektet vil sende ordrer til hendelseskøen, som senere blir utført av utførelseshandleren. TestRandomStrategy-klassen tar bare instrumentet i dette tilfellet EUR USD, antall enheter og hendelseskøen som et sett med parametere. Deretter oppretter du en ticks counter som brukes til å fortelle hvor mange Tic kEvent-forekomster det har sett. Mesteparten av arbeidet skjer i calculatesignalsmetoden, som ganske enkelt tar en hendelse, bestemmer om det er et TickEvent ellers ignorerer og øker telleren. Det kontrollerer deretter for å se om tellingen er delelig med 5 og deretter tilfeldig kjøper eller selger, med en markedsordre, det angitte antall enheter. Det er absolutt ikke verdens største handelsstrategi, men det vil være mer enn egnet for OANDA-mekling API-testen. Den neste komponenten er utførelseshandleren Denne klassen er oppgave å handle på OrderEvent-tilfeller og gjøre forespørsler til megleren i dette tilfellet OANDA på dum måte Det er ingen risikostyring eller overbygging av potetkonstruksjon. Utførelseshandleren vil bare utføre enhver ordre som den er gitt. Vi må passere alle av autentiseringsinformasjonen til utførelsesklassen, inkludert domenepraksis, ekte eller sandkasse, tilgangstoken og konto-ID Vi oppretter så en sikker forbindelse med en av Pyth ons bygges i biblioteker. Mesteparten av arbeidet skjer i eksekveringsordre Metoden krever en hendelse som en parameter Det konstruerer deretter to ordbøker - topptekstene og parametene Disse ordbøkene vil da bli riktig kodet delvis av urllib et annet Python-bibliotek som skal sendes som en POST forespørsel til OANDAs API. Vi sender parametrene for innholdstype og autorisasjon, som inkluderer vår autentiseringsinformasjon. I tillegg koder vi parametrene, som inkluderer instrumentet EUR USD, enheter, bestillings type og side buy sell. Endelig gjør vi forespørselen og lagre svaret. Den mest komplekse delen av handelssystemet er StreamingForexPrices-objektet, som håndterer markedsprisoppdateringer fra OANDA. Det er to metoder connecttostream og streamtoqueue. Den første metoden bruker Python-forespørselsbiblioteket til å koble til en streaming-kontakt med passende overskrifter og parametere Parametrene inkluderer konto-ID og den nødvendige instrumentlisten som skal lyttes til oppdateringer i dette tilfellet er det bare EUR USD Merk følgende linje. Dette forteller at forbindelsen skal streames og dermed holdes åpen på langvarig måte. Den andre metoden forsøker streamtoqueue faktisk å koble til strømmen Hvis svaret ikke lykkes det vil si at svarkoden ikke er 200, da returnerer vi bare og avslutter. Hvis det lykkes, prøver vi å laste JSON-pakken tilbake til en Python-ordbok. Endelig konverterer vi Python-ordboken med instrumentet, budspørsmål og tidsstempel til et TickEvent som er sendt til hendelseskøen. Vi har nå alle hovedkomponentene på plass. Det siste trinnet er å pakke opp alt vi har skrevet så langt inn i et hovedprogram. Målet med denne filen, kjent som å lage to separate tråder hvorav en er kjører prishåndtereren og den andre som driver handelshandleren. Hvorfor trenger vi to separate tråder Enkeltvis utfører vi to separate stykker kode, som begge løper kontinuerlig Hvis vi skulle lage en ikke-gjenget program ram, da strømuttaket som ble brukt til prisoppdateringene, aldri ville slippe tilbake til hovedkoden, og dermed ville vi aldri faktisk utføre noen handel. På samme måte, hvis vi kjørte handelsløkken, se nedenfor, ville vi aldri faktisk returnere strømningsbanen til prisen streaming socket Derfor trenger vi flere tråder, en for hver komponent, slik at de kan utføres uavhengig De vil både kommunisere til hverandre via hendelseskøen. Vi undersøker dette litt videre. Vi lager to separate tråder med Følgende linjer. Vi sender funksjonsnavnet eller metodenavnet til målordningsargumentet og sender deretter en iterbar som en liste eller tuple til args-søkeordargumentet, som deretter overfører disse argumentene til den faktiske metodefunksjonen. Til slutt starter vi begge trådene med Følgende linjer. Så vi kan kjøre to, effektivt uendelige looping, kodesegmenter uavhengig, som begge kommuniserer gjennom hendelsekøen. Merk at Python threading-biblioteket ikke produserer et ekte multi-core multithreaded miljø på grunn av CPython implementering av Python og Global Interpreter Lock GIL Hvis du vil lese mer om multithreading på Python, vennligst ta en titt på denne artikkelen. Ta en titt på resten av koden i detalj For det første importerer vi alle nødvendige biblioteker, inkludert køtråd og tid. Vi importerer deretter alle de ovennevnte kodefilene. Personlig foretrekker jeg å kapitalisere noen konfigurasjonsinnstillinger, noe som er en vane jeg plukket opp fra å jobbe med Django. Deretter definerer vi handelsfunksjonen , som ble forklart i Python-pseudokode over En uendelig mens sløyfe utføres mens True som kontinuerlig avstemmer fra hendelsekøen og bare hopper om løkken hvis den blir funnet tom Hvis en hendelse er funnet, er det enten en TickEvent eller en OrderEvent og så kalles den aktuelle komponenten for å bære den ut. I dette tilfellet er det enten en strategi eller eksekveringshåndterer. Sløyfen sover da bare for hjerteslag sekunder i dette tilfellet 0 5 sekunder og fortsetter. Definitivt definerer vi hovedinngangen til koden i hovedfunksjonen. Det er godt kommentert nedenfor, men jeg vil oppsummere her. I hovedsak ordner vi hendelsekøen og definerer instrumentenhetene. Deretter lager vi StreamingForexPrices prisstrømsklasse og deretter Etterfølgende utførelseshåndteringsbehandleren Begge mottar de nødvendige autentiseringsdetaljer som er gitt av OANDA når du oppretter en konto. Vi lager deretter TestRandomStrategy-instansen. Til slutt definerer vi de to trådene og starter dem. For å kjøre koden trenger du ganske enkelt å plassere alle filene i samme katalog og ring følgende på terminalen. Merk at å stoppe koden på dette stadiet krever en hard drep av Python-prosessen via Ctrl-Z eller tilsvarende. Jeg har ikke lagt til en ekstra tråd for å håndtere å se etter det som ville være trengte å stoppe koden på en sikker måte En potensiell måte å stoppe koden på en Ubuntu Linux-maskin på er å skrive. Og send deretter utgangen av dette til et prosessnummer i followi ng. Where PROCESSID må byttes ut med utgang fra pgrep Merk at dette ikke er spesielt god praksis. I senere artikler vil vi skape en mer sofistikert stoppstartsmekanisme som benytter Ubuntu s prosessovervåking for å få handelssystemet til å løpe 24 7. Utgangen etter 30 sekunder eller så, avhengig av tidspunktet for dagen i forhold til de viktigste handelstimene for EUR USD, for ovennevnte kode, er gitt nedenfor. De første fem linjene viser JSON-tippdata returnert fra OANDA med bud spørre priser Deretter kan du se utførelsesordreutgangen, samt JSON-svaret returnert fra OANDA, som bekrefter åpningen av en kjøpshandel for 10.000 enheter av EUR USD og prisen den ble oppnådd på. Dette vil fortsette å løpe på ubestemt tid til du dreper programmet med en kommando Ctrl-Z eller lignende. I senere artikler skal vi utføre noen trengte forbedringer, inkludert. Realstrategier - Riktig forexstrategier som genererer lønnsomme signaler. Produksjonsinfrastruktur e - Remote server implementering og 24 7 overvåket trading system, med stopp start evne. Portefølje og risikostyring - Portefølje og risiko overlays for alle foreslåtte ordrer fra strategien. Flere strategier - Konstruere en portefølje av strategier som integrerer i risikostyring overlegg. Som med aksjedrevne backtesterenes aksjer, må vi også lage en forex-backtesting-modul som lar oss utføre rask forskning og gjøre det lettere å distribuere strategier. Husk å endre ACCOUNTID og ACCESSTOKEN. Just Komme i gang med kvantitativ Trading. Using Python, IBPy og Interactive Brokers API for å automatisere Trades. A mens tilbake diskutert vi hvordan du oppretter en Interactive Brokers demo konto Interactive Brokers er en av de viktigste meglerhusene som brukes av detaljhandel algoritmiske handelsmenn grunnet sin relativt lave minimal konto balanse krav 10.000 USD og relativt grei API I denne artikkelen vil vi gjøre bruk av en demo-konto for å automatisere handler mot Interactive Brokers API, via Python og IBPy plugin. Opplysning Jeg har ingen tilknytning til interaktive meglere Jeg har brukt dem før i en profesjonell fondskontekst og som sådan er kjent med deres programvare. Interactive Brokers API. Interactive Brokers er en stor bedrift og som sådan henvender seg til et bredt spekter av handelsmenn, alt fra skjønnsmessig detaljhandel til automatisert institusjonell Dette har ført til at GUI-grensesnittet, Trader Workstation TWS, har en betydelig mengde klokkene og fløyter. I tillegg til TWS er ​​det også en lett komponent som heter IB Gateway, som gir samme tilgang til IB-serverne, om enn uten den ekstra funksjonaliteten til GUI. For våre automatiserte handelsformål har vi vunnet at vi faktisk trenger TWS GUI , men jeg tror på denne opplæringen er det demonstrerende å gjøre bruk av den. Den underliggende arkitekturen er basert på en klientservermodell som tilbyr både utførelse og markedsdata feeds historisk og sanntid via en API. Det er denne API som vi vil benytte i denne veiledningen for å sende automatiserte bestillinger, via IBPy. IBPy har blitt skrevet for å pakke inn det innfødte Java API og gjøre det enkelt å ringe fra Python De to hovedbibliotekene vi er interessert i innen IBPy er og Sistnevnte er høyere nivå og benytter seg av funksjonalitet i det tidligere. I den følgende implementeringen skal vi lage et ekstremt enkelt eksempel, som bare sender en enkelt markedsordre for å kjøpe 100 enheter av Google-lager, ved hjelp av smart orderruting Th e sistnevnte er utformet for å oppnå den beste prisen i praksis, men i visse situasjoner kan den være suboptimal. Men i denne opplæringen vil det være nok. Implementering i Python. Før vi begynner er det nødvendig å ha fulgt trinnene i den tidligere opplæringen ved å sette opp en Interactive Brokers-konto I tillegg er det nødvendig å ha et tidligere Python-arbeidsområde slik at vi kan installere IBPy som lar deg knytte andre sider av koden sammen. Opplæringen om installering av et Python-forskningsmiljø vil skape det nødvendige arbeidsområdet. Installere IBPy. IBPy er et Python wrapper skrevet rundt Java-baserte Interactive Brokers API. Det gjør utviklingen av algoritmiske handelssystemer i Python noe mindre problematisk. Den vil bli brukt som grunnlag for all etterfølgende kommunikasjon med Interactive Brokers før vi vurderer FIX-protokollen på en senere date. Since IBPy er opprettholdt på GitHub som et git repository vi trenger å installere git På et Ubuntu system dette er ha ndled by. Once du har git installert kan du opprette en underkatalog for å lagre IBPy På mitt system har jeg rett og slett plassert den under mitt hjemmekatalog. Det neste trinnet er å laste ned IBPy via git klone. Sørg for å gå inn i IbPy katalogen og installer med det foretrukne Python virtuelle miljøet. Dette fullfører installasjonen av IBPy. Det neste trinnet er å åpne opp TWS som beskrevet i den tidligere opplæringen..TWS Portfolio View Før Google Trade. Automated Trading. Følgende kode vil demonstrere en ekstremt enkel API-basert rekkefølge mekanisme Koden er langt fra produksjonsklar, men den viser den viktige funksjonaliteten til API-en for interaktive meglere og hvordan du bruker den til å utføre ordre. Alt av følgende kode skal ligge i filen. Det første trinnet er å importere kontrakten og bestillingen objekter fra biblioteket på lavere nivå I tillegg importerer vi tilkoblings - og meldingsobjektene fra biblioteket på høyere nivå. IB gir oss muligheten til å håndtere feil og serverresponser ved en tilbakekallingsmekanisme Følgende to funksjoner gjør ikke noe annet enn å skrive ut innholdet i meldingene som returneres fra serveren. Et mer sofistikert produksjonssystem må implementere logikk for å sikre kontinuerlig drift av systemet ved ekstraordinær oppførsel. Følgende to Funksjoner Wrap opprettelsen av Kontrakt og Ordreobjekter, angi deres respektive parametere Funksjonsdokumenter beskriver hver parameter individuelt. Hovedfunksjonen oppretter opprinnelig et Tilkoblingsobjekt til Trader Workstation, som må kjøres for at koden skal fungere Feil - og svarhåndteringsfunksjonene blir deretter registrert med forbindelsesobjektet Deretter defineres en ordrevariabel I et produksjonssystem må dette økes for hver handelsordre. De neste trinnene er å opprette en kontrakt og en ordre som representerer en markedsordre for å kjøpe 100 enheter av Google-lager. Den endelige Oppgave er å faktisk plassere den ordren via PlaceOrder-metoden i Connection-objektet Vi n koble fra TWS. Det endelige trinnet er å kjøre koden. Straks kan det ses at API-fanen åpnes i Trader Workstation, og viser at markedsordren går lang til 100 aksjer i Google. TWS API Tab-visning etter Google-ordre. Hvis vi ser nå på Portefølje-fanen vi kan se Google-posisjonen Du vil også merke en forex-posisjon i listen, som ikke ble generert av meg selv. Jeg kan bare anta at enten IB demo-kontoen deles på noen måte på grunn av identisk pålogging informasjon eller IB plasserer vilkårlig ordre inn i kontoen for å gjøre det virke mer realistisk Hvis noen har noe innblikk i denne oppførselen, vil jeg være interessert i å lære mer. TWS API Porteføljevisning etter Google-order. Dette er den mest grunnleggende formen for automatisk utførelse som vi kan vurdere I etterfølgende artikler skal vi konstruere en mer robust eventdrevet arkitektur som kan håndtere realistiske handelsstrategier. Bare å komme i gang med kvantitativ handel.

No comments:

Post a Comment