Om prestanda av den här koden är kritisk, kan det vara meningsfullt att undvika heaptilldelningar för ljus s. Jag tror att det mest rimliga sättet att göra det skulle vara att göra ljus till en struktur. Även om mutable värde typer är onda. Så jag skulle också refactor Candle vara oföränderlig. Detta innebär också att implementeringen av newestCandle skulle behöva bytas, förmodligen till ett par dubbla fält (eller alternativt en separat variabel och återställbar klass). Jag ser ingen annan potentiell prestationsproblem i din kod. Men när det gäller prestanda, bör du alltid lita på profilering, inte din (eller någons) intuition. Jag gillar inte några namn på dina metoder. Specifikt: ValueUpdated. Metodnamn ska vanligtvis vara i formen göra något, inte något hände. Så jag tror att ett bättre namn skulle vara UpdateValue. Lägg till. Ändra. Det här är de två grundläggande funktionerna i din MovingAverage och jag tror att de namnen inte uttrycker meningen väl. Jag skulle kalla dem något som MoveAndSetCurrent och SetCurrent. respektive. Även om en sådan namngivning indikerar att de grundläggande operationerna snarare skulle vara Flytta och Ställa Nuvarande. Dubbla Exponentiella Flytta Medeltal Förklarade Traders har åberopat glidande medelvärden som hjälper till att fastställa hög sannolikhet för handelsintäkter och lönsamma utgångar i många år. Ett välkänt problem med glidande medelvärden är dock den allvarliga fördröjningen som finns i de flesta typer av glidande medelvärden. Dubbel exponentiell glidande medelvärde (DEMA) ger en lösning genom att beräkna en snabbare medelvärdesmetodik. Historien om dubbel exponentiell rörlig genomsnittsnivå I teknisk analys. Termen glidande medel avser ett genomsnitt av priset för ett visst handelsinstrument under en viss tidsperiod. Exempelvis beräknar ett 10-dagars glidande medel genomsnittskursen för ett visst instrument de senaste 10 tio dagarna, ett 200-dagars glidande medelvärde beräknar genomsnittspriset för de senaste 200 dagarna. Varje dag går utkikningsperioden till basberäkningar under det sista X-antalet dagar. Ett rörligt medelvärde framträder som en jämn kurvlinje som ger en visuell representation av den långsiktiga trenden i ett instrument. Snabbare rörliga medelvärden, med kortare utkikningsperioder, är snabbare långsammare glidande medelvärden, med längre avkänningsperioder, är mjukare. Eftersom ett glidande medelvärde är en bakåtblickande indikator, suger den. Det dubbla exponentiella glidande medlet (DEMA), som visas i Figur 1, utvecklades av Patrick Mulloy i ett försök att minska mängden fördröjningstid som finns i traditionella glidande medelvärden. Det introducerades först i februari 1994, Technical Analysis of Stocks Amp Commodities-tidningen i Mulloys artikel Utjämning av data med snabbare rörliga genomsnittsvärden. (För en primer på teknisk analys, ta en titt på vår Tekniska Analys Tutorial.) Figur 1: Denna en minuts diagram av e-mini Russell 2000 terminsavtal visar två olika dubbla exponentiella glidande medelvärden en 55-period visas i blått, En 21-period i rosa färg. Beräkning av en DEMA Som Mulloy förklarar i sin ursprungliga artikel är DEMA inte bara en dubbel EMA med två gånger fördröjningstiden för en enda EMA men är en kompositimplementering av enkla och dubbla EMA som producerar en annan EMA med mindre lag än någon av originalet två. Med andra ord är DEMA inte bara två EMA: er kombinerade, eller ett rörligt medelvärde för ett glidande medelvärde, men är en beräkning av både enkla och dubbla EMA. Nästan alla handelsanalysplattformar har DEMA som en indikator som kan läggas till diagram. Därför kan handlare använda DEMA utan att veta matematiken bakom beräkningarna och utan att behöva skriva eller mata in någon kod. Att jämföra DEMA med traditionella rörliga medelvärden Flytta genomsnitt är en av de mest populära metoderna för teknisk analys. Många handlare använder dem för att upptäcka trendbackbacks. Speciellt i ett glidande medelvärde, där två rörliga medelvärden av olika längder placeras på ett diagram. Poäng där de glidande medelvärdena överstiger kan innebära köp - eller försäljningsmöjligheter. DEMA kan hjälpa näringsidkare att komma tillbaka omedelbart eftersom det är snabbare att svara på förändringar i marknadsaktiviteten. Figur 2 visar ett exempel på e-mini Russell 2000 terminsavtal. Den här en minutsdiagrammet har fyra rörliga medelvärder: 21-period DEMA (rosa) 55-period DEMA (mörkblå) 21-period MA (ljusblå) 55-period MA (ljusgrön) Figur 2: Detta en minuts diagram över Kontraktet för e-mini Russell 2000 futures illustrerar DEMAs snabba svarstid när de används i en crossover. Lägg märke till hur DEMA crossover i båda fallen visas betydligt tidigare än MA crossovers. Den första DEMA-korsningen visas kl 12:29 och nästa stapel öppnas till ett pris av 663.20. MA crossover å andra sidan bildar klockan 12:34 och nästa bar öppningspriset är 660,50. I nästa uppsättning övergångar visas DEMA-korsningen på 1:33 och nästa stapel öppnas vid 658. MA, däremot, bildar klockan 1:43, och nästa bar öppnas vid 662.90. I varje fall ger DEMA-korsningen en fördel att komma in i trenden tidigare än MA-korsningen. (För mer insikt, läs Moving Averages Tutorial.) Handel med en DEMA Ovanstående rörliga genomsnittliga crossover-exempel illustrerar effektiviteten av att använda det snabbare dubbla exponentiella glidande medlet. Förutom att använda DEMA som en fristående indikator eller i en crossover-inställning kan DEMA användas i olika indikatorer där logiken baseras på ett glidande medelvärde. Tekniska analysverktyg som Bollinger Bands. Flyttande genomsnittlig konvergeradivergens (MACD) och triple exponentiell glidande medelvärde (TRIX) är baserade på glidande medeltyper och kan modifieras för att införliva en DEMA i stället för andra mer traditionella typer av glidande medelvärden. Att ersätta DEMA kan hjälpa handlare att upptäcka olika köp - och försäljningsmöjligheter som ligger framför de som tillhandahålls av de MA eller EMA som traditionellt används i dessa indikatorer. Självklart leder det sig oftare till en trend snarare än senare, vilket leder till högre vinster. Figur 2 illustrerar denna princip - om vi skulle använda övergångarna som köp och sälj signaler. Vi skulle gå in i branschen betydligt tidigare när vi använde DEMA crossover i motsats till MA crossover. Bottom Line Traders och investerare har länge använt glidande medelvärden i sin marknadsanalys. Flytta medelvärden är ett allmänt använt tekniskt analysverktyg som ger möjlighet att snabbt visa och tolka den långsiktiga trenden i ett visst handelsinstrument. Eftersom glidande medelvärden av sin natur är slående indikatorer. Det är till hjälp att tweak det rörliga genomsnittet för att beräkna en snabbare och mer responsiv indikator. Det dubbla exponentiella glidande genomsnittet ger handlare och investerare en bild av den långsiktiga trenden, med den fördelen att det är ett snabbare rörligt medelvärde med mindre fördröjningstid. (För relaterad läsning, ta en titt på Moving Average MACD Combo och Simple vs Exponential Moving Average.) Artikel 50 är en förhandlings - och avvecklingsklausul i EU-fördraget som beskriver de åtgärder som ska vidtas för vilket land som helst. Beta är ett mått på volatiliteten, eller systematisk risk, av en säkerhet eller en portfölj i jämförelse med marknaden som helhet. En typ av skatt som tas ut på kapitalvinster som uppkommit av individer och företag. Realisationsvinster är vinsten som en investerare. En beställning att köpa en säkerhet till eller under ett angivet pris. En köpgränsorder tillåter näringsidkare och investerare att specificera. En IRS-regel (Internal Revenue Service Rule) som tillåter utbetalningar från ett IRA-konto i samband med straff. Regeln kräver det. Den första försäljningen av lager av ett privat företag till allmänheten. IPOs utfärdas ofta av mindre, yngre företag som söker. Jag har i huvudsak en mängd värden som denna: Ovanstående array är översimplifierad, jag samlar 1 värde per millisekund i min riktiga kod och jag behöver bearbeta utmatningen på en algoritm som jag skrev För att hitta den närmaste toppen före en tidpunkt. Min logik misslyckas eftersom i mitt exempel ovan är 0.36 den riktiga toppen, men min algoritm skulle se bakåt och se det sista numret 0,25 som toppen, eftersom det är en minskning till 0,24 före den. Målet är att ta dessa värden och tillämpa en algoritm för dem som släpper ut dem lite så att jag har mer linjära värden. (Dvs: Jag tycker att mina resultat är kurva, inte jaggediga) Jag har blivit tillsagd att tillämpa ett exponentiellt glidande medelfilter till mina värden. Hur kan jag göra det här Det är verkligen svårt för mig att läsa matematiska ekvationer, jag hanterar mycket bättre med kod. Hur bearbetar jag värden i min array, tillämpar en exponentiell glidande genomsnittlig beräkning för att jämföra dem ut frågade 8 feb 12 kl 20:27 för att beräkna ett exponentiellt glidande medelvärde. Du behöver behålla en del tillstånd och du behöver en inställningsparameter. Detta kräver en liten klass (förutsatt att du använder Java 5 eller senare): Instantiate with the decay parameteren du vill ha (det kan ta tuning ska vara mellan 0 och 1) och sedan använda genomsnittet () för att filtrera. När du läser en sida om någon matematisk återkommande, behöver allt du verkligen vet när du gör det till kod, att matematiker gillar att skriva index i arrayer och sekvenser med prenumerationer. (Theyve några andra noteringar också, vilket inte hjälper.) EMA är dock ganska enkel eftersom du bara behöver komma ihåg ett gammalt värde, inga komplicerade tillståndsskivor krävs. Svarat 8 feb 12 kl 20:42 TKKocheran: Ganska mycket. Det är inte bra när saker kan vara enkla (Om du börjar med en ny sekvens, få en ny medelvärde.) Observera att de första villkoren i den genomsnittliga sekvensen kommer att hoppa runt lite på grund av gränseffekter, men du får de med andra glidande medelvärden för. En bra fördel är dock att du kan förflytta den glidande genomsnittliga logiken till medelvärdena och experimentera utan att störa resten av ditt program för mycket. Ndash Donal Fellows Feb 9 12 på 0:06 Jag har svårt att förstå dina frågor, men jag kommer att försöka svara ändå. 1) Om din algoritm hittat 0,25 istället för 0,36, då är det fel. Det är fel eftersom det förutsätter en monotonisk ökning eller minskning (det går alltid upp eller går alltid ner). Om du inte genomsnittet ALLA dina data, dina datapunkter --- som du presenterar dem --- är olinjära. Om du verkligen vill hitta det maximala värdet mellan två punkter i tid, skivar du din matris från tmin till tmax och hittar maximal av den subarrayen. 2) Nu är begreppet glidande medelvärden mycket enkelt: tänk att jag har följande lista: 1.4, 1.5, 1.4, 1.5, 1.5. Jag kan släta ut det genom att ta medeltalet av två tal: 1,45, 1,45, 1,45, 1,5. Observera att det första numret är medeltalet 1,5 och 1,4 (andra och första siffrorna) den andra (nya listan) är genomsnittet av 1,4 och 1,5 (tredje och andra gamla listan) den tredje (nya listan) i genomsnitt 1,5 och 1,4 (Fjärde och tredje), och så vidare. Jag kunde ha gjort det period tre eller fyra, eller n. Lägg märke till hur dataen är mycket mjukare. Ett bra sätt att se glidande medelvärden på jobbet är att gå till Google Finance, välj ett lager (försök Tesla Motors ganska flyktiga (TSLA)) och klicka på technicals längst ner i diagrammet. Välj Flytta genomsnittet med en given period och Exponentiell glidande medelvärde för att jämföra deras skillnader. Exponentiellt glidande medelvärde är bara en annan utarbetande av detta, men viktar de äldre data mindre än de nya data så är det ett sätt att förspänna utjämningen mot baksidan. Vänligen läs Wikipedia-posten. Så det här är mer en kommentar än ett svar, men den lilla kommentarrutan var bara för liten. Lycka till. Om du har problem med matte kan du gå med ett enkelt rörligt medel istället för exponentiellt. Så den produkt du får är de sista x-termerna dividerad med x. Obestämd pseudokod: Observera att du måste hantera start - och slutdelarna av data eftersom det inte är klart att du inte kan räkna med de senaste 5 termerna när du befinner dig på din andra datapunkt. Det finns också effektivare sätt att beräkna detta glidande medelvärde (summa summan - äldsta nyaste), men det här är att få konceptet av vad som händer över. Svarade 8 februari 12 klockan 20: 41 Jag utvecklar en liten handelsrobot som en övning. Han mottar aktiekurser dag efter dag (representerad som iterationer). Heres, vad min handelsklass ser ut: Som du kan se från mina sista två attribut, vill jag implementera ett exponentiellt rörligt medelvärde som en del av en trendföljande algoritm. Men jag tror inte att jag förstod hur man implementerar den här min calcEMA-funktion som bara beräknar EMA: Men när mina lagervärden (skickade i en fil) är så här: Att se till att min EMA är meningsfull och bra. Det gör inte Var gick jag fel på operationen Dessutom, vilket värde ska jag ge sista ef det är första gången jag kallar calcEMA Operationen är fel, som du märkte. Ansvarsbegränsning Jag fick denna algoritm från wikipedia. Och som sådan kan inte vara korrekt. Här kan det vara bättre, men jag kan inte döma, jag har aldrig använt dessa algoritmer och så har ingen aning om vad jag talar om :) c (EMA) y (EMA) a (c (pris) - y (EMA) )) C (EMA) är aktuell EMA y (EMA) är tidigare EMA a är något slumpmässigt värde mellan 0 och 1 c (pris) är nuvarande pris Men du gjorde nästan samma sak: c (EMA) Y (EMA) b) y (EMA) Jag vet inte varför du gjorde 2 daysInTrading 1. men det här kommer inte alltid att vara ett värde mellan 0 och 1 (faktiskt kan det vara det mesta av tiden 0, eftersom det är alla intergers ). Du lägger en parentes på fel plats (efter b och inte efter y (EMA)). Så ser operationen ut så här: lastEMA 0.5 (currentStock - lastEMA) För den första sistaEMA. Enligt Wikipedia: S 1 är odefinierad. S 1 kan initieras på ett antal olika sätt, oftast genom att sätta S 11 Första elementet i listan, även om andra tekniker existerar, till exempel inställning S 1 till ett genomsnitt av de första 4 eller 5 observationerna. Betydelsen av S 1 initialiseringseffekten på det resulterande glidande medlet beror på mindre värden gör valet av S 1 relativt viktigare än större värden, eftersom en högre rabatterar äldre observationer snabbare. Svarade 18 maj 16 kl 13:30
Hanging Man. The Hanging Man ljusstake bildning, som man kan förutsäga från namnet, ses som ett baissecken Detta mönster uppträder huvudsakligen på toppen av uppåtgående och kan verka som en varning för en potentiell återföring nedåt. Det är viktigt att betona att Hanging Man-mönstret är en varning om potentiell prisförändring, inte en signal i sig, för att gå kort. Hängande manbildning, precis som Hammeren skapas när den öppna, höga och nära är ungefär samma pris. Det finns en lång nedre skugga, som borde vara minst dubbelt så lång som den verkliga kroppen. När det höga och det öppna är detsamma bildas en baisse ljusstake ljusstark och det anses vara ett starkare baissecken än när den höga och nära är detsamma och bildar en haussehängande hängande man är den haussehängande mannen fortfarande bearish, bara mindre, därför att dagen stängd med vinster. Efter en lång uppträngning är bildandet av en hängande man baisse eftersom priserna tvekar genom att minska betydligt under dagen G Rante...
Comments
Post a Comment