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
95% dos erros esporádicos estão relacionados com erros de inicialização, ou falta deles. Assim, um fragmento de código não ajudará, e o código inteiro não servirá, porque é paranóico ;-)
A razão deve ser procurada muito longe do local de manifestação, e é aborrecido para aphthar - é mais fácil exigir um pelotão de fuzilamento para os promotores. Ajudará com certeza.
// Realmente ajuda, não é, falkov ? : )
Óptimo! Parece que deve ajudar! :)
Faço a inicialização TUDO AQUI e SEMPRE! Mesmo que eu atribua um valor a uma variável após um par de linhas. Acabei de fazer uma regra de ferro - quando declara uma variável, inicialize-a com um fio nulo ou um fio vazio :)
Sobre a paranóia absolutamente correcta!
Metadriver, você é um xamã!
Óptimo! Parece que deve ajudar! :)
Inicializar é estúpido em TODO o lado!
Não acredito! Desta vez, devo ter falhado :)
// Verifique-o realmente de novo, olhe para todo o código a partir deste ângulo.
// É a crença no seu "SEMPRE E SEMPRE" que pode filtrar a percepção do seu próprio bocejo, por "SEMPRE...!!" :))
:)
Não acredito! Desta vez, não acreditei de certeza :)
// Realmente verificar novamente, ver todo o código a partir deste ângulo.
// É a crença no vosso "TUDO e TUDO" que pode filtrar a percepção do vosso próprio bocejo, por "SEMPRE...!!" :))
Estou a dizer-vos - Shaman! Durante o fim-de-semana verifiquei todos os ficheiros da EA (vários milhares de linhas). E é verdade, encontrei duas ou três variáveis não inicializadas em bibliotecas antigas.
A minha regra é declarar TODAS as variáveis no início do corpo funcional (sempre foi o caso) e inicializá-las imediatamente (provavelmente no ano passado)
Não me considero um boneco - já escrevi mais de uma centena de índices/scrições/conselheiros diferentes :)
E aqui estou eu a lutar como um peixe no gelo - não consigo localizar! Eu próprio poderia disparar!
A propósito, aqui está o código:
//Найти первое adblArray_Short х adblArray_Long ПОСЛЕ (позже) intShift_PastSearch (поиск от intShift_PastSearch до нулевого бара)
void FindCrossArrays_PastThisShift(structS & structSled) {
datetime adtmDTM[];
int intShift=0;
if(structSled.intShift_PastSearch>_cintBarsAmountForCalc) {return;}
else if(structSled.intShift_PastSearch<=0) {return;}
ArrayResize(adtmDTM,structSled.intBarsAmountForCalc);
ArrayInitialize(adtmDTM,0);
ArraySetAsSeries(adtmDTM,true);
CopyTime(structSled.strSymbol,structSled.enumTF,0,structSled.intShift_PastSearch+1,adtmDTM);
intShift=structSled.intShift_PastSearch;
▼ - вот здесь ошибка - array out of range in '_indMyAO_from_SetPeriod.mq5' (390,37)
while(structSled.adblArray_Short[intShift]==structSled.adblArray_Long[intShift] && intShift>1) {intShift--;}
if(structSled.adblArray_Short[intShift]>structSled.adblArray_Long[intShift]) {
while(structSled.adblArray_Short[intShift]>structSled.adblArray_Long[intShift] && intShift>0) {intShift--;}
if(intShift>0) {
structSled.intRet_FindingDirection=-1;
structSled.intRet_FindingShift=intShift;
}
else {
structSled.intRet_FindingDirection=0;
structSled.intRet_FindingShift=intShift;
}
}
else if(structSled.adblArray_Short[intShift]<structSled.adblArray_Long[intShift]) {
while(structSled.adblArray_Short[intShift]<structSled.adblArray_Long[intShift] && intShift>0) {intShift--;}
if(intShift>0) {
structSled.intRet_FindingDirection=1;
structSled.intRet_FindingShift=intShift;
}
else {
structSled.intRet_FindingDirection=0;
structSled.intRet_FindingShift=intShift;
}
}
structSled.dtmRet_FindingDTM=adtmDTM[structSled.intRet_FindingShift];
return;
}
//-------------------------------------------------------------------------------------------------
hmm, porque não verifica se há ultrapassagens de matriz intShift=structSled.intShift_PastSearch;
se intShift estiver fora dos limites do array então while(structSledSled.adblArray_Short[intShift]==structSled.adblArray_Long[intShift] && intShift>1) {intShift--;}
irá causar imediatamente um erro porque o código será executado da esquerda para a direita e a referência a structSled.adblArray_Short[intShift] ocorrerá antes de && intShift>1
definir verificação após intShift=structSled.intShift_PastSearch; e depois sair se sair fora da matriz e depois Print(Hurray! Funcionou!)
como esta
Sabem, tentei compilar sob esta forma, assusta-me.
PositionGetInteger' - constante esperada.mq5 65 44 Vejo a palavra constante. Mas de que é que precisa? Está na primeira linha da função.
E é assim para todas as outras declarações variáveis, mas eu declarei a função de acordo com a ajuda, não declarei?
'preço' - valor por defeito em falta para o parâmetro order.mq5 65 92