Jeg prøver å implementere en eksponentiell glidende gjennomsnittlig EMA på postgres, men når jeg sjekker dokumentasjon og tenker på det jo mer jeg prøver jo mer forvirret, er jeg. Formelen for EMA x er. Det ser ut til å være perfekt for en aggregator, som holder Resultatet av det siste beregnede elementet er akkurat det som må gjøres her. En aggregator produserer et enkelt resultat som reduksjon eller brett, og her trenger vi en liste en resultatkolonne som kart. Jeg har sjekket hvordan prosedyrer og funksjoner fungerer, men AFAIK de produserer en enkelt utgang, ikke en kolonne jeg har sett mange prosedyrer og funksjoner, men jeg kan ikke virkelig finne ut hvordan dette interagerer med relasjonsalgebra, spesielt når du gjør noe som dette, en EMA. Jeg hadde ikke flaks på å søke på Internett så langt Men definisjonen for en EMA er ganske enkel, jeg håper det er mulig å oversette denne definisjonen til noe som virker i postgres og er enkelt og effektivt, fordi det å flytte til NoSQL kommer til å være overdrevet i min sammenheng. beregner aggregeringen som gir resultatet i hver rad for hver delliste av inngangsdataene. Fordi det ser ut som det bruker aggregatoren opp til rad n, returnerer resultatet og deretter går til rad 0 for å beregne aggregeringen opp til rad n 1 igjen Er det noen måte å bruke akkumuleringen eller noen statisk variabel som i C, slik at dette må beregnes en gang Takk Trylks Jan 20 12 på 11 59. Nei, det bruker den akkumulerte verdien Hvis du kjører spørringen med heve info kommandoen uncommented, vil du kunne se at funksjonen bare kalles en gang for hver radutgang Postgresql utfører tilstandsverdien på hver rad hvis det var en endelig definisjon, som ville bli kalt for å omforme staten til en utgangsverdi araqnid Jan 20 12 kl 12 04. ErwinBrandstetter Jeg har returnert de fleste endringene - når det gjelder formatet på den første ankerdelen av spørringen, kan EMA x1 være tydelig representert med en enkeltlinje - dette korespndene til enkeltlinjen definerer den i spørsmålet i Når det gjelder den rekursive delen av spørringen, har jeg brukt mn - 1 i tilmeldingsbetingelsen for å indikere ekvivalensen av forholdet til EMA xn-1 i spørsmålet, selv om dette vil være mindre ytelsesfullt hvis ytelsen er et problem, OP kan endre tilmeldingsbetingelsen for å være som du foreslo Mark Bannister Jan 16 12 på 9 27. Jeg har lest diskusjonen du nevnte Det er aktuelt for PostgreSQL siden det er lov å lage brukerdefinert aggregatfunksjon ved hjelp av SQL i PostgreSQL, men ikke tillatt i SQL Server Bruke rekursiv CTE er en mulig måte i SQL Server, men jeg merker at CTE-måten kan medføre mer tabellskanning enn vindusfunksjoner. Så gjør jeg dette innlegget for å spørre om det er mulig å beregne eksponentielt glidende gjennomsnitt ved hjelp av SQL Server 2012-vinduet Fungerer akkurat som å beregne enkel glidende gjennomsnitt xiagao1982 Apr 14 13 ved 2 53. Først beregner du EMA SMA x i stedet for EMA x Second, er utjevningskonstanten din faktisk betaværdi i min formel, ikke alfa Med de to endrer SQLFiddle ser ut som dette Men det er fortsatt en liten forskjell mellom det faktiske resultatet og det forventede resultatet. Jeg ville gå tilbake og se om deres EMA-definisjon samsvarer med den jeg kjenner Sebastian Meine 7 mai 13 på 13 46. Jeg så bare på skjemaet i regnearket du vedlegget og det er langt fra standard EMA-definisjonen Min formel beregner eksponentielt glidende gjennomsnitt av de siste ti radene Regnearket beregner først standard gjennomsnittet i løpet av de siste ti radene og deretter det ubegrensede eksponentielt vektede glidende gjennomsnitt over alle gjennomsnitt Dette følger skjemaet her Sebastian Meine 7 mai 13 på 13 52. SQL kommer ikke med mange analytiske funksjoner, og hvis en bruker vil utføre analytiske beregninger i databasen må man skrive et stort antall lagrede prosedyrer eller funksjoner Dette er en enkel måte å skape et eksponentielt glidende gjennomsnitt på, som kan brukes til en rekke formål. Denne implementeringen fokuserer på markedsdata. Eksponensiell flytting A verages - Hva er det? Et eksponentielt Moving Gjennomsnitt, vanligvis referert til som EMA eller noen ganger EWMA, eksponentielt vektet Moving Average, er et glidende gjennomsnitt hvor vikene til det nyeste datapunktet er viktigere enn fjernt datapunkt. I en enkel bevegelse gjennomsnittlig, alle observasjoner har samme vekt EMA er populært i økonomiske applikasjoner der det kan bemerkes at risikometri bruker et sett med EMA for å beregne verdi-til-risiko Det er også ganske vanlig i tekniske analyseprogrammer som det oppfattes For å være mindre tilbakestående enn vanlig bevegelig gjennomsnittlig SMA, har en EMA også en parameter. Mens SMA har tilbakekoblingsvinduet som enparameter, har en EMA en utjevningsfaktor som hovedparameter. Utjevningsfaktoren kan enkelt omdannes inn i en halveringstid faktor som refererer til antall dager. Formelen for EMA er spesielt effektiv for beregningsberegninger, siden den kan fullføres ved hjelp av tidligere EMA va lue og den nye informasjonen Her er rammen finansielle data, hvor vi beregner EMA på en serie som består av sluttkurs. Hvor er dagens pris, er tiden og er forfallsfaktoren mindre eller lik 1 og EMA er ikke vanligvis definert for perioden mindre enn 2 I de fleste tilfeller er startverdien satt til den nåværende prisen ved Sample Implementering ved hjelp av markører. Deretter er en kodeksel som brukes til å implementere EMA i T-SQL, ved hjelp av SQL Server 2008, men det bør være kompatibel med tidligere versjoner av SQL Server også Vær oppmerksom på at funksjonen avhenger av lengdeparameteren som er lik halveringstiden. Dette konverteres i utjevningsfaktoren i den første linjen. Mens implementeringen bruker markører, kan man også implementere Dette er en renere måte å bruke indre sammenføyninger. Men for store datasett er det sannsynligvis at de både tidkrevende og minneintensive. utjevning 2 lengde 1 SET signalnavn signalnavn konvertere varchar 15, konverter int lengde SET-markør KURSOR FOR VELG A dato A lukk FRA dbo Markedsdata A HVOR Et markedsmarked og A dato mellom Startdate og Enddate ORDER BY En dato OPEN-markør FETCH NEXT Fra markør INTO dato Lukk HVIS FETCHSTATUS 0 BEGYNNES, hvis expaverage er null SET expaverage lukk ELSE SET ekspansiv ekspansiv utjevning lukk - expaverage INSERT IN Resultat dato lukk avg signal SELECT dato lukk ekspansiv signalnavn FETCH NEXT Fra markør INTO dato lukk END.
No comments:
Post a Comment