Sunday, 26 November 2017

Forex api python


FXCM API Python wrapper Som du säkert vet, erbjuder FXCM handelsförbindelser via deras proprietära anslutning som heter ForexConnect API. För oss som inte är kvalificerade för att öppna FIX-kontot är ForexConect API en möjlig väg att bygga och ansluta vårt eget handelssystem. Personligen gillar jag inte mql och MT4 mycket, om alls. Men det är fortfarande den mest utökade handelsplattformen denna dag. Med det sagt kan man, med hjälp av ForexConnect API, kringgå mql och skriva quants eller automatiserade strategier på högre nivå språk som CC, Java Python eller till och med Matlab eller R. Ive har startat ett projekt för ForexConnect API wrapper som gör det möjligt för Python-modulen. Mycket har redan gjorts, du kan kolla här 1. Även om du är erfaren C-utvecklare väljer Ive Python för sitt brett antal matematik. och statistikbibliotek som Numpy, Scipy, Pandas etc. Använd också sådant språk som Python Im kan använda moderna dev. Plattform som Visual Studio för CC eller min favorit JetBrains PyCharm för Python dev. Min avsikt är en gång API-programmet är fullt implementerat för att bygga en del maskinundervisningskvant runt den. Forex-handel med OANDA API av James Ma Weiming Forex trading med OANDA API I de tidigare avsnitten implementerade vi ett handelssystem genom att koppla samman med Interactive Brokers Trader WorkStation X Via sockelanslutningarna över en enda port. Men många andra mäklare erbjuder olika val av att ansluta anpassad handelsprogram över ett API. I det här avsnittet lär vi oss hur vi ska gränsa vår handelsstrategi med OANDAs REST API. OANDA är en stor aktör i valutahandeln (valutahandel). Vi kommer att använda en trend-följande strategi för handel med forexprodukter. Vad är REST REST står för Representational State Transfer. Det hänvisar till webbtjänst API för överföring av data via HTTP med hjälp av GET. SÄTTA. POSTA. eller DELETE metoder. Med REST API kan vi strömma. Hitta den exakta informationen du behöver för att lösa ett problem i flygningen eller gå djupare för att behärska de tekniker och färdigheter du behöver för att lyckas. Inga kreditkort krävs. Läs mer Kvant kompetens Om du är en näringsidkare eller en investerare och vill förvärva en uppsättning kvantitativa Handel färdigheter, du är på rätt ställe. Trading med Python-kursen ger dig de bästa verktygen och rutinerna för kvantitativ handelsforskning, inklusive funktioner och skript som skrivits av experter som kvantitativa handlare. Kursen ger dig maximal effekt för din investerade tid och pengar. Det fokuserar på praktisk tillämpning av programmering till handel snarare än teoretisk datavetenskap. Kursen kommer att betala sig snabbt genom att spara tid vid manuell behandling av data. Du kommer att spendera mer tid på att undersöka din strategi och genomföra lönsamma affärer. Kursöversikt Del 1: Grunderna Du lär dig varför Python är ett idealiskt verktyg för kvantitativ handel. Vi börjar genom att skapa en utvecklingsmiljö och introducera dig sedan till de vetenskapliga biblioteken. Del 2: Hantera data Lär dig hur du hämtar data från olika fria källor som Yahoo Finance, CBOE och andra webbplatser. Läs och skriv flera dataformat inklusive CSV - och Excel-filer. Del 3: Undersök strategier Lär dig att beräkna PL och åtföljande prestandametri som Sharpe och Drawdown. Bygg en handelsstrategi och optimera prestanda. Flera exempel på strategier diskuteras i denna del. Del 4: Kommer att leva Denna del är centrerad kring Interactive Brokers API. Du kommer lära dig hur du får realtids lagerdata och placera live order. Massor av exempelkod Kursmaterialet består av anteckningsböcker som innehåller text tillsammans med en interaktiv kod som den här. Du kommer att kunna lära dig genom att interagera med koden och ändra den efter eget tycke. Det kommer att vara en bra utgångspunkt för att skriva egna strategier Medan vissa ämnen förklaras i stor detalj för att hjälpa dig att förstå de underliggande koncepten, behöver du i de flesta fall inte ens skriva en egen lågnivåkod på grund av stöd från befintliga öppna - källor bibliotek. TradingWithPython-biblioteket kombinerar mycket av funktionaliteten som diskuteras i kursen som färdiga funktioner och kommer att användas under hela kursen. Pandas kommer att ge dig all den kraftiga lyftkraften som behövs vid datakrypning. Alla koden tillhandahålls under BSD-licensen, vilket tillåter användningen i kommersiella tillägg. Kursbetyg En kurs i kursen hölls våren 2013, så här fick studenterna att säga: Matej väl utformad kurs och bra tränare. Definitivt värt sitt pris och min tid Lave Jev visste självklart hans grejer. djupet av täckningen var perfekt. Om Jev kör något liknande här igen, är jag den första som registrerar mig. John Phillips Din kurs fick mig verkligen att hoppa och började överväga python för stocksystemanalys. Forex Trading Dagbok 1 - Automatiserad Forex Trading med OANDA API Jag nämnde tidigare i QuantStart: 2014 I Review-artikeln att jag skulle spendera några av 2015 som skriver om automatiserad valutahandel . Med tanke på att jag själv brukar bedriva forskning på aktie - och terminsmarknader, tyckte jag att det skulle vara kul (och pedagogiskt) att skriva om mina erfarenheter av att gå in i valutamarknaden i stil med en dagbok. Varje dagbokspost kommer att försöka bygga på alla de tidigare, men ska också vara relativt självständiga. I den här första inledningen av dagboken beskrivs Ill hur man skapar ett nytt mäklarekonto med OANDA, samt hur man skapar en grundläggande multithreaded händelsesdriven handelsmotor som automatiskt kan utföra handlar i både en praxis och en levande inställning. Förra året spenderade vi mycket tid på den händelsestyrda backtesteren. främst för aktier och ETF. Den som jag presenterar nedan är inriktad mot forex och kan användas för antingen pappershandel eller live trading. Jag har skrivit alla följande instruktioner för Ubuntu 14.04, men de borde enkelt översättas till Windows eller Mac OS X, med en Python-distribution som Anaconda. Det enda extra biblioteket som används för Pythons handelsmotor är begäran-biblioteket, vilket är nödvändigt för HTTP-kommunikation till OANDA API. Eftersom det här är det första inlägget direkt om handel med valutahandel och koden som presenteras nedan kan anpassas enkelt till en levande handelsmiljö, skulle jag vilja presentera följande ansvarsfriskrivningar: Ansvarsbegränsning: Valutahandling på margin ger hög risk, och kanske inte är lämplig för alla investerare. Tidigare resultat är inte en indikation på framtida resultat. Den höga hävstångsgraden kan fungera mot dig såväl som för dig. Innan du bestämmer dig för att investera i utländsk valuta bör du noga överväga dina investeringsmål, nivå av erfarenhet och risk aptit. Möjligheten finns att du kan bibehålla en förlust av vissa eller alla dina initiala investeringar och därför borde du inte investera pengar som du inte har råd att förlora. Du bör vara medveten om alla risker som är förknippade med valutahandel och söka råd från en oberoende finansiell rådgivare om du är osäker. Denna programvara tillhandahålls enligt vad som är och några uttryckta eller underförstådda garantier, inklusive, men inte begränsade till, de underförstådda garantierna för säljbarhet och lämplighet för ett visst ändamål avvisas. Regenterna eller bidragsgivarna är under inga omständigheter ansvariga för direkta, indirekta, tillfälliga, speciella, exemplifierande eller följdskador (inklusive men inte begränsat till upphandling av ersättningsvaror eller - tjänster, förlust av användning, data eller vinst eller avbrott i verksamheten ) Men orsakade och på alla teorier om ansvar, oavsett om det gäller kontrakt, strikt ansvar eller skadestånd (inklusive försumlighet eller annat) som uppstår vid någon användning av denna programvara, även om det rekommenderas möjligheten för sådan skada. Ställa in ett konto med OANDA Den första frågan som kommer att tänka är att välja OANDA. Enkelt uttryckt, efter en del Googling runt för Forex-mäklare som hade API, såg jag att OANDA nyligen hade släppt ett korrekt REST API som lätt kunde kommuniceras med från nästan vilket språk som helst på ett extremt enkelt sätt. Efter att ha läst igenom dokumentationen till utvecklarens API. Jag bestämde mig för att försöka, åtminstone med ett praktikkonto. För att vara tydlig - Jag har inget tidigare eller befintligt förhållande till OANDA och tillhandahåller endast denna rekommendation baserat på min begränsade erfarenhet att spela runt med deras tränings API och en kort användning (för nedladdning av marknadsdata) medan de anställde i en fond tidigare. Om någon har stött på några andra forexmäklare som också har ett liknande modernt API, så är Id glatt att ge dem en titt också. Innan du använder API: n måste du registrera dig för ett träningskonto. För att göra detta, gå till registreringslänken. Du kommer att se följande skärm: Du kan sedan logga in med dina inloggningsuppgifter. Se till att du väljer fliken fxTradePractice från inloggningsskärmen: En gång i måste du notera ditt konto-ID. Den är listad under den svarta rubriken Mina fonder bredvid Primär. Gruvan är ett 7-siffrigt nummer. Dessutom behöver du också skapa en personlig API-token. För att göra detta klickar du på Hantera API-åtkomst under fliken Övriga åtgärder längst ned till vänster: I det här skedet kan du skapa en API-token. Du behöver nyckeln för användning senare, så se till att skriva ner den också. Du vill nu starta FXTrade Practice-applikationen, vilket gör det möjligt för oss att se de utförda orderna och vår (pappers) vinstförlust. Om du kör ett Ubuntu-system måste du installera en lite annorlunda version av Java. I synnerhet Oracle-versionen av Java 8. Om du inte gör det kommer träningssimulatorn inte att laddas från webbläsaren. Jag körde dessa kommandon på mitt system: Du kommer nu att kunna starta träningshandelns miljö. Återgå till OANDA-instrumentpanelen och klicka på den gröna markerade Launch FXTrade Practice-länken. Det kommer att hämta en Java-dialogruta om du vill köra den. Klicka på Kör och fxTrade Practice-verktyget laddas. Mine misstänktes till ett 15-minuters ljusdiagram över EURUSD med citatpanelen till vänster: Vid denna tidpunkt är vi redo att börja utforma och koda vårt automatiserade valutahandel mot OANDA API. Översikt över handelsarkitektur Om du har följt den händelsestyrda backtesterserien för aktier och ETFs som jag skapade förra året, kommer du att vara medveten om hur ett sådant händelsestyrt handelssystem fungerar. För de av er som är nya till händelsesstyrd programvara. Jag rekommenderar starkt att läsa igenom artikeln för att få insikt om hur de fungerar. I grund och botten utförs hela programmet i ett infinalt slinga som bara slutar när handelssystemet stängs av. Programmets centrala kommunikationsmekanism ges via en kö som innehåller händelser. Kön efterfrågas ständigt för att leta efter nya händelser. När en händelse har tagits bort överst i köen måste den hanteras av en lämplig del av programmet. Därför kan ett marknadsdata-flöde skapa TickEvent s som placeras på köen när ett nytt marknadspris kommer. Ett signalgenererande strategibjekt kan skapa OrderEvent s som ska skickas till en mäklare. Nyttan av ett sådant system ges av det faktum att det inte spelar någon roll vilken ordning eller typer av händelser som är placerade i kön, eftersom de alltid kommer att hanteras korrekt av rätt komponent inom programmet. Dessutom kan olika delar av programmet köras i separata trådar. vilket betyder att det aldrig finns någon som väntar på någon viss komponent innan de behandlar någon annan. Detta är extremt användbart i algoritmiska handelssituationer där marknadsdatahanterare och strategisignalgeneratorer har väsentligt olika prestandaegenskaper. Huvudhandelslingan ges av följande Python pseudokod: Som vi nämnde ovan kör koden i en oändlig slinga. För det första pollas köen för att hämta en ny händelse. Om kön är tom, startar slingan helt enkelt efter en kort sömnperiod som kallas hjärtslaget. Om en händelse hittas bedöms dess typ och därefter aktiveras den relevanta modulen (antingen strategin eller exekveringshanteraren) för att hantera händelsen och möjligen generera nya som går tillbaka till köen. De grundläggande komponenterna som vi ska skapa för vårt handelssystem inkluderar följande: Streaming Price Handler - Detta kommer att hålla en långvarig anslutning öppen för OANDAs servrar och skicka kryssdata (dvs. bidragen) över anslutningen för alla instrument som var intresserade av. Strategi Signal Generator - Detta kommer att ta en sekvens av tick händelser och använda dem för att generera handelsorder som kommer att utföras av exekveringshanteraren. Exekveringshanterare - Tar en uppsättning orderhändelser och utför dem sedan blankt med OANDA. Händelser - Dessa objekt utgör de meddelanden som skickas runt på händelsekön. Vi behöver bara två för denna implementering, nämligen TickEvent och OrderEvent. Huvudinmatningspunkt - Huvudingångspunkten innehåller också handeln som kontinuerligt pollar meddelandekön och skickar meddelanden till rätt komponent. Detta kallas ofta händelsesslingan eller händelseshanteraren. Vi kommer nu att diskutera genomförandet av koden i detalj. Längst ned i artikeln finns en fullständig lista över alla källkodsfiler. Om du placerar dem i samma katalog och kör python trading. py börjar du generera order, förutsatt att du har fyllt i ditt konto-ID och autentiseringstoken från OANDA. Python Implementation Det är dåligt att lagra lösenord eller autentiseringsnycklar i en kodbas, eftersom du aldrig kan förutsäga vem som får slutligen få tillgång till ett projekt. I ett produktionssystem skulle vi lagra dessa referenser som miljövariabler med systemet och sedan fråga dessa envvars varje gång koden omfördelas. Detta säkerställer att lösenord och autotoken aldrig lagras i ett versionsstyrningssystem. Eftersom vi enbart är intresserade av att bygga ett leksakshandelssystem och inte är bekymrade över produktionsdetaljerna i den här artikeln kommer vi istället att separera dessa autentoken i en inställningsfil. I följande settings. py konfigurationsfil har vi en ordbok med namnet MILJÖ som lagrar API-ändpunkterna för både OANDA-prisöverförings API och handels API. Varje delordbok innehåller tre separata API-slutpunkter: real. Öva och sandlåda. Sandbox API är enbart för testkod och för att kontrollera att det inte finns några fel eller fel. Det har inte uppehållstillstånd för de riktiga eller praktiska API: erna. Practice API, i huvudsak, ger möjlighet att pappershandel. Det innebär att det ger alla funktioner i det verkliga API-en på ett simulerat träningskonto. Det verkliga API är just det - det är live trading Om du använder den slutpunkten i din kod kommer den att handla mot ditt livekontosaldo. VAR EXTREMT NUVÄRIG VIKTIGT: När du handlar mot övnings API, kom ihåg att en viktig transaktion kostar det som påverkar marknaden. Beaktas inte. Eftersom inga affärer faktiskt placeras i miljön måste denna kostnad redovisas på ett annat sätt på annat håll med hjälp av en marknadsimpactmodell om du vill realistiskt bedöma prestanda. I det följande använder vi praktikkontot som anges av DOMAIN-inställningen. Vi behöver två separata ordböcker för domänerna, en var och en för strömmande och trading API-komponenter. Till sist har vi ACCESSTOKEN och ACCOUNTID. Ive fyllde de två nedan med dummy-ID-er, så du måste använda din egen, som kan nås från OANDA-kontosidan: Nästa steg är att definiera händelser som köen ska använda för att hjälpa alla enskilda komponenter att kommunicera. Vi behöver två: TickEvent och OrderEvent. Den första lagrar information om instrumentmarknadsdata som (bäst) budskapet och handelstiden. Den andra används för att överföra order till exekveringshanteraren och innehåller sålunda instrumentet, antalet enheter att handla, ordertypen (marknad eller gräns) och sidan (dvs. köp och sälj). För framtidssäkra vår händelsekod kommer vi att skapa en basklass som heter Event och har alla händelser arv från detta. Koden finns nedan i events. py: Nästa klass vi ska skapa kommer att hantera handelsstrategin. I den här demonstrationen kommer vi att skapa en ganska nonsensisk strategi som helt enkelt tar emot alla marknadsmarkor och på varje femte kryssning köper eller säljer 10.000 enheter av EURUSD slumpmässigt. Tydligen är det en löjlig strategi Men det är fantastiskt för teständamål eftersom det är enkelt att koda och förstå. I framtida dagboksposter kommer vi att ersätta detta med något betydligt mer spännande som kommer att (förhoppningsvis) göra en vinst Strategistrategien kan hittas nedan. Låt oss arbeta igenom det och se vad som händer. För det första importerar vi det slumpmässiga biblioteket och OrderEvent-objektet från events. py. Vi behöver den slumpmässiga lib för att välja en slumpmässig köp - eller säljorder. Vi behöver OrderEvent eftersom det här är hur strategibjektet skickar order till händelsekön, som senare kommer att köras av exekveringshanteraren. Klassen TestRandomStrategy tar helt enkelt instrumentet (i detta fall EURUSD), antalet enheter och händelsekön som en uppsättning parametrar. Den skapar sedan en ticks counter som används för att berätta hur många TickEvent-instanser den har sett. Det mesta av arbetet sker i calculatesignalsmetoden, som helt enkelt tar en händelse, bestämmer om det är en TickEvent (annars ignorerar) och ökar tick-räknaren. Den kontrollerar sedan för att se om räkningen är delbar med 5 och sedan slumpmässigt köper eller säljer, med en marknadsordning, det angivna antalet enheter. Det är verkligen inte världens största handelsstrategi, men det kommer att vara mer än lämpligt för våra OANDA-mäklare API-teständamål. Nästa komponent är exekveringshanteraren. Denna klass har till uppgift att agera på OrderEvent-instanser och göra förfrågningar till mäklaren (i detta fall OANDA) på ett dumt sätt. Det innebär att det inte finns någon riskhantering eller överbyggnad av potetkonstruktion. Exekveringshanteraren kommer enkelt att genomföra någon order som den har fått. Vi måste skicka all autentiseringsinformation till Exekveringsklassen, inklusive domänen (övning, verklig eller sandlåda), åtkomsttoken och konto-ID. Vi skapar sedan en säker anslutning med httplib. En av Pythons byggda i bibliotek. Det mesta av arbetet sker i exekuteorder. Metoden kräver en händelse som en parameter. Den bygger sedan två ordböcker - rubrikerna och parametrarna. Dessa ordböcker kommer då att kodas korrekt (delvis av urllib. Ett annat Python-bibliotek) som ska skickas som en HTTP POST-begäran till OANDAs API. Vi skickar parametrarna Content Type och Authorization, som inkluderar vår autentiseringsinformation. Dessutom kodar vi parametrarna, som inkluderar instrumentet (EURUSD), enheter, ordertyp och sida (buysell). Slutligen gör vi förfrågan och sparar svaret: Den mest komplexa delen av handelssystemet är StreamingForexPrices-objektet, som hanterar marknadsprisuppdateringar från OANDA. Det finns två metoder: connecttostream och streamtoqueue. Den första metoden använder Python-förfrågningsbiblioteket för att ansluta till ett strömmande uttag med lämpliga rubriker och parametrar. Parametrarna innehåller konto-ID och listan över nödvändiga instrument som ska lyssnas på för uppdateringar (i det här fallet är det bara EURUSD). Observera följande rad: Detta berättar att anslutningen ska strömma och därigenom hållas öppen på ett långvarigt sätt. Den andra metoden, streamtoqueue. Försöker verkligen ansluta till strömmen. Om svaret inte lyckas (det vill säga svarskoden är inte HTTP 200), så returnerar vi helt enkelt och avslutar. Om det lyckas försöker vi ladda JSON-paketet som returneras till en Python-ordlista. Slutligen omvandlar vi Python-ordlistan med instrumentet, budskapet och tidstämpeln till ett TickEvent som skickas till händelsekön: Vi har nu alla huvudkomponenter på plats. Det sista steget är att paketera upp allt vi har skrivit hittills i ett huvudprogram. Målet med den här filen, som kallas trading. py. Är att skapa två separata trådar. varav den ena driver prissättaren och den andra som driver handelshanteraren. Varför behöver vi två separata trådar Enkelt så utför vi två separata kodstycken, som båda löper kontinuerligt. Om vi ​​skulle skapa ett icke-gängat program, skulle strömmenheten som används för prissättning uppdateringar aldrig någonsin släppa tillbaka till huvudkodsstigen och därför skulle vi aldrig faktiskt utföra någon handel. På samma sätt, om vi sprang affärslingan (se nedan), skulle vi aldrig faktiskt returnera flödesbanan till prisströmmar. Därför behöver vi flera trådar, en för varje komponent, så att de kan utföras självständigt. De kommer båda att kommunicera med varandra via evenemangskön. Låt oss undersöka detta lite längre. Vi skapar två separata trådar med följande rader: Vi överför funktions - eller metodnamnet till målet sökordsargument och skickar sedan en iterbar (till exempel en lista eller tupel) till args-nyckelordsargumentet, som sedan skickar dessa argument till den faktiska metodfunktionen . Slutligen startar vi båda trådarna med följande rader: Således kan vi springa två, effektivt oändliga looping, kodsegment självständigt, vilka båda kommunicerar genom händelsekön. Observera att Python Threading-biblioteket inte producerar en sann multi-core multithreaded miljö på grund av CPython-implementeringen av Python och Global Interpreter Lock (GIL). Om du vill läsa mer om multithreading på Python, ta en titt på den här artikeln. Låt oss undersöka resten av koden i detalj. För det första importerar vi alla nödvändiga bibliotek, inklusive kö. gängning och tid. Vi importerar sedan alla ovanstående kodfiler. Jag föredrar personligen att kapitalisera alla konfigurationsinställningar, vilket är en vana jag hämtade upp från att arbeta med Django. Efter det definierar vi handelsfunktionen, som förklarades i Python-pseudokoden ovan. En oändlig stundslinga utförs (medan True:) som pollar kontinuerligt från händelsekön och hoppar bara om slingan om den är tom. Om en händelse hittas är det antingen en TickEvent eller en OrderEvent och då kallas lämplig komponent för att utföra det. I det här fallet är det antingen en strategi eller exekveringshanterare. Slingan sover helt enkelt för hjärtslag sekunder (i detta fall 0,5 sekunder) och fortsätter. Slutligen definierar vi huvudkoden för koden i huvudfunktionen. Det är väl kommenterat nedan, men jag kommer att sammanfatta här. I huvudsak instanserar vi händelsekön och definierar instrumentenheterna. Vi skapar sedan StreamingForexPrices prisströmmande klass och därefter Exekveringsexekveringshanteraren. Båda får de nödvändiga autentiseringsuppgifter som ges av OANDA när de skapar ett konto. Vi skapar sedan TestRandomStrategy-förekomsten. Slutligen definierar vi de två trådarna och startar dem: För att köra koden behöver du helt enkelt placera alla filer i samma katalog och ringa följande på terminalen: Observera att för att stoppa koden på detta stadium kräver en hård död av Python-processen. Via Ctrl-Z eller motsvarande Ive har inte lagt till en extra tråd för att hantera letar efter sys. exit () som skulle behövas för att stoppa koden på ett säkert sätt. Ett potentiellt sätt att stoppa koden på en UbuntuLinux-maskin är att skriva: Och sedan skicka utmatningen av detta (ett processnummer) till följande: Där PROCESSID måste bytas ut med utmatningen från pgrep. Observera att detta inte är särskilt bra. I senare artiklar kommer vi att skapa en mer sofistikerad stopstart-mekanism som använder sig av Ubuntus processövervakning för att handelssystemet ska kunna köras 247. Utgången efter 30 sekunder eller så, beroende på tiden för dag i förhållande till de viktigaste handelstiderna för EURUSD, för ovanstående kod, ges nedan: De fem första raderna visar JSON-kryssdata returnerad från OANDA med budpris. Därefter kan du se Exekveringsorderutgången samt JSON-svaret som returneras från OANDA, vilket bekräftar öppnandet av en köphandel för 10 000 enheter av EURUSD och priset som uppnåddes på. Detta fortsätter att löpa på obestämd tid tills du dödar programmet med ett Ctrl-Z-kommando eller liknande. Vad är nästa? I senare artiklar kommer vi att utföra några välbehövliga förbättringar, bland annat: Verkliga strategier - Korrekt Forex-strategier som ger lönsamma signaler. Produktionsinfrastruktur - Implementering av fjärrserver och 247 övervakat handelssystem, med stoppstartskapacitet. Portfölj och riskhantering - Portfölj - och risköverlagringar för alla förslag till order från strategin. Flera strategier - Konstruera en portfölj av strategier som integreras i riskhanteringsöverläggningen Som med aktiehändelsesdrivna backtester behöver vi också skapa en forex-backtesting-modul. Det gör att vi kan göra snabb forskning och göra det enklare att distribuera strategier. settings. py (kom ihåg att ändra ACCOUNTID och ACCESSTOKEN): Kom precis igång med kvantitativ handel

No comments:

Post a Comment