Forex Api Python


FXCM API Python kääre Kuten luultavasti tiedät, FXCM tarjoaa kaupankäyntiyhteyden omalla liittymälläan nimeltä ForexConnect API. Meille, joilla ei ole oikeutta avata FIX-yhteensopiva tili, ForexConect API on yksi mahdollinen tapa rakentaa ja liittää oma kauppajärjestelmä. Henkilökohtaisesti en pidä mql ja MT4 paljon, jos ollenkaan. Kuitenkin se on edelleen laajin kaupankäyntijärjestelmä tänä päivänä. Sanotaan, että ForexConnect API: n avulla voidaan ohittaa mql ja kirjata kvantteja tai automatisoidut strategiat korkeamman tason kielillä CC, Java Python tai jopa Matlab tai R. Ive on aloittanut ForexConnect API-kääreprojektin, joka mahdollistaa sen Python-moduulina. Paljon on jo tehty, voit tarkistaa täällä 1. Vaikka kokenut C-kehittäjä, Ive valitsi Pythonin laajan matematiikkamääränsä. ja tilastokirjastoja kuten Numpy, Scipy, Pandas jne. Käyttämällä myös sellaista kieltä kuin Python Im pystyy käyttämään nykyaikaista dev. kuten Visual Studio for CC tai suosikkini JetBrains PyCharm for Python dev. Oma aikataulu on, kun sovellusliittymä on täysin toteutettu rakentaakseen konekielisen oppimäärän sen ympärillä. Forex-kaupankäynti OANDA API: n kanssa James Ma Weiming Forex-kaupankäynti OANDA API: n kanssa Edellisissä jaksoissa toteutimme kaupankäyntijärjestelmän liittymällä Interactive Brokers Trader WorkStation X liittimien kautta yhdestä portista. Monet muut välittäjät tarjoavat kuitenkin erilaisia ​​vaihtoehtoja räätälöityjen kaupankäyntiohjelmien liittämiseen API: n kautta. Tässä osiossa opimme käyttämään kaupankäyntistrategiaamme OANDAs REST API: n kanssa. OANDA on merkittävä sijoittaja valuuttamarkkinoilla (forex), joka palvelee yksityisasiakkaita. Käytämme kehityksen mukaista strategiaa forex-tuotteiden kaupalle. Mikä on REST REST tarkoittaa edustavaa valtionsiirtoa. Se viittaa verkkosovellusliittymiin, joilla voidaan siirtää tietoja HTTP: llä GET: n avulla. LAITTAA. LÄHETTÄÄ. tai DELETE-menetelmiä. REST-API: n avulla voimme streamata. Löydä tarkat tiedot, jotka tarvitset ongelman ratkaisemiseksi lennossa tai syventää hallitsemaan tarvittavat teknologiat ja taidot Ei luottokortti vaaditaanLearn Quant taidot Jos olet elinkeinonharjoittaja tai sijoittaja ja haluat hankkia määrällisiä kaupallinen taito, olet oikeassa paikassa. Kaupankäynti Python - kurssi tarjoaa sinulle parhaat työkalut ja käytännöt kvantitatiiviselle kaupankäynnin tutkimukselle, mukaan lukien asiantuntijoiden kvantitatiivisten kauppiaiden kirjoittamat toiminnot ja käsikirjoitukset. Kurssi antaa sinulle mahdollisimman suuren vaikutuksen sijoitettuun aikaan ja rahoihin. Se keskittyy ohjelmoinnin käytännön soveltamiseen kaupankäynnin sijasta teoreettiseen tietojenkäsittelyyn. Kurssi maksaa itsensä nopeasti säästämällä aikaa manuaaliseen tietojen käsittelyyn. Vietät enemmän aikaa strategian tutkimiseen ja kannattavien kauppojen toteuttamiseen. Kurssin yleiskatsaus Osa 1: Perustiedot Opit, miksi Python on ihanteellinen työkalu kvantitatiiviseen kaupankäyntiin. Aloitamme luomalla kehitysympäristön ja esitämme sinut tieteellisille kirjastoille. Osa 2: Tietojen käsitteleminen Lue, miten voit saada tietoja useista ilmaisista lähteistä, kuten Yahoo Finance, CBOE ja muut sivustot. Lue ja kirjoita useita tietomuotoja, kuten CSV - ja Excel-tiedostoja. Osa 3: Tutkimusstrategiat Opi laskemaan PL ja seurantaan liittyvät suorituskykytiedot kuten Sharpe ja Drawdown. Rakenna kaupankäyntistrategia ja optimoi sen tehokkuus. Tässä osassa käsitellään useita esimerkkejä strategioista. Osa 4: Menestyminen Tämä osa keskittyy Interactive Brokers API: n ympärille. Opit, miten saisit reaaliaikaiset tiedot ja sijoitat live-tilauksia. Paljon esimerkkikoodia Kurssimateriaali koostuu muistikirjoista, jotka sisältävät tekstiä ja vuorovaikutteisia koodeja kuten tämä. Voit oppia vuorovaikutuksessa koodin kanssa ja muokata sitä omalla mielelläsi. Se on loistava lähtökohta omien strategioiden kirjoittamiselle. Vaikka jotkin aiheet selitetään yksityiskohtaisesti, jotta ymmärtäisit taustalla olevat käsitteet, useimmissa tapauksissa sinun ei tarvitse edes kirjoittaa omaa alitasoista koodia olemassa olevien avointen - source kirjastot. TradingWithPython-kirjasto yhdistää suuren osan kurssilla käsitellyistä toiminnoista käyttövalmiina toiminnoina ja sitä käytetään koko kurssin ajan. Pandas tarjoaa sinulle kaiken raskasta nostotehoa, jota tarvitaan tietojen riehtamiseen. Kaikki koodi on toimitettu BSD-lisenssin alle ja sen käyttö kaupallisissa sovelluksissa Kurssikurssi Kurssin ohjaaja pidettiin keväällä 2013, joten opiskelijat saivat sanoa: Matej on hyvin suunniteltu kurssi ja hyvä kouluttaja. Ehdottomasti sen arvoinen hinta ja aikani Lave Jev tietenkin tiesi hänen tavaraa. syvyys kattavuus oli täydellinen. Jos Jevillä on vielä jotain tällaista, olen ensimmäinen rekisteröitynyt. John Phillips Kurssisi todella sai minut hypätä alkoi harkita python varastossa järjestelmän analyysi. Forex Trading Diary 1 - Automaattinen Forex Trading OANDA API Olen aiemmin mainittu QuantStart: 2014 In Review artikkeli, että olisin menojen noin 2015 kirjoittaminen noin automatisoitu forex kaupankäynti. Koska itse itse harjoitan tutkimusta osakkeista ja futuurimarkkinoista, ajattelin, että olisi hauskaa (ja kasvatuksellinen) kirjoittaa kokemuksistani valuuttakaupankäynnistä päiväkirjaan. Jokainen päiväkirja-merkintä yrittää rakentaa kaikkiin aiempiin, mutta myös suhteellisen itsenäinen. Tässä päiväkirjaan ensimmäisessä merkinnässä kuvataan, miten uuden käytännön välitystilin luominen OANDA: n kanssa on, sekä kuinka perustaa perustana oleva monisäikeinen tapahtumavetoinen kaupankäyntimoottori, joka pystyy automaattisesti suorittamaan kaupat sekä käytännössä että elävänä. Viime vuonna vietimme paljon aikaa katsomassa tapahtumaketjuista backtesteriä. ensisijaisesti osakkeisiin ja ETF-yhtiöihin. Jälkeen, jonka esitän alla, on suunnattu forexia varten ja sitä voidaan käyttää joko paperin kaupankäynnissä tai kaupankäynnissä. Olen kirjoittanut kaikki seuraavat ohjeet Ubuntu 14.04: lle, mutta niiden pitäisi helposti kääntää Windows - tai Mac OS X - käyttöjärjestelmään käyttäen python-jakelua, kuten Anacondaa. Python-kaupankäynnin moottorissa käytettävä ainoa ylimääräinen kirjasto on pyyntökirjasto, joka on välttämätön HTTP-tiedonsiirtoa varten OANDA API: lle. Koska tämä on ensimmäinen positio, joka koskee suoraan valuutanvaihtoa, ja alla esitetty koodi voidaan yksinkertaisesti sovittaa eläväksi kaupankäyntijärjestelmäksi, haluan esittää seuraavat vastuuvapauslausekkeet: Vastuuvapauslauseke: Kaupankäyntitarkoituksessa valuuttakurssi on korkealla riskillä, ja se ei välttämättä sovellu kaikille sijoittajille. Aiempi tulos ei osoita tulevia tuloksia. Korkea vipuvaikutus voi toimia sekä sinua että sinua kohtaan. Ennen sijoittamista valuuttamarkkinoille kannattaa harkita huolellisesti investointitavoitteita, kokemustasoa ja riskinottohalukkuutta. On mahdollista, että saatat menettää osan tai koko alkuperäisen sijoituksenne, joten sinun ei pitäisi sijoittaa rahaa, jolla ei ole varaa menettää. Sinun tulisi olla tietoinen kaikista valuuttakaupankäyntiin liittyvistä riskeistä ja kysyä neuvoa itsenäiseltä talousneuvojalta, jos sinulla on epäilyksiä. Tämä ohjelmisto tarjotaan sellaisenaan ja kaikki ilmaistut tai epäsuorat takuut, mukaan lukien, mutta ei niihin rajoittuen, epäsuorat takuut kaupasta ja soveltuvuudesta tiettyyn tarkoitukseen hylätään. Hallinnoijat tai avustajat eivät missään tapauksessa ole vastuussa välittömistä, epäsuorista, satunnaisista, erityisistä, esimerkillisistä tai välillisistä vahingoista (mukaan lukien, mutta ei rajoittuen, korvaavien tavaroiden tai palvelujen hankkimisesta, tietojen tai voiton hankkimisesta tai liiketoiminnan keskeytyksestä ), riippumatta siitä, onko tällainen vahinko mahdollinen, riippumatta siitä, onko kyseessä sopimus, ankara vastuu vai rikkomus (mukaan lukien huolimattomuus tai muuten), jotka syntyvät mistä tahansa tämän ohjelmiston käytöstä. Tilin luominen OANDAn kanssa Ensimmäinen kysymys, joka tulee mieleen on Miksi valita OANDA. Yksinkertaisesti sanottuna, kun hieman Googlingiä ympärillä oli forex-välittäjät, joilla oli sovellusliittymät, huomasin, että OANDA oli äskettäin julkaissut oikean REST-sovellusliittymän, joka olisi helppo kommunikoida melkein mistä tahansa kielestä erittäin yksinkertaisella tavalla. Kun olet lukenut kehittäjien API-dokumentaation. Päätin kokeilla niitä, ainakin käytännön tilillä. Ollakseni selvää - minulla ei ole aiempia tai olemassa olevia suhteita OANDA: iin, ja olen vain antanut tämän suosituksen, joka perustuu rajoitettuun kokemuksestani käytäntöön API: n ja jonkin verran lyhyen käyttötarkoituksen (markkinoiden tietojen lataamiseen) aikana, kun he työskentelivät rahastoissa aikaisemmin. Jos joku on törmännyt muihin forex-välittäjiin, joilla on myös samanlainen moderni API, niin mielellään anna heille myös ilme. Ennen sovellusliittymän käyttämistä sinun on kirjauduttava käytännön tiliin. Voit tehdä tämän siirtymällä rekisteröintikoodiin. Näet seuraavan näytön: Voit kirjautua sisään kirjautumistunnuksilla. Varmista, että valitset fxTradePractice-välilehden kirjautumisruudulta: Kun olet kirjautunut sisään, sinun on kirjattava tilisi tunnus. Se on lueteltu Musta päävarojen otsikon alle Primaryn vieressä. Kaivos on 7-numeroinen numero. Lisäksi sinun on luotava myös henkilökohtainen API-tunniste. Voit tehdä tämän napsauttamalla Hallinnoi sovellusliittymää vasemmalla olevasta Muut tapahtumat - välilehden alapuolella: Tässä vaiheessa voit luoda API-tunnuksen. Tarvitset avaimen käyttöä myöhemmin, joten muista myös kirjoittaa se. Haluat nyt käynnistää FXTrade Practice - sovelluksen, joka antaa meille mahdollisuuden nähdä toteutetut tilaukset ja (paperin) tulosampullihäviöt. Jos käytät Ubuntu-järjestelmää, sinun on asennettava hieman eri Java-versio. Erityisesti Java 8: n Oracle-versio. Jos et tee tätä, käytännön simulaattori ei lataudu selaimesta. Ohjasin näitä komentoja järjestelmässäni: Nyt voit käynnistää käytännön kaupankäyntiympäristön. Palaa OANDA-hallintapaneeliin ja napsauta vihreää korostettua Launch FXTrade Practice - linkkiä. Se tuo esiin Java-valintaikkunan, jossa kysytään, haluatko käyttää sitä. Napsauta Suorita ja fxTrade käytäntötyökalu ladataan. Mine on maksanut EUR-DD: n 15-minuuttisen kynttiluvun vasemmalla Lainapaneelilla: Tässä vaiheessa olemme valmiit aloittamaan automatisoidun valuuttakauppajärjestelmän suunnittelun ja koodaamisen OANDA API: ta vastaan. Yleiskatsaus kaupankäynnin arkkitehtuuriin Jos olet seurannut tapahtumaketjuista backtester-sarjaa osakkeista ja ETF-rahastoista, jotka luotiin viime vuonna, youll olla tietoinen siitä, miten tällainen tapahtumavetoinen kaupankäyntijärjestelmä toimii. Niille teistä, jotka ovat uusia tapahtumaketjuisille ohjelmistoille. Suosittelisin ehdottomasti artikkelin lukemista, jotta saataisiin käsitys siitä, miten he työskentelevät. Pohjimmiltaan koko ohjelma toteutetaan infinte loopilla, joka päättyy vain, kun kauppajärjestelmä on suljettu. Ohjelman keskeinen viestintämekanismi annetaan jonon kautta, joka sisältää tapahtumia. Jonoa kysytään jatkuvasti uusien tapahtumien tarkastamiseksi. Kun tapahtuma on poistettu jonon yläosasta, se on käsiteltävä ohjelman sopivalla osalla. Tästä syystä markkinatietojen rehu voi luoda TickEvent-s, jotka asetetaan jonolle, kun uusi markkinahinta saapuu. Signaaligeneraattori strategiaobjekti voi luoda OrderEventin, joka lähetetään välitysyritykselle. Tällaisen järjestelmän hyödyllisyyttä on se, että ei ole merkitystä, mitä järjestystä tai tapahtumien tyyppejä sijoitetaan jonossa, koska ne ovat aina oikeassa komponenttina ohjelman sisällä. Lisäksi ohjelman eri osia voidaan käyttää erillisissä säikeissä. mikä tarkoittaa, että mikään muu komponentti ei koskaan odota ennen kuin se jalostaa jotain muuta. Tämä on erittäin hyödyllistä algoritmisessa kaupankäynnissä, jossa markkinatiedon syöttökäsittelijät ja strategisten signaaligeneraattoreiden suorituskyky on huomattavasti erilainen. Tärkein kaupankäyntisilmukka on seuraava Python-pseudokoodi: Kuten yllä mainittiin, koodi toimii äärettömässä silmukassa. Ensinnäkin jonossa kysytään uutta tapahtumaa. Jos jono on tyhjä, silmukka käynnistyy uudelleen vain lyhyen nukkumisajan jälkeen, jota kutsutaan sykkeeksi. Jos tapahtuma löydetään, sen tyyppi arvioidaan ja sitten kyseinen moduuli (joko strategia tai toteutuksen käsittelijä) kutsutaan käsittelemään tapahtumaa ja mahdollisesti luomaan uusia, jotka menevät takaisin jonolle. Peruskomponentit, joita luomme kaupankäyntijärjestelmällemme, ovat seuraavat: Streaming Price Handler - Tämä ylläpitää pitkäaikaista yhteydenottoa OANDA: n palvelimiin ja lähettää linkkitietokanavien (eli bidaskin) kaikkiin laitteisiin, jotka olivat kiinnostuneita. Strategian signaaligeneraattori - Tämä kestää sekvenssitapahtumien tapahtumat ja käyttää niitä kaupankäyntijärjestelyjen luomiseen, jotka toteutuksen suorittaja suorittaa. Execution Handler - Toteutetaan joukko tilaustilaisuuksia ja sitten suorittaa heidät sokeasti OANDA: lla. Tapahtumat - Nämä kohteet muodostavat viestit, jotka kulkevat ympärillä tapahtumajonoa. Tarvitsemme vain kaksi tätä toteutusta varten, nimittäin TickEvent ja OrderEvent. Pääsyötehtävä - Pääsykäyntipiste sisältää myös kaupan silmukan, joka kyselee jatkuvasti sanomajonon ja lähettää viestit oikealle komponentille. Tätä kutsutaan usein tapahtumasilmukaksi tai tapahtuman käsittelijänä. Seuraavaksi keskustellaan yksityiskohtaisesti koodin täytäntöönpanosta. Artikkelin alaosassa on kaikkien lähdekooditiedostojen luettelo. Jos sijoitat ne samaan hakemistoon ja ajetaan python trading. py, aloitat tilausten luomisen, olettaen, että olet täyttänyt OANDA-tilisi tunnus ja todennusmerkki. Python-toteutus On huono käytäntö tallentaa salasanat tai todennusavaimet koodibussiin, koska et voi koskaan ennustaa, kuka lopulta pääsee projektille. Tuotantosysteemissä tallennamme nämä tunnistetiedot ympäristömuuttujina järjestelmän kanssa ja kyselyn nämä envvars aina kun koodia siirretään uudelleen. Tämä varmistaa, että salasanoja ja auth-tunnuksia ei koskaan tallenneta versionhallintajärjestelmään. Koska olemme kuitenkin yksinomaan kiinnostuneita rakentaaksemme lelukauppajärjestelmän, emmekä ole kiinnostuneita tämän artikkelin tuotannosta, erottavat sen sijaan nämä valtetunnisteet asetustiedostoon. Seuraavassa settings. py-määritystiedostossa on sanakirja nimeltä ENVIRONMENTS, joka tallentaa API-päätepisteet sekä OANDA-hinnoittelusovellusliittymälle että kaupankäyntisovellusliittymälle. Jokainen alisanakirja sisältää kolme erillistä API-päätepistettä: todellinen. harjoittelu ja hiekkalaatikko. Hiekkalaatikko-sovellusliittymä on pelkästään testattava koodi ja sen tarkistaminen, ettei virheitä tai vikoja ole. Sillä ei ole todellisia takuita todellisista tai käytännön sovellusrajapinnoista. Practice API tarjoaa pohjimmiltaan mahdollisuuden paperin kauppaan. Toisin sanoen se tarjoaa kaikki todellisen sovelluspiirin ominaisuudet simuloidulla käytännön tilillä. Todellinen sovellusliittymä on vain se - se on kaupankäynti kaupasta Jos käytät tätä päätepistettä koodissasi, se käy kauppaa elävän tilisi saldoa vastaan. Ole erittäin varovainen TÄRKEÄÄ: Kun käytät kaupankäynnin käytäntöä API, muista, että tärkeä liiketoimintalaskelma maksaa markkinoiden vaikutuksen. ei oteta huomioon. Koska mitään kauppoja ei todellisuudessa sijoiteta ympäristöön, kustannukset on laskettava muulla tavoin muualla käyttäen markkinavoimamallia, jos haluat realistisesti arvioida suorituskykyä. Seuraavassa käytämme käytännön tiliä DOMAIN-asetuksessa. Tarvitsemme kahta erillistä sanakirjaa verkkotunnuksille, joista kukin on suoratoisto - ja kaupankäynnin API-komponentteja varten. Lopuksi meillä on ACCESSTOKEN ja ACCOUNTID. Ive täytti kaksi alla olevia tunnisteita, joten sinun on käytettävä omia, joita pääsee OANDA-tilin sivulta: Seuraava vaihe on määritellä tapahtumat, joita jonossa käytetään kaikkien yksittäisten komponenttien kommunikointiin. Tarvitsemme kaksi: TickEvent ja OrderEvent. Ensimmäiset tiedot tallentavat instrumenttimarkkinatiedot, kuten (paras) bidask ja kaupan aika. Toista käytetään tilausten lähettämiseen toteutuksen käsittelijälle, ja näin ollen se sisältää välineen, kaupan yksiköiden lukumäärän, tilaustyypin (markkinat tai rajan) ja puolen (eli ostamaan ja myymään). Tulevaisuuden todistuksemme tapahtumakoodimme aiomme luoda perusluokan nimeltä Event ja kaikki tapahtumat periytyvät tästä. Koodi on annettu alla tapahtumassa. py: Seuraava luokka, jonka aiomme luoda, käsittelee kaupankäynnin strategiaa. Tässä demossa aiomme luoda melko järjetöntä strategiaa, joka yksinkertaisesti vastaanottaa kaikki markkinat punkit ja joka viidennen rasti satunnaisesti ostaa tai myy 10 000 yksikköä EURUSD: ää. On selvää, että tämä on naurettavaa strategiaa. Se on kuitenkin mahtava testaustarkoituksiin, koska se on yksinkertaista koodata ja ymmärtää. Tulevaisuudessa päiväkirja-merkinnät korvaamme tämän jotain huomattavasti jännittävämpää, joka (toivottavasti) saa voiton. Strategy. py-tiedosto löytyy alla. Antaa sen läpi ja nähdä mitä tapahtuu. Ensin tuodaan satunnaiskirjasto ja OrderEvent-kohde tapahtumista. py. Tarvitsemme satunnaisen libin, jotta voimme valita satunnaisen osto - tai myyntitilauksen. Tarvitsemme OrderEventin, koska strategiaobjekti lähettää tilauksia tapahtumajonoon, jonka suorituskäsittelijä suorittaa myöhemmin. TestRandomStrategy luokka vie instrumentin (tässä tapauksessa EURUSD), yksiköiden määrän ja tapahtumien jonon parametrien joukkoon. Sen jälkeen luodaan tikutilaskuri, jolla kerrotaan kuinka monta TickEvent - tapausta se on nähnyt. Suurin osa työstä tapahtuu laskentasignaaleissa, joka yksinkertaisesti ottaa tapahtuman, määrittää onko kyseessä TickEvent (muutoin sivuuttaa) ja lisää tick-laskuria. Se tarkistaa sitten, onko laskenta jaollinen 5: llä ja sitten satunnaisesti ostaa tai myy markkinoiden järjestyksessä määrätyn yksiköiden lukumäärän. Se ei todellakaan ole maailman suurin kaupankäyntistrategia, mutta se soveltuu enemmän OANDA-välitysliittymän testaustarkoituksiin. Seuraava osa on toteutuksen käsittelijä. Tämä luokka on velvollinen toimimaan OrderEvent-tapauksissa ja pyytämällä välittäjää (tässä tapauksessa OANDAa) tyhmästi. Eli ei ole olemassa riskienhallintaa eikä salkun rakentamista. Execution Handler yksinkertaisesti suorittaa minkä tahansa tilauksen, joka on annettu. Meidän on läpäistävä kaikki todennustiedot Execution-luokkaan, mukaan lukien verkkotunnus (käytäntö, reaali tai hiekkalaatikko), pääsyoikeus ja tilin tunnus. Sitten luomme suojatun yhteyden httplib-palveluun. yksi kirjastoihin rakennettu Pythons. Suurin osa työstä tapahtuu executeorder-ohjelmassa. Menetelmä vaatii tapahtuman parametriksi. Sitten se rakentaa kaksi sanakirjaa - otsikot ja params. Nämä sanakirjat koodataan oikein (osittain urllib., Toinen Python-kirjasto), joka lähetetään HTTP POST - pyynnöksi OANDAs API: lle. Siirrämme Content-Type - ja Authorization-otsikkoparametrit, jotka sisältävät meidän todennustiedot. Lisäksi koodataan parametreja, jotka sisältävät instrumentin (EURUSD), yksiköt, tilaustyypin ja puolen (buysell). Lopuksi teemme pyynnön ja tallennetaan vastaus: Kauppajärjestelmän monimutkaisin osa on StreamingForexPrices-objekti, joka hoitaa OANDA: n markkinahintojen päivitykset. On olemassa kaksi tapaa: connecttreamream ja streamtoqueue. Ensimmäinen menetelmä käyttää Python-pyyntökirjastoa yhteyden muodostamiseen streaming-liitäntään sopivilla otsikoilla ja parametreilla. Parametreihin kuuluu tilitunnus ja tarvittava instrumenttiluettelo, jonka pitäisi kuunnella päivityksiä varten (tässä tapauksessa vain EURUSD). Huomaa seuraava rivi: Tämä kertoo yhteyden virrata ja siten pitää auki pitkään. Toinen menetelmä, streamtoqueue. yrittää todella muodostaa yhteyden streamiin. Jos vastaus ei onnistu (eli vastauskoodi ei ole HTTP 200), palaamme ja lopetamme. Jos se onnistuu, yritämme ladata JSON paketin, joka palautetaan Python-sanakirjaan. Lopuksi käännytetään Python-sanakirja instrumentilla, bidaskilla ja aikaleimalla tapahtumajonoon lähetettävään TickEventiin. Meillä on nyt kaikki tärkeimmät komponentit paikallaan. Viimeinen vaihe on päätyä siihen, mitä olemme tähän mennessä kirjoittaneet pääohjelmaan. Tämän tiedoston tavoite, joka tunnetaan nimellä trading. py. on luoda kaksi erillistä säiettä. joista yksi hoitaa hinnoittelun käsittelijän ja toisen, joka hoitaa kaupankäynnin käsittelijää. Miksi tarvitsemme kaksi erillistä ketjua Yksinkertaisesti, suoritamme kaksi erillistä koodikappaletta, jotka molemmat ovat jatkuvasti käynnissä. Jos aiomme luoda ei-kierteitetyn ohjelman, hinnoittelupäivityksiin käytetty streaming-socket ei koskaan koskaan päästä takaisin pääkäytäväpolulle, joten emme koskaan koskaan tee mitään kaupankäyntiä. Vastaavasti, jos suoritimme kaupan silmukan (katso alla), emme koskaan palaisi virtauskanavaa hintaa vastaavan socketin kautta. Siksi tarvitsemme useita kierteitä, yksi jokaiselle komponenttille, jotta ne voidaan suorittaa itsenäisesti. He viestivät toisilleen tapahtumajonosta. Tarkastele tätä vielä vähän. Luomme kaksi erillistä säiettä, joilla on seuraavat rivit: Siirrämme funktion tai menetelmän nimen kohdesana-argumentille ja siirretään sitten iteroitava (kuten luettelo tai tupla) args-avainsana-argumentille, joka sitten siirtää nämä argumentit varsinaiseen toimintatapaan . Lopuksi aloitetaan molemmat kierteet seuraavien rivien kanssa: Näin voimme käyttää kahta, tehokkaasti ääretöntä loopointia, koodisegmenttejä itsenäisesti, jotka molemmat kommunikoivat tapahtumajonon kautta. Huomaa, että Python-ketjunkirjasto ei tuota todellista monisäikeistä monisäikeistä ympäristöä Pythonin ja Global Interpreter Lockin (GIL) CPython-toteutuksen vuoksi. Jos haluat lukea lisää Pythonin monisäikeistiedoista, tutustu tähän artikkeliin. Antaa tarkistaa loput koodista yksityiskohtaisesti. Ensin tuodaan kaikki tarvittavat kirjastot, mukaan lukien jonot. päänvienti ja aika. Tuomme sitten kaikki edellä mainitut kooditiedostot. Haluan henkilökohtaisesti mieluummin hyödyntää kokoonpanoasetuksia, mikä on tapana, jonka otin vastaan ​​työskentelemästä Django-palvelun kanssa. Sen jälkeen määritellään kauppatoiminto, joka selitettiin edellä Python-pseudokoodissa. Lopullinen silmukka suoritetaan (kun taas True:), joka kyselee jatkuvasti tapahtumajonoa ja vain ohittaa silmukan, jos se on tyhjä. Jos tapahtuma löydetään, se on joko TickEvent tai OrderEvent ja sitten sopiva komponentti on kutsuttu suorittamaan se. Tässä tapauksessa se on joko strategia tai toteutuksen käsittelijä. Silmukka sitten yksinkertaisesti nukkuu sydämen lyönti sekuntia (tässä tapauksessa 0,5 sekuntia) ja jatkuu. Lopuksi määritellään koodin päätietopiste päätoiminnossa. Seuraavassa mainitaan hyvin, mutta tiivistän täällä. Pohjimmiltaan instansoimme tapahtumien jonon ja määritimme instrumenttikunnat. Sitten luodaan StreamingForexPrices-hintaluokka ja sen jälkeen Execution-toteutuksen käsittelijä. Molemmat saavat tarvittavat todennustiedot, jotka OANDA antaa tilin luomisen yhteydessä. Sitten luodaan TestRandomStrategy-instanssi. Lopuksi määritellään kaksi ketjua ja käynnistetään sitten ne: Jotta voit suorittaa koodin, sinun tarvitsee vain sijoittaa kaikki tiedostot samaan hakemistoon ja soittaa päätteelle: Huomaa, että lopettaa koodi tässä vaiheessa vaatii Python-prosessi. Ctrl-Z: n tai vastaavan Ctrl-Z: n tai vastaavan kanssa En ole lisännyt uutta säiettä käsittelemään sys. exit () - toimintoa, jota tarvitaan pysäyttämään koodi turvallisesti. Mahdollinen tapa lopettaa koodin UbuntuLinux-koneessa on kirjoittaa: Ja siirrä sitten tämän (prosessinumeron) tuotos seuraavaan: Jos PROCESSID on korvattava pgrepin tuotolla. Huomaa, että tämä ei ole erityisen hyvä käytäntö Seuraavissa artikkeleissa luomme kehittyneempää stopstart-mekanismia, joka käyttää Ubuntus-prosessin valvontaa, jotta kaupankäyntijärjestelmä toimii 247. Tulos 30 sekunnin kuluttua riippuen siitä, päivä suhteessa tärkeimpien EURUSD-kaupankäyntiaikaa varten yllä olevaan koodiin on annettu alla: Ensimmäiset viisi riviä osoittavat, että OANDA: sta palautetut JSON-rastierät ovat bidask-hinnoilla. Seuraavaksi näet Executing order - tulostuksen sekä JSON-vastauksen, joka palautetaan OANDA: sta, vahvistaen 10.000 euron EURUSD-ostokaupan avaamisen ja sen saavutetun hinnan. Tämä pysyy loputtomasti, kunnes ohjelma tapetaan Ctrl-Z-komennolla tai vastaavalla. Whats Next Seuraavissa artikkeleissa aiomme tehdä joitakin tarpeellisia parannuksia, kuten: Real strategiat - asianmukaiset forex strategiat, jotka tuottavat kannattavia signaaleja. Tuotantoinfrastruktuuri - Kauko-palvelimen toteutus ja 247 seurantakauppajärjestelmä, joilla on pysäytystoiminto. Salkku ja riskienhallinta - Salkku ja riskiarkit kaikkiin strategiaan ehdotettuihin tilauksiin. Useat strategiat - Luodaan riskienhallinnan päällekkäisyyksistä integroitavien strategioiden portfolio Kuten osakesijoitukselle perustuvassa backtesteriin, meidän on myös luotava forex-backtesting-moduuli. Se antaa meille nopean tutkimuksen ja helpottaa strategioiden käyttöönottoa. settings. py (Muuta ACCOUNTID ja ACCESSTOKEN): Just Getting Started with Quantitative Trading

Comments

Popular Posts