Dette er en Python wrapper for TA-LIB basert på Cython i stedet for SWIG. Fra hjemmesiden: TA-Lib er mye brukt av handelsprogramvareutviklere som krever å utføre teknisk analyse av finansielle markedsdata. Inkluderer 150 indikatorer som ADX, MACD, RSI, Stochastic, Bollinger Bands, etc. Lysestake mønster anerkjennelse Open-source API for CC, Java, Perl, Python og 100 Managed De originale Python bindingene bruker SWIG som dessverre er vanskelig å installere og arent så effektive som de kunne være. Derfor bruker dette prosjektet Cython og Numpy til å binde seg effektivt til TA-Lib-produserende resultater 2-4 ganger raskere enn SWIG-grensesnittet. Installer TA-Lib eller Les dokumentene I likhet med TA-Lib, gir funksjonsgrensesnittet en lett innpakning av de eksponerte TA-Lib-indikatorene. Hver funksjon returnerer et output-array og har standardverdier for parametrene, med mindre det angis som søkeordargumenter. Vanligvis vil disse funksjonene ha en innledende tilbakekallingsperiode (et nødvendig antall observasjoner før en utgang genereres) satt til NaN. Alle de følgende eksemplene bruker funksjonen API: Beregn et enkelt glidende gjennomsnitt av de lukkede prisene: Beregning av bollinger-band, med triple eksponensielt glidende gjennomsnitt: Beregning av momentum av de nære prisene, med en tidsperiode på 5: Abstrakt API Hurtigstart Hvis du er allerede kjent med bruk av funksjonen API, bør du føle deg hjemme ved hjelp av abstrakt API. Hver funksjon tar samme innspill, passert som en ordbok med Numpy-arrays: Funksjoner kan enten importeres direkte eller instantiated etter navn: Derfra er anropsfunksjoner i utgangspunktet det samme som funksjonen API: Lær om mer avansert bruk av TA-Lib her . Støttede indikatorer Vi kan vise alle TA-funksjonene som støttes av TA-Lib, enten som en liste eller som en dikt sortert etter gruppe (f. eks. Overlap Studies, Momentum Indicators, etc): Funksjon GrupperRelease Notater 8. september 2016 Forbedringer Legger til forutfylte kontrollpunkttabeller for flammekjernelaster. Dette gjør det mulig for lasteren å videresende dataene på en effektiv måte ved å capping den nedre datoen den må søke etter når du spørrer data. Kontrollpunktene skal ha nye deltasaker (1276). Oppdatert VagrantFile for å inkludere alle dev krav og bruk et nyere bilde (1310). Tillat korrelasjoner og regresjoner å beregnes mellom to 2D-faktorer ved å gjøre beregninger asset-wise (1307). Filtre har blitt gjort windowsafe som standard. Nå kan de sendes inn som argumenter til andre filtre, faktorer og klassifiserere (1338). Lagt til en valgfri groupby parameter til rangering (). topp(). og bunn (). (1349). Lagt til nye rørfiltre, Alle og Alle. som tar et annet filter og returnerer True hvis en eiendel produserte en True for noen dager i de forrige vindulengdene (1358). Lagt til nytt pipelinefilter AtLeastN. som tar et annet filter og en int N og returnerer True hvis en eiendel produserte en True på N eller flere dager i de foregående vindulengdedager (1367). Bruk eksternt bibliotek empirisk for risikobalkninger. Empirisk sammenstiller risikometriske beregninger mellom pyfolio og ziplin. Empirisk legger til tilpassede annualiseringsalternativer for retur av tilpassede frekvenser. (855) Legg til Aroon faktor. (1258) Legg til rask stokastisk oscillatorfaktor. (1255) Legg til en Dockerfil. (1254) Ny handelskalender som støtter sesjoner som spenner over midnatt, f. eks. 24 timer 6:01 til 6:00 PM sesjoner for futures trading. zipline. utils. tradingcalendar er nå utdatert. (1138) (1312) Tillat å skli en enkelt kolonne ut av en FactorFilterClassifier. (1267) Gi Ichimoku Cloud-faktor (1263) Tillat standardparametere på Pipeline-vilkår. (1263) Gi hastighet på endringsprosentfaktor. (1324) Tilveiebringe lineær vektet glidende gjennomsnittlig faktor. (1325) Legg til NotNullFilter. (1345) Tillat at kapitalendringer defineres av en målverdi. (1337) Legg til TrueRange-faktor. (1348) Legg til punkt i tid oppslag til assets. db. (1361) Gjør cantrade oppmerksom på asset8217s utveksling. (1346) Legg til downsample metode for alle beregbare vilkår. (1394) Legg til QuantopianUSFuturesCalendar. (1414) Aktiver publisering av gamle assets. db versjoner. (1430) Aktiver tidsplan for Futures trading kalender. (1442) Tillat regresjoner av lengde 1. (1466) Eksperimentell Legg til støtte for comingled Future og Equity History windows, og aktivere annen Fremtidig datatilgang via dataportalen. (1435) (1432) Feilfeilendringer GjennomsnittligDollarVolume innebygd faktor for å behandle manglende lukkede eller volumverdier som 0. Tidligere ble NaNs enkelt kassert før gjennomsnittet, og ga de gjenværende verdiene for mye vekt (1309). Fjern risikofri rente ved beregning av skarphet. Forholdet er nå gjennomsnittet av risikojustert avkastning over brudd på justert avkastning. (853) Sortino-forholdet vil returnere beregning i stedet for np. nan når nødvendig retur er lik null. Forholdet returnerer nå gjennomsnittet av risikojustert avkastning over nedsiderisiko. Fast mislabeled API ved å konvertere mar til downsiderisk. (747) Nedadrettingsrisiko returnerer nå kvadratroten av gjennomsnittet av nedre forskjellskvadratene. (747) Informasjonsforhold oppdatert til å returnere gjennomsnitt av risikojustert avkastning over standardavviket av risikojustert avkastning. (1322) Alfa - og sharpe-forhold er nå årlig. (1322) Fix enheter under lesing og skriving av daglig bar firsttradingday attributt. (1245) Valgfrie forsendelsesmoduler, når de mangler, forårsaker ikke lenger et NameError. (1246) Behandle planfunksjon argument som en tidsregel når en tidsregel, men ingen dataarkel leveres. (1221) Beskytt mot grenseforhold ved begynnelse og slutt handelsdag i tidsplanfunksjon. (1226) Bruk justeringer til forrige dag når du bruker historie med en frekvens på 1d. (1256) Mislykkes raskt på ugyldige rørledningskolonner, i stedet for å prøve å få tilgang til den ikke-eksisterende kolonnen. (1280) Fix AverageDollarVolume NaN håndtering. (1309) Ytelsesforbedringer til flammekjernelaster. (1227) Tillat samtidige blazeforespørsler. (1323) Forhindre manglende ledende bcolz-minuttdata fra å gjøre gjentatte unødvendige oppslag. (1451) Cache fremtidige kjedeoppslag. (1455) Vedlikehold og refactorings Fjernet gjenværende nevner av addhistory. (1287) Dokumentasjon Legg til testfixtur som kilder daglig prisinformasjon fra minuttinformasjon for prisinformasjon. (1243) Dataformatendringer BcolzDailyBarReader og BcolzDailyBarWriter bruker trading calendar instance, i stedet for trading dager serialisert til JSON. (1330) Endre formatet for assets. db for å støtte tidssøk. (1361) Endre BcolzMinuteBarReaderand BcolzMinuteBarWriter for å støtte varierende tikkestørrelser. (1428) Release 1.0.1 Dette er en mindre bugfix-frigivelse fra 1.0.0 og inneholder et lite antall feilrettinger og dokumentasjonsforbedringer. Forbedringer Lagt til støtte for brukerdefinerte kommisjonsmodeller. Se zipline. financemissionmissionModel-klassen for mer informasjon om implementering av en kommisjonsmodell. (1213) Lagt til støtte for ikke-flytende kolonner til Blaze-backed Pipeline datasett (1201). Lagt til zipline. pipeline. slice. Slice. en ny pipeline term designet for å trekke ut en enkelt kolonne fra en annen term. Skiver kan opprettes ved å indeksere inn i et begrep, tastet av aktiva. (1267) Feilrettelser Fikset en feil der rørledningslastere ikke var riktig initialisert av zipline. runalgorithm (). Dette har også påvirket invokasjoner av zipline-løp fra CLI. Fixed en feil som forårsaket zipline IPython celle magi å mislykkes (533233fae43c7ff74abfb0044f046978817cb4e4). Løst en feil i PerTrade-kommisjonsmodellen der provisjonene ble feilaktig brukt på hver delfylling av en ordre i stedet for på bestillingen selv, noe som resulterte i at algoritmer ble belastet for mye i provisjonene ved bestilling av store bestillinger. PerTrade bruker nå provisjoner på riktig måte (1213). Attributttilgang på CustomFactors som definerer flere utganger, returnerer nå en utgangsskive riktig når utdataene også er navnet på en faktormetode (1214). Erstatt utdatert bruk av pandas. io. data med pandasdatareader (1218). Løst et problem hvor. pyi stubfiler for zipline. api ble utelatt utelukkende fra PyPI-kildefordelingen. Conda-brukere bør være upåvirket (1230). Dokumentasjon Lagt til et nytt eksempel, zipline. examples. momentumpipeline. som utøver Pipeline API (1230). Høydepunkter Zipline 1.0 Rewrite (1105) Vi har omskrevet mye zipline og dets grunnleggende konsepter for å forbedre runtime ytelsen. Samtidig introduserte we8217ve flere nye APIer. På et høyt nivå, hentet tidligere versjoner av Zipline-simuleringer fra en multiplekset strøm av datakilder, som ble fusjonert via heapq. Denne strømmen ble matet til hovedsimuleringssløyfen og kjører klokken fremover. Denne sterke avhengigheten av å lese alle dataene gjorde det vanskelig å optimalisere simuleringsytelsen fordi det ikke var noen sammenheng mellom mengden data vi hentet og mengden data faktisk brukt av algoritmen. Nå henter vi bare data når algoritmen trenger det. En ny klasse, DataPortal. sender dataforespørsler til ulike datakilder og returnerer de forespurte verdiene. Dette gjør kjøretiden til en simuleringsskala mye tettere med kompleksiteten til algoritmen, i stedet for med antall ressurser som tilbys av datakildene. I stedet for datastrømmen som kjører klokken, gjenkjennes simuleringer nå gjennom et forhåndsberegnet sett med dag eller minutt tidsstempler. Tidsstemplene sendes ut av MinuteSimulationClock og DailySimulationClock. og forbrukes av hovedløkken i transform (). We8217ve pensjonerte datasidene (N) og historie-APIene, erstattet dem med flere metoder på BarData-objektet: nåværende (). historie(). cantrade (). og isstale (). Gamle APIer vil fortsette å fungere for nå, men vil utgjøre deprecasjonsvarsler. Du kan nå passere i en justeringskilde til DataPortal. og vi vil tilpasse prisinformasjonen når vi ser bakover på data. Priser og volumer for utførelse og presentert til algoritmen i data. current er eiendelenes as-omsatte verdi. Nye inngangspunkter (1173 og 1178) For å gjøre det enklere å bruke zipline har vi oppdatert inngangspunkter for en backtest. De tre støttede måtene å kjøre en backtest er nå: zipline. runalgo () zipline run zipline (IPython magic) Data Bundles (1173 og 1178) 1.0.0 introduserer databanker. Databasene er datagrupper som skal forhåndslastes og brukes til å kjøre backtests senere. Dette tillater at brukere ikke trenger å spesifisere hvilke tickers de er interessert i hver gang de kjører en algoritme. Dette tillater oss også å cache dataene mellom løpene. Som standard vil quantopian-quandl-bunken brukes som trekker data fra Quantopian8217s speil av Quandl WIKI datasettet. Nye bunter kan registreres med zipline. data. bundles. register () som: Denne funksjonen skal hente dataene den trenger, og bruk deretter forfatterne som har blitt sendt for å skrive dataene til disken på et sted som zipline kan finne senere. Disse dataene kan brukes i backtests ved å sende navnet som b-bundle argument til zipline run eller som bunt argument til zipline. runalgorithm (). For mer informasjon, se Data Bundles for mer informasjon. String Support in Pipeline (1174) Lagt til støtte for strengdata i Pipeline. zipline. pipeline. data. Column aksepterer nå objekt som en dtype, noe som betyr at lastere for den kolonnen skal sende ut vinduet iteratorer over den eksperimentelle nye LabelArray-klassen. Flere nye klassifiseringsmetoder har også blitt lagt til for å bygge Filter-forekomster basert på strengoperasjoner. De nye metodene er: elementof er definert for alle klassifiseringer. De gjenværende metodene er bare definert for streng-dtype klassifiserere. Forbedringer Gjøre dataladingsklassene har mer konsistente grensesnitt. Dette inkluderer egenkapitalboksforfattere, justeringsforfatter og db-forfatter for aktiva. Det nye grensesnittet er at ressursen som skal skrives til, er bestått på byggetiden, og dataene som skal skrives, leveres senere til skrivemetoden som dataframmer eller noen iterator av dataframmer. Denne modellen lar oss passere disse forfatterobjektene rundt som en ressurs for andre klasser og funksjoner for å konsumere (1109 og 1149). Lagt til maskeringen til zipline. pipeline. CustomFactor. Tilpassede faktorer kan nå bestås et filter ved instansiering. Dette forteller faktoren å bare beregne over aksjer som filteret returnerer True, i stedet for å alltid beregne over hele universet av aksjer. (1095) Lagt til zipline. utils. cache. ExpiringCache. Et cache som bryter inn oppføringer i en zipline. utils. cache. CachedObject. som styrer utløp av oppføringer basert på dt som leveres til get-metoden. (1130) Implementert zipline. pipeline. factors. RecarrayField. en ny pipeline term designet for å være output type av en CustomFactor med flere utganger. (1119) Lagt til ekstra utgangsparameter til zipline. pipeline. CustomFactor. Tilpassede faktorer er nå i stand til å beregne og returnere flere utganger, hver av dem er selv en faktor. (1119) Lagt til støtte for string-dtype pipeline kolonner. Lastere for disse kolonnene skal produsere forekomster av zipline. lib. labelarray. LabelArray når de krysses. siste () på strengkolonner produserer en streng-dtype zipline. pipeline. Classifier. (1174) Lagt til flere metoder for å konvertere Classifiers til Filters. De nye metodene er: - elementof () - startswith () - endswith () - hassubstring () - matches () elementof er definert for alle klassifikatorer. De gjenværende metodene er bare definert for strenger. (1174) Fetcher har blitt flyttet fra Quantopian intern kode til Zipline (1105). Eksperimentelle egenskaper Eksperimentelle funksjoner kan endres. Lagt til en ny zipline. lib. labelarray. LabelArray klasse for å effektivt representere og beregne på strengdata med numpy. Denne klassen er konseptuelt lik pandas. Categorical. ved at den representerer strengarrayer som arrayer av indekser i en (mindre) rekke unike strengverdier. (1174) Bug Fixes Highlights Lagt til et nytt EarningsCalendar datasett for bruk i Pipeline API. (905). AssetFinder speedups (830 og 817). Forbedret støtte for ikke-flytende dyptyper i rørledningen. Mest spesielt, vi støtter nå datetime64 og int64 dtypes for Factor. og BoundColumn. latest returnerer nå et riktig filterobjekt når kolonnen er av dtype bool. Zipline støtter nå numpy 1,10, pandas 0,17 og scipy 0,16 (969). Batchtransformasjoner har blitt utdatert og vil bli fjernet i en fremtidig utgave. Bruk av historie anbefales som et alternativ. Forbedringer Legger til en måte for brukerne å gi en kontekstbehandling til å bruke når de planlagte funksjonene utføres (inkludert håndledddata). Denne kontekstbehandleren vil bli bestått BarData-objektet for linjen og vil bli brukt i løpet av alle funksjonene som er planlagt å kjøre. Dette kan sendes til TradingAlgorithm ved søkeordet argument createeventcontext (828). Lagt til støtte for zipline. pipeline. factors. Factor forekomster med datetime64ns dtypes. (905) Lagt til et nytt EarningsCalendar datasett for bruk i Pipeline API. Dette datasettet gir et abstrakt grensesnitt for å legge inn inntjeningsmeldingsdata til en ny algoritme. En pandasbasert referanseimplementering for dette datasettet finnes i zipline. pipeline. loaders. earnings. og en eksperimentell blaze-basert implementering finnes i zipline. pipeline. loaders. blaze. earnings. (905). Lagt til nye innebygde faktorer, zipline. pipeline. factors. BusinessDaysUntilNextEarnings og zipline. pipeline. factors. BusinessDaysSincePreviousEarnings. Disse faktorene bruker det nye EarningsCalendar datasettet. (905). Lagt til isnan (). notnan () og isfinite () metoder til zipline. pipeline. factors. Factor (861). Lagt til zipline. pipeline. factors. Returns. en innebygd faktor som beregner prosentendringen i nær pris over den angitte vindulengden. (884). Lagt til en ny innebygd faktor: AverageDollarVolume. (927). Lagt til ExponentialWeightedMovingAverage og ExponentialWeightedMovingStdDev faktorer. (910). Tillat datasettklasser å være underklasse der underklasser arver alle kolonnene fra foreldrene. Disse kolonnene blir nye meldinger, slik at du kan registrere dem som egendefinert laster (924). Lagt til coerce () for å tvinge innganger fra en type til en annen før de overfører dem til funksjonen (948). Lagt til valgfritt () for å pakke inn andre preprosessorfunksjoner for å eksplisitt tillate None (947). Lagt til ensuretimezone () for å tillate at strengargumenter blir konvertert til datetime. tzinfo-objekter. Dette tillater også at tzinfo-objekter kan sendes direkte (947). Lagt til to valgfrie argumenter, dataquerytime og dataquerytz til BlazeLoader og BlazeEarningsCalendarLoader. Disse argumentene tillater brukeren å spesifisere noe cutoff-tid for data ved lasting fra ressursen. For eksempel, hvis jeg vil simulere å utføre min beforetradingstart-funksjon kl 8:45 USEastern så kunne jeg passere datetime. time (8, 45) og USEastern til lasteren. Dette betyr at data som er tidsstemplet på eller etter klokka 8:45, ikke blir sett på den dagen i simuleringen. Dataene vil bli gjort tilgjengelig neste dag (947). BoundColumn. latest returnerer nå et filter for kolonner av dtype bool (962). Lagt til støtte for Factor-forekomster med int64 dtype. Kolonne krever nå en missingvalue når dtype er integrert. (962) Det er også nå mulig å angi tilpassede manglende verdier for flyt. dato tid. og bool Pipeline vilkår. (962) Lagt til automatisk lukkestøtte for aksjer. Eventuelle stillinger i en egenkapital som når sin egenerklæring vil bli likvidert for kontanter i henhold til egenkapital8217s siste salgspris. Videre vil eventuelle åpne ordrer for egenkapitalen bli kansellert. Både futures og aksjer er nå automatisk stengt om morgenen på deres autokjøp. umiddelbart før beforetradingstart. (982) Eksperimentelle egenskaper Eksperimentelle funksjoner kan endres. Lagt til støtte for parameteriserte faktor-underklasser. Faktorer kan angi parametre som et klassenivåattributt som inneholder en tuple av parameternavn. Disse verdiene er da akseptert av konstruktøren og videresendt ved navn til faktor8217s beregningsfunksjon. Denne API-en er eksperimentell, og kan endres i fremtidige utgivelser. Feilrettelser Fikser et problem som vil føre til at den daglige metoden caches for å endre len til et SIDData-objekt. Dette ville få oss til å tro at objektet ikke var tomt selv når det var (826). Løser en feil hevet ved beregning av beta når referansedataene var sparsomme. I stedet blir numpy. nan returnert (859). Fikset en problemstilling () (872). Faste uregelmessige advarsler ved første nedlasting av egne data (: utgave 922). Korrigert feilmeldingene for setcommission () og setlippage () når de brukes utenfor initialiseringsfunksjonen. Disse feilene kalte funksjonene å overstyre i stedet for settet. Dette endret også unntakstypene som ble hentet fra OverrideSlippagePostInit og OverrideCommissionPostInit til SetSlippagePostInit og SetCommissionPostInit (923). Løst et problem i CLI som ville føre til at eiendeler ble lagt til to ganger. Dette ville kartlegge det samme symbolet til to forskjellige sider (942). Løst et problem hvor PerformancePeriod feilaktig rapporterte totalpositionsvalue når du opprettet en konto (950). Faste problemer rundt KeyErrors kommer fra historie og BarData på 32-biters python, hvor Assetene ikke sammenlignet riktig med int64s (959). Løst en feil hvor boolske operatører ikke ble riktig implementert på Filter (991). Installasjon av zipline nedgraderer ikke lenger numpy til 1.9.2 stille og ubetinget (969). Ytelse Fremskynder lookupsymbol () ved å legge til en utvidelse, AssetFinderCachedEquities. som laster aksjer i ordbøker og leder deretter lookupsymbol () til disse ordbøkene for å finne matchende aksjer (830). Forbedret ytelse av lookupsymbol () ved å utføre batchede spørringer. (817). Vedlikehold og refactorings Assetdatabaser inneholder nå versjoninformasjon for å sikre kompatibilitet med den nåværende Zipline-versjonen (815). Oppgrader forespørsler versjon til 2.9.1 (2ee40db) Oppgrader loggbok versjon til 0.12.5 (11465d9). Oppgrader Cython-versjonen til 0.23.4 (5f49fa2). Gjør zipline installasjonskrav mer fleksible (825). Bruk versioneer til å administrere prosjektversjonen og setup. py-versjonen (829). Fast integrering på travisbygging (840). Fast conda build, som nå bruker git kilde som kilde og leser krav ved å bruke setup. py, i stedet for å kopiere dem og la dem gå ut av synkronisering (937). Krev setuptools gt 18.0 (951). Dokumentasjon Dokument utgivelsesprosessen for utviklere (835). Lagt til referansedokumenter for Pipeline API. (864). Lagt til referansedokumenter for API-moduler for Asset Metadata. (864). Generert dokumentasjon inneholder nå koblinger til kildekoden for mange klasser og funksjoner. (864). Lagt til plattformspesifikk dokumentasjon som beskriver hvordan du finner binære avhengigheter. (883). Diverse Lagt til en showgraph () metode for å lage en pipeline som et bilde (836). Legger til subtest () decorator for å lage subtests uten noseparameterized. expand () som oppblåser testutgangen (833). Grenser Timerrapport i testutgang til 15 lengste tester (838). Treasury og benchmark nedlastinger vil nå vente opptil en time for å laste ned igjen hvis data returnert fra en ekstern kilde ikke strekker seg til forventet dato. (841). Lagt til et verktøy for å nedgradere eiendelene db til tidligere versjoner (941). Utgivelse 0.8.3 Høydepunkter Nytt dokumentasjonssystem med et nytt nettsted på zipline. io Større ytelsesforbedringer. Dynamisk historie. Ny brukerdefinert metode: Beforetradingstart. Ny api-funksjon: tidsplanfunksjon (). Ny api-funksjon: getenvironment (). Ny api-funksjon: setmaxleverage (). Ny api-funksjon: setdonotorderlist (). Pipeline API. Støtte for trading futures. Forbedringer Kontoobjekt: Legger til et kontoobjekt i kontekst for å spore informasjon om handelskontoen. Eksempel: Returnerer den oppgjorte kontantverdien som er lagret på kontoobjektet. Denne verdien oppdateres tilsvarende når algoritmen kjøres (396). HistoryContainer kan nå vokse dynamisk. Samtaler til historikk () vil nå kunne øke størrelsen eller endre formen på historikkbeholderen for å kunne betjene samtalen. addhistory () fungerer nå som et preformance-hint for forhåndsallokering av tilstrekkelig plass i beholderen. Denne endringen er bakoverkompatibel med historien. alle eksisterende algoritmer bør fortsette å fungere som påtenkt (412). Enkle transformasjoner ported fra quantopian og bruk historie. SIDData har nå metoder for: Disse metodene, med unntak av retur. godta flere dager. Hvis du kjører med minuttdata, beregner dette antall minutter i disse dager, regnskap for tidlig lukker og gjeldende tid og bruker transformasjonen over settet av minutter. Retur tar ingen parametere og returnerer den daglige avkastningen til den oppgitte eiendelen. Eksempel: Nye felt i ytelsesperiode. Ytelsesperioden har nye felt tilgjengelige i returverdi av todict. - brutto innflytelse - netto innflytelse - kort eksponering - lang eksponering - shorts count - longs count (464). Tillat rekkefølge () å jobbe med ulike markedsverdier (av Jeremiah Lowin). Foreløpig har orderpercent () og ordertarget% () begge operert som en prosentandel av self. portfolio. portfoliovalue. Denne PR lar dem fungere som prosentandeler av andre viktige MV'er. Legger også til context. getmarketvalue (). som gjør denne funksjonaliteten mulig. For eksempel: Kommandolinjealternativ for å skrive ut algo til stdout (av Andrea D8217Amore) (545). Ny brukerdefinert funksjon beforetradingstart. Denne funksjonen kan overstyres av brukeren til å bli kalt en gang før markedet åpner hver dag (389). Ny api funksjon tidsplanfunksjon (). Denne funksjonen lar brukeren planlegge en funksjon som skal kalles basert på mer kompliserte regler om dato og klokkeslett. For eksempel, ring funksjonen 15 minutter før markedet nærmer seg tidlig lukker (411). Ny api-funksjon setdonotorderlist (). Denne funksjonen aksepterer en liste over eiendeler og legger til en handelsvakt som forhindrer algoritmen i å handle dem. Legger til et listepunkt i tidsliste over leverte ETFer som folk kanskje vil markere som 8216 ikke handle8217 (478). Legger til en klasse for å representere verdipapirer. rekkefølge () og andre bestillingsfunksjoner krever nå en forekomst av sikkerhet i stedet for en int eller streng (520). Generaliser sikkerhetsklassen til aktiva. Dette er i preperation for å legge til støtte for andre typer eiendeler (535). Ny api funksjon getenvironment (). Denne funksjonen returnerer standardstrengen zipline som standard. Dette brukes slik at algoritmer kan ha forskjellig oppførsel på Quantopian og lokal zipline (384). Utvider getenvironment () for å avsløre mer av miljøet til algoritmen. Funksjonen aksepterer nå et argument som er feltet som skal returneres. Som standard er dette plattform som returnerer den gamle verdien av zipline, men følgende nye felt kan bli forespurt: arena. Er dette live trading eller backtesting datafrekvens. Er denne minuttmodus eller daglig modus startet. Simulerings startdato. slutt. Simulerings sluttdato. capitalbase. Startkapitalen for simuleringen. plattform. Plattformen som algoritmen kjører på. . En ordbok som inneholder alle disse feltene. Ny api-funksjon setmaxleveraged (). Denne metoden legger til en handelsvakt som forhindrer algoritmen i å overta seg selv (552). Eksperimentelle egenskaper Eksperimentelle funksjoner kan endres. Legger til ny pipeline-API. Rørledningen API er et declarativ API på høyt nivå som representerer etterfølgende vinduberegninger på store datasett (630). Legger til støtte for futures trading (637). Legger til rørlaster for blaze-uttrykk. Dette gjør det mulig for brukerne å trekke data fra et hvilket som helst format, blaze forstår og bruke det i Pipeline API. (775). Feilrettelser Løs en feil der de rapporterte avkastningene kan skje kraftig for tilfeldige tidsperioder (378). Løs en feil som forhindret debuggere fra å løse algoritmfilen (431). Videresend argumenter til brukerdefinert initieringsfunksjon (687). Løs en feil som ville føre til at treasury data blir lastet ned hver backtest mellom midnatt EST og tidspunktet da treasury data var tilgjengelig (793). Løs en feil som vil føre til at brukerdefinert analysefunksjon ikke blir kalt hvis den ble sendt som et søkeord-argument til TradingAlgorithm (819). Ytelse Store ytelsesforbedringer til historien (av Dale Jung) (488). Vedlikehold og refactorings Fjern enkel transformasjonskode. Disse er tilgjengelige som metoder for SIDData (550). Høydepunkter Kommandolinjegrensesnitt for å kjøre algoritmer direkte. IPython Magic zipline som kjører algoritmen definert i en IPython notisbokcelle. API-metoder for å bygge beskyttelsesforanstaltninger mot runaway-bestilling og uønskede korte stillinger. Ny historie () - funksjon for å få et Moving DataFrame av tidligere markedsdata (erstatter BatchTransform). En ny begynneropplæring. Forbedringer CLI: Legger til en CLI og IPython magi for zipline. Eksempel: Griper dataene fra yahoo finance, kjører filen dualmovingavg. py (og ser etter dualmovingavganalyze. py som, hvis funnet, vil bli utført etter at algoritmen har blitt kjørt), og gir ut dataFrame til dma. pickle (325) . IPython magic command (øverst på en IPython notisbokcelle). Eksempel: Er det samme som ovenfor unntatt i stedet for å utføre filen, ser etter algoritmen i cellen, og i stedet for å overføre perf df til en fil, oppretter en variabel i navneområdet som heter perf (325). Legger til Trading Controls til algoritmen API. Følgende funksjoner er nå tilgjengelige på TradingAlgorithm og for algo scripts: setmaxordersize (selv, sidNone, maxsharesNone, maxnotionalNone) Sett en grense på absolutt størrelse, i aksjer og eller total dollarverdi, av en enkelt rekkefølge plassert av denne algoritmen for et gitt sid . Hvis sid er None, brukes regelen til hvilken som helst rekkefølge som er plassert av algoritmen. Eksempel: setmaxpositionsize (selv, sidNone, maxsharesNone, maxnotionalNone) - Sett en grense på absolutt størrelse, i enten aksjer eller dollarverdi, av en hvilken som helst posisjon som holdes av algoritmen for et gitt sid. Hvis sid er None, blir regelen anvendt på hvilken som helst posisjon som holdes av algoritmen. Eksempel: setlongonly (self) Sett en regel som angir at algoritmen kanskje ikke har korte stillinger. Eksempel: Legger til en allapimethods klassemetode på TradingAlgorithm som returnerer en liste over alle TradingAlgorithm API-metoder (333). Utvidet rekord () - funksjonalitet for dynamisk navngivning. Funksjonen Record () kan nå ta posisjonsfeil før kvargene. All original bruk og funksjonalitet er det samme, men nå vil disse ekstra bruksområdene fungere: Kravene er ganske enkelt at de poritional args forekommer bare før kvargene (355). historien () er blitt portet fra Quantopian til Zipline og gir flyttende vindu med markedsdata. historien () erstatter BatchTransform. Det er raskere, fungerer for minuttnivådata og har et overlegen grensesnitt. For å bruke det, ring addhistory () innsiden av initialiseringen () og deretter motta en pandas DataFrame ved å ringe historie () fra innsiden av håndledata (). Se opp veiledningen og et eksempel. (345 og 357). Historien () støtter nå 1m vindu lengder (345). Feilrettelser Fiks justering av handelsdager og åpne og lukke i handelsmiljø (331). RollingPanel fikseres når du legger til nye felt (349). Prestasjonsvedlikehold og refactorings Fjernet uokumenterte og uprøvde HDF5- og CSV-datakilder (267). Refactor simparams (352). Refactoring av historien (340). Følgende avhengigheter har blitt oppdatert (zipline kan også fungere med andre versjoner): Høydepunkter Større reparasjoner til risikobalkninger, se Bug Fixes-delen. Funksjonshavn () - funksjonen, se Enhancements-delen Start av støtte for kvantopisk algoritme skript-syntaks, se ENH-seksjonen. support for conda pakkebehandling, se Bygg avdeling. Forbedringer Behandle alltid nye ordrer, dvs. på barer der håndledningsdata ern8217t kalles, men det er 8216clock8217 data, f. eks. en konsekvent referanse, prosessordrer. Tom posisjoner blir nå filtrert fra porteføljebeholderen. For å forhindre at algoritmer opererer på stillinger som ikke er i eksisterende lager av aksjer. Tidligere ville iterating over stillinger returnere stillinger for aksjer som hadde null aksjer holdt. (Hvor en eksplisitt innsjekkingsalgoritmkode for pos. amount 0 kan hindre at du bruker en ikke-eksisterende posisjon.) Legg til handelskalender for BMFampBovespa. Legg til begynnelsen av algo script-støtte. Starter på paritetsbanen med skript syntaksen i Quantopian8217s IDE på quantopian Eksempel: Legg til HDF5 og CSV kilder. Begrens håndledata til tider med markedsdata. For å hindre tilfeller der egendefinerte datatyper hadde ujusterte tidsstempler, kan du bare ringe håndleddsdata når markedsdata går gjennom. Tilpassede data som kommer før markedsdata vil fortsatt oppdatere datafeltet. Men håndteringen av disse dataene vil bare bli gjort når det er mulig markedsdata. Utvidet provisjon PerShare-metode for å tillate en minimumskostnad per handel. Legg til symbol api-funksjon En symbol () oppslagsfunksjon ble lagt til Quantopian. Ved å legge til samme API-funksjon til zipline kan vi gjøre kopieringsprogrammering av en Zipline algo til Quantopian enklere. Legg til simulert tilfeldig handelskilde. Lagt til en ny datakilde som avgir hendelser med bestemt brukerdefinert frekvens (minutt eller daglig). Dette tillater brukere å backtest og feilsøke en algoritme i minuttmodus for å gi en renere vei mot Quantopian. Fjern avhengighet av referanseindeks for handelsdagkalender. I stedet for benchmarks8217 indeksen, er handelskalenderen nå brukt til å fylle miljøet8217s handelsdager. Remove extradate field, since unlike the benchmarks list, the trading calendar can generate future dates, so dates for current day trading do not need to be appended. Motivations: The source for the open and closeearly close calendar and the trading day calendar is now the same, which should help prevent potential issues due to misalignment. Allows configurations where the benchmark is provided as a generator based data source to need to supply a second benchmark list just to populate dates. Port history() API method from Quantopian. Opens the core of the history() function that was previously only available on the Quantopian platform. The history method is analoguous to the batchtransform functiondecorator, but with a hopefully more precise specification of the frequency and period of the previous bar data that is captured. Example usage: N. B. this version of history lacks the backfilling capability that allows the return a full DataFrame on the first bar. Bug Fixes Adjust benchmark events to match market hours (241 ). Previously benchmark events were emitted at 0:00 on the day the benchmark related to: in 8216minute8217 emission mode this meant that the benchmarks were emitted before any intra-day trades were processed. Ensure perf stats are generated for all days When running with minutely emissions the simulator would report to the user that it simulated 8216n - 18217 days (where n is the number of days specified in the simulation params). Now the correct number of trading days are reported as being simulated. Fix repr for cumulative risk metrics. The repr for RiskMetricsCumulative was referring to an older structure of the class, causing an exception when printed. Also, now prints the last values in the metrics DataFrame. Prevent minute emission from crashing at end of available data. The next day calculation was causing an error when a minute emission algorithm reached the end of available data. Instead of a generic exception when available data is reached, raise and catch a named exception so that the tradesimulation loop can skip over, since the next market close is not needed at the end. Fix pandas indexing in trading calendar. This could alternatively be filed under Performance. Index using loc instead of the inefficient index-ing of day, then time. Prevent crash in vwap transform due to non-existent member. The WrongDataForTransform was referencing a self. fields member, which did not exist. Add a self. fields member set to price and volume and use it to iterate over during the check. Fix max drawdown calculation. The input into max drawdown was incorrect, causing the bad results. i. e. the compoundedlogreturns were not values representative of the algorithms total return at a given time, though calculatemaxdrawdown was treating the values as if they were. Instead, the algorithmperiodreturns series is now used, which does provide the total return. Fix cost basis calculation. Cost basis calculation now takes direction of txn into account. Closing a long position or covering a short shouldn8217t affect the cost basis. Fix floating point error in order(). Where order amounts that were near an integer could accidentally be floored or ceilinged (depending on being postive or negative) to the wrong integer. f. eks an amount stored internally as -27.99999 was converted to -27 instead of -28. Update perf period state when positions are changed by splits. Otherwise, self. positionamounts will be out of sync with position. amount, etc. Fix misalignment of downside series calc when using exact dates. An oddity that was exposed while working on making the return series passed to the risk module more exact, the series comparison between the returns and mean returns was unbalanced, because the mean returns were not masked down to the downside data points however, in most, if not all cases this was papered over by the call to. valid() which was removed in this change set. Check that self. logger exists before using it. self. logger is initialized as None and there is no guarantee that users have set it, so check that it exists before trying to pass messages to it. Prevent out of sync market closes in performance tracker. In situations where the performance tracker has been reset or patched to handle state juggling with warming up live data, the marketclose member of the performance tracker could end up out of sync with the current algo time as determined by the performance tracker. The symptom was dividends never triggering, because the end of day checks would not match the current time. Fix by having the tradesimulation loop be responsible, in minuteminute mode, for advancing the market close and passing that value to the performance tracker, instead of having the market close advanced by the performance tracker as well. Fix numerous cumulative and period risk calculations. The calculations that are expected to change are: cumulative. beta cumulative. alpha cumulative. information cumulative. sharpe period. sortino How Risk Calculations Are Changing Risk Fixes for Both Period and Cumulative Use sample instead of population for standard deviation. Add a rounding factor, so that if the two values are close for a given dt, that they do not count as a downside value, which would throw off the denominator of the standard deviation of the downside diffs. Standard Deviation Type Across the board the standard deviation has been standardized to using a 8216sample8217 calculation, whereas before cumulative risk was mostly using 8216population8217. Using ddof1 with np. std calculates as if the values are a sample. Cumulative Risk Fixes Use the daily algorithm returns and benchmarks instead of annualized mean returns. Use sample instead of population with standard deviation. The volatility is an input to other calculations so this change affects Sharpe and Information ratio calculations. The benchmark returns input is changed from annualized benchmark returns to the annualized mean returns. The benchmark returns input is changed from annualized benchmark returns to the annualized mean returns. Period Risk Fixes Now uses the downside risk of the daily return vs. the mean algorithm returns for the minimum acceptable return instead of the treasury return. The above required adding the calculation of the mean algorithm returns for period risk. Also, uses algorithmperiodreturns and tresauryperiodreturn as the cumulative Sortino does, instead of using algorithm returns for both inputs into the Sortino calculation. Performance Removed aliasdt transform in favor of property on SIDData. Adding a copy of the Event8217s dt field as datetime via the aliasdt generator, so that the API was forgiving and allowed both datetime and dt on a SIDData object, was creating noticeable overhead, even on an noop algorithms. Instead of incurring the cost of copying the datetime value and assigning it to the Event object on every event that is passed through the system, add a property to SIDData which acts as an alias datetime to dt. Eventually support for datafoo. datetime may be removed, and could be considered deprecated. Remove the drop of 8216null return8217 from cumulative returns. The check of existence of the null return key, and the drop of said return on every single bar was adding unneeded CPU time when an algorithm was run with minute emissions. Instead, add the 0.0 return with an index of the trading day before the start date. The removal of the null return was mainly in place so that the period calculation was not crashing on a non-date index value with the index as a date, the period return can also approximate volatility (even though the that volatility has high noise-to-signal strength because it uses only two values as an input.) Maintenance and Refactorings Allow simparams to provide data frequency for the algorithm. In the case that datafrequency of the algorithm is None, allow the simparams to provide the datafrequency . Also, defer to the algorithms data frequency, if provided. Added support for building and releasing via conda For those who prefer building with conda. pydata. org to compiling locally with pip. The following should install Zipline on many systems. Meet the Bots That Let You Trade Bitcoin in Your Sleep With all the allegations of Mt. Goxs automatiserte trading bot, som har blitt kalt Willy, blir algoritmisk handel en dårlig rap. However, using bots to trade on the financial markets is a long-established and legitimate activity and its easier than anywhere in the cryptocurrency markets. Så, hvordan fungerer disse robottene, og kan de virkelig få deg penger. Handelsboter er programvare som snakker direkte til finansielle utvekslinger, og legger kjøp og salg av bestillinger på dine vegne. De tar de vedtakene ved å se markedets prisbevegelser og reagere i henhold til et sett av forhåndsdefinerte regler. Joseph Lee er levende bevis på at de kan tjene penger. Lee, who founded derivatives exchange BTC. sx, based its trading engine on algorithmic trading bots that he wrote himself, and used between 2011 and 2013. He claims to have turned a simple 100 buy order into 200,000 in profits using his private software army. Selv om det virker forbausende, er djevelen i detalj, selvfølgelig: mye av prisøkningen stammer fra den massive prisøkningen i bitcoin sent i fjor. Faktisk er den reelle fortjenesten langt mer marginal, har han sagt. so dont expect to install a plug-in and write your own rags-to-riches story. Lee, som hevder at hans bots skiftet 10 av markedene hele volumet i begynnelsen, begynte å bruke metodene sine da prisen satte seg på 2-4 per bitcoin. Markedsfører Les første trading bot brukt interchange arbitrage, bemerker forskjeller i priser mellom ordre på ulike utvekslinger, og kjøp på noen børser mens selge på andre. Jeg tok i hovedsak likviditet fra et marked der det var noen og injiserte det i et marked der det ikke var, forklarte han. Back then, Mt. Gox dominert markedet, og andre børser hadde dårlig prising fordi deres levering av bitcoins var begrenset. Så, jeg kjøpte for billig på Mt. Gox og solgte dem til andre markeder. Jeg kjøpte mye bitcoin i tertiære markeder. In short, he acted as a market maker on less-established exchanges. Established practice Lee may have written his own bots, but today, the bitcoin trading bot market is far more established, with several available off the shelf. Examples include Butter Bot. which offers an online trading bot accessed via a Google Chrome plug-in, and Haas Online. which sells a Windows-based personal trading server. CryptoTrader offers a trading bot marketplace, which allows people to develop bots using different trading strategies, and then rent them to others. Handel med algoritme er ikke ny i finansverdenen: selskaper i konvensjonelle finansmarkeder har brukt metoden i årevis. Lee sa imidlertid at bitcoin-utvekslingssamfunnet er en av de første hvor utveksling gir kunder datamaskiner direkte markedsadgang (DMA). This enables individual traders to have their computer access the exchanges electronic order books directly. Det er en tjeneste som normalt kun er tilgjengelig for meglere og investeringshus i konvensjonelle markeder. Tidligere var det menneskene som hadde midler til å betale for et 10.000 pluss et år Bloomberg terminal med en API-tilkobling som kunne prøve seg på bothandel, forklarte Lee. Så, hvorfor er det ikke alle som gjør det Pablo Lema, grunnlegger av Butter Bot, sier at bots arent en brann og glemmer teknologi som gjør det mulig for dilettanter å tjene penger uten å prøve: Trading bots krever at brukerne har minst en grunnleggende forståelse av markedet, trenger å Modifiseres og tweaked av brukeren i henhold til de overordnede markedsforholdene, og også i henhold til egen risikoprofil. Trading botstrategi Lee begynte å kapitalisere seg i et svært ineffektivt marked, hvor utveksling med tilstrekkelig likviditet kunne regnes på den ene siden. Situasjonen mens du fortsatt trenger forbedring er minst litt bedre nå. Muligheter for intervallbyttearbitrage eksisterer fortsatt, men han anbefaler å bruke tekniske analysebots. Men handel er ikke nødvendigvis basert på teknisk analyse alene. Its difficult to program a computer to react to fundamental market conditions such as, say, rumours about the Chinese government taking a new stance on bitcoin, or the latest bitcoin-based black market trading site shutting down. Mange roboter vil bruke et eksponentielt glidende gjennomsnitt (EMA) som utgangspunkt. Disse gjennomsnittene sporer markedspriser over et angitt tidsrom, og bots kan programmeres til å reagere på hva den prisen gjør, for eksempel å bevege seg utover visse terskler. Hvis du har en konservativ appetitt, velg å handle på et langsommere grunnlag, sa Lee. Hvis du plukket daglig i stedet for timeperioder, settes det generelt som et trygt bud for å bli involvert i det grunnleggende om handel, enda mindre bothandel. Andre foreslår tweaks til EMA-tilnærmingen. If you look to the biggest downside of an EMA then you see its almost always to late. And this is the part that can be improved, said Stephan de Haas, founder of the Haas Online trading bot company, adding. Denne forbedringen kan gjøres ved å bruke et DEMA dobbelt eksponentielt glidende gjennomsnitt eller TEMA triple eksponentielt glidende gjennomsnitt i stedet. De har muligheten til å reagere raskere enn EMA, og deres beregning er EMA-relatert, slik at den ser ut på samme måte mens den gir bedre fart. There are still other methods, he pointed out, such as relative strength indicators and regression analysis. Denne typen analyse fungerer perfekt for prosesser (i dette tilfellet et prismarked) som er ustabile, sier han, i en beskrivelse som synes å oppsummere berg-og dalbane verden av bitcoin. Ved å bruke disse dataene kan det gi en god følelse av hva som kan forventes i. future. Hemmelige strategier Imidlertid er teknisk analyse en disiplin, og disse tingene er indikatorer, ikke strategier. Du kommer fortsatt til å komme med ditt eget sett med handelsregler, hvis du skal fortelle en bot hvordan du skal ta beslutninger. De virkelig gode strategiene holdes hemmelige og lukkede, sier Lema. Det er gjort av alle: Midt og høyt nivå handelsmenn og clearinghus. Det er vanskelig for en handelsmann som er ny for å forstå markedet. BTC or Bust, the creator of the Crackin Kraken bot found on Cryptotrader, points to a set of algorithms in a library of technical analysis algorithms known as TA-Lib. sammen med tilpassede indikatorer utviklet av botforfatteren. These are typically combined to find buy and sell signals in the market, BTC or Bust told CoinDesk. Bots kan programmeres til å være prediktive eller reaktive, eller en kombinasjon av begge, ved hjelp av disse kombinerte algoritmer, sa det og forklarte: For eksempel, si at bitcoin-prisen krasjer. A predictive algorithm might start buying as it expects the price will quickly rebound, while a reactive algorithm might start selling as it sees the price is dropping. Both types have their advantages and disadvantages the challenge is to have the bot employ the correct strategy at the correct time. Evnen til å sette disse strategiene er en av tingene som vil stoppe bots fra å balansere markedet. Selv om mange bruker dem, går teorien om at de forskjellige strategiene de bruker, ville hindre dem alle til å flytte markedet i en retning og skape en kunstig boble eller verre, en flashkrasj. Ikke for alle. Er det mulig å bot for deg. They offer a variety of advantages, not least of which is the ability to diligently trade on your behalf, 247, and the ability to remove all of the emotion from trading (assuming you dont barge in and terminate them when youre feeling irrationally antsy). On the other hand, if you dont have the financial smarts to put together a trading strategy, then bots could simply end up automating a set of poor market trading decisions. For mange, hvem tror på bitcoins langsiktige potensial, kan den mest grunnleggende handelsstrategien være buy-and-hold. Uansett om du bestemmer deg for å automatisere handler, gjelder de grunnleggende reglene: Ikke handle mer enn du har råd til å tape, og ikke gå inn i noen investering uten minst en grunnleggende forståelse av hva du gjør. Ansvarsfraskrivelse: Uttalelser i denne artikkelen bør ikke betraktes som investeringsrådgivning, som er best søkt direkte fra en kvalifisert profesjonell. Previous Article Can Chinese Exchange OKCoin Rescue Mt. Gox Creditors Next Article How Purse. io Can Shave 25 Off Bitcoin Buyers Amazon Bills
No comments:
Post a Comment