Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 6. - Seite 1077

 

Was ist der richtige Weg, um mit dem Fehler : array out of range in '... in dieser Situation umzugehen, wenn man zu #property strict wechselt?



int limit=rates_total-prev_calculated;

ArrayResize(?,?,?);


for(i=0; i<limit; i++)
 {
  if(Буфер[i]-Буфер[i+1] < 0.0)  Буф2[i]=Буфер[i];
 }
 

Mach es so

int limit = prev_calculated > 0 ? rates_total-prev_calculated : rates_total-1;

Anstelle von 1 können Sie jede beliebige Zahl außer 0 eingeben. Je höher die Zahl, desto weniger Takte werden beim Start des Indikators gezählt.

Und entfernen

ArrayResize(?,?,?);

es ist absolut nutzlos.

 
AlexeyVik:

Mach es so

Anstelle von 1 können Sie jede beliebige Zahl außer 0 eingeben. Je höher die Zahl, desto weniger Takte werden beim Start des Indikators gezählt.

Und entfernen

es ist absolut nutzlos.

Ich verstehe jetzt. Danke für den Rat.
 
Leute, es gibt einen Befehl t1=StrToTime(TimeToStr(dt, TIME_DATE)+" 10:00"); wie setze ich nicht heute 10:00, sondern morgen 10:00? hint please!
 
kocunyc89 : es gibt einen Befehl t1=StrToTime(TimeToStr(dt, TIME_DATE)+" 10:00");wie setze ich nicht heute 10:00 sondern morgen 10:00? datetime dt=TimeLocal();
datetime t1=StrToTime(TimeToStr(dt, TIME_DATE)+" 10:00") + 24*60*60;

Alert("Jetzt = ",dt, " Morgen um 10:00 = ",t1);

 
LRA:
kocunyc89 : es gibt einen Befehl t1=StrToTime(TimeToStr(dt, TIME_DATE)+" 10:00");wie setze ich nicht heute 10:00 sondern morgen 10:00? datetime dt=TimeLocal();
datetime t1=StrToTime(TimeToStr(dt, TIME_DATE)+" 10:00") + 24*60*60;

Alert("Jetzt = ",dt, " Morgen um 10:00 = ",t1);

Herzlichen Dank!
 
 if (Sob_01_0_1==1 && OrderSelect(ticket3_buy, SELECT_BY_TICKET)==true)
        {
         Alert("Sob_01_0_1=",Sob_01_0_1);
         Alert("здесь код перестает работать?"); 
                   
        if (OrderTakeProfit()>0 && OrderCloseTime()>0)
           {
           Alert("третий ордер на покупку закрыт, событие 011");
           bool close6=OrderClose(ticket3_sell, lot3, Ask, 20, clrRed);
                if (close6==true)
                   Alert("третий ордер на продажу закрыт");
                   else Alert("ошибка закрытия третьего ордера на продажу", GetLastError());
           bool close7=OrderClose(ticket2_sell, lot2, Ask, 20, clrRed);
                if (close7==true)
                   Alert("закрыт второй модифицированный ордер на продажу");
                   else Alert("ошибка закрытия второго модифицированного ордера на продажу ticket2_sell ", GetLastError());
               Sob_01_0_1++;
               Sob011++;
           }
         }
 
bobrush:
Guten Abend, können Sie mir sagen, wo der Fehler liegt? Code funktioniert nicht mehr nachAlert("Hier funktioniert der Code nicht mehr?");. D.h. wennticket3_buy mit Gewinn schließt, dann wird die if-Anweisung nicht ausgeführt.
 

Guten Abend zusammen. Frage eines Dummys zu den Funktionen iLowest und iHighest. Am Anfang wollte ich diese Funktionen nutzen, um den High/Low Break in meinem EA zu finden und eine Pending Order zu platzieren. Mit iLowest funktioniert alles, aber iHighest stellt keine Aufträge ein. Aber das ist ein Wort, denn ich habe dieses Problem bereits auf andere Weise gelöst. Ich muss nun einen schwebenden Auftrag löschen, wenn er storniert wurde, um ihn zu einem neuen Preis zu eröffnen. Ich habe versucht, die oben genannten Funktionen erneut zu verwenden. Es gibt kein Problem mit iLowest und dem Entfernen eines schwebenden Kaufauftrags; ich habe Probleme mit iHighest beim Entfernen eines Verkaufsauftrags - der Auftrag wird entfernt, wenn eine Bedingung noch nicht erfüllt ist (Preis liegt unter dem Höchstwert), ein neuer Auftrag wird erteilt, wieder entfernt und so weiter. Wenn der Preis das Maximum überschritten hat, wird er gelöscht und ein neuer wird nicht ausgeführt, aber sobald der aktuelle Preis unter das vorherige Maximum gesunken ist, beginnt das "Pfeifen" wieder.

Die Bedingungen sind wie folgt formuliert

if(iHighest(NULL, 0, MODE_HIGH, 70, 2) < iHigh(NULL, 0, 1)

{

DeleteOrders(OP_SELLSTOP, Magic);

}

if(iLowhest(NULL, 0, MODE_HIGH, 70, 2) > iLow(NULL, 0, 1)

{

DeleteOrders(OP_BUYSTOP, Magic);

}

(Die Löschfunktion wird separat ausgeschrieben). Was mache ich falsch, wo liegt der Fehler?

 
Wir entschuldigen uns für die Unannehmlichkeiten, es ist alles geklärt. Ich habe die Löschbedingung im EA ein wenig anders geschrieben als im Forum - es gab keinen Offset relativ zum aktuellen Bar.
Grund der Beschwerde: