Erros, bugs, perguntas - página 3151
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
Sempre houve uma verificação: if(limit>1) limit=rates_total-1. Isto é para os casos em que não há i+something no cálculo. Se houver, então estes "quantos-alguma-coisa" devem ser incluídos na construção: limite=taxas_total-1-alguma-coisa.
Sem ele, haveria sempre uma série de ultrapassagens. Porque tarifas_total não é mais do que Bars(). De forma correspondente, se houver 5000 barras e abordarmos o índice 5000, estaremos fora dos limites da matriz (o cálculo das barras começa com zero).
No seu exemplo, o cálculo do limite está errado:
Deveria ser assim:
E depois de verificar o limite>1
E se o limite for superior a um, então limite = taxas_total-1
Obrigado Artem! E desculpem o alarido.
Certo, devia haver um cheque, apenas me esqueci dele.
Ainda tenho um comentário no código
//Cheque e calcule o número de barras calculadas.
Aparentemente, a pasta de cópias causou o meu mal-entendido.
Tudo funciona como deveria com o cheque. Obrigado.
Obrigado Artem!
Certo, deveria haver um cheque, que eu tinha esquecido.
Tudo funciona correctamente com a verificação. Obrigado.
De nada. Fixar o cálculo. Não está correcto - sublinhei isto acima.
-1 não deveria estar aqui.
Se as taxas_totais são 5000, e as barras calculadas na chamada anterior de OnCalculate() são também 5000 (pré_calculadas), então o limite será igual a -1. Por conseguinte, o laço não será executado de todo.
Se quiser seleccionar como ler o indicador (por ticks na barra de zero ou apenas na abertura de uma nova), então introduza uma variável, especificando como o fazer:
int end = (cada carrapato ? WRONG_VALUE : 0);
o laço será o seguinte: for(int i=limit; i>end; i--) { //... }
e o cálculo do limite será correcto, e o laço será como deseja que seja.
Código correcto.
i>=0 para cada carrapato
i>0 para novo bar
Ou
Nem sequer perguntou o que fazer... Os telepatas estão de volta das férias? ;)
Código correcto.
i>=0 para cada carrapato
i>0 para um novo bar
É melhor mudar para o OnInit()
Nem sequer perguntou o que fazer... Os telepatas estão de volta das férias? ;)
:)
Artem, não precisa de ser um telepata para ver que o homem se registou há alguns minutos e a primeira coisa que viu foi "Insectos, insectos, perguntas"
Claramente, ele está a perguntar se consegue arranjar algum dinheiro grátis, e para não causar demasiados problemas...
:)
Artem, não precisa de ser um telepata para ver que o homem se registou há alguns minutos e a primeira coisa que viu foi "Erros, insectos, perguntas"
Claramente, ele está a perguntar se pode obter algum dinheiro de graça, e não se esforçar demasiado...
Talvez tenha decidido ganhar algum dinheiro extra com o Bentley, investindo num tutor? :)
Talvez tenha decidido ganhar algum dinheiro para o seu Bentley, investindo num tutor, através de um trabalho árduo como programador. :)
Sabe o que é mais irritante? Que qualquer comportamento seja enganado silenciosamente, sem aviso prévio.
E depois as pessoas ficam feridas. Estou farto deste metatarraxador.
O desenho de um ciclo indicador é apenas emprestado dos velhos tempos pelo método de copiar-colar (e autocompletar torto) sem pensar.
tudo é simples com a interface actual:
for(int bar=prev_calculated>0?prev_calculates-1:0 ; bar<rates_total; bar++) {
int i=rates_total-1; // i используем если обращения как ArraySetSeries(x,true), иначе bar
....
}
return rates_total;
o empurrão com prev_calculado-1 neste caso é necessário se precisar de recalcular a última barra em cada chamada.
É que o desenho do ciclo indicador é retirado dos velhos tempos de copiar-colar (e auto-completar torto) sem pensar.
tudo é simples com a interface actual:
for(int bar=prev_calculated>0?prev_calculates-1:0 ; bar<rates_total; bar++) {
int i=rates_total-1; // i используем если обращения как ArraySetSeries(x,true), иначе bar
....
}
return rates_total;
o apinhamento com pré-cálculo-1 neste caso é necessário se precisar de recalcular a última barra em cada chamada.
Sim, fiquei um pouco excitado com a minha declaração.
Quando algo costumava funcionar e agora não funciona, os tiques nervosos começam )
E começa-se a verificar tudo e culpa-se infundadamente o acidente, esquecendo-se de alguma peculiaridade de que não se lembra, claro.
E a culpa é da copipasta. Penso que muitos já enfrentaram isto.
Quero sugerir que os criadores façam modelos personalizados para indicadores e EAs.
Poderão seleccioná-los no feiticeiro.
Alguns editores de C/C++ têm esta característica.
É muito conveniente adicionar os modelos básicos, com os quais trabalha principalmente, e depois carregá-los no feiticeiro.
Os modelos padrão de MQL não são de todo os mesmos.
Obviamente, podemos dizer que podemos escrever modelos e depois copiá-los.
E mais uma vez voltamos à palavra insidiosa "copy-paste". E o facto de podermos automatizá-lo e tornar a vida do programador mais fácil não é tido em conta.