Wednesday 8 November 2017

Automatisert Forex Trading Api


Opprette automatiserte handelssystemer ved hjelp av interaktive meglere Automatisert handel med interaktive meglere. Den interaktive meglerhandelsplattformen selv tilbyr ikke automatisert handel. Det finnes imidlertid flere løsninger for handelsfolk som ønsker å automatisere handelssystemer ved hjelp av IB Trader Workstation TSW-plattformen, inkludert. Party APIs. Programming Consultants. Third-Party APIs En Application Programming Interface API er et språkformat som brukes av et applikasjonsprogram for å kommunisere med annen systemprogramvare. En API fungerer som et grensesnitt eller mellomrom som tillater kode å kommunisere med IB handelsplattformen Tredjepartsleverandører tilbyr en rekke proprietære APIer som gir tilpassbare, forhåndsbygde algoritmer og plug-and-play-handelsprogramvareprogrammer designet for å kjøre sammen med IBs Trader Workstation TWS-handelsplattform. En liste over tredjeparts-APIer er tilgjengelig på IB-nettsted fra hjemmesiden, klikk på Utdanningsoverskriften og velg Markedsplassen IB Re Legg til ansvarsfraskrivelsen, og hvis du godtar vilkårene, klikk Hvis du godtar ansvarsfraskrivelsen, vennligst klikk her for å fortsette. Klikk på fanen Programvareverktøy og underordnet Ordrehåndteringsprogramvare for å se leverandører og produkter vist i Figur 1.Figur 1 - Velg Programvareverktøy-fanen i markedsplassen IB for å bla gjennom tredjepartsleverandører. Programmeringskonsulenter I tillegg til de kommersielt tilgjengelige APIene har Markedsplass IB også en link til Programmeringskonsulenter som kan bistå handelsmenn og investorer med utvikling av tilpassede indikatorer og strategier for å Brukes i automatisert handel Konsulenter gir koding på en rekke språk, inkludert Java, C, Visual Basic, SQL, Perl, Matlab, samt andre handelsplatforms proprietære språk som kan knyttes til IB. Husk at programmører kun kan programmere absolutte regler, og de gir vanligvis ikke forslag til forbedring av lønnsomheten til et system - bare ytelsen til koden Før du arbeider med en programmerer, er det viktig å kunne definere alle handelssystemets inn-, utgangs - og ledelseslogikk Hvis det kan defineres, kan det sannsynligvis bli kodet. Programmering med IB APIer En tredje løsning er for handelsfolk med ferdigheter eller ønske om å lære å programmere egne APIer Interaktive meglere gir flere APIer som handelsmenn kan bruke til å koble til via enten TWS eller IB Gateway. Koble til via TWS krever at programmet kjører, men tillater forhandlere å teste og bekrefte at API-ordrene fungerer som de skal Tilkobling via IB Gateway gir derimot ikke grensesnitt for testing og bekreftelse, men lar APIen kjøre uten at et stort GUI-program kjører. Hvor API-ene fra tredjepart gir tilpassbare, forhåndsbygde algoritmer, IB API programmeringsmiljø er i hovedsak råmateriale IB gir utstyret og komponentene, og brukeren gjør all programmering. Brukere kan programmere på en rekke språk, inkludert C , Java, ActiveX eller DDE for Excel Det finnes en rekke API-relaterte innstillinger i TWS som forhandlere kan konfigurere, vist i Figur 2 IB API Referansehåndboken som er tilgjengelig på Interactive Brokers-nettstedet, søk etter API Reference Guide gir også en oversikt som instruksjoner som er spesifikke for de ulike programmeringsspråk. Figur 2 - Konfigurere API-innstillingene i TWS. Konklusjon Traders som ønsker å implementere automatiserte handelssystemer via Interactive Brokers-plattformen, har en rekke alternativer. Ikke-programmører kan ønske å utforske API-en fra tredjepart leverandører som tilbyr en rekke tilpassbare eller plug-and-play-alternativer. Traders med unike ideer kan jobbe med en kvalifisert programmeringskonsulent. De med programmeringserfaring eller tid og ønske om å lære et programmeringsspråk kan bruke IB APIs når de utvikler automatiserte handelssystemer. Programmeringstjenester. Høy risikoinvestering Advarsel Handel utenlandsk valuta og eller kontrakter for forskjeller på margen gir et høyt nivå av risiko k og kan ikke være egnet for alle investorer. Muligheten for at du kan opprettholde et tap som overstiger dine innskudte midler. Før du bestemmer deg for å handle med produkter som tilbys av FXCM, bør du nøye vurdere dine mål, økonomiske situasjoner, behov og erfaring. Du bør være oppmerksom på alle risikoer knyttet til handel på margin. FXCM gir generelle råd som ikke tar hensyn til dine mål, økonomiske situasjoner eller behov. Innholdet på dette nettstedet må ikke tolkes som personlig rådgivning. FXCM anbefaler at du søker råd fra en egen finansiell rådgiver. Vennligst klikk her for å lese full risiko advarsel. Forex Capital Markets Limited FXCM LTD er et driftsdatterselskap innen FXCM-gruppen av selskaper samlet, FXCM-konsernet. Alle referanser på dette nettstedet til FXCM refererer til FXCM Group. Forex Capital Markets Limited er autorisert og regulert i Storbritannia av Financial Conduct Authority Registreringsnummer 217689.Tax Behandling Storbritannia skatt tr spisning av dine økonomiske spillaktiviteter avhenger av dine individuelle omstendigheter og kan være gjenstand for endring i fremtiden, eller det kan variere i andre jurisdiksjoner. Copyright 2017 Forex Capital Markets Alle rettigheter reservert. Nordlig Shell Building, 10 Lower Thames Street, 8th Floor, London EC3R 6AD Selskapet er innlemmet i England Wales nr. 04072877 med registrert kontor som ovenfor. Vi bruker informasjonskapsler for å forbedre ytelsen og funksjonaliteten til nettstedet vårt, som i siste instans forbedrer nettleseropplevelsen. Ved å fortsette å bla gjennom dette nettstedet, godtar du bruken av informasjonskapsler. endre informasjonskapselene dine når som helst Lær mer. Din nettleser er utdatert. OANDA cookie, cookie, OANDA cookie cookie, cookie. ltiframe bredde 1 høyde 1 frameborder 0 stilvisning ingen mcestyle display ingen gt lt iframe gt. OANDA FIX OANDA FIX 4 2, 4 3 4 4.REST OANDA, OANDA, 20 v20. API, - OANDA, fxTrade OANDA API - - API, API OANDA. fxTrade OANDA API - - API, API OANDA. API REST, OANDA. API OANDA v20.API REST-v20 v20.API OANDA, API. API REST 429. fxTrade OANDA API - - API, API OANDA API. v20, 101-23423 -105, API v3 REST v20.API REST v20. , 252345, API v1.Algorithmic Traders. Have du opprettet din egen indikator Nå kan du laste ned vår Marketscope Indicore SDK for å feilsøke og backtest din strategi. Marketscope Indicore. Marketscope Indicore er ideell for de vanligste API-behovene, bygget spesielt for algoritmisk handel. s brukes best for backtesting og strategioptimalisering når du bygger din egen handelsstrategi. Oppbyggede, open source-strategier 15 og indikatorer 53.Free data på mer enn 80 instrumenter på tvers av 40 måneders data. Et komplett spekter av bestillingsformer, inkludert marked, begrense, stoppe og stopp-limit orders. Getting Started. Already har en FXCM-konto. En FXCM-konto, inkludert gratis praksis konto ingen minimumsbalanse required. An IDE eller tekstredigerer som kjører LUA dvs. SciTE. VPS Free Hosting Opprettholde en balanse på 5.000 basisvaluta eller 500k JPY og 40k HKD på MT4-kontoen din, og VPS er din uten kostnad. For eksempel, hvis kontoen din er Australian Dollars AUD, er det en kontosaldo på 5.000 AU D Hvis du ikke oppfyller dette kravet i slutten av måneden, kan en avgift på 30 basisvaluta eller 3k JPY og 240 HKD bli debitert fra en hvilken som helst FXCM-konto s for å dekke VPS-prisen. Risiko Advarsel Vår tjeneste omfatter produkter som handles på margin og medfører risiko for tap som overstiger dine innskudte midler. Produktene kan ikke være egnet for alle investorer. Pass på at du fullt ut forstår de involverte risikoene. Høy risiko Investeringsvarning Handel utenlandsk valuta eller kontrakter for forskjeller på margin har høy risiko og kan ikke være egnet for alle investorer. Muligheten er at du kan opprettholde et tap som overstiger dine innskudte midler. Før du bestemmer deg for å handle med produkter som tilbys av FXCM, bør du nøye vurdere dine mål, økonomiske situasjoner, behov og erfaringsnivå Du bør være oppmerksom på alle risikoene knyttet til handel på margin. FXCM gir generelle råd som ikke tar hensyn til dine mål, økonomiske situasjoner eller behov Innholdet på denne nettsiden må ikke tolkes som personlig rådgivning. FXCM anbefaler at du søker råd fra en egen finansiell rådgiver. Vennligst klikk her for å lese full risiko advarsel. Forex Capital Markets Limited FXCM LTD er et driftsdatterselskap innen FXCM-gruppen av selskaper kollektivt , FXCM-gruppen Alle referanser på dette nettstedet til FXCM refererer til FXCM-gruppen. Forex Capital Markets Limited er autorisert og regulert i Storbritannia av Financial Conduct Authority. Registreringsnummer 217689.Taxbehandling Den britiske skattebehandlingen av dine økonomiske spillaktiviteter avhenger av på dine individuelle omstendigheter og kan være gjenstand for endringer i fremtiden, eller kan variere i andre jurisdiksjoner. Copyright 2017 Forex Capital Markets Alle rettigheter forbeholdes. Nordlig Shell Building, 10 Lower Thames Street, 8. etasje, London EC3R 6AD Selskapet er innlemmet i England, Wales Nei 04072877 med registrert kontor som ovenfor. Vi bruker informasjonskapsler for å forbedre ytelsen og funksjonaliteten til nettstedet vårt, som til slutt forbedrer nettleseropplevelsen Ved å fortsette å bla gjennom dette nettstedet, godtar du bruk av informasjonskapsler. Du kan endre innstillingene dine når som helst. Les mer. Din nettleser er utdatert. Forex Trading Dagbok 1 - Automatisert Forex Trading med OANDA API. Jeg tidligere nevnt i QuantStart 2014 i Review-artikkelen at jeg skulle tilbringe litt av 2015 som skriver om automatisert forex trading. Given at jeg selv selv utfører forskning på aksjer og futures markeder, syntes jeg det ville være morsomt og lærerikt å skrive om mine erfaringer med å gå inn i valutamarkedet 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 innføringen av dagboken vil jeg beskrive hvordan man skal sette opp en ny praksismeglingskonto med OANDA, samt hvordan man lager en grunnleggende multithreaded eventdrevet handelsmotor som automatisk kan utføre handler både i praksis og i live setting. brukte mye tid på å se på hendelsesdrevet backtester primært for aksjer og ETFs. Den 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 bør 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 post direkte om valutahandelen, 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 Den høye graden av innflytelse kan virke mot deg så godt som for deg Før du bestemmer deg for å investere i utenlandsk exch ange at du bør nøye vurdere dine investeringsmål, nivå av erfaring og risikovillighet. Muligheten for at du kan opprettholde et tap av noe eller hele din opprinnelige investering, og derfor bør du ikke investere penger du ikke har råd til å tape. Du bør være oppmerksom på av alle risikoene knyttet til valutahandel, og søk råd fra en uavhengig finansiell rådgiver hvis du er i tvil. Denne programvaren leveres som det er og noen uttrykte eller underforståtte garantier, inkludert, men ikke begrenset til, de underforståtte garantiene for salgbarhet og Fitness for en bestemt hensikt blir fraskrevet. I noen tilfeller skal regentene eller bidragsyterne være ansvarlige for direkte, indirekte, tilfeldige, spesielle, eksemplariske eller følgeskader, inkludert, men ikke begrenset til, anskaffelse av erstatningsgoder eller tjenester tap av bruk, data , eller fortjeneste eller forretningsavbrudd imidlertid forårsaket og på noen teori om ansvar, enten i kontrakt, strenge ansvar eller tort inkludert neg ligence eller på annen måte oppstår i noen ut av bruken av denne programvaren, selv om det er anbefalt av muligheten for slike skader. Sette opp en konto med OANDA. Det første spørsmålet som kommer til å tenke er hvorfor velge OANDA Enkelt sagt, etter litt Googling rundt for forex meglere som hadde APIer, så jeg at OANDA nylig hadde gitt ut en riktig REST API som lett kunne kommuniseres med fra nesten hvilket som helst språk på en ekstremt enkel måte. Etter å ha lest gjennom dokumentasjonen til utviklerens API, bestemte jeg meg for å prøve dem på minst med en praksis konto. For å være klar - Jeg har ingen tidligere eller eksisterende forhold til OANDA og gir bare denne anbefalingen basert på min begrensede erfaring å leke med sin praksis API og litt kort bruk for markedsdata nedlasting mens ansatt hos 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 et blikk også. Før du bruker API, er det nødvendig å registrere deg for en brukerkonto For å gjøre dette, gå til registreringslinken Du vil se følgende skjerm. OANDA registreringsskjerm. Du vil da kunne logge på med påloggingsinformasjonen. Sørg for å velge fanen fxTradePractice fra innloggingsskjermbildet. OANDA påloggingsskjerm. Når du er på, må du notere konto-IDen din. Den er oppført under den svarte Min Funds-overskriften ved siden av Primary Mine er et 7-sifret tall. I tillegg vil du også trenger å generere en personlig API-token For å gjøre dette, klikker du Administrer API-tilgang under fanen Andre handlinger nederst til venstre. I dette trinnet vil du kunne generere en API-token. Du må ha nøkkelen til bruk senere, så sørg for å skrive det vil du også ha. Du vil nå starte FXTrade Practice-programmet, som gjør det mulig for oss å se de utførte ordrene og tap av papiroverskudd. Hvis du kjører et Ubuntu-system, må du installere en litt annen versjon av Java In spesielt, Oracle-versjonen av Java 8 Hvis du ikke gjør det s vil treningssimulatoren ikke lastes 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 markerte Launch FXTrade Practice-lenken. Det vil hente en Java dialog om å spørre om du vil kjøre den Klikk Run, og fxTrade Practice-verktøyet vil laste Mynte 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 utforming og koding av vårt automatiserte Forex trading system mot OANDA API. Overvåking av Trading Architecture. Hvis du har fulgt hendelsesdrevet backtester-serien for aksjer og ETFer som jeg opprettet i fjor, vil du være klar over hvordan en slik event-driven handelssystemfunksjoner For de av dere som er nye til hendelsesdrevet programvare, vil jeg sterkt foreslå å lese gjennom artikkelen for å få litt innsikt i hvordan de fungerer. I det hele tatt er hele programmet execu ted i en infinte mens sløyfe som bare avsluttes når handelssystemet er slått av. Programmets sentrale kommunikasjonsmekanisme er gitt via en kø som inneholder hendelser. Køen blir konstant bedt om å se etter nye hendelser. Når en begivenhet er tatt av toppen av køen, det må 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 kommer. Et signalgenererende strategibjekt kan skape OrderEvent s som skal være sendes til en megling. Nyttigheten 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 riktig håndtert av den rette komponenten i programmet. I tillegg forskjellige deler av programmet kan kjøres i separate tråder som betyr at det aldri er noen som venter på noen bestemt komponent før du behandler andre. Dette er ekstremt nyttig i algoritmisk handel situat ioner der markedsdatainnmatingshåndterere og strategisignalgeneratorer har svært forskjellige ytelsesegenskaper. Den viktigste handelsløkken er gitt av følgende Python pseudo-kode. Som nevnt 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, startes sløyfen bare etter en kort søvnperiode kjent som hjerteslag. Hvis en hendelse er funnet, vurderes typen, og deretter blir den aktuelle modulen enten strategien eller utførelseshandleren pålagt å håndtere hendelsen og muligens generere nye som går tilbake til køen. De grunnleggende komponentene som vi skal 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ør over tilkoblingen for alle instrumenter som vi er interessert i. Strategi Signal Generator - Dette vil ta en sekvens av tick hendelser og bruke dem til å generere handelsordre som vil bli utført av utførelseshandleren. Utførelseshandler - Tar et sett med ordrehendelser og utfører dem blindt ut 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. Main Entry Point - Hovedinngangen inkluderer også handelsløypen 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 en fullstendig liste over alle kildekodefiler Hvis du plasserer dem i samme katalog og kjører python, vil du begynne å generere bestillinger, forutsatt at du har fylt ut konto-ID og godkjennings token fra OANDA. Implementering . Det er dårlig praksis å lagre passord eller autentiseringsnøkler i en kodebase som du aldri kan forutse hvem som til slutt vil få tilgang til et prosjekt jeg na-produksjonssystem, lagrer vi disse legitimasjonene som miljøvariabler med systemet og spør deretter disse envvarsene hver gang koden er omlagt. 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 er ikke opptatt av produksjonsdetaljer i denne artikkelen, vil vi i stedet skille disse autentegnene i en innstillingsfil. I den følgende konfigurasjonsfilen har vi en ordbok som heter MILJØER som lagrer API-sluttpunktene for både OANDA-prisstrømmen API og handels-API Hver underordbok inneholder tre separate API-endepoeng-sann praksis og sandbox. Sandbox-API er rent for testingskode og for å sjekke at det ikke er noen feil eller feil. Det har ikke oppetidsgarantier for ekte eller praktiske APIer. praksis API, gir i hovedsak muligheten til papirhandel. Det gir den alle funksjonene til den virkelige API på en simulert pr aktørkonto Den virkelige API er nettopp det - det er live trading Hvis du bruker det endepunktet i koden din, vil det handle mot din livekontosaldo. VÆRE EKSTRA NØYAKTIG. IMPORTANT Når du handler mot praksis-APIen, husk at en viktig transaksjonskostnad, den av Markedspåvirkning er ikke vurdert Da ingen bransjer faktisk plasseres i miljøet, må denne kostnaden på annen måte utgis ved hjelp av en markedsvirkningsmodell hvis du ønsker å realistisk vurdere ytelsen. I det følgende bruker vi praksiskontoen 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 under med dummy-IDer, så du må bruke din egen, som du kan få tilgang til 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-an d OrderEvent De første lagrer informasjon om instrumentmarkedsdata som det beste budet og handelstiden. Den andre brukes til å overføre ordrer til utførelseshandleren og inneholder dermed instrumentet, antall enheter som skal handles, ordretypemarkedet eller grensen og siden er det å kjøpe og selge. For fremtidssikker vår begivenhetskode skal vi lage en baseklasse som heter Event og har alle hendelser arvet fra dette. Koden er gitt nedenfor. Den neste klassen vi skal lage vil håndtere handelsstrategi I denne demonstrasjonen skal vi skape en ganske nonsensisk strategi som bare mottar alle markedsklikkene, og på hver femte kryss kjøper eller selger 10.000 enheter av EUR USD. Dette er en latterlig strategi. Det er imidlertid fantastisk for testing formål fordi det er greit å kode og forstå I fremtidige dagbokoppføringer vil vi erstatte dette med noe betydelig mer spennende som forhåpentligvis vil vinne. Filen kan bli funnet under La oss arbeid gjennom det og se hva som foregår 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 sender ordrer til hendelseskø, 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 en ticks counter som brukes til å fortelle hvor mange TickEvent-forekomster det har sett. Mesteparten av arbeidet oppstår i calculatesignals-metoden, som bare tar en hendelse, bestemmer om det er en TickEvent ellers ignorerer og øker telleren. Det kontrollerer deretter for å se om tellingen er delelig med 5 og så tilfeldigvis 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 vår OANDA meglerprogram Den neste komponenten er utførelseshandleren Denne klassen har til oppgave å handle på OrderEvent-tilfeller og foreta forespørsler til megleren i dette tilfellet OANDA på dum måte Det er ingen risikostyring eller overbygging av potetkomponenter. Utførelseshandleren vil bare utføre hvilken som helst rekkefølge som den er gitt. Vi må sende all autentiseringsinformasjon til utførelsesklassen, inkludert domenepraksis, ekte eller sandkasse, tilgangstoken og konto-ID. Deretter oppretter vi en sikker forbindelse med en av Pythons innebygd 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 Content Type og Authorization, som inkluderer vår autentiseringsinformasjon. I tillegg koder vi parametrene, som inkluderer instrumentet EUR USD, enheter, ordre type og side buy sell Til slutt, vi gjør forespørselen og lagre svaret. Den mest komplekse delen av handelssystemet er StreamingForexPrices-objektet, som håndterer markedsprisoppdateringene fra OANDA. Det er to metoder tilkoblingstrøm og streamtoqueue. Den første metoden bruker Python-forespørselsbiblioteket til å koble til en streaming-kontakt med de aktuelle overskriftene og parametrene. Parametrene inkluderer konto-IDen og den nødvendige instrumentlisten som skal høres på for oppdateringer i dette tilfellet er det bare EUR USD Note den følgende linjen. Dette forteller at forbindelsen skal streames og dermed holdes åpen på langvarig måte. Den andre metoden forsøker streamtoqueue å koble til strømmen. Hvis svaret ikke lykkes, det vil si at svarkoden ikke er 200, så vi bare gå tilbake og avslutt Hvis det lykkes, prøver vi å laste JSON-pakken tilbake til en Python-ordbok. Endelig konverterer vi Python-ordboken med instr ument, bud spør og tidsstempel i et TickEvent som sendes 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 den ene driver prissentaren og den andre som driver handelshandleren. Hvorfor trenger vi to separate tråder Enkeltvis utfører vi to separate stykker kode, som begge løpende løper hvis vi skulle lage et ikke-threaded-program, da streaming-kontakten som ble brukt for prisoppdateringene, aldri ville slippe tilbake til hovedkoden, og dermed ville vi aldri faktisk utføre noen handel. Hvis vi også kjørte handelsløkken, se nedenfor, Vi ville aldri faktisk returnere strømningsbanen til prisstrømmen. 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. e dette litt videre Vi lager to separate tråder med de følgende linjene. 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 metoden funksjon. Vi starter vi begge trådene med følgende linjer. Da kan vi kjøre to, effektivt uendelige looping, kodesegmenter uavhengig, som begge kommuniserer gjennom hendelseskøen. Merk at Python-tråderbiblioteket ikke produserer en 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. Lets undersøke resten av koden i detalj Først importerer vi alle nødvendige biblioteker inkludert køtråd og tid Vi importerer deretter alle de ovennevnte kodefilene jeg personlig foretrekker å kapitalisere noen konfigurasjonsinnstillinger, som er en vane jeg plukket opp fra å jobbe med Django. Etter det definerer vi handelsfunksjonen, som ble forklart i Python-pseudokode over. En uendelig mens sløyfen utføres mens True som kontinuerlig avstemmer fra hendelsekøen og bare hopper om sløyfen hvis den er funnet tom Hvis en hendelse er funnet, er det enten en TickEvent eller en OrderEvent, og deretter blir den aktuelle komponenten kalt 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. Til slutt definerer vi hovedinngangen til koden i hovedfunksjonen. Det er godt kommentert nedenfor, men jeg vil oppsummere her. I hovedsak organiserer vi hendelseskøen og definerer instrumentene. Vi lager deretter StreamingForexPrices prisstrømsklasse og Deretter mottar Behandler av utførelsen begge Begge de nødvendige godkjenningsdetaljer som er gitt av OANDA når du oppretter en konto. Vi oppretter deretter TestRandomStrategen y instans 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 ringe følgende på terminalen. Merk at for å 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 å lete etter det som trengs for å stoppe koden på en sikker måte. En mulig måte å stoppe koden på en Ubuntu Linux-maskin på er å skrive. Og deretter passere utgangen av dette er et prosessnummer i følgende. Hvor PROCESSID må erstattes med utgangen av pgrep Merk at dette ikke er særlig god praksis. I senere artikler vil vi skape en mer sofistikert stoppstartsmekanisme som benytter Ubuntu s prosess tilsyn for å få handelssystemet til å fungere 24 7. Utgangen etter 30 sekunder eller så, avhengig av tidspunktet for dagen i forhold til de viktigste handelstidene for EUR USD, for ovennevnte kode, er gitt nedenfor. De fem første linjene viser JS ON-kryssdata returnert fra OANDA med bud-forespørselspriser 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 vilje fortsett å løpe på ubestemt tid til du dreper programmet med en Ctrl-Z-kommando eller lignende. I senere artikler skal vi utføre noen trengte forbedringer, inkludert. Realstrategier - Riktig forexstrategier som genererer lønnsomme signaler. Produksjonsinfrastruktur - Ekstern server implementering og 24 7 overvåket handelssystem, med stoppstartkapasitet. Portefølje og risikostyring - Portefølje og risikooverlays for alle foreslåtte ordrer fra strategien. Flere strategier - Konstruere en portefølje av strategier som integreres i risikostyringsoverlegget. Som med aksjene Event-driven backtester, vi må 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 handel.

No comments:

Post a Comment