Glidande medelvärde variabel längd


Om vi ​​på ett diagram har gjort två staplar som är lägre än åtminstone de två staplarna före och vi handlar en rad tillbaka till en stapel från den aktuella stapeln som är minst lika låg som den aktuella stapeln kommer det att vara en högsta bar mellan dessa två staplar. Det glidande medelvärdet som jag skulle vilja ha är periodlängden från högra fältet till den aktuella barstångslängden inklusive. Så om det finns 5 staplar från den höga linjen mellan de två quotconnectedquot-staplarna inklusive, skulle periodens längd för MA av intresse vara 5. Om en annan nedre stapel genererades och den höga stapeln mellan den en och baren innan den var av lika lågt pris var samma stapel, då skulle periodens längd av intresse av intresse vara 6. Finns det en indikatorEA som producerar denna MA eller kan den vara kodad. Kanske kan även något liknande där ute vara ett bra ställe att börja. ja det kan göras. men du behöver en metod för att identifiera låga och höga nivåer. sannolikt kommer indikatorn att måla om den sista gängan. om du tittar på min sida hittar du en indikator som gör nästan samma Hur får jag till din sida Matchade höga och låga: Om den aktuella baren är lägre än de föregående två staplarna ritar du en rad tillbaka från den aktuella fältet till en bar som är minst lika låg. Hitta sedan fältet mellan den aktuella stapeln och den historiska stapeln som var minst lika låg som den är högre än alla andra staplar däremellan. Det är ankarstången. Antalet staplar från den högra fältet till den aktuella fältet är MA-perioden. Om nästa fält efter den aktuella fältet är högre, blir MA-periodens längd densamma. Om det är lägre, än vad du måste upprepa allt ovan för den nya stapeln. I det fallet kommer indikatorn du begär att omhämta de sista 3 staplarna. Ps, jag har skickat dig en kl, eftersom en länk betraktas som annonsering här. Jag är inte säker på om jag förstod din highlow-metod. Om nuvarande bar är högre så har de två tidigare uppgången startat Om nuvarande bar är lägre så har de två tidigare en nedgång startat Ma-perioden justeras till längden på gungan. Jag kan inte se ett system i den här indikatorn: (Jag försöker få en enkel VBA-kod som en del av en makro som i kolumn B anger medeltalet av värdena för varje rad. Jag har kod som genererar en tidsserie och fyller en kolumn per simulering så att varje kolumn är en tidsserie som börjar i kolumn C. Antalet simuleringar varierar så jag behöver helt enkelt något som medeltar värdet för varje punkt i tiden (dvs för varje rad över alla simuleringar) medan justering för antalet simuleringar som körs (kolumner som är fyllda). Jag skulle då vilja skapa en enda graf för alla tidsserier som markerar de genomsnittliga värden som beräknas. Tack så mycket om du kan hjälpa till Här är till exempel koden som tar värdena för tiden stiger från sheet1 och placerar den i kolumnA-ark2. Jag skulle vilja att makroet nu placerar medeltalet i rätt rad nedåt. Kolumn B: frågade 13 juli kl 12:58 Tack för kommentarerna. Jag skulle vilja införliva denna funktion som en del av en Macro wh Jag genererar dessa tidsserier automatiskt. Eftersom jag inte vet hur många kolumner det kommer att bli (kanske hundratals) och jag kanske måste repetera simuleringen många gånger måste den införlivas som en del av detta makro. Jag har uppdaterat frågan och beskrivit mer i detalj som du begär. ndash Mary Jul 13 12 klockan 10:35 Tack för din hjälp. Det kommer alltid att finnas data efter kolumn C, eftersom jag planerar att köra tusentals tidsserier. Jag undrar om du har en kod för att automatiskt detektera datafältet på arbetsbladet för att plotta grafen, dvs ersätta intervallet av följande kod med något lämpligt. Jag ser att du har gett råd till något liknande i ett tidigare inlägg men jag har har inte kunnat anpassa den till min. Subgrafik () ActiveSheet. Shapes. AddChart. Select ActiveChart. ChartType xlXYScatterSmoothNoMarkers ActiveChart. SetSourceData Source: Range (quotSheet2A1: E101quot) Avsluta Subndash Mary 13 juli 12 kl 16:03 Hej killar. Tack så mycket. Båda bidragen fungerar verkligen bra för att beräkna medelvärdena för det visade exemplet. Antalet kolumner varierar emellertid så att medelvärdet måste beräknas från kolumn C till quotxquot beroende på antalet replikeringar som simuleringen genererar. Jag har problem med att få det att känna igen hur många kolumner det finns som behöver bli medelvärde innan du gör beräkningen att dina koder är ganska snygga. Eventuell hjälp med att få grafen att generera skulle också vara en bra bonus). Uppskattar verkligen din hjälp på detta. Tack igen ndash Mary Jul 13 12 på 13: 29 Din inre för är iterating all array så det är därför du alltid får samma medelvärde (en för hela arrayen), du bör iterera från 0 till nuvarande antal av yttre för istället . Ditt glidande medelvärde uppdateras baserat på j i ditt inre för att det innebär att det kommer att åsidosätta tidigare värden varje ny slinga, det borde vara inuti det yttre i stället för det inre som använder jag som index. Du delar upp sumj för att beräkna medelvärden, varje ny inre loop du delar med 0 första summan. Jag tror att du menade att använda j1 istället, indexet är inte detsamma som nuvarande längd. Tips för felsökning: Undvik att använda variabler i loop-arrays, du borde använda array. length istället. För att reproducera din fråga kan du ge oss det isolerade problemet istället för din nuvarande kod. dvs: Tänk om felet är i dina ingångar, hur kan vi tro att du verkligen använde dem? Du slår över alla data varje gång. Du borde ha (int j (igång Längd-medellängd2: 0) jlt iaverageLength2 ampamp jltnumDataPoints j) (eller något liknande) för ditt innersta genomsnitt. Dessutom bör movingAverageisumj modifieras för att hantera fallet när j är 0. Speciellt borde det förmodligen vara movingAverageisumverageLength och det ska appliceras på movingAveragei-slitsen utanför medelvärdesslingan. svarade 4 okt 13 kl 20:42 Nästa gång, ta kommentarer om uppgiften ur frågan innan du lägger in den. Men eftersom du verkar ganska ny på det här, tänk på hur du skulle gå igenom data och gör det så. Du bör försöka se till att varje slinga stannar vid rätt punkt och kom ihåg att om du skulle sluta när det inte finns några fler nummer (som när du gör innerbandet och du kan bara få 3 fler siffror istället för 4) programmet måste sluta också. Se till att din kod söker efter det här. svarat 4 okt 13 kl 20:56 Utan några ytterligare detaljer behöver du nog en obetydlig glidande medelvärde. Vid vilken som helst punkt Ai i ingångsuppsättningen A med längd N (med 0ltiltN), är det helt enkelt medelvärdet av de tidigare K-posterna i matrisen, upp till och inklusive Ai. Om det finns sådana värden, så genomsnittliga (i1) värdena från A0 till Ai. inclusive. En liten tanke kommer att visa dig att du inte behöver lägga till alla K-värden varje gång. Håll bara summan och, när du flyttar till nästa punkt (det här är ett glidande medelvärde), subtrahera det värde som ersätts och lägg till det nya värdet som ersätter det. (Under de första K-1-punkterna lägger du helt enkelt till det nya värdet till summan och ökar din räknare med 1.) Vid varje punkt i denna process är det rörliga medelvärdet det aktuella summan dividerat med det aktuella räknevärdet. svarat 4 okt 13 kl 21:05 I ett glidande medelvärde måste du ha någon form av fönsterstorlek. Din fönsterstorlek är genomsnittlig Längd, så det kommer att se ut så här: För-slingan börjar med nuvarande data och går tillbaka med genomsnittliga Längd datapunkter och lägger till dem. Du kommer bara ha ett glidande medelvärde när du har när du har tillräckligt med datapunkter och medelvärdet blir summan dividerad med genomsnittslängden. Obs! Inte testad bara sudokod, men det här är idén. svarat 4 okt 13 kl 21:05 Ditt svar 2017 Stack Exchange, Inc

Comments