Friday 11 August 2017

Exponentiell Glidande Medelvärde Center Of Massa


Jag har profilerat detta med hjälp av Visual C-profiler och det står för cirka 35 av speltiden. Det exponentiella glidande medlet kallas mer än en biljon gånger, eftersom det används upprepade gånger vid behandling av mer än 400 gigabyte data. Data kommer från En raidnivå 0 solid state disk array, så att läsa datakonton för mindre än 5 av tiden Prisstorleken är cirka 100 Jag förstegrade uppgiften med en faktor 4 genom att förberäkna så mycket data som möjligt Sedan var jag Kunna öka den igen med en faktor PaeneInsula 30 okt på 20 41. Jag kunde öka hastigheten igen med en faktor 12 genom multithreading det är naturen av data så att den kan multithreaded på så sätt att Lasten är perfekt balanserad Och jag har den igång på en i7 990x som har 6 kärnor, överhettad av totalt 12, överklockade PaeneInsula 30 okt på 20 51. Säker, multithreading kan hjälpa Men du kan nästan säkert förbättra prestanda på en enda Gängad maskin. Först beräknar du det i fel riktning Endast de modernaste maskinerna kan göra negativa steg före förhämtning Nästan alla maskiner är snabbare för enhetssteg Jag ändrar riktningen för matrisen så att du skannar från låg till hög snarare än hög till låg är Nästan alltid bättre. Näste omskrivning lite - snälla tillåta mig att förkorta de variabla namnen för att göra det lättare att skriva. Förresten kommer jag att börja använda shorthands p för pris och s för utjämning, för att spara typing jag m lat. Det är förmodligen snabbare att göra. Latensen mellan avg i och avg i-2 är då 1 multiplicera och en tillägg, snarare än en subtrahering och en multiplicering mellan avg i och avg i-1 I e mer än dubbelt så fort. I allmänhet , Du vill skriva om återkommande så att avg i beräknas i termer av avg j ​​för j så långt tillbaka som möjligt, utan att fylla i maskinen, antingen exekveringsenheter eller register. Du gör i grunden mer multipliceringar överallt i ordning Att få färre multipelkedjor och subtrahera den kritiska Väg Hoppar från avg i-2 till avg i är lätt, du kan noga göra tre och fyra Exakt hur långt beror på din maskin, och hur många register du har. Och latens för floating point adder och multiplikator Eller bättre Ändå är smaken av kombinerad multiplikator-instruktion du har - alla moderna maskiner har dem E g om MADD eller MSUB är 7 cykler lång kan du göra upp till 6 andra beräkningar i sin skugga, även om du bara har en enda flytande Punktenhet Full pipelined Och så vidare Mindre om pipelined varje andra cykel, vilket är vanligt för dubbel precision på äldre chips och GPU: er. Sammansättningskoden ska vara mjukvara pipelined så att olika loop-iterationer överlappar. En bra kompilator bör göra det för dig, men du kanske Måste skriva om C-koden för att få bästa möjliga prestanda. Med det sättet betyder det inte att jag borde skapa en uppsättning avg i stället skulle du behöva två medelvärden om avg i beräknas i form av avg i-2, Och så vidare Du kan använda en rad avg jag om du Du vill ha, men jag tror att du bara behöver ha 2 eller 4 avgs, kallade, kreativt, avg0 och avg1 2, 3 och rotera dem. Denna typ av trick, dela upp en ackumulator eller medelvärde i två eller flera, som kombinerar flera steg Av återkommande är vanligt i högprestandakod. Oj, ja, beräkna ss osv. Om jag har gjort det rätt, i oändlig precision, skulle det vara identiskt. Dubbelkoll mig, tack. Men i slutgiltig precision FP kan dina resultat skilja sig, Förhoppningsvis bara lite på grund av olika avrundningar Om avrollningen är korrekt och svaren är väsentligt annorlunda har du förmodligen en numeriskt instabil algoritm. Du är den som villyld know. Note floating point avrundningsfel kommer att ändra de låga bitarna i ditt svar Både för att Om att omarrangera koden och använda MADD Jag tror det är nog okej, men du måste bestämma. Notera beräkningarna för avg i och avg i-1 är nu självständiga Så du kan använda en SIMD instruktion, som Intel SSE2, vilket medger Operation på två 64 Bitvärden i ett 128 bitars brett register i taget Det ska vara bra för nästan 2X på en maskin som har tillräckligt med ALU. Om du har tillräckligt med register för att skriva om avg i när det gäller avg i-4 och jag är säker på att du gör det IA64, då kan du gå 4X bred om du har tillgång till en maskin som 256 bitars AVX. På en GPU kan du gå för djupare återkommande, omskriva avg i när det gäller avg i-8 och så vidare. Vissa GPU har instruktioner Som beräknar AX B eller till och med AX BY som en enskild instruktion Även om det är vanligare för 32 bit än för 64 bitars precision. At någon punkt skulle jag förmodligen börja fråga, vill du göra detta på flera priser i taget Inte bara gör detta Hjälpa dig med multithreading, det kommer också att passa det för att köra på en GPU och använda bred SIMD. Minor Late Addition. I är lite embarassed att inte ha tillämpat Horner s Rule för uttryck som. Lite effektivare lite annorlunda resultat med rounding. In Mitt försvar, någon anständig kompilator borde göra det för dig. Men Hrners regel gör beredskapskedjan Per när det gäller multiplicer Du kan behöva avlösa och pipelinesa slingan några gånger eller så kan du göra. Varför du precalculate. DEFINITION of Mass Index. En form av teknisk analys som undersöker intervallet mellan höga och låga aktiekurser över en period Tid Massindexet, utvecklat av Donald Dorsey i början av 1990-talet, tyder på att en omkastning av den nuvarande trenden sannolikt kommer att äga rum när intervallet breddar sig bortom en viss punkt och därefter kontrakt. BREAKNING NED Massindex. För att bestämma massindexet, Beräkna först det nio dagars exponentiella glidande genomsnittliga EMA av intervallet mellan de höga och låga priserna under en tidsperiod vanligen 25 dagar Dela sedan den här siffran med det nio dagars exponentiella glidande medelvärdet för glidande medelvärdet i täljaren. Ekvationen ser ut som Detta. Dorsey antydde att när siffran hoppar över 27 skapar en bulge och sedan sjunker under 26 5 är beståndet redo att byta kurs. Ett index på 27 representerar ett ganska volatilt lager, så vissa handlare sätter En lägre baslinje vid bestämning av närvaron av ett prisutsläpp. Exponentialrörande medelvärde - EMA. BREAKNING NED Exponentiell rörlig genomsnitts - EMA. De 12 och 26-dagars EMA-erna är de mest populära kortsiktiga medelvärdena och de används för att skapa indikatorer Som den rörliga genomsnittliga konvergensdivergensen MACD och den procentuella prisoscillatorn PPO I allmänhet används de 50 och 200-dagars EMA-signalerna som signaler för långsiktiga trender. Trader som använder teknisk analys hittar glidande medelvärden som är mycket användbara och insiktsfulla när de tillämpas korrekt men Skapa förödelse när de används felaktigt eller felaktigt tolkas. Alla rörliga medelvärden som vanligtvis används i teknisk analys är av sin natur släpande indikatorer. Följaktligen bör slutsatserna från att tillämpa ett glidande medelvärde till ett visst marknadsdiagram vara att bekräfta ett marknadsförflytt eller att Indikerar dess styrka Mycket ofta, när en glidande genomsnittlig indikatorlinje har förändrats för att återspegla ett betydande drag på marknaden, är den optimala marknadens e-punkt Ntry har redan gått En EMA tjänar till att lindra detta dilemma i viss utsträckning Eftersom EMA-beräkningen lägger större vikt på de senaste dataen kramar prisåtgärden lite snävare och reagerar därför snabbare. Det är önskvärt när en EMA används för att härleda en Trading entry signal. Interpreting EMA. Liksom alla glidande medelindikatorer är de mycket bättre lämpade för trending marknader När marknaden har en stark och hållbar uppgång kommer EMA-indikatorlinjen också att visa en uptrend och vice versa för en nedåtriktad trend A Vaksam näringsidkare kommer inte bara att uppmärksamma riktningen för EMA-linjen men också förhållandet mellan förändringshastigheten från en stapel till nästa. När prisåtgärden för en stark uppåtgående börjar fläta och vända omser EMA s-hastigheten Av förändring från en stapel till nästa kommer att minska till dess att indikatorlinjen plattas och förändringshastigheten är noll. På grund av den släpande effekten, vid denna punkt, eller till och med några få barer innan, prishöjningen Jon borde redan ha reverserat Det följer därför att observera en konsekvent minskning i förändringshastigheten hos EMA kan användas som en indikator som ytterligare kan motverka det dilemma som orsakas av den släpande effekten av att flytta genomsnittliga användningar av EMA. EMA är vanliga Används tillsammans med andra indikatorer för att bekräfta betydande marknadsrörelser och att mäta deras giltighet För handlare som handlar inom dag och fasta marknader är EMA mer tillämpligt. Oftast använder handlare EMA för att bestämma en handelsförskjutning. Till exempel om en EMA på en Dagligt diagram visar en stark uppåtgående trend, en strategi för intraday trader kan vara att endast handla från långsidan på ett intradagskarta.

No comments:

Post a Comment