Fragen von einem "Dummy" - Seite 197

 
FiftyStars:

Wie ermittle ich, wann der nächste Balken eröffnet wird, d.h. der Balken, der sich noch nicht gebildet hat?

Im Allgemeinen ist das nicht möglich, obwohl bei Zeitrahmen von einer halben Stunde oder mehr die Wahrscheinlichkeit einer korrekten Vorhersage bei über 99,9 % liegt.
 

Ist es möglich, eine solche Anfrage in eine Schleife zu legen, um einen Auftrag zu eröffnen? )

      while(result.retcode!=TRADE_RETCODE_DONE)
      {
        if(OrderCheck(request,check))
        {
          OrderSend(request,result);
        }
        if((MQL5InfoInteger(MQL5_TESTING)||MQL5InfoInteger(MQL5_OPTIMIZATION)))break;
      }
 
G001: Ist es möglich, eine solche Anfrage in eine Schleife zu legen, um einen Auftrag zu eröffnen? )
Nicht erwünscht. Stellen Sie sich zum Beispiel vor, dass der Server anstelle von TRADE_RETCODE_DONE die Antwort zurückgibt, dass der Auftrag erteilt wurde. Dann würde Ihr Code den Server mit der gleichen Art von Anfragen überlasten.
 
Yedelkin:
Nicht erwünscht. Stellen Sie sich zum Beispiel vor, dass der Server anstelle von TRADE_RETCODE_DONE eine Antwort zurückgibt, dass eine Bestellung aufgegeben wurde. Dann würde Ihr Code den Server mit der gleichen Art von Anfragen überlasten.

Wäre das besser?

      int ResBear = -1;
      while(ResBear == -1)
      {
        if(OrderCheck(request,check))
        {
          ResBear = OrderSend(request,result);
        }
        if((MQL5InfoInteger(MQL5_TESTING)||MQL5InfoInteger(MQL5_OPTIMIZATION)))break;
      }
 
G001: Wird es auf diese Weise besser sein?

Unwahrscheinlich. Sehen Sie sich die Beschreibung der Funktion OrderSend() an. Es sollte Ihnen sagen, dass Sie bei erfolgreicher Ausführung noch den Rückgabecode überprüfen müssen. Wir müssen also den mühsamsten Weg gehen: Wir nehmen eine Liste von Rückgabecodes und denken uns das Programmverhalten für jeden dieser Codes aus. D.h. "wir haben OrderSend() gesendet , den Returncode erhalten und auf den erhaltenen Retcode reagiert".

Der zweite Punkt. Es ist besser, das Ereignismodell zu verwenden. D.h. die Funktion wird nicht in einer Schleife ausgeführt, nachdem ein Tick eingetroffen ist, und nach mehreren erfolglosen Versuchen wird die Funktion beendet und auf einen neuen Tick gewartet.

 
Danke, das ist wirklich mühsam, ich werde die Anzahl der Versuche besser begrenzen.
 
G001: Danke, das ist wirklich mühsam, ich werde die Anzahl der Versuche besser begrenzen.

Irgendwann musst du es sowieso tun :) Ich spreche aus eigener Erfahrung.

 
Da bin ich mir sicher, aber bisher fehlt es an Wissen.
 

Entschuldigung, wie kann ich eine Bedingung so einstellen, dass im Tester keine Bedingung vorliegt, aber im Tester im visuellen Modus eine Bedingung vorliegt?

Die Eigenschaftsliste lässt dies nicht zu, und aus irgendeinem Grund funktioniert diese Bedingung bei mir nicht:

if(MQL5InfoInteger(MQL5_TESTER)!=1 || MQL5InfoInteger(MQL5_TESTER)==1 && MQL5InfoInteger(MQL5_VISUAL_MODE)==1)

 
if(MQL5InfoInteger(MQL5_TESTER)!=1 || MQL5InfoInteger(MQL5_TESTER)==1 && MQL5InfoInteger(MQL5_VISUAL_MODE)==1)

Aus dieser Bedingung ergibt sich, dass es in drei Situationen funktionieren wird:

1) Wenn das Prüfgerät in Betrieb ist

2) Wenn das Prüfgerät NICHT funktioniert

3) Wenn das visuelle Prüfgerät funktioniert

damit die Funktion immer funktioniert, sollten Sie wahrscheinlich die zweite Bedingung entfernen und die erste und dritte mit && verbinden