Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
95% der sporadischen Fehler hängen mit Initialisierungsfehlern oder deren Fehlen zusammen. Ein Codefragment wird also nicht helfen, und der gesamte Code wird es auch nicht, weil er paranoid ist ;-)
Die Ursache sollte sehr weit vom Ort der Manifestation entfernt gesucht werden, und es ist langweilig für den Aftar - es ist einfacher zu fordern, dass die Entwickler erschossen werden. Das wird mit Sicherheit helfen.
// Das hilft wirklich, nicht wahr, falkov? : )
Großartig! Es scheint, dass es helfen sollte! :)
Ich führe die Initialisierung stumpfsinnig ÜBERALL und IMMER durch! Selbst wenn ich einer Variablen nach ein paar Zeilen einen Wert zuweise. Ich habe gerade eine eiserne Regel aufgestellt - wenn Sie eine Variable deklarieren, initialisieren Sie sie mit null oder einem leeren String :)
Über Paranoia absolut richtig!
Metadriver, du bist ein Schamane!
Großartig! Das scheint zu helfen! :)
Initialisieren ist überall doof!
Ich glaube es nicht, ich muss es dieses Mal verpasst haben :)
// Schauen Sie sich den gesamten Code aus diesem Blickwinkel noch einmal genau an.
// Es ist der Glaube an dein "IMMER UND IMMER", der die Wahrnehmung deines eigenen Gähnens filtern kann, denn "ICH IMMER...!!" :))
:)
Ich kann es nicht glauben, diesmal habe ich es sicher verpasst :)
// Schauen Sie sich den gesamten Code noch einmal aus diesem Blickwinkel an.
// Es ist der Glaube an dein "ÜBERALL und ÜBERALL", der die Wahrnehmung deines eigenen Gähnens filtern kann, denn "ICH BIN IMMER...!!" :))
Ich sage euch - Schamane! Am Wochenende habe ich alle EA-Dateien (mehrere tausend Zeilen) überprüft. Und es ist wahr, ich habe zwei oder drei nicht initialisierte Variablen in alten Bibliotheken gefunden.
Meine Regel ist es, ALLE Variablen am Anfang des Funktionskörpers zu deklarieren (das war schon immer der Fall) und sie sofort zu initialisieren (wahrscheinlich letztes Jahr)
Ich halte mich nicht für einen Dummkopf - ich habe mehr als hundert verschiedene Indizes/Skripte/Ratgeber geschrieben :)
Und hier kämpfe ich wie ein Fisch auf dem Eis - ich kann nicht lokalisieren! Ich könnte mich erschießen!
Hier ist der Code, nebenbei bemerkt:
//Найти первое 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, warum prüfen Sie nicht auf Array-Überläufe intShift=structSled.intShift_PastSearch;
wenn intShift außerhalb der Array-Grenzen liegt, while(structSled.adblArray_Short[intShift]==structSled.adblArray_Long[intShift] && intShift>1) {intShift--;}
führt sofort zu einem Fehler, da der Code von links nach rechts ausgeführt wird und der Verweis auf structSled.adblArray_Short[intShift] vor && intShift>1 steht
set check after intShift=structSled.intShift_PastSearch; and then output if exit outside the array then Print(Hurray! It worked!)
wie diese
Wissen Sie, ich habe versucht, in dieser Form zu kompilieren, das macht mir Angst.
'PositionGetInteger' - Konstante erwartet.mq5 65 44 Ich sehe das Wort Konstante. Aber was braucht sie? Sie steht in der ersten Zeile der Funktion.
Und so verhält es sich auch bei allen anderen Variablendeklarationen, aber ich habe die Funktion doch gemäß der Hilfe deklariert, oder?
Preis' - fehlender Standardwert für den Parameter order.mq5 65 92