Sunday, October 9, 2016

Bewegende Gemiddelde Filter Python

Ek het 'n skikking waar strategies sinusgolf waardes aangeteken en bewaar. Ek wil die maksimum en min van die golfvorm vind. Sedert die sinusgolf data is spanning aangeteken met behulp van 'n DAQ, sal daar 'n geraas wees, so ek wil 'n geweegde gemiddelde doen. Die aanvaarding van self. yArray bevat my sinusgolf waardes, hier is my kode dusver: My probleem lyk in die tweede vir lus, om te wees waar, afhangende van my gemiddelde venster grootte (filtersize), ek wil op te som die waardes in die venster te neem die gemiddelde van hulle. Ek ontvang 'n fout gesê: Ek is 'n EE met baie min ondervinding in programmering, so enige hulp sal waardeer word gevra 29 Mei 13 aan 18:09 Paulus, dankie vir die aanbeveling. Dit moet egter in ag geneem word, dat alhoewel x: y doesn39t 'n fout te produseer, won39t dit die verwagte resultaat in die OP39s kode gee. Óf OP nodig sou wees om jou korreksie gebruik, maar met yxfiltersize en geneem uit die lus of die som moet verwyder word, saam met die xy kruip weg in plek. â € tom10 30 Mei 13 aan 17:18 tom10, I39m seker jy is reg. My antwoord is meestal afgaan paar intuïsie oor wat die probleem waarskynlik was, ek is nie kundige oor die probleem domein om die akkuraatheid van die werklike algoritme weet. Wat is die rede waarom ek die OP om jou antwoord te verwys. uitvoering maak Paulus Woolcock 30 Mei 13 aan 17:22 Die ander antwoorde korrek beskryf jou fout, maar hierdie soort probleem noem regtig uit vir die gebruik van Numpy. Numpy sal vinniger te hardloop, meer geheue doeltreffende, en is meer ekspressiewe en gerieflik vir hierdie tipe probleem. Hier is 'n voorbeeld: As jy dit nie wil gebruik Numpy, dit moet ook op gelet word dat Theres 'n logiese fout in jou program wat lei tot die TypeError. Die probleem is dat in die lyn jy met behulp van som binne die lus waar jou ook die berekening van die bedrag. So of jy nodig het om te som sonder die lus, of lus deur die skikking en voeg al die elemente, maar nie beide (en sy albei doen, dit wil sê. Toepas som om die geïndekseerde verskeidenheid element, wat lei tot die fout in die eerste plek). Dit wil sê, hier is twee oplossings: numpy. average Axis waarlangs om gemiddeld 'n. As een. gemiddelde gedoen oor die plat skikking. gewigte. arraylike, opsioneel 'n verskeidenheid van gewigte wat verband hou met die waardes in 'n. Elke waarde in 'n bydrae lewer tot die gemiddelde volgens sy verwante gewig. Die gewigte array kan óf 1-D (in welke geval moet sy lengte van die grootte van 'n langs die gegewe as wees) of van dieselfde vorm as 'n. As weightsNone. dan sal al die data in 'n word aanvaar dat 'n gewig gelyk aan een het. teruggekeer . Bool, opsionele Standaard is Vals. As dit waar is. die tuple (gemiddelde. sumofweights) teruggestuur, anders net die gemiddelde teruggestuur. As weightsNone. sumofweights is gelykstaande aan die aantal elemente waaroor die gemiddelde geneem. gemiddelde, sumofweights. arraytype of dubbel terug die gemiddelde langs die gespesifiseerde as. Wanneer teruggekeer waar is. terugkeer 'n tuple met die gemiddelde as die eerste element en die som van die gewigte as die tweede element. Die tipe terugkeer is Float as a van heelgetal tipe, anders is dit van dieselfde soort as 'n. sumofweights is van dieselfde soort as die gemiddelde Ons voorheen bekend hoe om bewegende gemiddeldes met Python skep. Hierdie handleiding sal 'n voortsetting van hierdie onderwerp wees. 'N bewegende gemiddelde in die konteks van statistieke, ook bekend as 'n rollende / hardloop gemiddelde, is 'n tipe van eindige impulsrespons. Let8217s plot x teen die bewegende gemiddelde van y dat ons yma sal roep:: In ons vorige tutoriaal het ons die waardes van die skikkings x en y geplot Eerstens let8217s gelyk die lengte van beide skikkings: En om dit in konteks te wys: Die gevolglike grafiek: Om te help verstaan ​​dit, let8217s plot twee verskillende verhoudings: x vs y en x vs mag: die bewegende gemiddelde hier is die groen plot wat begin by 3: Deel hierdie: Soos hierdie: Verwante Post navigasie Laat 'n antwoord Kanselleer antwoord Baie nuttig Ek wil graag die laaste deel lees op groot datastelle Hoop dit sal soon8230 d bloggers kom soos volg: back testing n bewegende gemiddelde Crossover in Python met pandas Deur Michael Saal-Moore op 21 Januarie 2014 in die vorige artikel oor Navorsing back testing omgewings Python Met Pandas ons geskep 'n objek-georiënteerde navorsing-gebaseerde back testing omgewing en dit getoets op 'n ewekansige vooruitskatting strategie. In hierdie artikel sal ons gebruik van die masjinerie wat ons lei om navorsing te doen oor 'n werklike strategie, naamlik die bewegende gemiddelde Crossover op AAPL maak. Bewegende gemiddelde Crossover Strategie Die bewegende gemiddelde Crossover tegniek is 'n uiters bekende simplistiese momentum strategie. Daar word dikwels beskou as die Hello World voorbeeld vir kwantitatiewe handel. Die strategie as hier uiteengesit is slegs lang. Twee afsonderlike eenvoudige bewegende gemiddelde filters word geskep, met wisselende Terugblik tydperke, van 'n bepaalde tyd reeks. Seine na die aankoop van die bate vind plaas wanneer die korter Terugblik bewegende gemiddelde hoe langer bewegende gemiddelde oorskry Terugblik. As die langer gemiddelde daarna die korter gemiddelde oorskry, word die bate verkoop terug. Die strategie werk goed wanneer 'n tydreeks betree 'n tydperk van 'n sterk tendens en dan omkeer stadig die tendens. Vir hierdie voorbeeld het ek gekies Apple, Inc (AAPL) as die tyd reeks, met 'n kort Terugblik van 100 dae en 'n lang Terugblik van 400 dae. Dit is die inligting wat deur die Zipline algoritmiese handel biblioteek voorbeeld. So as ons wil ons eie backtester implementeer moet ons verseker dat dit die resultate wedstryde in Zipline, as 'n basiese wyse van bevestiging. Implementering Maak seker dat die vorige tutoriaal hier volg. wat beskryf hoe die aanvanklike doel hiërargie vir die backtester is gebou, anders sal die kode hieronder sal nie werk nie. Vir hierdie spesifieke implementering het ek die volgende biblioteke gebruik: Die implementering van macross. py vereis backtest. py van die vorige tutoriaal. Die eerste stap is om die nodige modules en voorwerpe in te voer: Soos in die vorige tutoriaal gaan ons die strategie abstrakte basis klas MovingAverageCrossStrategy produseer oorerf. wat al die besonderhede oor hoe om die seine te genereer bevat wanneer die bewegende gemiddeldes van AAPL kruis oor mekaar. Die voorwerp vereis 'n shortwindow en 'n longwindow waarop te werk. Die waardes is ingestel om die standaard van 100 dae en 400 dae onderskeidelik, wat dieselfde parameters wat in die belangrikste voorbeeld van Zipline is. Die bewegende gemiddeldes is geskep deur die gebruik van die pandas rollingmean funksie op die barsClose sluitingsprys van die AAPL voorraad. Sodra die individu bewegende gemiddeldes is gebou, is die sein reeks wat deur die oprigting van die kolom gelyk aan 1,0 wanneer die kort bewegende gemiddelde is groter as die lang bewegende gemiddelde, of 0.0 anders. Hieruit kan die posisies bestellings gegenereer kan word om handel seine verteenwoordig. Die MarketOnClosePortfolio is subclassed van Portefeulje. wat is gevind in backtest. py. Dit is byna identies aan die wat in die vorige tutoriaal beskryf implementering, met die uitsondering dat die ambagte nou uit op 'n close-to-Close basis gedra, eerder as om 'n Ope-tot-Ope basis. Vir meer inligting oor hoe die Portefeuljekomitee voorwerp gedefinieer, sien die vorige tutoriaal. Ive het die kode in vir volledigheid en om hierdie handleiding te hou self-contained: Noudat die MovingAverageCrossStrategy en MarketOnClosePortfolio klasse is gedefinieer, sal 'n hooffunksie word geroep om al die funksies saam te bind. Daarbenewens die prestasie van die strategie deur middel van 'n plot van die aandele kurwe sal ondersoek word. Die pandas DataReader voorwerp downloads OHLCV pryse van AAPL voorraad vir die tydperk 1 Januarie 1990 tot 1 Januarie 2002, op watter punt die seine DataFrame is geskep om die lang-net seine op te wek. Vervolgens die portefeulje is gegenereer met 'n 100,000 dollar aanvanklike kapitaalbasis en die opbrengs word bereken op die aandele kurwe. Die finale stap is om matplotlib gebruik om 'n twee-syfer plot van beide AAPL pryse, oorgetrek met die bewegende gemiddeldes plot en koop / verkoop seine, asook die aandele kurwe met dieselfde koop / verkoop seine. Die plot kode is geneem (en aangepas) van die Zipline implementering voorbeeld. Die grafiese uitset van die kode is soos volg. Ek het gebruik gemaak van die IPython Plak opdrag om hierdie direk in die IPython konsole sit terwyl hy in Ubuntu, sodat die grafiese uitset in die lig bly. Die pienk upticks verteenwoordig die aankoop van die voorraad, terwyl die swart downticks dit terug verteenwoordig verkoop: Soos gesien kan word van die strategie verloor geld oor die tydperk, met vyf heen-en terugreis ambagte. Dit is nie verbasend gegewe die gedrag van AAPL oor die tydperk, wat op 'n effense afwaartse neiging, gevolg deur 'n beduidende toename begin in 1998. Die Terugblik tydperk van die bewegende gemiddelde seine is redelik groot en die effek daarvan die wins van die finale handel , wat anders die strategie winsgewend moontlik gemaak. In die daaropvolgende artikels sal ons 'n meer gesofistikeerde middel van die ontleding van die prestasie, sowel as die beskrywing van hoe om die Terugblik tydperke van die individuele bewegende gemiddelde seine te optimaliseer skep. Michael Saal-Moore Mike is die stigter van QuantStart en is betrokke by die kwantitatiewe finansiële sektor vir die afgelope vyf jaar, in die eerste plek as 'n quant ontwikkelaar en later as 'n quant handelaar konsultasie vir verskansing funds. Advanced Matplotlib Series (video's en eindig enigste bron ) Sodra jy 'n basiese begrip van hoe Matplotlib werk, kan jy 'n belangstelling in die neem van jou kennis 'n bietjie verder het. Sommige van die mees komplekse grafiese behoeftes kom in die vorm van voorraad analise en kartering, of Forex. In hierdie handleiding reeks, gaan dek waar en hoe om outomaties aan te gryp, sorteer en organiseer 'n paar gratis voorraad en buitelandse valuta pryse data. Volgende, gaan dit in kaart met behulp van 'n paar van die meer gewilde aanwysers as 'n voorbeeld. Hier, goed te doen MACD (bewegende gemiddelde Konvergensie divergensie) en die RSI (relatiewe sterkte-indeks). Om ons te help bereken hierdie, sal ons Numpy gebruik, maar anders sal ons hierdie te bereken almal op ons eie. Om die data te verkry, gaan die Yahoo Finansies API te gebruik. Dit API terugkeer historiese prys data vir die ENKELE simbool ons spesifiseer en vir die tyd lank ons ​​vra. Hoe groter die tyd, hoe laer is die besluit van data wat ons kry. Dus, as jy vra vir 'n 1-dag tydraamwerk vir AAPL, sal jy 3 minute OHLC (oop hoë lae naby) data te kry. As jy vra vir 10 jaar die moeite werd is, sal jy daagliks data te kry, of selfs 3 dag tydraamwerke. Hou dit in gedagte en kies 'n tyd wat jou doelwitte pas. Ook, as jy 'n lae genoeg tyd raam kies en kry 'n hoë genoeg korrelig, die API sal die tyd terug te keer in 'n Unix tyd stempel, in vergelyking met 'n datumstempel. Sodra ons die data, sal ons dit wil grafiek. Om mee te begin, en net stip die lyne, maar die meeste mense sal wil hê om 'n kandelaar plot in plaas. Ons sal Matplotlibs kandelaar funksie te gebruik, en maak 'n eenvoudige wysig om dit te effens verbeter. Op dieselfde grafiek, sowel ook trek 'n paar bewegende gemiddelde berekeninge. Hierna is gaan 'n intrige te skep, en die grafiek van die volume. Ons kan nie volume plot op dieselfde intrige onmiddellik, want die skaal is anders. Om mee te begin, sal ons die volume onder plot in 'n ander sub plot, maar uiteindelik ook eintlik oortrek volume op dieselfde figuur en maak dit 'n bietjie deursigtig. Dan gaan 2 sub erwe voeg en plot 'n RSI aanwyser op die top en die MACD aanwyser op die bodem. Vir al hierdie, gaan die X-as deel, sodat ons kan in en uit in 1 plot zoom en hulle sal almal ooreenstem met die dieselfde tyd raam. Gaan plot in datum formaat vir die X-as, en pas net oor al die dinge wat ons kan vir estetika. Dit sluit in die verandering van bosluis etiket kleure, rand / ruggraat kleure, lyn kleure, OHLC kandelaar kleure, leer hoe om 'n vol grafiek (vir volume) te skep, histogramme, trek spesifieke lyne (hline vir RSI), en 'n hele klomp meer. Hier is die eindresultaat (Ek het beide 'n Python 3 en 'n Python 2 weergawe vir hierdie Python 3 eerste, dan Python 2. Maak seker jy gebruik van die een wat pas by jou Python weergawe.): Dis al vir nou. Wil jy meer tutoriale kop na die Tuisblad Matplotlib Crash Course


No comments:

Post a Comment