Monday, 25 September 2017

Gaussian Moving Average Afl


Diese Funktion implementiert universellen Finite Impulse Response Filter (FIR) en. wikipedia. orgwikiFiniteimpulseresponse Die Ausgabe ist Faltung der Eingabe aray mit Koeffizienten Tabelle (Impulsantwort-Tabelle). Die Funktion führt bei Bedarf eine automatische Normalisierung der Koeffiziententabelle durch (wenn die Summe nicht 1 ist) INPUTS: Array - Eingabefeld zu glättenden Koeffizienten - Array der FIR Koeffizienten Größe - Anzahl der Koeffizienten (Filterorder 1) Es ist funktional (aber 2 mal schneller ) Äquivalent zu folgendem AFL: Funktion FIRAFL (Eingang, Koeff., Größe) Ergebnis 0 Sumcoeff 0 für (i 0 i lt Min (Größe, BarCount) i) Sumcoeff Coeff i result coeff i Ref (Eingang, - Größe i 1) 5 bar gewichteter gleitender Durchschnitt kann geschrieben werden: coeff 0 1 coeff 1 2 coeff 2 3 coeff 3 4 coeff 4 5 FIR (Close coeff, 5) Ein weiteres Beispiel: ALMA, das FIR Filter mit verschobenen Gaußschen Koeffizienten ist, können wie folgt implementiert werden: Local.................................................................. Dieser AFL. Allerdings ist diese besondere Umsetzung von ALMA in amibroker nicht ganz genau. Die korrekte Umsetzung von ALMA in Übereinstimmung mit Ninja Trader und Meta Trader Releases durch die ursprünglichen Entwickler von ALMA i. e Arnaud amp Legoux wurde von mir eingereicht, so dass Amibroker-Nutzer auch profitieren können. Nur ein Wort, das ist fantastisch ALMA kann mit der FIR-Funktion codiert werden. Durch Zufall stieß ich in dieses Schreiben: das scheint nicht zu Pop-up, wenn Sie in das Handbuch schauen. FIR ermöglicht es Ihnen, eine Faltung eines Eingangs-Array mit einer etwas kleineren Funktion wie eine Gaußsche Fenster-Typ-Funktion zu tun. Diesen Code: windowSizeParam (8220Window Size8221,9,5,201,2) sigmaParam (8220Sigma8221,6,1,20) OffsetParam (8220Offset8221,0.85,0.05,1.0,0.05) Funktion ALMAAFL (Eingang, Bereich, Offset, Sigma) lokale m, im, s, Koeff mfloor (Offset (range-1)) srangesigma SetChartOptions (0, chartShowDates) Plot (C, 8220Close8221, colorLightGrey, styleCandle) Plot (rr, quotquot, Farbeblau, 1) in der Tat kann es unter Verwendung programmiert werden: wsParam (8220Window Size8221,9,5,201,2) sigmaParam (8220Sigma8221, 6, 1, 20,1) OffsetParam (8220Offset8221,0.85,0,1.0,0.05) biBarIndex () mfloor (Offset (ws-1)) swssigma windowIIf (biltws (1) -1) - m, 0) windowIIf (bilws, exp (- (window2) (2s2)), 0) rr FIR (C, Fenster, ws) SetChartOptions (0, chartShowDates) 8220Close8221, colorLightGrey, styleCandle) Zeichnung (rr, 8220 ALMA 8221, colorBlue, 1) Req afl cpoding für einen speziellen gleitenden Durchschnitt ALMA Req afl cpoding für einen speziellen gleitenden Durchschnitt ALMA Hier ist ein spezieller gleitender Durchschnitt. Es basiert auf Wahrscheinlichkeitsverteilung-Gaussian. Lesen Sie bitte das pdf und versuchen, es zu kodieren, wenn möglich. Der Code hat etwas Besonderes. Warum so ALMA SO SPEZIELLE HÖREN IST DEVELOPERArnaud L. Im Versuch, eine neue Art von Moving Average mit einigen friendscolleagues (weil ich ein wenig müde von der klassischen Satz von MA allbodys Verwendung für die letzten 10 Jahre) zu schaffen, weve (ALMA). Es entfernt kleine Preisschwankungen und steigert den Trend mit einem gleitenden Durchschnitt zweimal, von links nach rechts und von rechts nach links. Am Ende dieses Prozesses wird die Phasenverschiebung (Preisverzögerung), die häufig mit bewegten Durchschnitten verbunden ist, signifikant reduziert. Zero-Phasendigitalfilterung reduziert Rauschen im Signal. Eine herkömmliche Filterung reduziert Rauschen im Signal, aber addS verzögert. Die ALMA kann einige hervorragende Ergebnisse geben, wenn Sie die Zeit nehmen, um die Parameter zu optimieren (nicht brauchen, um diesen Teil zu erklären, wird es leicht für Sie, die richtige Einstellung in weniger als Stunde zu finden) .. Arnaud L. es ist diese Anwendung von Gleitenden Durchschnitt von links nach rechts und von rechts nach links ist, was es besonders macht - so weit kein solcher Code in amibroker existiert. Für Interessenten in mt4-Code von alma, können Sie sich auf Anlage. Es kann aus adheer pai basiert afl Wahrscheinlichkeit und Gaußverteilung bereits vorhanden vorbereitet werden. Hier ist der Amibroker-Code für Wahrscheinlichkeit und Gaußverteilung Wir brauchen nur den GUASSISCHEN TEIL. In diesem einige Ausbau und Ergänzungen erforderlich sind, um getan werden. Entfernen Entfernen Sie probabilityDENSITY ADDITION addieren Sie Sigmawert von 6, addieren Sie Offset von 0.85 Ich fordere die Experten an, um diese Aufgabe zu behandeln DER OBEN CODE BASIS WURDE VON ADHEER PAI. Thanks zu seinem festen Inhalt. Name. Wahrscheinlichkeitsdichte Ampere Gaußsche Verteilung Beschreibung. Visual Darstellung der Verteilung der Daten-Serie (z. B. Preis, Preisänderung, LogNormal Preisänderung etc.). Identifizieren Sie, ob die Serie eine normale Gaußsche Verteilung aufweist. Autor. Adheer Pai (adheer bei gmail dot com) Geschichte. Die Eingangsreihe zur Darstellung der Wahrscheinlichkeitsdichte und der Gaußschen Verteilung Verwenden Sie die Reihe SERIES oder ersetzen Sie sie entsprechend. Konstanten PI 3.14159 SHOWBELLCURVE quotShowquot HIDEBELLCURVE quotHidequot AFL Eingänge nSample Param (quotDataSet Sizequot, 500, 100, 1000) nSegments Param (quotDensity Segmentsquot, 15, 10, 20) bGauss ParamList (quotGaussian Curvequot, SHOWBELLCURVE quotquot HIDEBELLCURVE, 0) nPrecision Param (quotPrecision Digitsquot , 5, 0, 6) nPrecision 8 nPrecision 10 Konstanten - System und abgeleitet. nBarIndex SelectedValue (BarIndex ()) nFirstValidBar -1 für (i 0 i lt BarCount i) if (IsEmpty (SERIESi)) nFirstValidBar i brechen nSample Max (Min (nBarIndex -. nFirstValidBar nSample), 1) Datasize 0 Anzahl der Proben (es sollte als nPeriod) arrMean MA (SERIES, nSample) arrMax HHV (SERIES, nSample) arrMin LLV (SERIES, nSample) arrSDev StDev (SERIES, nSample) currMax arrMaxnBarIndex Maximum des Bereichs gleich sein. CurrMin arrMinnBarIndex Minimum des Bereichs. Mu arrMeannBarIndex Mittel (Mu) Sigma arrSDevnBarIndex Standardabweichung des Bereichs (Sigma) rangeOfBar (currMax-currMin) nSegmente Der Bereich jeder Verteilungsleiste. BarFrequenz 0 Vorkommen innerhalb jedes Balkens. MaxFrequenz 0 Höchste Anzahl von Vorkommnissen. DisplayBorder Zeigt die Diagrammgrenzen an. Funktion DisplayBorder () GfxSelectPen (colorBrown, 1, styleDashed) GfxMoveTo (pxMargin, pxMargin) GfxLineTo (pxMargin, pxHeight - pxMargin) GfxLineTo (pxWidth - pxMargin, pxHeight - pxMargin) GfxLineTo (pxWidth - pxMargin, pxMargin) GfxLineTo (pxMargin, pxMargin) ComputeSigmaBandDistribution Berechnet die Verteilung mit der angegebenen Sigma-Bande, die durch minvalue und maxvalue begrenzt wird. Funktion computeSigmaBandDistribution (MinValue, MaxValue) nCount 0 für (i nBarIndex i gt nBarIndex - nSample ampamp i gt 0 i--) if (SERIESi gt MinWert ampamp SERIESi lt MaxValue) nCount 100 nCount nSample getGaussianValue Funktion Rückkehr des Gaußschen Verteilungswert zu berechnen ( Y) für einen gegebenen Wert von X (nicht skaliert). Function getGaussianValue (inputValue) Schritte zum Berechnen der normalen Gaußschen Verteilung. 1) Berechnen Sie (x - mu) quadriert, multiplizieren Sie es mit -1 Schritt1 -1 ((inputValue - Mu) 2) 2) Berechnen Sie zweimal (sigma quadriert). Schritt 2 2 (SigmaSigma) 3) Teilen Sie 1 bis 2, und erhalten Sie die exp step3 exp (step1step2) 4) Jetzt teilen Sie Schritt 3 durch Sigma. (2PI) Schritt 5 Schritt4 sqrt (2PI) Berechnen Sie das arithmetische Mittel, das Minimum und das Maximum der Preisreihe Berechnen Sie die Häufigkeit der Vorkommen für (nIndex nBarIndex nIndex gt ( nBarIndex - nSample) ampamp nIndex gt 0 nIndex -) nCurrIndex int ((SERIESnIndex - currMin) rangeOfBar) nCurrIndex Max (Min (nSegments-1, nCurrIndex), 0) barFrequencynCurrIndex MaxFrequency Max (MaxFrequency, barFrequencynCurrIndex) Nun ist die Frequenz Anzeige der Vorkommnisse - aka Verteilung GfxSetBkMode (1) GfxSelectFont (quotVerdanaquot, 8, 800) GfxSetTextAlign (6) GfxSetTextColor (Blau und Rot) pxScaleX (pxWidth - 2 pxMargin) nSegments pxScaleY 0,9 (pxHeight - 2 pxMargin) MaxFrequency für (i 0 i lt nSegments i) pxStartX pxMargin i pxScaleX pxEndX pxStartX pxScaleX pxStartY pxMargin barFrequencyi pxScaleY GfxGradientRect (pxStartX, pxHeight -. pxStartY pxEndX, pxHeight - pxMargin, ColorRGB (70255255), ColorRGB (70,20,255)) GfxTextOut (NumToStr (100barFrequencyinSample. 4.2) quotquot, (pxStartXpxScaleX2), pxHeight - pxStartY - 15) Zeichnen Sie nun den mittleren und den Standardabweichungsbereich. pxScaleXPixelsPerPriceUnit (pxWidth - 2 pxMargin) (currMax - currMin) meanLineX pxMargin (Mu - currMin) pxScaleXPixelsPerPriceUnit GfxSelectPen (Farbeblau, 2, 3) GfxMoveTo (meanLineX, pxMargin) GfxLineTo (meanLineX, pxHeight - pxMargin) GfxTextOut (quotMeanquot, meanLineX, pxHeight - pxMargin) GfxTextOut (NumToStr (Mu, nPrecision), meanLineX, pxHeight - pxMargin3) für (i 1 i lt 6 i) Nun zeichnen Sie die mittlere - 1-StDev sDevBand pxMargin (Mu iSigma - currMin) pxScaleXPixelsPerPriceUnit if (sDevBand lt pxWidth - pxMargin ) GfxSelectPen (ColorRGB (128,128,128), 1, 4) GfxMoveTo (sDevBand pxMargin) GfxLineTo (sDevBand pxHeight -.. pxMargin) GfxTextOut (quotquot NumToStr (i, 1.0) quot SDquot, sDevBand, pxHeight - pxMargin) GfxTextOut (NumToStr (Mu isigma , nPrecision) sDevBand, pxHeight - pxMargin3) sDevBand pxMargin (Mu - iSigma - currMin) pxScaleXPixelsPerPriceUnit if (sDevBand gt pxMargin) GfxSelectPen (ColorRGB (128,128,128), 1, 4) GfxMoveTo (sDevBand pxMargin) GfxLineTo (sDevBand pxHeight -.. pxMargin ) GfxTextOut (zit-quot NumToStr (i, 1,0) quot SDquot, sDevBand, pxHeight - pxMargin) GfxTextOut (NumToStr (Mu - isigma, nPrecision), sDevBand, pxHeight - pxMargin3) Legende und Dateninformationen. GfxSetBkMode (1) GfxSetTextAlign (0 24) GfxSelectFont (quotVerdanaquot, 8, 400) GfxSetTextColor (Farbeblau) GfxTextOut (quotLatest quot NumToStr (SERIESnBarIndex, nPrecision), 10 pxMargin, pxMargin 15) GfxTextOut (quotMean quot NumToStr (Mu, nPrecision), pxMargin 10, pxMargin 30) GfxTextOut (quotSigma quot NumToStr (Sigma, nPrecision), pxMargin 10, pxMargin 45) nun die Verteilung der ersten 10 Standardabweichungen angezeigt oder weniger. nLastPixelY pxMargin 60 für (numOfStDevs 1 numOfStDevs lt 10 numOfStDevs) nCount computeSigmaBandDistribution (Mu - numOfStDevs Sigma, Mu numOfStDevs Sigma) GfxTextOut (NumToStr (numOfStDevs, 1,0) quot-Sigma quot NumToStr (nCount, 5.2) quotquot, pxMargin 10, nLastPixelY) nLastPixelY nLastPixelY 15 if (nCount gt 100) numOfStDevs 100 currLineX pxMargin (SERIESnBarIndex - currMin) pxScaleXPixelsPerPriceUnit GfxSelectPen (colorGreen, 2, 3) GfxMoveTo (currLineX pxMargin.) GfxLineTo (currLineX pxHeight -. pxMargin) GfxSetTextAlign (6) GfxSetTextColor (colorGreen) GfxTextOut ( QuotLatestquot, CurrLineX, pxMargin2) Zeigen Sie die Gaußsche Verteilung an, wenn vom Benutzer angefordert. If (bGauss SHOWBELLCURVE) Zeigt nun die normale Verteilungskurve auf der Basis von Sigma und Mu an. graphStepX (CurrMax - Mu) Max (100, pxWidth-2pxMargin) if (graphStepX 0) GaussianMaxima 0 für (x CurrMin x lt CurrMax xx graphStepX) GaussianMaxima Max (GaussianMaxima, getGaussianValue (x)) pxGaussianScaleY 0,9 (pxHeight - 2 pxMargin) GaussianMaxima GfxSelectPen (colorOrange, 2, 0) für (x CurrMin x lt CurrMax xx graphStepX) gaussianValue getGaussianValue (x) pxPointX (x - CurrMin) pxScaleXPixelsPerPriceUnit pxMargin pxPointY pxHeight - (gaussianValue - 0) pxGaussianScaleY - pxMargin if (x CurrMin) GfxMoveTo (pxPointX , pxPointY) GfxLineTo (pxPointX, pxPointY) Immobilien copyright quotCopyright 2010 Einstellungen TrendLaboratoryquot Eigenschaft Link quotfinance. groups. yahoogroupTrendLaboratoryquot ---- Indikator Eigenschaft indicatorchartwindow Eigenschaft indicatorbuffers 3 Eigenschaft indicatorcolor1 Yellow Eigenschaft indicatorcolor2 Lightblue Eigenschaft indicatorcolor3 Tomato Eigenschaft indicatorwidth1 2 Eigenschaft indicatorwidth2 2 Eigenschaft indicatorwidth3 2 ---- Anzeigeparameter extern int Preis 0 Preismodus (0. 6) extern int Window 9 Fenstergröße extern double Sigma 6.0 Sigma Parameter extern double Offset 0,85 Offset der Gauß-Verteilung (0 1) extern double PctFilter 0 Dynamische Filter in dezimal extern int Shift-0 extern int Color 0 0-on, 1-off extern int ColorBarBack 1 extern int AlertMode 0 Ton Alarmschalter (0-off, 1-on) extern int WarningMode 0 Ton-Warnschalter (0-off, 1-on) ---- Indikator Puffer Doppel ALMA Doppel upTREND Doppel Dntrend Doppel Trend Double Del int drawbegin bool UpTrendAlertfalse, DownTrendAlertfalse double wALMA ---------------------------------------- -------------------------- Customizing-Initialisierungsfunktion -------------------- -------------------------- int init () ---- Indikator Puffer Mapping IndicatorBuffers (5) SetIndexBuffer (0, ALMA) SetIndexBuffer (1, upTREND) SetIndexBuffer (2, Dntrend) SetIndexBuffer (3, Trend) SetIndexBuffer (4, Del) ---- Zeichnungseinstellungen SetIndexStyle (0 , DrawLine) SetIndexStyle (1, DrawLine) SetIndexStyle (2, DrawLine) drawbegin Window SetIndexDrawBegin (0, drawbegin) SetIndexDrawBegin (1, drawbegin) SetIndexDrawBegin (2, drawbegin) SetIndexShift (0, Shift) SetIndexShift (1, Shift) SetIndexShift (2 , Shift) IndicatorDigits (Börsen & Märkte (Symbol (), MODEDIGITS) 1) ---- Name für DataWindow - und Indikator Subwindow Etikett IndicatorShortName (quotALMA (quotWindowSize quot) quot) SetIndexLabel (0, quotALMAquot) SetIndexLabel (1, quotALMA Uptrendquot) SetIndexLabel ( 2, quotALMA Dntrendquot) ---- Doppel m MathFloor (Offset (Window - 1)) Doppel s WindowSizeSigma ArrayResize (wALMA, Window) double WSUM 0 für (int i0i lt WindowSizei) wALMAi MathExp (- ((im) (im) () 2ss)) WSUM wALMAi für (i0i lt WindowSizei) wALMAi wALMAiwsum if (Verschiebung gt Bars - Window) weiterhin Doppelsumme 0 Doppel WSUM 0 für (i0i lt WindowSizei), wenn (i Window) Summe wALMAi iMA lt (NULL, 0, 1,0,0, Preis, Verschiebung (Window - 1 - i)) if (WSUM 0) ALMAshift Summe if (PctFiltergt0) Delshift MathAbs (ALMAshift - ALMAshift1) double sumdel0 für (int j0jltWindowSize-1j) sumdel sumdelDelshiftj Doppel AvgDel sumdelWindowSize Doppel sumpow 0 für (j0jltWindowSize-1j) sumpowMathPow (Deljshift-AvgDel, 2) Doppel StdDev MathSqrt (sumpowWindowSize) Doppelfilter PctFilter StdDev if (MathAbs (ALMAshift-ALMAshift1) lt Filter) ALMAshiftALMAshift1 sonst Filter0 if (ColorModegt0) trendshift trendshift1 if (ALMAshift - ALMAshift1 gt Filter) trendshift 1 if (ALMAshift1 - ALMAshift gt Filter) trendshift -1, wenn (trendshiftgt0) Uptrendshift ALMAshift if (trendshiftColorBarBacklt0) UptrendshiftColorBarBackALMAshiftColorBarBack Dntrendshift EMPTYVALUE if (WarningModegt0 ampamp trendshift1lt0 ampamp i0) Playsound (quotalert2.wavquot) else if (trendshiftlt0) Dntrendshift ALMAshift if (trendshiftColorBarBackgt0) DntrendshiftColorBarBackALMAshiftColorBarBack Uptrendshift EMPTYVALUE if (WarningModegt0 ampamp trendshift1gt0 ampamp i0) Playsound (quotalert2.wavquot) ---------- String Nachricht if (trend2lt0 ampamp trend1gt0 ampamp Volume0gt1 ampamp UpTrendAlert) Nachricht quot quotSymbol () quot MquotPeriod (): HMA-Signal für SELLquot if (AlertModegt0) Alert (Meldung) UpTrendAlerttrue DownTrendAlertfalse if (trend2gt0 ampamp trend1lt0 ampamp Volume0gt1 ampamp DownTrendAlert) Message) DownTrendAlerttrue UpTrendAlertfalse Der mt4-Code wird poosted, um eine Art von Hinweis für die Codierung in afl zur Verfügung zu stellen. Suchen forawrd zu alma-Code in afl hier auf Traderji, wie es nicht irgendwo anders gibt, wie von jetzt betrachtet Furt

No comments:

Post a Comment