Wednesday 9 August 2017

Centered Moving Average Ninjatrader


01-21-2008, 11:59 PM Eu tenho um datasery personalizado que é um SMA (de outro indicador) com um período de dizer 9, carregado usando o método Set em 0. Isto funciona e traça bem. Como posso recalcular e compensar o resultado do gráfico, de modo que cada valor SMA mais recente (calculado na barra atual) trate no ponto de 5 barras atrás. Nota: Esta não é apenas mudar a linha de gráfico padrão SMA, 9 para a esquerda por 5 barras. Isso deve resultar em uma trama de forma totalmente diferente. Muitas vezes referido como uma média móvel quotcentered. (No entanto, não terá valores traçados nas últimas 5 barras devido ao deslocamento.) Obrigado pela sua ajuda. (BTW, algumas outras plataformas oferecem isso como um indicador incluído). 01-22-2008, 12:48 AM Não sei se seguir. O que você parece fazer é colocar o SMA (9) calculado mais recente em cinco barras atrás. Como isso é diferente de mudar o indicador de volta 5 Seus valores calculados não estão mudando, então, como o gráfico mudaria 01-22-2008, 10:02 Josh, desculpe. você está certo. Muitas noites atrasadas nesse final. Para mudar o gráfico de minhas dataseries personalizadas, tentei isso: (se eu usar 0, recebo a curva SMA padrão plotada para a barra atual, mas eu quero ver o último valor traçado 5 barras de volta e assim por diante) Qualquer A ajuda é apreciada. BTW, isso também é referido como uma média móvel deslocada por investopedia. . 01-22-2008, 11:18 AM DataSeries. Set (int barsAgo, double value) Você também pode definir o valor para barras históricas, incluindo um quotbarsAgoquot value que representa o número de barras atrás que deseja que o valor duplo seja armazenado Em. 01-22-2008, 01:40 PM Obrigado pela sua ajuda. Parece que a função quotDisplacementquot é o que eu estava procurando. É simples e parece resolver o problema. 10-13-2008, 11:29 AM NOTA: O deslocamento não funciona em estratégias. Eu também tentei adicionar o deslocamento manualmente para um indicador e usá-lo em uma estratégia. Não funcionou. DataSeries. Set (int barsAgo, double value) 10-13-2008, 02:44 PM Eu tentei outra coisa. Eu fiz outro indicador para abrigar duas SMAs. (SMAl1 amp sMAl2 são números inteiros para o período de controle). Isso não funciona por algum motivo. Nenhuma linha é plotada a menos que você altere o acima para: SMAline2.Set (SMA (sMAl2) 0) Existe um motivo que você não pode fazer: SMA (sMAl2) NumberBesidesZero. 10-13-2008, 02:54 PM Consulte os logs do Centro de Controle para obter erros. Você provavelmente correu para este problema: ninjatrader-support / vb / showthread. phpt3170Centered Média de movimento não atualizada em dados novos Média de movimento centrada não atualizada em novos dados Obrigado: 1 dado, 2 Média de transferência centrada recebida não atualizada em novos dados Eu tenho Estava tentando construir um indicador para suavizar uma média móvel centrada, mas de alguma forma o indicador nunca traça os valores quotrefreshedquot. Embora eu tenha pesquisado através do fórum e ler todos os tópicos similares (além de todas as 1027 páginas do Guia de Ajuda do NT versão 7), ainda não consigo corrigir meu indicador. Por favor, me dê algumas dicas sobre o que pode dar errado. Muito adiantado, usei a janela Saída e o gráfico quotShow Data Boxquot para depurar. A matriz CalValue contém os valores dos indicadores, mas esses valores não correspondem aos da QuotShow Data Boxquot. Há algo de errado com o comando Set () Ou eu deveria mudar a barra para trás ou algo que eu mesmo removi o script da pasta do indicador, usei um novo nome para o script e até reinstalasse o NT 7, mas o mesmo problema ainda persistia . Consulte o script e a janela Saída abaixo: classe pública TCMA5. Região do indicador Variáveis ​​private bool smooth true // A configuração padrão é verdadeira private DataSeries mySMA private double CalValue private double Sum private double Sumw endregion protected override void Initialize () Adicionar (novo Plot (Color. FromKnownColor (KnownColor. Orange), PlotStyle. Line, QuotMiddlequot)) mySMA new DataSeries (este) CalValue new double50 Sum new double50 // NT7 limita o número de barras disponíveis para cálculos em 256 Sumw new double50 Overlay true protected override void OnBarUpdate () se (CurrentBar lt 5) retornar Print (quot quot ) Para (int i 20 i gt 0 i--) Sumi 9 mySMAi Sumwi 9 int k 8 para (int j 1 j lt 8 j) Sumi k mySMAij Sumwi k se (smoothtrue amp j lt i) Sumi k mySMAi-j Sumwi K CalValuei Sumi / Sumwi /// Traçar a matriz CalValue para (int p 0 p lt 20-1 p) Imprimir (quotCalValuequot p. ToString () quot quot CalValuep. ToString ()) Valores0.Set (CalValue0) região Propriedades Browsable ( False) // esta linha impede que a série de dados seja exibida no i Diálogo de propriedades do ndicator, não remova XmlIgnore () // esta linha garante que o indicador pode ser salvo / recuperado como parte de um modelo de gráfico, não remova dados públicos do DataSeries. Estes são os valores da janela de saída. O gráfico é um gráfico diário do estoque XOM: CalValue0 88,6862222222222 CalValue1 88,5771698113207 CalValue2 88,4696666666667 CalValue3 88,3572727272727 CalValue4 88,2442253521127 CalValue5 88,1388 CalValue6 88,0338461538461 CalValue7 87,925625 CalValue8 87,8082716049383 CalValue9 87,7025925925926 CalValue10 87,6198765432098 CalValue11 87,5351851851851 CalValue12 87,4653086419753 CalValue13 87,4077777777778 CalValue14 87,3669135802469 CalValue15 87,3176543209876 CalValue16 87,307037037037 CalValue17 87,3366666666666 CalValue18 87,3922222222222 CalValue19 87.4985185185185 No entanto, cada vez que o gráfico traça os seguintes valores. Parece que o ninjascript ignora a seção quotif (smoothtrue amp j lt i) quot. Estou confuso. O que está errado CalValue0 88,6862222222222 CalValue1 88,3988888888889 CalValue2 88,2133333333333 CalValue3 88,048 CalValue4 87,9091111111111 CalValue5 87,8384444444444 CalValue6 87,5957777777777 CalValue7 87,5348888888889 CalValue8 87,4088888888889 CalValue9 87,4468888888888 CalValue10 87,4566666666666 CalValue11 87,3546666666666 CalValue12 87,3675555555555 CalValue13 87,3731111111111 CalValue14 87,3708888888888 CalValue15 87,0395555555555 CalValue16 87,1595555555555 CalValue17 87,2768888888888 CalValue18 87,3608888888888 CalValue19 87.6359999999999 muito obrigado pela dica, Fat Tails eu reparei a parte que você mencionou. Por sinal, acho que agora entendo o problema. É a atribuição de valores e, portanto, traçando o índice correto. Eu fiz um experimento e encontrei as seguintes coisas: 1) Em um gráfico, limitei o número de barras de vela para 43 barras. Como os cálculos não envolvem a barra quotoldestquot (a barra 42th) e a quotnewestquot bar (a barra 0th), espera-se que existam 41 grupos de dados. 2) Em seguida, verifiquei a janela Saída e contei o número de grupo. Com certeza, existem exatamente 41 grupos de dados. Isso significa que o indicador mostrará no gráfico da barra 41 para a 1ª barra. (Não entendo por que o indicador começa na 1ª barra em vez da barra 0. Qualquer idéia) 3) Se eu escrever Values0.Set (CalValue0), isso significa que somente o 0º elemento de cada grupo será plotado. Com certeza, o quotData Boxquot verifica que cada uma das barras (41 a 1) mostra o valor indicador do 0º elemento. Aqui está a minha necessidade de ajuda --- Eu só quero traçar os valores do grupo quotmost recentquot. Por exemplo, eu tenho os seguintes resultados da janela de saída:::: Novo: CalValue0 88.37875 Novo: CalValue1 88.45875 Novo: CalValue2 88.3376923076923 Novo: CalValue3 88.2317948717948 Novo: CalValue4 88.0007692307692 Novo: CalValue0 88.6925 Novo: CalValue1 88.5190625 Novo: CalValue2 88.5451282051282 Novo: CalValue3 88.3376923076923 Novo: CalValue4 88.2317948717948 Novo: CalValue0 89.10125 Novo: CalValue1 88.914375 Novo: CalValue2 88.7094871794872 Novo: CalValue3 88.5451282051282 Novo: CalValue4 88.3376923076923 Eu só quero o grupo LAST de dados e tê-los plotados da seguinte maneira: CalValue0 89.10125 na barra atual (barra 0 ) CalValue1 88.914375 na barra anterior (barra 1) CalValue2 88.7094871794872 na barra de dois dias do ano (barra 2) CalValue3 88.5451282051282 na barra de três dias atrás (barra 3) CalValue4 88.3376923076923 na barra de quatro dias do ano ( Barra 4) Quais códigos devo escrever, ou como estruturo minha matriz e índices para obter o meu plano correto Muito obrigado pela sua ajuda

No comments:

Post a Comment