Wednesday 27 September 2017

Gaussian Moving Average Afl


Esta função implementa filtro de resposta de impulso finito de propósito geral (FIR) en. wikipedia. orgwikiFiniteimpulseresponse A saída é convolução de entrada aray com tabela de coeficientes (tabela de resposta de impulso). A função executa a normalização automática da tabela de coeficientes se necessário (se sua soma não for 1) ENTRADAS: array - matriz de entrada a ser coeficientes suavizados - matriz de tamanho dos coeficientes FIR - número de coeficientes (filtro 1) É funcional (mas 2 vezes mais rápido ) Equivalente à seguinte AFL: função FIRAFL (entrada, coeficiente, tamanho) resultado 0 sumcoeff 0 para (i 0 i lt Min (tamanho, BarCount) i) cotação sumcoeff eu respondo coeficiência i Ref (entrada, - tamanho i 1) por exemplo A média móvel ponderada de 5 bar pode ser escrita: coeficiência 0 1 coeficiência 1 2 coeficiência 2 3 coeficiência 3 4 coeficiência 4 5 FIR (fechar coeficiente, 5) Outro exemplo: o ALMA que é o filtro FIR com coeficientes gaussianos deslocados pode ser implementado da seguinte forma: Função ALMAAFL (entrada, intervalo, Offset, sigma) local m, im, s, Coeff m floor (Offset (range - 1)) s sigmaIt diz muito sobre sua ética que você não sentiu a necessidade de reconhecer o codificador original Desta AFL. No entanto, esta implementação particular do ALMA em Amibroker não é bastante precisa. A implementação correta e precisa da ALMA em conformidade com o lançamento de Ninja Trader e Meta Trader pelos desenvolvedores originais da ALMA, ou seja, o Arnaud amp Legoux foi enviado por mim para que os usuários de Amibroker também possam se beneficiar. Apenas uma palavra, isso é fantástico O ALMA pode ser codificado usando a função FIR. Por acidente, coloquei-me na escrita: o que não parece aparecer quando você olha no manual. O FIR permite que você faça uma convolução de uma matriz de entrada com uma função menor, como uma função de tipo de janela Gaussiana. Código resultante: windowSizeParam (8220Window Size8221,9,5,201,2) sigmaParam (8220Sigma8221,6,1,20) OffsetParam (8220Offset8221,0.85,0.05,1.0,0.05) função ALMAAFL (entrada, intervalo, Offset, sigma) local m, (C, 8220Close8221, colorLightGrey, styleCandle) Plot (rr, quotquot, colorBlue, 1), na verdade, ele pode ser programado usando: wsParam (Offset (range-1)) srangesigma SetChartOptions (0, chartShowDates) (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 (C, janela, ws) SetChartOptions (0, chartShowDates) Lote (C, janela, ws) 8220Close8221, colorLightGrey, styleCandle) Plot (rr, 8220 ALMA 8221, colorBlue, 1) Req afl cpoding para uma média móvel especial ALMA Req afl cpoding para uma média móvel especial ALMA Aqui está uma média móvel especial. Baseia-se na distribuição de probabilidade - gaussiana. Leia o pdf e tente codificá-lo, se possível. O código tem algo especial. Por que, por que, por que ALMA É ESPECIAL ESCUTAR A SUA DESENVOLVIMENTO L. Na tentativa de criar um novo tipo de Média Mover com alguns colegas de amigos (porque eu estava um pouco cansado do conjunto clássico de uso de MA Everybodys nos últimos 10 anos) Criou este novo (ALMA) ... Ele remove pequenas flutuações de preços e melhora a tendência, aplicando uma média móvel duas vezes, uma da esquerda para a direita e uma da direita para a esquerda. No final deste processo, a mudança de fase (desfasamento de preços) comumente associada às médias móveis é significativamente reduzida. A filtragem digital de fase zero reduz o ruído no sinal. A filtragem convencional reduz o ruído no sinal, mas aumenta o atraso. O ALMA pode dar alguns resultados excelentes se você tomar o tempo para ajustar os parâmetros (não precisa explicar esta parte, será fácil para você encontrar o ajuste certo em menos de hora). Arnaud L. é essa aplicação de A média móvel da esquerda para a direita e da direita para a esquerda é o que o torna especial, até agora nenhum código desse tipo existe no Amibroker. Para aqueles interessados ​​no código mt4 da alma, você pode se referir ao anexo. Pode ser preparado a partir de adheer pai baseado em probabilidade e distribuição gaussiana já existente. Aqui está o código Amibroker para probabilidade e distribuição gaussiana. Precisamos apenas da PARTE GUASSIANA. Neste caso, é necessário fazer algumas remoções e adições. Remoção Remova a probabilidade ADENSÃO DE DENSIDADE adicione o valor de sigma de 6, adicione o deslocamento de 0.85. Solicitei os especialistas para lidar com esta tarefa. O BASE DE CÓDIGO ACIMA FOI POR ADHEER PAI. Obrigado ao seu conteúdo sólido. Nome. Probabilidade Densidade Amp. Gaussian Distribuição Descrição. Representação visual da distribuição das séries de dados (por exemplo, Preço, Mudança de Preço, Mudança de Preço LogNormal, etc.). Identifique se a série exibe distribuição gaussiana normal. Autor. Adheer Pai (adheer no gmail dot com) História. 1.0 (Lançamento original - 8 de julho de 2009) A série de entrada para traçar a densidade de probabilidade e Distribuição Gaussiana Use a matriz SERIES ou substitua-a de acordo. Constantes PI 3.14159 SHOWBELLCURVE quotShowquot HIDEBELLCURVE quotHidequot AFL Entradas nSample Param (quotDataSet Sizequot, 500, 100, 1000) nSegments Param (quensDensity Segmentsquot, 15, 10, 20) bGauss ParamList (quaGaussian Curvequot, SHOWBELLCURVE quotquot HIDEBELLCURVE, 0) nPrecision Param (quotPrecision Digitsquot , 5, 0, 6) nPrecisão 8 nPrecisão 10 Constantes - sistema e derivado. NBarIndex SelectedValue (BarIndex ()) nFirstValidBar -1 para (i 0 i lt BarCount i) se (IsEmpty (SERIESi)) nFirstValidBar i break nSample Max (Min (nBarIndex - nFirstValidBar. NSample), 1) DataSize 0 Número de amostras (ele Deve ser o mesmo que nPeriod) arrMean MA (SERIES, nSample) arrMax HHV (SERIES, nSample) arrMin LLV (SERIES, nSample) arrSDev StDev (SERIES, nSample) currMax arrMaxnBarIndex Máximo da gama. Mínimo de intervalo. Mu arrMeannBarIndex Mean (Mu) Sigma arrSDevnBarIndex Desvio padrão da faixa (Sigma) rangeOfBar (currMax-currMin) nSegments O alcance de cada barra de distribuição. BarFrequency 0 Ocorrências dentro de cada barra. MaxFrequency 0 Maior número de ocorrências. DisplayBorder Exibe as bordas de gráficos. Função 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 Calcula a distribuição com a banda sigma especificada, limitada por minvalue e maxvalue. Função computeSigmaBandDistribution (MinValue, MaxValue) nCount 0 para (i nBarIndex i gt nBarIndex - nSample ampamp i gt 0 i--) se (SERIESi gt MinValue ampamp SERIESi lt MaxValue) nCount return 100 nCount nSample getGaussianValue Função para calcular o valor de distribuição Gaussian ( Y) para um dado valor de X. (não escalado). Função getGaussianValue (inputValue) Etapas para calcular a distribuição gaussiana normal. 1) Calcule (x-mu) ao quadrado, multiplique-o por -1 etapa1 -1 ((inputValue - Mu) 2) Calcule duas vezes (sigma ao quadrado). Passo 2 2 (SigmaSigma) 3) Divida 1 por 2, e obtenha o passo exp exp3 (passo 1step2) 4) Agora, divida o passo 3 por sigma. Passo4 passo3 Sigma 5) Agora, divida o passo 4 pela raiz quadrada de (2 x PI) passo5 passo4 sqrt (2PI) Calcule a média aritmética, o mínimo e o máximo da série de preços Calcule a frequência das ocorrências para (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) Agora exibe a freqüência de ocorrências - aka distribuição GfxSetBkMode (1) GfxSelectFont (quotVerdanaquot, 8, 800) GfxSetTextAlign (6) GfxSetTextColor (colorRed) pxScaleX (pxWidth - 2 pxMargin) nSegments pxScaleY 0.9 (pxHeight - 2 pxMargin) MaxFrequency para (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 (70,255,255), ColorRGB (70,20,255)) GfxTextOut (NumToStr (10 0barFrequencyinSample. 4.2) quotquot, (pxStartXpxScaleX2), pxHeight - pxStartY - 15) Trace agora a média e o intervalo de barras de desvio padrão. pxScaleXPixelsPerPriceUnit (pxWidth - 2 pxMargin) (currMax - currMin) meanLineX pxMargin (Mu - currMin) pxScaleXPixelsPerPriceUnit GfxSelectPen (colorBlue, 2, 3) GfxMoveTo (meanLineX, pxMargin) GfxLineTo (meanLineX, pxHeight - pxMargin) GfxTextOut (quotMeanquot, meanLineX, pxHeight - PxMargin) GfxTextOut (NumToStr (Mu, nPrecision), meanLineX, pxHeight - pxMargin3) para (i 1 i lt 6 i) Agora trace o Mean-1-StDev sDevBand pxMargin (Mu iSigma-currMin) pxScaleXPixelsPerPriceUnit se (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 , NPrecisão), sDevBand, pxHeight - pxMargin3) sDevBand pxMargin (Mu - iSigma-currMin) pxScaleXPixelsPerPriceUnit se (sDevBand gt pxMargin) GfxSelectPen (ColorRGB (128,128,128), 1, 4) GfxMoveTo (sDevBand. PxMargin) GfxLineTo (sDevBand. PxHeight - pxMargin) GfxTextOut (quot-quot NumToStr (i, 1.0) quot SDquot, sDevBand, pxHeight - pxMargin) GfxTextOut (NumToStr (Mu - isigma, nPrecision), sDevBand, pxHeight - pxMargin3) Legend and data information. GfxSetBkMode (1) GfxSetTextAlign (0 24) GfxSelectFont (quotVerdanaquot, 8, 400) GfxSetTextColor (colorBlue) GfxTextOut (quotLatest quot NumToStr (SERIESnBarIndex, nPrecision), pxMargin 10, pxMargin 15) GfxTextOut (quotMean quot NumToStr (Mu, nPrecision), pxMargin 10, pxMargin 30) GfxTextOut (quotSigma quot NumToStr (Sigma, nPrecision), pxMargin 10, pxMargin 45) Agora exiba a distribuição dos primeiros 10 desvios padrão ou menos. NLastPixelY pxMargin 60 para (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 se (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) Exibe a distribuição gaussiana, se solicitado pelo usuário. Se (bGauss SHOWBELLCURVE) Agora exiba a curva de distribuição normal com base em sigma e mu. GraphStepX (CurrMax - Mu) Max (100, pxWidth-2pxMargin) se (graphStepX 0) GaussianMaxima 0 para (x CurrMin x lt CurrMax xx graphStepX) GaussianMaxima Max (GaussianMaxima, getGaussianValue (x)) pxGaussianScaleY 0.9 (pxHeight - 2 pxMargin) GaussianMaxima GfxSelectPen (colorOrange, 2, 0) para (x CurrMin x lt CurrMax xx graphStepX) gaussianValue getGaussianValue (x) pxPointX (x - CurrMin) pxScaleXPixelsPerPriceUnit pxMargin pxPointY pxHeight - (gaussianValue - 0) pxGaussianScaleY - pxMargin se (x CurrMin) GfxMoveTo (pxPointX PxPointY) GfxLineTo (pxPointX, pxPointY) Propriedade copyright quotCopyright 2010, TrendLaboratoryquot propriedade link quotfinance. groups. yahoogroupTrendLaboratoryquot ---- indicador configurações propriedade indicadorchartwindow propriedade indicatorbuffers 3 property indicatorcolor1 Amarelo propriedade indicatorcolor2 LightBlue propriedade indicatorcolor3 Tomato propriedade indicatorwidth1 2 propriedade indicatorwidth2 2 property indicatorididth3 2 ---- indicador para Metros externos int Preço 0 Modo de preço (0. 6) extern int WindowSize 9 Tamanho da janela externo duplo Sigma 6.0 Parâmetro Sigma externo duplo Deslocamento 0.85 Deslocamento da distribuição gaussiana (0. 1) externo duplo PctFilter 0 Filtro dinâmico em decimal externo int Deslocamento 0 extern int ColorMode 0 0-on, 1-off Extern int ColorBarBack 1 extern int AlertMode 0 Interruptor de alerta de som (0-off, 1-on) extern int WarningMode 0 Interruptor de aviso de som (0-off, 1-on) ---- buffers indicadores duplo ALMA double Uptrend double Dntrend double tendência Duplo Del int drawbegin bool UpTrendAlertfalse, DownTrendAlertfalse double wALMA ---------------------------------------- -------------------------- Função de inicialização do indicador personalizado -------------------- ---------------------------------------------- int init () ---- Indicadores de indicadores de mapeamento IndicatorBuffers (5) SetIndexBuffer (0, ALMA) SetIndexBuffer (1, Uptrend) SetIndexBuffer (2, Dntrend) SetIndexBuffer (3, tendência) SetIndexBuffer (4, Del) ---- configurações de desenho SetIndexStyle (0 , DRAWLINE) SetIndexStyle (1, DRAWLINE) SetIndex Estilo (2, DRAWLINE) drawbegin WindowSize SetIndexDrawBegin (0, drawbegin) SetIndexDrawBegin (1, drawbegin) SetIndexDrawBegin (2, drawbegin) SetIndexShift (0, Shift) SetIndexShift (1, Shift) SetIndexShift (2, Shift) IndicatorDigits (MarketInfo (Símbolo ( ), MODEDIGITS) 1) ---- nome para DataWindow e rótulo de sub-janela de indicador IndicatorShortName (quotALMA (quotWindowSize quot) quot) SetIndexLabel (0, quotALMAquot) SetIndexLabel (1, quotALMA Uptrendquot) SetIndexLabel (2, quotALMA Dntrendquot) ---- Double m MathFloor (Offset (WindowSize - 1)) double s WindowSizeSigma ArrayResize (wALMA, WindowSize) double wsum 0 para (int i0i lt WindowSizei) wALMAi MathExp (- ((im) (im)) (2ss)) wsum wALMAi para ( I0i lt WindowSizei) WALMAi WALMAiwsum se (turno gt Bars - WindowSize) continue dupla soma 0 double wsum 0 para (i0i lt WindowSizei) se (i lt WindowSize) sum wALMAi iMA (NULL, 0,1,0,0, Preço, mudança (WindowSize - 1 - i)) se (wsum 0) ALMAshift soma se (PctFiltergt0) Delshift MathAbs (ALMAshift - ALMAshift1) double sumdel0 para (i Nt j0jltWindowSize-1j) sumdel sumdelDelshiftj double AvgDel sumdelWindowSize sumpow duplo 0 para (j0jltWindowSize-1j) sumpowMathPow (Deljshift-AvgDel, 2) duplo StdDev MathSqrt (sumpowWindowSize) filtro duplo PctFilter StdDev se (MathAbs (ALMAshift-ALMAshift1) lt Filter) ALMAshiftALMAshift1 else Filter0, se (ColorModegt0) trendshift trendshift1 se (ALMAshift - ALMAshift1 gt Filter) trendshift 1 se (ALMAshift1 - Filtro ALTPGt gt) trendshift -1 se (trendshiftgt0) Uptrendshift ALMAshift se (trendshiftColorBarBacklt0) UptrendshiftColorBarBackALMAshiftColorBarBack Dntrendshift EMPTYVALUE se (WarningModegt0 ampamp trendshift1lt0 ampamp i0) PlaySound (Quotalert2.wavquot) se if (trendshiftlt0) Dntrendshift ALMAshift se (trendshiftCttleBarBackgt0) DntrendshiftColorBarBackALMAshiftColorBarBack Uptrendshift EMPTYVALUE se (WarningModegt0 ampamp trendshift1gt0 ampamp i0) PlaySound (quotalert2.wavquot) ---------- string Mensagem se (trend2lt0 ampamp trend1gt0 Ampamp Volume0gt1 ampam P UpTrendAlert) Quot quotSymbol () quot MquotPeriod () quot: HMA Sinal para BUYquot se (AlertModegt0) Alerta (Mensagem) UpTrendAlerttrue DownTrendAlertfalse se (trend2gt0 ampamp trend1lt0 ampamp Volume0gt1 ampamp DownTrendAlert) Quota quotSymbol () quot MquotPeriod () quot: HMA Sinal para SELLquot se (AlertModegt0) Alerta (Mensagem) DownTrendAlerttrue UpTrendAlertfalse O código mt4 é projetado para fornecer algum tipo de sugestão para codificação em afl. Olhando para o código de alma em afl aqui no traderji, pois não existe em qualquer outro lugar a partir de agora considera ford

No comments:

Post a Comment