Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Para testar algo, você precisa estar no paradigma do que está acontecendo ))
Percebi que é mais fácil para mim esboçar minha própria versão, já que não estou próximo da abordagem atual. Em particular, parece-me que a classe CIndMSTF é um tipo de superclasse. Em seguida, várias classes de indicadores são criadas com base nela. Assustador - o arquivo IndMSTF.mqh tem 4 mil linhas de código)) Optei por usar uma instância da classe CIndicators como uma coleção de indicadores. É muito conveniente. Você não precisa reinventar a roda...
Então, por que a classe CIndMSTF deveria armazenar dados em buffers (SBuffer m_buffers[])? Nós os calculamos uma vez em OnCalculate() e isso é suficiente. Ou seja, nós o tomamos como parâmetro por referência, o calculamos e o fornecemos a você...
Escreverei mais tarde sobre o que não concordo quando terminar minha versão...
Sim, gostei de saber que existe esse mecanismo:
Por causa da extensibilidade, de modo que os dados calculados estejam em uma matriz separada da parte do cálculo. O CopyBuffer copia um determinado número de barras em uma matriz e redimensiona a matriz receptora para se ajustar à quantidade de dados copiados. Ou seja, se você precisar de dados o tempo todo, precisará copiá-los do buffer da parte de cálculo o tempo todo.
Aqui, fizemos com que houvesse uma matriz constantemente preenchida com todos os dados, e os dados são obtidos dela por índice. Sem cópia. A cópia é feita uma vez na inicialização e, em seguida, apenas adicionamos dados de duas barras por vez ao final da lista. Acho que a mesma lógica é usada no SB na classe que você mencionou. Talvez eu tenha me esquecido e esteja errado.
Devido à extensibilidade - para manter os dados calculados em uma matriz separada da parte do cálculo. CopyBuffer copia um número especificado de barras para a matriz e altera o tamanho da matriz receptora para se ajustar à quantidade de dados copiados. Ou seja, se você precisar de dados o tempo todo, deverá copiá-los do buffer da parte de cálculo o tempo todo.
Aqui, fizemos com que houvesse uma matriz constantemente preenchida com todos os dados, e os dados são obtidos dela por índice. Sem cópia. A cópia é feita uma vez na inicialização e, em seguida, apenas adicionamos dados de duas barras por vez ao final da lista. Acho que a mesma lógica é usada no SB na classe que você mencionou. Talvez eu tenha me esquecido e esteja errado.
Sim, há preenchimento de matriz. Mas há também uma tentativa de acesso direto - o método de API CIndicator::GetData(), que chama a função nativa CopyBuffer() de frente.
O primeiro erro no registro do editor é o quê?
Uma mensagem dos desenvolvedores no fórum.
Lembro-me de algo parecido com o 4, mas devo ter perdido o 5....
É estranho que essas coisas não possam ser configuradas no terminal. E não estão descritas na documentação.
Por favor, diga-me, sua abordagem permite que você obtenha dados do buffer zero do TF superior no primeiro tick?
Eu me lembro de algo assim sobre o quatro, mas sobre o cinco, aparentemente eu não percebi....
É estranho que essas coisas não sejam configuradas no terminal. E não estejam descritas na documentação.
Diga-me, por favor, se sua abordagem permite obter dados do buffer zero do TF superior no primeiro tick?