Fehler, Irrtümer, Fragen - Seite 823

 
MetaDriver:

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!

Документация по MQL5: Основы языка / Переменные
Документация по MQL5: Основы языка / Переменные
  • www.mql5.com
Основы языка / Переменные - Документация по MQL5
 
falkov:

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...!!" :))

 
MetaDriver:
:)

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!

Документация по MQL5: Основы языка / Функции
Документация по MQL5: Основы языка / Функции
  • www.mql5.com
Основы языка / Функции - Документация по MQL5
 

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;
}
//-------------------------------------------------------------------------------------------------

 
falkov: Hier ist der Code, nebenbei bemerkt:

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

 
Guten Abend, könnte es eine Funktion wie diese geben
void  PositionModify( int PositionTicket= PositionGetInteger(POSITION_IDENTIFIER), double price, double stoploss, double takeprofit, datetime expiration, color arrow_color=CLR_NONE)
      {  MqlTradeRequest request;
         MqlTradeResult result;
        request.action= TRADE_ACTION_SLTP; 
        request.order= PositionTicket; 
        request.price= price;
        request.symbol= Symbol();
        request.sl= stoploss;
        request.tp= takeprofit;
        return (OrderSend( request,   result    ));   
      }
Müssen die Strukturen bei der Deklaration in diesem Fall auf Null gesetzt werden?
 
DANKESCHÖN!!!
 

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

 
Danke, ich stelle sie jetzt zusammen.