Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 683
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
Você não os inicializou no início ou em qualquer outro lugar, você apenas os declarou
Escrevi antes de usar, isto é, se você tem as variáveis SredRazmax, SredRazmin, Sredn como somas de valores de array, então para calcular corretamente a soma, você precisa zerar a variável e então adicionar os valores de array e salvá-los nesta variável
ou seja
E o segundo, o que você tem uma pergunta, no indicador cada tick chamaráOnCalculate() e significa que você contará constantemente os tops de ZigZag a cada tick, ou seja, cerca de 40-60 vezes por segundo.
Obrigado, mas eu tentei zerá-los e tenteiusarOnStart em vez deOnCalculate() , os valores ainda estão pulando e não está claro para mim se ww=0 (o valor do array é sempre exibido) , por que os valores estão pulando no meio, como fazer para não contar cada tick e apenas contar os valores do array?
Obrigado, mas eu tentei zerá-los e tenteiusarOnStart ao invés deOnCalculate()
Acho que não consigo explicar porque isso acontece, a questão é que OnStart() é usado em scripts e OnCalculate() é usado em indicadores. Você deve entender a diferença entre scripts e indicadores em MQL.
não estou bem claro qual é sua tarefa? você quer produzir os valores de quê? no código, você soma os preços aos quais os picos ZigZag estão localizados no gráfico inteiro, na produção você escreve "Spread médio" e imprime o valor(SredRazmax-SredRazmin)/nn, e o cálculo é realizado para todas as barras
por que você precisa do indicador se você não usa amortecedores indicadores para desenhar? nos amortecedores indicadores estão presos às barras, e seus valores mudarão assim que uma nova barra aparecer
Eu acho que não consigo explicar porque isso acontece, a questão é que OnStart() é usado em scripts, e OnCalculate() em indicadores, você precisa entender como os scripts diferem dos indicadores em MQL
não estou bem claro qual é sua tarefa? você quer produzir os valores de quê? no código, você soma os preços aos quais os picos ZigZag estão localizados no gráfico inteiro, na produção você escreve "Spread médio" e imprime o valor(SredRazmax-SredRazmin)/nn, e o cálculo é realizado para todas as barras
Por que você precisa de um indicador se você não usa amortecedores indicadores para o desenho? Em um amortecedor indicador os amortecedores estão presos às barras e seus valores se moverão assim que uma nova barra aparecer
Para ser honesto, simplifiquei o problema (a fórmula original parece um pouco diferente), pensei que seria capaz de entender por que os valores do salto médio quando o valor zero na matriz permanece constante. Tenho dois loops, um para preencher a matriz e outro para o cálculo da média, há um limite de nn, e na verdade eu queria emitir um gráfico - é um zig-zag padrão, mas o iCustom está tirando o inferno de fora, e a média... De zero nó, se for maior que o anterior, subtrair o nó anterior e o anterior (será sinal de menos, portanto deve ser multiplicado por menos 1) e tudo isso deve ser somado e dividido por um determinado número de nn nós. Obtemos uma média de vértices. Além disso, eu queria obter outras médias para ziguezaguear, mas fiquei preso a valores de "salto".
Era mais ou menos como era originalmente:
Para ser honesto, eu simplifiquei o problema (originalmente a fórmula parece um pouco diferente), pensei que poderia entender porque os valores do salto médio, se o valor zero na matriz permanece constante. Tenho dois loops, um para preencher a matriz e outro para calcular a média, há um limite de nn, e na verdade eu também queria emitir um gráfico - é um zig-zag padrão, mas o iCustom tira o inferno dele, e a média... De zero nó, se for maior que o anterior, subtraia o nó anterior e do anterior subtraia o prerevioso (será sinal de menos, portanto deve ser multiplicado por menos 1) e tudo isso deve ser somado e dividido por um determinado número de nn. Obtemos uma média de vértices. Além disso, eu queria obter outras médias para ziguezaguear, mas fiquei preso a valores de "salto".
Isto é aproximadamente como era originalmente:
Eu realmente não entendo, é tarde, estou com sono, eu o ajustei como vi, tenho dúvidas de como o indicador se comportará em uma barra zero (eu não verifiquei), mas ele desenha e exibe comentários de acordo com sua fórmula
Você pode me ajudar a resolver um problema como este? (Se possível.)
O Conselheiro Especialista emitirá um Alerta sob certas condições. É possível fazer com que a janela que acionou o Alerta se torne ativa também?
Você pode me ajudar a resolver um problema como este? (Se possível.)
O Conselheiro Especialista emitirá um Alerta sob certas condições. É possível fazer com que a janela que acionou o Alerta se torne ativa também?
Tenho algumas dúvidas de como o indicador se comportará em uma barra de zero (não verifiquei), mas ele desenha e usa sua fórmula para emitir o comentário.
Sim, obrigado por seu tempo, funciona, devo ter feito algo errado. Mas não está dando uma matriz no comentário (só deve haver vértices, certo?) e conta mal com menos e número..., o ziguezague tem um spread diferente entre os vértices. A idéia é subtrair o vértice menor anterior do último maior (que acaba de ser formado), e do menor anterior subtrair até mesmo o maior e o número será com sinal de menos, multiplicamo-lo por (-1) e assim por diante, e tudo isso é somado nn vezes e dividido por nn, obtemos a partida média. Aproximadamente em 4 relógios, isto seria 1,69(de a) sobre USDJPY. Além disso, eu queria calcular a média do número de barras entre os topos. Agora vou tentar entender seu código, o que fiz de errado, por que ele não me desenhou e por que não calcula corretamente...
Sim, obrigado pelo seu tempo, realmente funciona, eu devo ter feito algo errado. Mas não sai a matriz no comentário (deveria ter apenas vértices, certo?) e conta mal com menos e número..., o ziguezague não tem a mesma distribuição entre os vértices. A idéia é subtrair o vértice menor anterior do último maior (que acaba de ser formado), e do menor anterior subtrair até mesmo o maior e o número será com sinal de menos, multiplicamo-lo por (-1) e assim por diante, e tudo isso é somado nn vezes e dividido por nn, obtemos a partida média. Aproximadamente em 4 relógios, isto seria 1,69(de a) sobre USDJPY. Além disso, eu queria calcular a média do número de barras entre os topos. Agora vou tentar entender seu código, o que fiz de errado, por que ele não me desenhou e por que não calcula corretamente...
As partes superiores no comentário não sairão, porque o buffer indicadorHZZ[] contém valores copiados do buffer indicador ZigZag, caso contrário não poderemos desenhar, dividi deliberadamente em 2 condições de detecção de vértices para cima e para baixo:
Se vocêprecisa conhecer vários tops em ZZ, então você tem que criar outro array para armazenar estes dados. O novo buffer de indicadores irá complicá-lo, porque todos os arrays conectados aos buffers de indicadores "escorregam" junto com o gráfico
ZS: o código é meu exemplo, e eu acho que ele precisa de loop para a 1ª barra, e não para 0, irá recalcular constantemente os valores do SredRazmax, eu não posso verificar agora, nenhum terminal no PC
As partes superiores no comentário não sairão, porque o buffer indicadorHZZ[] contém valores copiados do buffer indicador ZigZag, caso contrário não poderemos desenhar, dividi deliberadamente em 2 condições de detecção de vértices para cima e para baixo:
Se vocêprecisa conhecer alguns tops em ZZ, então você tem que criar outro array para armazenar estes dados. O novo buffer de indicadores irá complicá-lo, porque todos os arrays conectados aos buffers de indicadores "escorregam" junto com o gráfico
ZS: o código é meu exemplo, e eu acho que há necessidade de loop para a 1ª barra, e não para 0, irá recalcular constantemente o valor do SredRazmax, eu não posso verificar agora, nenhum terminal no PC