Wednesday 27 December 2017

Movimento média ring buffer


MetaTrader 5 - Indicadores. A classe para desenhar MACD usando o buffer de anel - indicador para MetaTrader 5. A classe CMACDOnRingBuffer é projetada para o cálculo do indicador técnico Moving Average Divergência de Convergência Média Móvel Divergência de Convergência MACD usando o algoritmo do ring buffer. File de A classe deve ser colocada na pasta IncOnRingBuffer que precisa ser estabelecida em MQL5 Incluir Dois arquivos com os exemplos usados ​​pela classe desta pasta são anexados à descrição Arquivo com a classe do buffer de anel ea classe de Moving Average também deve Ser nesta pasta. Para obter os dados calculados do indicador do buffer de anel é possível a partir da matriz usual Por exemplo. Por favor, note que a indexação no buffer de anel é o mesmo que na série de tempo. O arquivo calcula o indicador baseado Na série de tempo de preço O aplicativo de método MainOnArray é demonstrado. O arquivo demonstra o uso do método MainOnValue No início, o indicador MACD é cal Calculado e desenhado Então, com base no buffer de anel deste indicador, um mais indicador MACD é drawn. The resultado do trabalho do com o tamanho do buffer de anel de 256 elements. the resultado do trabalho do com o tamanho Do buffer de anel de 256 elementos. MetaTrader 5 - Indicadores. A classe para desenho Moving Average usando o buffer de anel - indicador para MetaTrader 5. A classe CMAOnRingBuffer é projetado para o cálculo de Moving Averages Moving Average usando o algoritmo do ring buffer. File Da classe deve ser colocado na pasta IncOnRingBuffer que precisa ser estabelecida em MQL5 Incluir Dois arquivos com os exemplos usados ​​pela classe desta pasta são anexados à descrição Arquivo com a classe do buffer de anel também deve estar nesta pasta. Para obter os dados calculados do indicador a partir do buffer de anel é possível a partir da matriz usual Por exemplo. Por favor, note que a indexação no buffer de anel é o mesmo que em uma série de tempo. O indicador calcula o fil E com base na série de tempo de preço O aplicativo de método MainOnArray é demonstrado. O arquivo demonstra o uso do método MainOnValue Em primeiro lugar, o indicador MA é calculado e extrai Então, com base no buffer de anel deste indicador, um indicador mais é calculado. O resultado do trabalho do com o tamanho do amortecedor do anel de 256 elementos. O resultado do trabalho do com o tamanho do amortecedor do anel de 256 elementos. Uma das aplicações principais para a placa de Arduino é leitura e registrar De dados do sensor Por exemplo, um monitora a pressão a cada segundo do dia Como altas taxas de amostragem muitas vezes gera picos nos gráficos também se quer ter uma média das medidas Como as medições não são estáticas no tempo o que muitas vezes precisamos é de uma média de corrida Isso É a média de um determinado período e muito valioso ao fazer a análise de tendência. A forma mais simples de uma média em execução pode ser feita por um código que se baseia na média anterior de execução. Se não se deseja usar float A divisão por 256 no código de exemplo é um turno-direito 8, que é mais rápido do que dizer divisão por, por exemplo, 100 Isso é verdade Para cada poder de 2 como divisor e um só deve ter cuidado a soma dos pesos é igual ao poder de 2 E, claro, deve-se tomar cuidado não há transbordamento intermediário considerar o uso de unsigned long. If você precisa de uma média mais precisa execução, em Concreto das últimas 10 medições, você precisa de uma matriz ou lista vinculada para mantê-los Esta matriz age como um buffer circular e com cada nova medição a mais antiga é removida A média de corrida é calculada como a soma de todos os elementos dividido pelo número de Elementos na matriz O código para a média em execução será algo como this. Drawback deste código é que a matriz para armazenar todos os valores pode se tornar muito grande Se você tem uma medição por segundo e você quer uma média de execução por minuto você Precisa de uma matriz de 60 uma média por hora precisaria de uma matriz de 3600 Isso couldn t ser feito desta forma em um Arduino como ele só tem 2K de RAM No entanto, através da construção de uma média de 2 estágios pode ser abordado bastante bem não para todas as medidas Em psuedo code. As uma nova matriz estática interna é necessária para cada função runningAverage, isso grita para ser implementado como uma biblioteca class. RunningAverage. A biblioteca runningAverage faz uma classe da função acima para que ele possa ser usado várias vezes em um esboço It Desacopla o add e a função avg para ser um pouco mais flexível, por exemplo, pode-se chamar a média de várias vezes sem adicionar uma coisa Observe que cada instância da classe adiciona sua própria matriz para realizar medições, e que isso adiciona até o uso de memória A interface da classe é mantida tão pequena quanto possível. Nota com versão 0 2 os nomes dos métodos são todos feitos mais descritivo. Um pequeno esboço mostra como ele pode ser usado Um gerador aleatório é usado para imitar um sensor. Ele myRA é desmarcada para que possamos começar a adicionar novos dados. No primeiro loop um número aleatório é gerado e convertido para um flutuador a ser adicionado ao myRA Então o runningAverage é impresso para a porta serial também pode exibi-lo em algum LCD ou enviar mais Ethernet etc Quando 300 itens são adicionados myRA é limpo para recomeçar novamente. Para usar a biblioteca, faça uma pasta em suas libraries SKETCHBOOKPATH com o nome RunningAverage e coloque o h e não Opcionalmente fazer um subdiretório de exemplos para colocar o app app.2017- 01-30 initial version.2017-02-28 destrutor fixo fixo em h file.2017-02-28 removido padrão constructor.2017- - trimValue Yuval Naveh adicionado trimValue encontrado em web.2017-11-21 refactored.2017-12- 30 added fillValue refactored for publishing.2017-07-03 adicionado código de proteção de memória - se matriz interna não pode ser alocada tamanho torna-se 0 Isso é para resolver o problema descrito here. Test extensively. Template class. RunningAverage h. RunningAverage.

No comments:

Post a Comment