Friday 17 November 2017

Oanda Forex Trading Api


Forex Labs Endpoints Returnerer opptil 1 års verdi for økonomisk kalenderinformasjon som er relevant for et instrument. For eksempel, hvis instrumentet er EURUSD, vil all økonomisk informasjon som er relevant for Euro og US Dollar, bli inkludert. Noen av oppføringene er strenge nyheter om et viktig møte, mens andre oppføringer kan inneholde økonomiske indikatordata. Input Query Parameter instrument: Valgfritt Navn på instrumentet for å hente kalenderdata for. Alle omsettelige instrumenter støttes. Hvis dette er utelatt, vil informasjon om alle omsettelige instrumenter bli returnert. periode: Nødvendig Tid i sekunder for å hente kalenderdata for. Verdier som ikke er i følgende liste, justeres automatisk til nærmeste gyldige verdi. Gyldige verdier er: 3600 - 1 time 43200 - 12 timer 86400 - 1 dag 604800 - 1 uke 2592000 - 1 måned 7776000 - 3 måneder 15552000 - 6 måneder 31536000 - 1 år JSON Response Fields tittel: Tittel på arrangementet. tidsstempel: tidspunktet for hendelsen, returnert som en unix tidsstempel. enhet: Dette feltet beskriver dataene som er funnet i prognosen. forrige. faktiske og markedsfelt. Noen mulige verdier er: betyr at data er en prosentandel, k betyr tusenvis av enheter, eller tom hvis det ikke er noen data knyttet til hendelsen. valuta: Dette er valutaen som påvirkes av nyhetshendelsen. prognose: Den forventede verdien. forrige: Viser verdien av den forrige utgivelsen av den samme hendelsen. faktisk: Den faktiske verdien, dette er bare tilgjengelig etter at arrangementet har funnet sted. marked: Markedsforventning av hva verdien var. Returnerer opptil 1 års verdi for spredning av informasjon for et støttet instrument. De returnerte dataene er delt i 15 minutters intervaller. For hver periode gir vi tidsvektet gjennomsnitt, minimum og maksimal spredning. Mer informasjon på vår Forex Labs-side. Input Query Parameter instrument: Obligatorisk Navn på instrumentet for å hente spredningsdata for. Alle omsettelige instrumenter støttes. periode: Nødvendig Tid i sekunder for å hente sprededata for. Verdier som ikke er i følgende liste, justeres automatisk til nærmeste gyldige verdi. Gyldige verdier er: 3600 - 1 time 43200 - 12 timer 86400 - 1 dag 604800 - 1 uke 2592000 - 1 måned 7776000 - 3 måneder 15552000 - 6 måneder 31536000 - 1 år unik: Valgfritt Denne parameteren angir om du vil returnere like tilstøtende sprekker. Hvis 0, returneres alle spreads. Hvis 1 er tilstøtende dupliserte spreder utelatt. Dette brukes til å redusere båndbreddeforbruket. Standard for unikt er 1 hvis den unike parameteren ikke er spesifisert. JSON Response Fields Hovedrespons hash har 3 taster: max, min og avg. I samsvar med disse tre nøklene er arrays of spread entries. max: Maksimale sprøyter for 15 minutters intervaller. Min: Minimumspredninger for 15 minutters intervaller. avg: Gjennomsnittlig sprekker for 15 minutters intervaller. tidsstempel: Dette er det første feltet i gruppen, som representerer tiden ved slutten av 15 minutters intervall, returnert som en unix tidsstempel. spred: Dette er det andre feltet i arrayet, som representerer spredningen for 15 minutters intervall. Input Query Parameter instrument: Obligatorisk Navn på instrumentet for å hente orderbook data for. Støttede instrumenter: AUDJPY, AUDUSD, EURAUD, EURCHF, EURGBP, EURJPY, EURUSD, GBPCHF, GBPJPY, GBPUSD, NZDUSD, USDCAD, USDCHF, USDJPY, XAUUSD, XAGUSD. periode: Nødvendig Tid i sekunder for å hente orderbokdata for. Verdier som ikke er i følgende liste, justeres automatisk til nærmeste gyldige verdi. Gyldige verdier er: 3600 - 1 time - 20 minutters øyeblikksbilder 21600 - 6 timer - 20 minutters stillbilder 86400 - 1 dag - 2 timers stillbilder 604800 - 1 uke - to daglige stillbilder 04:00 og 16:00 GMT 2592000 - 1 måned - 1 dags stillbilder kl 16:00 GMT 31536000 - 1 år - 1 måneders snapshots første i måneden klokken 12.00 GMT JSON Response Fields Svaret består av nøkkelverdier par. Hver nøkkel er en unix tidsstempel for et øyeblikksbilde. Hvert øyeblikksbilde består av en hash av prispoeng og en prisoppføring. Hvert prispunkt er et nøkkelverdierpar. Prisinngangen er markedsprisen på øyeblikksbilde. os: Prosent av korte ordrer ol: Prosent av lange ordre ps: Prosent av korte stillinger pl: Prosent av lange posisjoner inntasting: Dette er frekvensen på den aktuelle tiden Autochartist Patterns Returns Våre favoritt signaler fra Autochartist. Disse signalene kan være et diagrammønster eller et nøkkelnivå. Kartmønster består av en øvre og en nedre linje som danner et mønster, mønsterets sluttid og prediksjonsprisboksen. Nøkkelnivåer har kun et prisnivå. Input Query Parameter Følgende parameter er alle valgfrie. Hvis du ikke angir noen parametere, vil alle gjeldende mønstre og våre nøkkelnivåer returneres. Disse mønstrene oppdateres hvert 15. minutt. instrument: Valgfritt Navn på instrument for å hente mønstre for. periode: Valgfri alder av mønsteret i sekunder for å søke etter. Gyldige verdier er: kvalitet: Valgfri Kvalitet på diagrammet for å søke etter. Gyldige verdier er: 1, 2, 3. 10 type. Valgfri type mønster for å søke etter. Gyldige verdier er: chartpattern - returnerer bare diagrammønstre, som kiler, kanaler, etc. keylevel - returnerer bare nøkkelnivåer, for eksempel motstand, støttelinjer. retning: Valgfri Retning av mønsteret for å søke etter. Gyldige verdier er: bullish bearish JSON-responsfelt for et diagrammønster meta. signaler meta data seksjon fullført. 1 hvis signalet er fullført, 0 hvis signalet er nye score. Autochartister måler om dette signaliserer kvalitetsuniformitet. verdiene er 1. 10 kvalitet. verdiene er 1. 10 breakout. verdiene er 1. 10 initialtrend. verdiene er 1. 10 klarhet. verdiene er 1. 10 sannsynlighet. Sannsynlighet for suksess for dette signalet, max er 100 intervall. lysestake granularitet av dette mønsteret, i minutter, 60 er 1 times retning. retning av dette mønsteret, 1 er bullish, -1 er bearish mønster. mønster navn lengde. antall lys over hvilke mønsteret dannet historisk status. Historisk statistikk basert på time of day, mønstertype og symbol timeofday. Historisk statistikk basert på timen av dagen totalt. totale mønstre for hvilke timen av historisk historisk statistikk er basert på prosent. prosentandel av suksess per time of day (correcttotal), max er 100 riktig. Antall korrekte spådommer etter time of day mønster. Historisk statistikk basert på mønstertype totalt. 2917 totale mønstre for mønstertype prosent. 64,45 prosent av suksess etter mønstertype (correcttotal), max er 100 riktig. 1880 antall korrekte spådommer etter mønstertypesymbol. Historisk statistikk basert på symbol totalt. totale mønstre for symbol prosent. prosent av suksess med symbol (correcttotal), max er 100 korrekt. Antall korrekte spådommer etter symbol trendtype. type trend, enten fortsettelse eller reversering id. Autochartist mønster ID-instrument. instrument navn type. type mønster, enten chartpattern eller keylevel data patternendtime. Unix tidsstempel som indikerer enden av mønsterpoengmotstanden. Øvre del av mønsteret x0. x0 og x1 er i unix tidsstempel x1. y0 og y1 er prisverdier støtte. den nedre delen av mønsteret x0. x0 og x1 er i unix tidsstempel x1. y0 og y1 er prisverdier forutsigelse. prediksjonsinformasjon, kun tilstede dersom mønsteret er fullført timefrom. tidligste unix tidsstempel (venstre side) av prediksjonsprisboksen timeto. siste unix tidsstempel (høyre side) av prediksjonsprisboksen pricehigh. øvre side av prognosen pris boks pricelow. nedre side av prognosen pris boks leverandør. signalleverandørnavn Response Chartpattern JSON Response Fields For Key Level-signaler. hver oppføring er et signal objekt meta. signaler meta data seksjon fullført. 1 hvis signalet er fullført, 0 hvis signalet er nye score. Autochartister måler om dette signalene kvalitetskvalitet. verdiene er 1. 10 mønstertype. type mønster, enten Approaching eller Breakout sannsynlighet. Sannsynlighet for suksess for dette signalet, max er 100 intervall. lysestake granularitet av dette mønsteret i minutter, 240 betyr 6 timers retning. retning av dette mønsteret, 1 er bullish, -1 er bearish mønster. mønster navn lengde. antall lys over hvilke mønsteret dannet historisk status. historisk statistikk, se diagrammønster for detaljer id. Autochartis mønster ID-instrument. instrument navn type. type mønster, enten chartpattern eller keylevel data: pris. pris for dette nøkkelenivå patternendtime. unix tidsstempel for sluttidspunktet for dette mønsterpunktet: keytime. opptil 10 nøkkel unix tidsstemmer for dette mønsteret 1. I dette eksemplet er 4 nøkkelfristinger tilgjengelig forutsigelsesinformasjon, kun tilstede hvis mønsteret er fullført timefrom. tidligste unix tidsstempel (venstre side) av prediksjonsprisboksen timeto. siste unix tidsstempel (høyre side) av prediksjonsprisboksen tidslinjer. antall stearinlys for å slå prediksjonspris etter mønster er anerkjent pricehigh. øvre side av prognosen pris boks pricelow. nedsiden av prediksjon prisen boksen Response Key LevelOANDA 1080108910871086108311001079109110771090 10921072108110831099 cookie, 10951090108610731099 1089107610771083107210901100 1085107210961080 10891072108110901099 10871088108610891090109910841080 1074 1080108910871086108311001079108610741072108510801080 1080 108510721089109010881086108010901100 10801093 10891086107510831072108910851086 108710861090108810771073108510861089109011031084 10851072109610801093 10871086108910771090108010901077108310771081. 10601072108110831099 cookie 10851077 10841086107510911090 1073109910901100 108010891087108610831100107910861074107210851099 107610831103 109110891090107210851086107410831077108510801103 10741072109610771081 10831080109510851086108910901080. 1055108610891077109710721103 108510721096 1089107210811090, 10741099 108910861075108310721096107210771090107710891100 1089 10801089108710861083110010791086107410721085108010771084 OANDA8217 109210721081108310861074 cookie 1074 10891086108610901074 1077109010891090107410801080 1089 10851072109610771081 105510861083108010901080108210861081 108210861085109210801076107710851094108010721083110010851086108910901080. 1048108510891090108810911082109410801080 10871086 107310831086108210801088108610741072108510801102 1080 10911076107210831077108510801102 109210721081108310861074 cookie, 1072 10901072108210781077 1091108710881072107410831077108510801102 108010841080 108710881080107410771076107710851099 10851072 10891072108110901077 aboutcookies. org. 1042 108910831091109510721077 10861075108810721085108010951077108510801103 1080108910871086108311001079108610741072108510801103 109210721081108310861074 cookie 108610871088107710761077108310771085108510991077 1092109110851082109410801080 108510721096107710751086 10891072108110901072 10731091107610911090 1085107710761086108910901091108710851099. 104710721075108810911079108010901100 108410861073108010831100108510991077 1087108810801083108610781077108510801103 1042109310861076 1042109910731088107210901100 1089109510771090 ampltiframe src4489469.fls. doubleclickactivityisrc4489469typenewsi0catoanda0u1fxtradeiddclatdcrdidtagforchilddirectedtreatmentord1num1 mcesrc4489469.fls. doubleclickactivityisrc4489469typenewsi0catoanda0u1fxtradeiddclatdcrdidtagforchilddirectedtreatmentord1num1 bredde1 høyde1 frameborder0 styledisplay: ingen mcestyledisplay: noneampgtampltiframeampgt 1055108610871088108610731091108110901077 1085107210961080 1087108810801079108510721085108510991077 109010861088107510861074109 91077 108710831072109010921086108810841099 10481089108210831102109510801090107710831100108510861077 1080108910871086108310851077108510801077 104110991089109010881086 1080 1085107210761077107810851086. 104210891077 10861087107710881072109410801080 1089 10741072108311021090107210841080 108710861083108510861089109011001102 1072107410901086108410721090108010791080108810861074107210851099. 106910901086 107910851072109510801090, 109510901086 1074107210961080 108910761077108310821080 10801089108710861083108511031102109010891103 107310771079 107410891103108210801093 108710861089108310771076108510801093 1087108810861089108410861090108810861074, 1086109010821072107910861074 1080 1087107710881077108210861090108010881086107410861082. 1055108810861079108810721095108510861077 109410771085108610861073108810721079108610741072108510801077 1053108010821072108210801093 10821086108410801089108910801081 10861090 108910761077108310861082 1089 10741072108311021090107210841080 1080 108210861085109010881072108 21090107210841080 10851072 1088107210791085108010941091 1080 1085108010821072108210801093 10841080108510801084107210831100108510991093 107610771087108610791080109010861074. 105510881080 1101109010861084 10741099 108710861083109110951072107710901077 1087108810861079108810721095108510911102 108410861076107710831100 109410771085108610861073108810721079108610741072108510801103 1080 107410991089108610821086108210861085108210911088107710851090108510991077 108910871088107710761099. 1060109110851082109410801080 1080 10801085108910901088109110841077108510901099 1087108610891090108810861077108510801103 10881072108910961080108810771085108510991093 10751088107210921080108210861074 10421086108910871086108311001079109110811090107710891100 10801085108510861074107210941080108610851085109910841080 1080108510891090108810911084107710851090107210841080, 1074108210831102109510721103 1087108610891090108810861077108510801077 10881072108910961080108810771085108510991093 10751088107210921080108210861074, 10721 0741090108610841072109010801079108010881086107410721085108510991081 10901077109310851080109510771089108210801081 107210851072108310801079, 10821086108410841077108510901072108810801080 1086 108910861089109010861103108510801080 108810991085108210861074 1080 10851072108910901088108610771085108011031093 109010881077108110761077108810861074. 10481089108210831102109510801090107710831100108510861077 1080108910871086108310851077108510801077 1055108810861079108810721095108510861077 109410771085108610861073108810721079108610741072108510801077 1060109110851082109410801080 1080 10801085108910901088109110841077108510901099 1087108610891090108810861077108510801103 10881072108910961080108810771085108510991093 10751088107210921080108210861074 105710821080107610821080 10871086 108610731098107710841091 1053108010821072108210801093 10841080108510801084107210831100108510991093 1086107310981077108410861074 108910761077108310821080 1053108010821072108210801093 10841080108510801084107210831100108510991093 10 7610771087108610791080109010861074 10501088109110751083108610891091109010861095108510721103 108710861076107610771088107810821072 6 1076108510771081 1074 108510771076107710831102 10581054105610431054104210401071 105510511040105810601054105610521040 104410511071 1053104010571058105410511068105310671061 10501054105210551068107010581045105610541042 105210861097108510991077 10801085108910901088109110841077108510901099 1087108610891090108810861077108510801103 10881072108910961080108810771085108510991093 10751088107210921080108210861074. 1055108810861089109010721103 1074 10871086108311001079108610741072108510801080, 1085107210891090108810721080107410721077108410721103 108710831072109010921086108810841072. 10581054105610431054104210401071 105510511040105810601054105610521040 104410511071 105210541041104810511068105310671061 105910571058105610541049105710581042 1041108610751072109010991081 10851072107310861088 108010851089109010881091108410771085109010861074 108710861089109010881086107710851080 1103 10751088107210921080108210861074 1080 109010771093108510801095107710891082108610751086 1072108510721083108010791072. 105510861089108310771076108510801077 1085108610741086108910901080 1080 Push-10911074107710761086108410831077108510801103 Meta 4 104010741090108610841072109010801079108010881086107410721085108510721103 10901086108810751086107410831103 1080 10871086108310851086109410771085108510721103 108710861076107610771088107810821072 EA. 1053107210891090108810721080107410721077108410991077 1080108510761080108210721090108610881099 1080 10901086108810751086107410831103 10851072 108610891085108610741077 10751088107210921080108210861074 1053104010631053104810581045 10581054105610431054104210511070 10541090108210881086108110901077 1076107710841086-1089109510771090. 106910901086 1087108610841086107810771090 107410721084 10881072107910881072107310861090107210901100 10901086108810751086107410911102 108910901088107210901077107510801102. 10541090108210881086108110901077 10881077107210831100108510991081 1089109510771090 109110781077 108910771081109510721089, 1080 10741099 1089108410861078107710901077 109010861088107510861074107210901100 10951077108810771079 108510771089108210861083110010821086 10841080108510911090. 105910731099109010821080 10841086107510911090 108710881077107410991089108010901100 1080108510741077108910901080109410801080. 1048105310531054104210401062104810541053105310671045 10481053105710581056105910521045105310581067 1055108610871088108610731091108110901077 108510721096 1073108610751072109010991081 10851072107310861088 1080108510851086107410721094108010861085108510991093 1072108510721083108010901080109510771089108210801093 108010851089109010881091108410771085109010861074 1080 1087108810801083108610781077108510801081: 110 110 901 086 10 871 08610841086107810771090 107410721084 10871088108610751085108610791080108810861074107210901100 10761074108010781077108510801077 108210881080107410861081 108710881080 108610871077108810721094108011031093 1089 10741072108311021090107210841080 1080 10821086108510901088107210821090107210841080 10851072 1088107210791085108010941091. 10501053104810431040 104710401071104210541050 105410791085107210821086108411001090107710891100 1089 1076107210851085109910841080 1086 10851072108910901088108610771085108011031093 10881099108510821072 1074 108810771078108010841077 108810771072108311001085108610751086 1074108810771084107710851080 1080 1087108610891084108610901088108010901077, 109510771084 108910771081109510721089 1090108610881075109111021090 1085107210961080 1082108310801077108510901099. Week Ahead Jobs og Fedspeak til guide Dollar Rask, enkel amp på farten . OANDAs mobilkorthandel har alt avanserte handelsfolk trenger i en enkelt visning. t. co3yH9venuZPForex Trading Dagbok 1 - Automatisert Forex Trading med OANDA API Jeg har tidligere nevnt i QuantStart: 2014 I Review-artikkelen at jeg skulle tilbringe noen av 2015 som skriver om automatisert forex trading. Gitt at jeg selv vanligvis utfører forskning i aksjer og futures markeder, syntes jeg det ville være morsomt (og pedagogisk) å skrive om mine erfaringer med å gå inn i valutamarkedet i stil med en dagbok. Hver dagbokspost vil forsøke å bygge på alle de tidligere, men bør også være relativt selvstendig. I denne første oppføringen i dagboken beskriver jeg hvordan du oppretter en ny praksismeglingskonto med OANDA, samt hvordan du lager en grunnleggende multithreaded hendelsesdrevet handelsmotor som automatisk kan utføre handler både i praksis og i liveinnstilling. I fjor brukte vi mye tid på å se på hendelsesdrevet backtester. primært for aksjer og ETFer. Den jeg presenterer nedenfor, er rettet mot forex, og kan brukes til enten papirhandel eller live trading. Jeg har skrevet alle de følgende instruksjonene 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 HTTP-kommunikasjon til OANDA API. Siden dette er det første innlegget direkte om valutahandel, og koden som presenteres under, kan rett og slett tilpasses et levende handelsmiljø, vil jeg gjerne presentere følgende ansvarsfraskrivelser: Ansvarsfraskrivelse: Utveksling av valuta på margin 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 innflytelsen kan virke mot deg så vel 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 noen eller hele din opprinnelige investering, og derfor bør du ikke investere penger som du ikke har råd til å tape. Du bør være oppmerksom på alle risikoene forbundet med valutahandel, og søk råd fra en uavhengig finansiell rådgiver hvis du er i tvil. Denne programvaren er gitt som det er og eventuelle uttrykte eller underforståtte garantier, inkludert, men ikke begrenset til, de underforståtte garantiene for salgbarhet og egnethet for et bestemt formål, blir fraskrevet. Regentene eller bidragsyterne skal under ingen omstendigheter holdes 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 driftsavbrudd ) imidlertid forårsaket og på noen teorier om ansvar, enten i kontrakt, strenge ansvar eller skade (herunder uaktsomhet eller på annen måte) som oppstår i noen ut av bruken av denne programvaren, selv om det er informert om muligheten for slik skade. 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 utviklerens API-dokumentasjon. Jeg bestemte meg for å prøve dem, i hvert fall 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 å 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å er Id glad for å gi dem en titt også. Før du bruker APIen, er det nødvendig å registrere deg for en brukerkonto. For å gjøre dette, gå til registreringslinken. Du vil se følgende skjermbilde: Du vil da kunne logge inn med påloggingsinformasjonen din. Sørg for å velge fanen fxTradePractice fra påloggingsskjermen: En gang i må du notere konto-IDen din. Den er oppført under den svarte Min fonds 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 klikker du på Administrer API-tilgang under fanen Andre handlinger nederst til venstre: På dette stadiet vil du kunne generere en API-token. Du trenger nøkkelen til bruk senere, så sørg for å skrive den ned også. Du vil nå starte FXTrade Practice-programmet, som gjør det mulig for oss å se de utførte ordrene og vår (papir) fortjenesteforlengelse. 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, vil treningssimulatoren ikke lastes fra nettleseren. Jeg kjørte disse kommandoene på systemet mitt: Du vil nå kunne starte praksishandelsmiljø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 lastes. Mine misligholdte til et 15 min lysesteg over EURUSD med sitatpanelet til venstre: På dette tidspunktet er vi klare til å begynne å designe og koda vårt automatiserte forex trading system mot OANDA API. Oversikt over handelsarkitektur Hvis du har fulgt hendelsesdrevet backtester-serien for aksjer og ETFer som jeg opprettet i fjor, vil du være oppmerksom på hvordan et slikt hendelsesdrevet handelssystem fungerer. For de av dere som er nye til hendelsesdrevet programvare. Jeg vil sterkt anbefale å lese gjennom artikkelen for å få innblikk i hvordan de fungerer. I hovedsak utføres hele programmet 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 stadig bedt om å se etter nye hendelser. Når en hendelse er tatt av toppen av køen, må den håndteres av en passende komponent av programmet. Derfor kan en markedsdatainngang skape TickEvent s som er plassert på køen når en ny markedspris kommer. Et signalgenererende strategibjekt kan opprette OrderEvent s som skal sendes til en megling. Nytten av et slikt system er gitt av det faktum at det ikke spiller noen rolle hvilken rekkefølge eller typer hendelser som er plassert på køen, da de alltid vil håndteres riktig av den rette komponenten i programmet. I tillegg kan ulike deler av programmet kjøres i separate tråder. noe som betyr at det aldri er noen som venter på noen bestemt komponent før de behandler andre. Dette er ekstremt nyttig i algoritmiske handelssituasjoner der markedsdataforhandlere og strategisignalgeneratorer har svært forskjellige ytelsesegenskaper. Den viktigste handelsløkken er gitt av følgende Python pseudokode: Som vi nevnte ovenfor kjører koden i en uendelig sløyfe. For det første 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 utførelsesbehandleren) pålagt 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. budskap) over tilkoblingen for alle instrumenter som var interessert i. Strategy 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 ordrehendelser og utfører dem blindt ut med OANDA. Hendelser - Disse objektene utgjør meldingene som sendes rundt på hendelseskøen. Vi krever bare to for denne implementeringen, nemlig TickEvent og OrderEvent. Hovedinngangspunkt - Hovedinngangspunktet inkluderer også handelsløkken som kontinuerlig avstemmer meldingskøen og sender meldinger til riktig komponent. Dette kalles ofte hendelsesløkken eller hendelseshåndtereren. Vi vil nå diskutere implementeringen av koden i detalj. Nederst i artikkelen er hele listen over alle kildekodefiler. Hvis du plasserer dem i samme katalog og kjører python trading. py, begynner du å generere bestillinger, forutsatt at du har fylt ut kontonavn og godkjennings token fra OANDA. Python-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. I et produksjonssystem vil vi lagre disse legitimasjonene som miljøvariabler med systemet, og deretter spørre disse envvars hver gang koden omfordeles. Dette sikrer at passord og autofiler ikke 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, vil vi i stedet skille disse autentegnene i en innstillingsfil. I den følgende settings. py konfigurasjonsfilen har vi en ordbok som heter MILJØER som lagrer API-sluttpunktene for både OANDA-prisavspillings-API og trading API. Hver delordbok inneholder tre separate API-endepunkter: ekte. praksis og sandkasse. Sandbox API er rent for testing kode og for å sjekke at det ikke er noen feil eller feil. Det har ikke oppetidsgarantier for de virkelige eller praktiske APIer. Practice API, i hovedsak, gir muligheten til papirhandel. Det vil si at den gir alle funksjonene i den virkelige API-en på en simulert praksiskonto. Den virkelige API er bare det - det er live trading Hvis du bruker det endepunktet i koden din, vil det handle mot din livekontosaldo. VIKTIG FORSIKTIG VIKTIG: Når du handler mot praksis-API, husk at en viktig transaksjonskostnad, det som påvirker markedet. er ikke vurdert. Siden ingen bransjer faktisk plasseres i miljøet, må denne kostnaden på annen måte utgis andre steder ved hjelp av en markedsvirkningsmodell hvis du ønsker å realistisk vurdere ytelsen. I det følgende bruker vi brukskonto som gitt av DOMAIN-innstillingen. Vi trenger to separate ordbøker for domenene, en hver for streaming og trading API-komponentene. Til slutt har vi ACCESSTOKEN og ACCOUNTID. Ive fylte de to med dummy-IDer, slik at 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. Den første lagrer informasjon om instrumentmarkedsdata som (beste) budskapet og handelstiden. Den andre brukes til å overføre ordrer til utførelseshandleren og inneholder dermed instrumentet, antall enheter som skal handles, ordretypen (marked eller grense) og siden (dvs. kjøp og salg). For fremtidssikker vår begivenhetskode skal vi lage en baseklasse som heter Event og har alle hendelser arvet fra dette. Koden er oppgitt nedenfor i events. py: Den neste klassen vi skal lage vil håndtere handelsstrategien. I denne demonstrasjonen skal vi lage en ganske nonsensisk strategi som bare mottar alle markedsklikkene, og på hvert 5. kryss kjøper eller selger 10.000 enheter EURUSD. Klart dette er en latterlig strategi. Det er imidlertid fantastisk for testing, fordi det er greit å kode og forstå. I fremtidige dagbokoppføringer erstatter vi dette med noe betydelig mer spennende som vil (forhåpentligvis) få et overskudd Strategispy-filen finner du nedenfor. La oss jobbe gjennom det og se hva som foregår. For det første importerer vi det tilfeldige biblioteket og OrderEvent-objektet fra events. py. Vi trenger tilfeldig lib for å velge en tilfeldig kjøp eller salgsordre. Vi trenger OrderEvent, da dette er hvordan strategibjektet sender ordrer til hendelseskøen, som senere blir utført av eksekveringshandleren. Klassen TestRandomStrategy tar bare instrumentet (i dette tilfellet EURUSD), antall enheter og hendelsene kø som et sett med parametere. Det skaper da en ticks counter som brukes til å fortelle hvor mange TickEvent-forekomster det har sett. Det meste av arbeidet skjer i beregningsignalmetoden, som bare tar en hendelse, bestemmer om det er en TickEvent (ellers ignorer) og øker telleren. Den sjekker deretter for å se om tellingen er delbar med 5 og deretter 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åre OANDA-brokerage-API-testformål. Den neste komponenten er eksekveringshandleren. Denne klassen har til oppgave å handle på OrderEvent-forekomster og gjøre forespørsler til megleren (i dette tilfellet OANDA) på dum måte. Det vil si at det ikke er noen risikostyring eller overbygning av potetkonstruksjon. Utførelseshandleren vil bare utføre enhver ordre som den har blitt gitt. Vi må sende all autentiseringsinformasjon til utførelsesklassen, inkludert domenet (praksis, ekte eller sandkasse), tilgangstoken og konto-ID. Vi oppretter så en sikker forbindelse med httplib. en av Pythons bygget i biblioteker. Det meste av arbeidet skjer i henrettelsesordre. Metoden krever en hendelse som en parameter. Den konstruerer deretter to ordbøker - topptekstene og parametrene. Disse ordbøkene vil da bli riktig kodet (delvis av urllib. Et annet Python-bibliotek) som skal sendes som en HTTP 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 (EURUSD), enheter, ordre og side (buysell). Til slutt legger vi forespørselen og lagrer svaret: Den mest komplekse delen av handelssystemet er StreamingForexPrices-objektet, som håndterer markedsprisoppdateringene fra OANDA. Det er to metoder: connecttostream og streamtoqueue. Den første metoden bruker Python-forespørselsbiblioteket til å koble til en streaming-kontakt med de aktuelle overskriftene og parameterne. Parametrene inkluderer konto-ID og nødvendig instrumentliste som skal lyttes til oppdateringer (i dette tilfellet er det bare EURUSD). Merk følgende linje: Dette forteller at forbindelsen skal streames og dermed holdes åpen på en langsom måte. Den andre metoden, streamtoqueue. faktisk prøver å koble til strømmen. Hvis svaret ikke lykkes (det vil si at svarkoden ikke er HTTP 200), returnerer og returnerer du bare. Hvis det lykkes, prøver vi å laste JSON-pakken tilbake til en Python-ordbok. Endelig konverterer vi Python-ordboken med instrumentet, budskapet og tidsstempelet til 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 trading. py. er å 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 kodenheter, som begge løper kontinuerlig. Hvis vi skulle lage et ikke-threaded-program, så vil strømuttaket som brukes til prisoppdateringene aldri slippe tilbake til hovedkoden, og derfor ville vi aldri faktisk utføre noen handel. Tilsvarende, hvis vi kjørte handelsløkken (se nedenfor), ville vi aldri faktisk returnere strømningsbanen til prisstrømkontakten. 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 hendelsekøen. La oss undersøke dette litt videre. Vi lager to separate tråder med følgende linjer: Vi overfører funksjonen eller metodenavnet til målordningsargumentet og sender deretter en iterbar (for eksempel en liste eller tuple) til args-søkeordargumentet, som deretter overfører disse argumentene til den faktiske metodefunksjonen . Til slutt begynner vi begge trådene med følgende linjer: Dermed er vi i stand til å kjøre to, effektivt uendelige looping, kodesegmenter uavhengig, som begge kommuniserer gjennom hendelseskøen. Vær oppmerksom på at Python-tråderbiblioteket ikke produserer et ekte multi-core multithreaded miljø på grunn av CPython-implementeringen av Python og Global Interpreter Lock (GIL). Hvis du vil lese mer om multithreading på Python, kan du se på denne artikkelen. Lar oss undersøke resten av koden i detalj. For det første importerer vi alle nødvendige biblioteker, inkludert kø. threading 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. Deretter definerer vi handelsfunksjonen, som ble forklart i Python-pseudokoden ovenfor. En uendelig stundsløyfe utføres (mens True:) som kontinuerlig avstemmer fra hendelseskø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 kalles den aktuelle komponenten for å utføre den. I dette tilfellet er det enten en strategi eller eksekveringshåndterer. Sløyfen sover ganske enkelt for hjerterytme sekunder (i dette tilfellet 0,5 sekunder) og fortsetter. Endelig definerer vi hovedinngangen for koden i hovedfunksjonen. Det er godt kommentert nedenfor, men jeg vil oppsummere her. I hovedsak ordner vi arrangementskøen og definerer instrumentenheter. Vi lager deretter StreamingForexPrices prisstrømningsklassen og deretter Implementeringshåndteringshåndteringen. Begge mottar de nødvendige godkjenningsdetaljer som er gitt av OANDA når du oppretter en konto. Vi lager deretter TestRandomStrategy-forekomsten. 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 prosess. via Ctrl-Z eller tilsvarende Ive ikke lagt til en ekstra tråd for å håndtere å lete etter sys. exit () som ville være nødvendig for å stoppe koden trygt. En potensiell måte å stoppe koden på en UbuntuLinux-maskin til, er å skrive: Og send deretter utgangen av dette (et prosessnummer) til følgende: Hvor PROCESSID må byttes ut med utgangen fra pgrep. Vær oppmerksom på at dette ikke er spesielt god praksis I senere artikler vil vi skape en mer sofistikert stopstart-mekanisme som benytter Ubuntus-prosessovervåking for å få handelssystemet til å kjøre 247. Utgangen etter 30 sekunder eller så, avhengig av tidspunktet for dag i forhold til de viktigste handelstimene for EURUSD, for ovennevnte kode, er gitt nedenfor: De fem første linjene viser JSON-tikkdata returnert fra OANDA med budpris. Deretter kan du se utførelsesordreutgangen, samt JSON-responsen returnert fra OANDA, som bekrefter åpningen av en kjøpshandel for 10.000 enheter av EURUSD og prisen den ble oppnådd på. Dette vil fortsette å løpe på ubestemt tid til du dreper programmet med en Ctrl-Z-kommando eller lignende. Hva er neste I senere artikler skal vi utføre noen trengte forbedringer, inkludert: Virkelige strategier - Riktig forexstrategier som gir lønnsomme signaler. Produksjonsinfrastruktur - Implementering av ekstern server og 247 overvåket handelssystem, med stoppstartskapasitet. Portefølje og risikostyring - Portefølje og risiko overlegg for alle foreslåtte ordrer fra strategien. Flere strategier - Konstruere en portefølje av strategier som integreres i risikostyringsoverlegget. Som med aksjedrevet drevet backtester, må vi også opprette en forex backtesting-modul. Det vil la oss utføre rask forskning og gjøre det lettere å distribuere strategier. settings. py (husk å endre ACCOUNTID og ACCESSTOKEN): Bare Komme i gang med Kvantitativ TradingOANDA 1080108910871086108311001079109110771090 10921072108110831099 cookie, 10951090108610731099 1089107610771083107210901100 1085107210961080 10891072108110901099 10871088108610891090109910841080 1074 1080108910871086108311001079108610741072108510801080 1080 108510721089109010881086108010901100 10801093 10891086107510831072108910851086 108710861090108810771073108510861089109011031084 10851072109610801093 10871086108910771090108010901077108310771081. 10601072108110831099 cookie 10851077 10841086107510911090 1073109910901100 108010891087108610831100107910861074107210851099 107610831103 109110891090107210851086107410831077108510801103 10741072109610771081 10831080109510851086108910901080. 1055108610891077109710721103 108510721096 1089107210811090, 10741099 108910861075108310721096107210771090107710891100 1089 10801089108710861083110010791086107410721085108010771084 OANDA8217 1092107 21081108310861074 cookie 1074 108910861086109010741077109010891090107410801080 1089 10851072109610771081 105510861083108010901080108210861081 108210861085109210801076107710851094108010721083110010851086108910901080. 1048108510891090108810911082109410801080 10871086 107310831086108210801088108610741072108510801102 1080 10911076107210831077108510801102 109210721081108310861074 cookie, 1072 10901072108210781077 1091108710881072107410831077108510801102 108010841080 108710881080107410771076107710851099 10851072 10891072108110901077 aboutcookies. org. 1042 108910831091109510721077 10861075108810721085108010951077108510801103 1080108910871086108311001079108610741072108510801103 109210721081108310861074 cookie 108610871088107710761077108310771085108510991077 1092109110851082109410801080 108510721096107710751086 10891072108110901072 10731091107610911090 1085107710761086108910901091108710851099. 104710721075108810911079108010901100 108410861073108010831100108510991077 1087108810801083108610781077108510801103 1042109310861076 1042109910731088107210901100 1089109510771090 ampltiframe src4489469.fls. doubleclickactivityisrc4489469typenewsi0catoanda0u1fxtradeiddclatdcrdidtagforchilddirectedtreatmentord1num1 mcesrc4489469.fls. doubleclickactivityisrc4489469typenewsi0catoanda0u1fxtradeiddclatdcrdidtagforchilddirectedtreatmentord1num1 bredde1 høyde1 frameborder0 styledisplay: ingen mcestyledisplay: noneampgtampltiframeampgt 10571054104710441040104910581045 104010421058105410521040105810481047104810561054104210401053105310671045 10581054105610431054 104210671045 105010401050 105710581056104010581045104310481048 105310401057105810561054104810581068 API 105310721089109010881086108110901077 API OANDA 1074 109010881080 1096107210751072: 10541090108210881086108110901077 10881077107210831100108510991081 10901086108810751086107410991081 1089109510771090 108010831080 1076107710841086-1089109510771090. 104710721087108810861089108010901077 107410721096 1082108311021095 107610831103 API. 104010511043105410561048105810521048106310451057105010401071 10581054105610431054104210511071 10541088107510721085108010791091108110901077 10871086109010861082 107610721085108510991093 1086 108210911088108910721093 1074 108810771078108010841077 108810771072108311001085108610751086 1074108810771084107710851080, 1089108610741077108810961072108110901077 10901086108810751086107410991077 10761077108110891090107410801103, 10851072108710881080108410771088 1088107210791084107710971072108110901077 10881099108510861095108510991077 1080 10831080108410801090108010881086107410721085108510991077 1087108810801082107210791099, 10871086108310911095108010901077 107610861089109010911087 1082 107410721096107710841091 10891095107710901091 OANDA 1080 1094107710851086107410861081 1080108910901086108810801080. 10511045104310501054 10481053105810451043105610481056105910491058104510571068 1042 1057104810571058104510521059 105110771075108210801077 1074 10871086108311001079108610741072108510801080 1080 1080108510 9010771075108810801088108610741072108510801080. 105610721079108810721073108610901072108110901077 10801085107610801074108010761091107210831100108510991077 1080108510901077108810921077108110891099 108710861083110010791086107410721090107710831103 108010831080 10891086107910761072108110901077 10891086107310891090107410771085108510991077 10901086108810751086107410991077 108410861076107710831080. 10541041106410481056105310671045 1056104510571059105610571067 104410511071 1056104010471056104010411054105810631048105010541042 105310721096 108710861088109010721083 108810721079108810721073108610901095108010821072 1087108610841086107810771090 107410721084 108510721095107210901100 108810721073108610901091. 1042 10741072109610771084 108810721089108710861088110310781077108510801080 10861073109610801088108510991077 1088107710891091108810891099, 1087108810801084107710881099 10821086107610861074 1080 107610861082109110841077108510901072109410801103. 1053104010631053104810581045 10581054105610431054104210 511070 10541090108210881086108110901077 1076107710841086-1089109510771090. 106910901086 1087108610841086107810771090 107410721084 10881072107910881072107310861090107210901100 10901086108810751086107410911102 108910901088107210901077107510801102. 10541090108210881086108110901077 10881077107210831100108510991081 1089109510771090 109110781077 108910771081109510721089, 1080 10741099 1089108410861078107710901077 109010861088107510861074107210901100 10951077108810771079 108510771089108210861083110010821086 10841080108510911090. 105910731099109010821080 10841086107510911090 108710881077107410991089108010901100 1080108510741077108910901080109410801080. 1057104810571058104510521040 105410411052104510531040 10481053106010541056105210401062104810451049 10551054 1057104410451051105010401052 FIX 104410831103 1076108610891090109110871072 1082 10901086108810751086107410861081 108710831072109010921086108810841077 OANDA 1092108010851072108510891086107410991077 10861088107510721085108010791072109410801080 10841086107510911090 108010891087108610831100107910861074107210901100 10 79107210961080109210881086107410721085108510991081 10821072108510721083 108610731084107710851072 1092108010851072108510891086107410861081 10801085109210861088108410721094108010771081 FIX. OANDA 108710861076107610771088107810801074107210771090 107410771088108910801080 FIX 4.2, 4.3 1080 4.4. 105410901087108810721074110010901077 107910721087108810861089 10851072 107610861089109010911087 10871086 107210761088107710891091 apioanda API REST 10851072 108610891085108610741077 HTTP-108710881086109010861082108610831072 1055108810801082108310721076108510991077 10871088108610751088107210841084108510991077 1080108510901077108810921077108110891099 REST OANDA 10851077 1079107210741080108911031090 10861090 11031079109910821072, 109510901086 108710861079107410861083110310771090 109010881077108110761077108810721084 108010891087108610831100107910861074107210901100 108510911078108510991077 10801084 10871088108610751088107210841084108510991077 11031079109910821080 107610831103 1085107710871086108910881077107610891090107410771085108510861081 1080108510901077107510881072109410801080 1074 10901086108810751086107410991077 1089108010891090107710841099 OANDA 8212 108 210 721 082 10881072108510771077 1088107210791088107210731086109010721085108510991077, 109 010 721 082 1080 107410771088108910801080 20 (v 20). 106910901080 1080108510901077108810921077108110891099 8212 108010761077107210831100108510861077 1088107710961077108510801077 107610831103 10851077107910721074108010891080108410991093 109010881077108110761077108810861074, 1079107210801085109010771088107710891086107410721085108510991093 1074 1072107410901086108410721090108010791072109410801080 10901086108810751086107410991093 108910901088107210901077107510801081. 10531091107810771085 10831080 108410851077 1089109510771090 OANDA, 10951090108610731099 108010891087108610831100107910861074107210901100 API 10441072. 10631090108610731099 1089107510771085107710881080108810861074107210901100 108310801095108510991081 1082108311021095 1076108610891090109110871072 1080 108010891087108610831100107910861074107210901100 API, 107410721084 108510771086107310931086107610801084 10881077107210831100108510991081 108010831080 1076107710841086-1089109510771090 OANDA. 10631090108610731099 1089107510771085107710881080108810861074107210901100 108310801095108510991081 1082108311021095 1076108610891090109110871072, 108710771088107710811076108010901077 10851072 10891090108810721085108010941091 1711059108710881072107410831077108510801077 10761086108910901091108710861084187 107410721096107710751086 10891095107710901072 fxTrade OANDA. 105810721084 10741099 1091107410801076108010901077 108910891099108310821091 1711059108710881072107410831077108510801077 10761086108910901091108710861084 1082 API187 (105210861081 1089109510771090 - gt 105210861080 109110891083109110751080 - gt 1059108710881072107410831077108510801077 10761086108910901091108710861084 1082 API). 1055107710881077108110761103 10871086 1101109010861081 108910891099108310821077, 10741099 108410861078107710901077 1089107510771085107710881080108810861074107210901100 108310801095108510991081 1082108311021095 1076108610891090109110871072 1082 API OANDA, 1072 10901072108210781077 107210851085109110831080108810861074107210901100 1090107710821091109710801081 1082108311021095. 1071 10791072107310991083 1089107410861081 108310801095108510991081 1082108311021095 1076108610891090109110871072. 1052108610751091 10831080 1103 107410861089108910901072108510861074108010901100 107710751086 104210721084 10871088108010761077109010891103 107210851085109110831080108810861074107210901100 1079107210731099109010991081 1082108311021095 1076108610891090109110871072 1080 1089107510771085107710881080108810861074107210901100 10851086107410991081. 105510771088107710811076108010901077 10851072 10891090108810721085108010941091 1711059108710881072107410831077108510801077 10761086108910901091108710861084187 107410 721096107710751086 10891095107710901072 fxTrade OANDA. 105810721084 10741099 1091107410801076108010901077 108910891099108310821091 1711059108710881072107410831077108510801077 10761086108910901091108710861084 1082 API187 (105210861081 1089109510771090 - gt 105210861080 109110891083109110751080 - gt 1059108710881072107410831077108510801077 10761086108910901091108710861084 1082 API). 1055107710881077108110761103 10871086 1101109010861081 108910891099108310821077, 10741099 1089108410861078107710901077 107210851085109110831080108810861074107210901100 1090107710821091109710801081 1082108311021095 1076108610891090109110871072 1082 API OANDA 1080 1089107510771085107710881080108810861074107210901100 10851086107410991081. 104310761077 10841086107810851086 10851072108110901080 1088107710891091108810891099 107610831103 1088107210791088107210731086109010951080108210861074 10501072108210801077 11031079109910821080 1087108810861075108810721084108410801088108610741072108510801103 10741099 1087108610761076107710881078108010741072107710901077 API REST 10851077 1079107210741080108910801090 10861090 11031079109910821072 1087108810861075108810721084108410801088108610741072108510801103. 104410831103 1089108610871088110310781077108510801103 1089 108510721096108010841080 108910801089109010771084107210841080 10741099 108410861078107710901077 108010891087108610831100107910861074107210901 100 10831102107310861081 10801079 108010791074107710891090108510991093 107410721084 110310791099108210861074. 10501088108610841077 1090108610751086, 10851072 1055108610881090107210831077 108810721079108810721073108610901095108010821072 OANDA 10761086108910901091108710851086 108510771089108210861083110010821086 10911087107210821086107410971080108210861074 110310791099108210861074 1087108810861075108810721084108410801088108610741072108510801103, 109510901086 108610731083107710751095107210771090 1087108810861094107710891089. 10521086107810851086 10831080 108010891087108610831100107910861074107210901100 API OANDA 1089 v20 API REST-v20 10841086107810851086 108010891087108610831100107910861074107210901100 10891086 108910951077109010861084 v20. 10541073107710891087107710951080107410721077109010891103 10831080 108710861083108510861077 1096108010921088108610741072108510801077 10741072109610801093 1082108610841084109110851080108210721094108010861085108510991093 1082107210851072108310861074 10441072, 107410891077 1082108610841084109110851080108210721094108010861085108510991077 108210721085107210831099 API 10791072109710801097107710851099 1087108810861090108610821086108310861084 SSL. 104210791080108410721077109010891103 10831080 10821072108210721103-1083108010731086 10871083107210901072 10791072 107610861089109010911087 1082 API 104410861089109010911087 1082 API 108710881077107610861089109010721074108311031077109010891103 107310771089108710831072109010851086 108710881080 1091108910831086107410801080 1085107210831080109510801103 10761086108910901072109010861095108510991093 1089108810771076108910901074 10851072 10901086108810751086107410861084 10891095107710901077 OANDA. 105810881077107310911077109010891103 10831080 1074109910871086108310851077108510801077 108710831072109010921086108810841099 OANDA 107610831103 108810721073108610901099 1089 API 104410831103 1080108910871086108311001079108610741072108510801103 API 10851077 109010881077107310911077109010891103 1079107210871091109710771085108510861081 10901086108810751086107410861081 108710831072109010921086108810841099 OANDA, 1093108610901103 10741099 108410861078107710901077 107410861089108710861083110010791086107410721090110010891103 10771102 107610831103 10841086108510801090108610881080108510751072 10761077108110891090107410801081 API 1074 108810771078108010841077 108810771072108311001085108610751086 1074108810771084107710851080. 105510881080 1079107210871088108610891077 API REST 1087108611031074108311031077109010891103 108610961080107310821072 HTTP 429. 106310901086 110110901086 107910851072109510801090 104210721084 1085107710861073109310861076108010841086 10721085108510911083108010881086107410721090 1100 1090107710821091109710801081 1082108311021095 1076108610891090109110871072 1080 1089107510771085107710881080108810861074107210901100 10851086107410991081. 105510771088107710811076108010901077 10851072 10891090108810721085108010941091 1711059108710881072107410831077108510801077 10761086108910901091108710861084187 107410721096107710751086 10891095107710901072 fxTrade OANDA. 105810721084 10741099 1091107410801076108010901077 108910891099108310821091 1711059108710881072107410831077108510801077 10761086108910901091108710861084 1082 API187 (105210861081 1089109510771090 - gt 105210861080 109110891083109110751080 - gt 1059108710881072107410831077108510801077 10761086108910901091108710861084 1082 API). 1055107710881077108110761103 10871086 1101109010861081 108910891099108310821077, 10741099 1089108410861078107710901077 107210851085109110831080108810861074107210901100 1090107710821091109710801081 1082108311021095 1076108610891090109110871072 1082 API OANDA 1080 1089107510771085107710881080108810861074107210901100 10851086107410991081. 10481089108710861083110010791091108110901077 10851086107410991081 1082108311021095 1076108610891090109110871072 107610831103 10791072108710881086108910861074 API. 1071 108010891087108610831100107910911102 API REST v1, 10851086 10861085 10851077 10881072107310861090107210771090 1089 1084108610801084 108910951077109010861084. 106310901086 107610771083107210901100 1045108910831080 1091 107410721089 108610901082108810991090 1089109510771090 v20 (108010891087108610831100107910911102109710801081 17110951077108810901086109510821080187 1074 10801076107710851090108010921080108210721090108610881077 10891095107710901072, 10851072108710881080108410771088 101-23423-105), 1085107710861073109310861076108010841086 108010891087108610831100107910861074107210901100 API v3 (REST v20). 1071 108010891087108610831100107910911102 API REST v20, 10851086 10861085 10851077 10881072107310861090107210771090 1089 1084108610801084 108910951077109010861084. 106310901086 107610771083107210901100 1045108910831080 1091 107410721089 108610901082108810991090 171108910901072108810991081187 1089109510771090 (10851077 1080108410771102109710801081 17110951077108810901086109510771082187 1074 10801076107710851090108010921080108210721090108610881077 10891095107710901072, 10851072108710881080108410771088 252345), 1089108310771076109110771090 108010891087108610831100107910861074107210901100 API v1. 104310761077 10841086107810851086 10851072108110901080 108810771075108010891090108810721094108010861085108510991077 10921086108810841099, 10871088107210741086107410911102 1080 10901086108810751086107410911102 107610861082109110841077108510901072109410801102 OANDA

No comments:

Post a Comment