Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 1289

 
SanAlex:

Ich habe auch experimentiert - ich habe die Kamera geöffnet und konnte sie nicht mehr schließen - bis ich den Prozess beendet habe.

https://www.gunsmoker.ru/2015/01/avoid-using-ShellExecuteEx.html

Почему вам не следует использовать ShellExecute(Ex)
  • 2015.01.05
  • GunSmoker
  • www.gunsmoker.ru
В прошлый раз мы узнали, почему вам никогда не следует использовать функцию . В этот раз я расскажу вам о том, почему вам не следует использовать функцию . Заголовки этого и предыдущего постов выбраны крайне тщательно. Предыдущий пост говорил о том, что если вы пишете код в 1995 году или позднее, то вы не должны использовать функцию . Поскольку...
 

Können Sie mir bitte sagen, was das Problem ist?

     if(buy_lots>0||sell_lots>0)
      ChartSetSymbolPeriod(0,Symbol(),PERIOD_M15);
     if(buy_lots==0||sell_lots==0)
      ChartSetSymbolPeriod(0,Symbol(),PERIOD_M5);

Wenn es keine offenen Aufträge gibt, ist M5 aktiviert und alles ist in Ordnung,

Aber sobald ein Auftrag eröffnet wird, springt er M5,M15,M5,M15...

 
MakarFX:

Können Sie mir bitte sagen, was das Problem ist?

Wenn es keine offenen Aufträge gibt, ist M5 aktiviert und alles ist in Ordnung,

Aber sobald ich einen Auftrag eröffne, fängt er an, auf M5, M15, M5, M15 zu hüpfen...

Es ist genau so, wie es da steht, so passiert es.

Oder ersetzen Sie in der unteren Zeile durch AND

 
Valeriy Yastremskiy:

Es ist so, wie es geschrieben steht, so funktioniert es.

Oder ersetzen Sie im unteren Teil durch E

Danke, das habe ich getan, aber das Ergebnis ist das gleiche

     if(buy_lots>0||sell_lots>0)
      ChartSetSymbolPeriod(0,Symbol(),PERIOD_M15);
     if(buy_lots+sell_lots==0)
      ChartSetSymbolPeriod(0,Symbol(),PERIOD_M5);
 
MakarFX:

Danke, ich habe sie ersetzt, aber das Ergebnis ist das gleiche.

  
      Alert("1 buy_lots ",buy_lots," sell_lots " sell_lots);
    if(buy_lots>0||sell_lots>0)
      ChartSetSymbolPeriod(0,Symbol(),PERIOD_M15);
     Alert("2 buy_lots ",buy_lots," sell_lots " sell_lots);
     if(buy_lots==0 && sell_lots==0)
      ChartSetSymbolPeriod(0,Symbol(),PERIOD_M5);

Es fehlt also etwas. Also ist die Summe vonbuy_lots+sell_lots=0

Und besser als die Addition. Entweder Alert oder Print um zu helfen.

 
Valeriy Yastremskiy:

Es fehlt also etwas. Also ist die Summe vonbuy_lots+sell_lots=0

Und besser als die Addition. Entweder Alert oder Print um zu helfen.

Inwiefern ist es besser?

(0 == 0 und 1 == 0) - Bedingung ist nicht erfüllt

(0 + 1 == 0) - die Bedingung ist ebenfalls nicht erfüllt

Was ist der Unterschied zwischen AND und Addition in diesem Beispiel?

 
MakarFX:

Danke, ich habe es ersetzt, aber das Ergebnis ist das gleiche

Die Werte von buy_lots und sell_lots verlieren also wahrscheinlich irgendwo ihre Werte.
 
Alexey Viktorov:
Überprüfen Sie also die Werte von buy_lots und sell_lots, sie verlieren wahrscheinlich irgendwo ihre Werte.

Drucken


Es ist nicht klar, warum er zu M5 wechselt.

 
MakarFX:

Drucken


Es ist nicht klar, warum er auf M5 schaltet.

Wenn die TF umgeschaltet wird, wird der EA neu gestartet. Versuchen Sie, die Drucke unter Bedingung zu stellen, wechseln Sie und drucken Sie. Oder andersherum.

Und wir sollten auf jeden Fall die Bedingung einer regelmäßigen Überprüfung hinzufügen. Wenn Sie zu M15 wechseln, warum sollten Sie dann wieder wechseln?

 
Igor Makanu:

Deshalb ist es empfehlenswert, die EA-Arbeit ausschließlich mit den Magiern zu machen.

Wenn die Aufgabe darin besteht, einmal am Tag zu einer bestimmten Zeit einen Auftrag zu eröffnen, sieht der Algorithmus wie folgt aus:

- EA starten, es prüft die Anzahl der offenen Aufträge, wenn der Auftrag mit unserem Zauberer offen ist, dann verlassen, bis der nächste Tick

- wenn keine Aufträge vorliegen, wartet der EA, bis die aktuelle Stunde und die Minuten größer als die angegebenen sind

- diese Zeit ist gekommen, EA wird die Auftragshistorie überprüfen und wenn in den letzten 24 Stunden kein Auftrag mit unserem Magier platziert wurde, dann wird er einen Auftrag platzieren und beenden - die Beendigung ist nützlich, um keine Serverfehler zu verarbeiten, wenn der Auftrag nicht platziert wurde, dann werden wir beim nächsten Tick versuchen, es wieder zu tun, d.h. wir brauchen keinen Zyklus für mehrere Auftragseröffnungen auf diesem Tick zu organisieren.... aber das ist eine Frage des Geschmacks und der Ziele, es ist die einfachste Umsetzung)))

Bitte sagen Sie mir, was EA in Ihrem Zusammenhang bedeutet. Ich möchte mehr Details finden und lesen.....
Ich möchte sie auf der folgenden Website finden und mehr über sie erfahren: Vielen Dank.