Använda Excel till Back Test Trading Strategier Hur man tillbaka test med Excel Ive gjort en hel del handelsstrategi tillbaka test. Ive använde sofistikerade programmeringsspråk och algoritmer och Ive gjorde det också med penna och papper. Du behöver inte vara en raketforskare eller en programmerare för att testa många handelsstrategier. Om du kan använda ett kalkylprogram som Excel kan du sedan testa många strategier. Syftet med den här artikeln är att visa dig hur du testar en handelsstrategi med hjälp av Excel och en offentligt tillgänglig datakälla. Detta borde inte kosta dig mer än den tid det tar att göra testet. Innan du börjar testa någon strategi behöver du en dataset. Minst är detta en serie datatider och priser. Mer realistiskt behöver du datetime, öppen, hög, låg, nära priser. Du behöver vanligtvis bara tidskomponenten i dataserien om du testar intradaghandelstrategier. Om du vill arbeta tillsammans och lära dig att backa test med Excel medan du läser detta följer du stegen som jag skisserar i varje avsnitt. Vi behöver få lite data för den symbol som vi ska göra bakom testet. Gå till: Yahoo Finance Ange fältet Enter Symbol (s): IBM och klicka på GO Under Quotes på vänster sida klicka på Historiska priser och ange de datumintervall du vill ha. Jag valde från 1 januari 2004 till 31 december 2004 Bläddra ner till undersidan av sidan och klicka på Hämta till kalkylblad Spara filen med ett namn (t. ex. ibm. csv) och till en plats som du senare kan hitta. Förbereda data Öppna filen (som du laddade ner ovan) med Excel. På grund av internetets dynamiska natur kan de instruktioner du läser ovan och filen du öppnar ha ändrats när du läser detta. När jag hämtade den här filen såg de övre få raderna ut så här: Du kan nu radera de kolumner som du inte ska använda. För testet som jag ska göra ska jag bara använda datumet, öppna och stänga värden så att jag har raderat High, Low, Volume och Adj. Stänga. Jag sorterade också data så att det äldsta datumet var första och det senaste datumet var längst ner. Använd menyalternativen Data - gt Sorter för att göra detta. Istället för att testa en strategi i sig försöker jag hitta veckans dag som gav den bästa avkastningen om du följde ett köp öppet och säljer den nära strategin. Kom ihåg att den här artikeln är här för att presentera dig för hur du använder Excel för att återställa teststrategier. Vi kan bygga vidare på detta framåt. Här är ibm. zip-filen som innehåller kalkylbladet med data och formler för detta test. Mina data finns nu i kolumnerna A till C (Datum, Öppet, Stäng). I kolumnerna D till H har jag platsformler för att bestämma avkastningen på en viss dag. Ange formlerna Den knepiga delen (om du inte är en Excel-expert) utarbetar de formler som ska användas. Det här handlar bara om att träna och ju mer du övar de mer formler du kommer att upptäcka och ju mer flexibilitet du kommer att ha med din testning. Om du har laddat ner kalkylbladet, ta en titt på formeln i cell D2. Det ser ut så här: Denna formel kopieras till alla andra celler i kolumnerna D till H (utom den första raden) och behöver inte justeras när den har kopierats. Jag förklarar kortfattat formeln. IF-formeln har ett villkor, sann och falsk del. Villkoret är: Om veckodagen (konverterad till ett tal från 1 till 5 som matchar måndag till fredag) är detsamma som veckodag i den första raden i denna kolumn (D1) då. Den sanna delen av uttalandet (C2-B2) ger oss bara värdet på Close-Open. Detta indikerar att vi köpte Open och sålde Close och det här är vår profitloss. Den felaktiga delen av uttalandet är ett par dubbla citat () som inte sätter något i cellen om veckodagen inte matchas. Tecknen till vänster om kolumnbokstaven eller radnumret låser kolumnen eller raden så att när den kopieras den delen av cellreferensen ändras inte. Så här i vårt exempel, när formeln kopieras, ändras referensen till datumcell A2 om radnummeret kopieras till en ny rad men kolumnen kommer att ligga kvar i kolumn A. Du kan näsa formlerna och göra utomordentligt kraftfulla regler och uttryck. Resultatet I botten av veckodagens kolumner har jag lagt fram några sammanfattande funktioner. I synnerhet genomsnittet och summan fungerar. Dessa visar att under 2004 var den mest lönsamma dagen för att genomföra denna strategi på tisdag och detta följdes noggrant av en onsdag. När jag testade Expiry Fridays - Bullish eller Bearish-strategin och skrev den artikeln använde jag en mycket liknande inställning med ett kalkylblad och formler som denna. Målet med det testet var att se om Expiry Fridays var generellt bullish eller bearish. Testa. Hämta lite data från Yahoo Finance. ladda det i Excel och prova formlerna och se vad du kan komma med. Skicka dina frågor i forumet. Lycka till och lönsam strategi HuntingUse Excel för att backtest en handelsstrategi med hjälp av ATR Stop-loss Det här inlägget fortsätter serien av videofilmer om hur man använder Microsoft Excel för att backtest handelsstrategier. I det här inlägget visar jag hur man beräknar en stop-loss med hjälp av ATR och sedan hur man backtestar handelsstrategin. Den genomsnittliga True Range utvecklad av J. Welles Wilder ATR är mycket populär bland handlare. På egen hand kan ATR användas för att mäta volatiliteten och marknadsutbudet på marknaden. Det används också ofta i andra tekniska indikatorer som SuperTrend-indikatorn och ADX. En av de mest populära användningarna för ATR utvecklades av Chuck LeBeau och kallas ljuskronans utgång. I ljuskronans utgång sätts stoppavståndet som en multipel av ATR. ATR reagerar på marknadsförhållandena, så när det är lugnt kommer stoppförlusten att vara relativt nära och när saker är flyktiga kommer stoppförlusten att vara längre bort. Formuleringar som används: HL Höglåg H-PC-abs (High-Previous Close) L-PC-abs (Låg Föregående Stäng) True Range max (intervall) ATR-medelvärde (intervall) SL ATRFaktor Max Veckotäckning Låg Tidigare Stäng Trading Strategi IF (F34gtG34, IF (N35gtM34, ((F34-M34) F34) Q34, (F35F34) Q34), Q34) Dela detta: QSForex är en öppen källkodshändelsesdriven backtesting och live trading plattform för användning i utländsk valuta ) marknader, för närvarande i ett alfa-tillstånd. Det har skapats som en del av Forex Trading Diary-serien på QuantStart för att ge det systematiska handelsgemenskapen en robust handelsmotor som möjliggör enkel implementering och testning av forexstrategier. Programvaran tillhandahålls under en tillåten MIT-licens (se nedan). Open Source - QSForex har släppts under en extremt permissiv MIT-licens med öppen källkod, som tillåter fullständig användning i både forskning och kommersiella applikationer, utan begränsning, men utan någon garanti alls. Gratis - QSForex är helt gratis och kostar inget att ladda ner eller använda. Samarbete - Eftersom QSForex är öppen källkod samarbetar många utvecklare för att förbättra programvaran. Nya funktioner läggs till ofta. Eventuella buggar är snabbt bestämda och fixerade. Programutveckling - QSForex är skrivet i Python programmeringsspråk för enkel plattformsupport. QSForex innehåller en serie enhetstester för majoriteten av sin beräkningskod och nya tester läggs hela tiden till nya funktioner. Event-Driven Architecture - QSForex är helt händelsestyrt både för backtesting och live trading, vilket leder till en enkel övergång av strategier från en researchtesting-fas till en live trading implementation. Transaktionskostnader - Spridningskostnader ingår som standard för alla backtestedstrategier. Backtesting - QSForex har flera dagars multi-day par-backtesting för intradagskryssningsupplösning. Trading - QSForex stöder för närvarande direkt intraday trading med hjälp av OANDA Brokerage API över en portfölj av par. Prestationsmetoder - QSForex stöder för närvarande grundläggande prestationsmätning och visuell visualisering via Matplotlib och Seaborn visualiseringsbibliotek. Installation och användning 1) Besök oanda och konfigurera ett konto för att få API-autentiseringsuppgifter, vilket du behöver utföra direkt handel. Jag förklarar hur man bär detta ut i den här artikeln: quantstartarticlesForex-Trading-Diary-1-Automated-Forex-Trading-med-the-OANDA-API. 2) Klona detta gitförvar i en lämplig plats på din maskin med följande kommando i din terminal: git klon githubmhallsmooreqsforex. git. Alternativt kan du ladda ner zip-filen i den nuvarande huvudgrenen på githubmhallsmooreqsforexarchivemaster. zip. 3) Skapa en uppsättning miljövariabler för alla inställningar som finns i filen Settings. py i programmets rotkatalog. Alternativt kan du svårt koda dina specifika inställningar genom att skriva över os. environ. get (.) Samtal för varje inställning: 4) Skapa en virtuell miljö (virtualenv) för QSForex-koden och använd pip för att installera kraven. Till exempel i ett Unix-baserat system (Mac eller Linux) kan du skapa en sådan katalog enligt följande genom att ange följande kommandon i terminalen: Detta skapar en ny virtuell miljö för att installera paketen i. Om du antar att du hämtade QSForex gitförvaret i en exempellista som projectsqsforex (ändra den här katalogen nedan till var du installerade QSForex), för att installera paketen måste du köra följande kommandon: Det tar lite tid som NumPy, SciPy, Pandas, Scikit-Learn och Matplotlib måste sammanställas. Det finns många paket som krävs för att detta ska fungera, så ta en titt på dessa två artiklar för mer information: Du måste också skapa en symbolisk länk från din sajtpaketkatalog till din QSForex installations katalog för att kunna ringa importera qsforex inom koden. För att göra detta behöver du ett kommando som liknar följande: Se till att du ändrar projectsqsforex till din installationskatalog och venvqsforexlibpython2.7site-paket till din virtuella webbplatspaketkatalog. Du kommer nu att kunna köra kommandon på rätt sätt korrekt. 5) Om du helt enkelt vill utöva träning eller leva handel så kan du köra python tradingtrading. py. som kommer att använda standardstrategin för handelsstrategier. Detta köper eller säljer en valutapar varje femte kryssning. Det är rent för testning - använd det inte i en levande handelsmiljö Om du vill skapa en mer användbar strategi skapar du helt enkelt en ny klass med ett beskrivande namn, t. ex. MeanReversionMultiPairStrategy och se till att det har en calculatesignals metod. Du måste passera den här klassen parlistan samt evenemangskön, som i tradingtrading. py. Vänligen se strategystrategy. py för detaljer. 6) För att kunna göra någon backtesting är det nödvändigt att generera simulerade forexdata eller ladda ner historiska fältdata. Om du vill helt enkelt prova programvaran, är det snabbaste sättet att generera ett exempel-backtest att generera viss simulerad data. Det nuvarande datformatet som används av QSForex är detsamma som det som tillhandahålls av DukasCopy Historical Data Feed vid dukascopyswissenglishmarketwatchhistorical. För att generera några historiska data, se till att inställningen CSVDATADIR i settings. py är inställd på en katalog där du vill att den historiska data ska leva. Därefter måste du köra generatesimulatedpair. py. som finns under skriptkatalogen. Det förväntar sig ett enda kommandoradsargument, vilket i detta fall är valutaparet i BBBQQQ-format. Till exempel: I det här skedet är skriptet hårdkodat för att skapa en enda månadsdata för januari 2014. Det vill säga att du kommer att se enskilda filer, av formatet BBBQQQYYYYMMDD. csv (t. ex. GBPUSD20140112.csv) visas i din CSVDATADIR för alla arbetsdagar i den månaden. Om du vill ändra månadstiden för datautmatningen, ändrar du bara filen och kör igen. 7) Nu när den historiska data har genererats är det möjligt att göra en backtest. Själva backtestfilen lagras i backtestbacktest. py. men det här innehåller bara Backtest-klassen. För att faktiskt genomföra en backtest måste du instansera den här klassen och ge den nödvändiga modulerna. Det bästa sättet att se hur det här görs är att titta på exemplet Moving Average Crossover implementation i filen examplemac. py och använd det som en mall. Detta använder sig av MovingAverageCrossStrategy som finns i strategystrategy. py. Den här standarden handlar både om GBPUSD och EURUSD för att visa flera valutaparanvändning. Den använder data som finns i CSVDATADIR. För att utföra exemplet backtest, kör helt enkelt följande: Det tar lite tid. På mitt Ubuntu-skrivbordssystem hemma, med de historiska data som genereras via generatesimulatedpair. py. Det tar cirka 5-10 minuter att springa. En stor del av denna beräkning sker vid slutet av den faktiska backtesten, när uträkningen beräknas, så kom ihåg att koden inte har hängt upp Vänligen lämna det tills det är klart. 8) Om du vill se resultatet av backtestet kan du helt enkelt använda output. py för att se en egenkapitalkurva, periodens retur (dvs tick-to-tick return) och en drawdown-kurva: Och det är det. I det här skedet är du redo att börja skapa egna backtests genom att ändra eller lägga till strategier i strategystrategy. py och använda verkliga data som hämtas från DukasCopy (dukascopyswissenglishmarketwatchhistorical). Om du har några frågor om installationen kan du gärna maila mig på mikequantstart. Om du har några buggar eller andra problem som du tycker kanske beror på kodbasen är du välkommen att öppna ett Githubproblem här: githubmhallsmooreqsforexissues Copyright (c) 2015 Michael Halls-Moore Tillstånd ges härmed gratis till någon person skaffa en kopia av denna programvara och tillhörande dokumentationsfiler (Programvaran) för att handla i Programvaran utan begränsning, inklusive, men inte begränsat, rätten att använda, kopiera, modifiera, fusionera, publicera, distribuera, sublicense och eller sälja kopior av Programvaran, Och att tillåta personer till vilka Programvaran är avsedd att göra det, under förutsättning att följande villkor är uppfyllda: Ovanstående upphovsrättsmeddelande och detta meddelande om tillstånd ska inkluderas i alla kopior eller väsentliga delar av Programvaran. PROGRAMVARAN GIVAS SOM ÄR, UTAN GARANTI AV NÅGON KÄN, UTTRYCKLIGT ELLER UNDERFÖRSTÅDD, INKLUSIVE MEN INTE BEGRÄNSAT TILL GARANTIER FÖR SALGBARHET, EGNETHET FÖR ET SÄRSKILT SYFTE OCH NONINFRINGEMENT. INNEHÅLLSINTERSÄTTARE ELLER UPPHOVSRÄTTARE ÄR INTE HÄNDIGT FÖR ANSVAR, SKADOR ELLER ANNAN ANSVAR, OM EN ÅTGÄRDER AV KONTRAKT, TORT ELLER ANNANSÄTT, FRÅN, UTAN ELLER I SAMBAND MED PROGRAMVARAN ELLER ANVÄNDNINGEN ELLER ANDRA FÖRHANDLINGAR I PROGRAMVARA. Forex Trading Ansvarsbegränsning Valutakurshandel på margin ger hög risk och kan inte vara lämplig för alla investerare. Tidigare resultat är inte en indikation på framtida resultat. Den höga hävstångseffekten 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.
No comments:
Post a Comment