Fragen von Anfängern MQL4 MT4 MetaTrader 4 - Seite 230

 
Aleksey Mavrin:

und was, gibt es immer mehr Gewinn nach 10 Sekunden?)

Natürlich nicht immer, aber es kommt oft vor, dass der Kurs in einer Minute fliegt und der EA stumpf zu einem festen Kurs schließt.
 
Nargiz Ravanova:

Ich habe, wie Sie gesagt, aber aus irgendeinem Grund nach dem Schließen der Expert Advisor öffnet Trades ein paar Mal, trotz der Tatsache, dass nach der CloseAll() Funktion habe ich einen Schlupf für eine Stunde.

datetime sleep = TimeCurrent();
if(sleep > TimeCurrent())
     return;
//---
double op = CalculateProfit();

if(op >= Profit && LastTime == 0)
     LastTime = TimeCurrent();
if(LastTime > 0 && TimeCurrent() - LastTime >= Second)

    {
     CloseAll();
     LastTime = 0;

     SendNotification("Trade is end");
     sleep = TimeCurrent()+60*60;
    }

So ist das nun einmal. Natürlich war es nur auf mein Knie geschrieben.

 
Konstantin Nikitin:

So etwas in der Art. Natürlich wurde es einfach an Ort und Stelle geschrieben.

Danke, jetzt schließt der EA nur einen Handel von allen auf dem Markt, und ich habe ein Gitter EA.

Ich habe keine Slips bekommen und EA eröffnet wieder einen neuen Handel und ignoriert die Slips. Wenn ich mir meinen EA ansehe, kann ich das nicht erkennen, sondern er bleibt so, wie er vorher war. Ich weiß nicht, was ich mit diesem EA machen soll, und ich werde auch nicht wissen, was ich mit ihm machen soll.

 
Nargiz Ravanova:

Danke, jetzt schließt der EA nur einen Handel von allen auf dem Markt, und ich habe ein Gitter EA.

Ich habe eine Menge Probleme damit, aber ich weiß nicht, was ich damit machen soll, also weiß ich nicht, was ich damit machen soll. Ich denke, dass es nicht möglich ist, es zu implementieren, ich werde es einfach zurückgeben, wie es vorher war. Ich möchte mich bei ihnen für ihre Hilfe bedanken.

Sie müssen es als Ganzes umsetzen
die Gründe können unterschiedlich sein

 
Nargiz Ravanova:

Danke, jetzt schließt der EA nur einen Handel von allen auf dem Markt, und ich habe ein Gitter EA.

Ich habe eine Menge Probleme damit, aber ich weiß nicht, was ich damit machen soll, also weiß ich nicht, was ich damit machen soll. Ich denke, dass es nicht möglich ist, es zu implementieren, ich werde es einfach zurückgeben, wie es vorher war. Ich habe es bereits implementiert und es ist noch nicht umgesetzt worden, also werde ich es einfach wieder so machen, wie es vorher war.

Das sollte mehr Sinn ergeben, oder?

input double Profit   = 100.0;
input int    Second   = 10;
//+------------------------------------------------------------------+
void CloseAllSleep(void)
    {
     static datetime sleep_all = TimeCurrent();
     static datetime LastTime = 0;
     if(sleep_all > TimeCurrent())
          return;
//---
     if(LastTime == 0)
         {
          if(CalculateProfit() < Profit)
               return;
          LastTime = TimeCurrent();
         }
     if(TimeCurrent() - LastTime >= Second)
          return;
//---
     if(!CloseAll())
          return;
     LastTime = 0;

     SendNotification("Trade is end");
     sleep_all = TimeCurrent()+60*60;
    }

//--- Считаем профит открытых позиций
double CalculateProfit(void)
    {
     return 0.0;
    }
//--- Закрываем все позиции
bool CloseAll(void)
    {
     return true;
    }

Auch dies dient nur der Klarheit. Und was und wie Sie umsetzen müssen, überlegen Sie selbst.

 
Nargiz Ravanova:
Natürlich nicht immer, aber es kommt oft vor, dass der Kurs nur eine Minute lang fliegt und der Expert Advisor stumpf zu einem festen Kurs schließt.

Dennoch halte ich diesen Ansatz für suboptimal. Wenn der Preis fliegt, sollte es einen positiven Ausrutscher geben. Wenn Sie die Zeit abwarten - es ist ein Roulettespiel -, wozu ist dann die Strategie gut, Ihr Gewinn kann bereits niedriger sein als die angegebenen 2 Pfund.

Es ist sinnvoller, die Geschwindigkeit der Preisänderung zu messen, und wenn sie hoch ist, um zu profitieren, zu warten, wenn sie gesunken ist, um zu decken.

 
Konstantin Nikitin:

Ich denke, das macht mehr Sinn, oder?

Auch hier geht es nur um das Verständnis. Es liegt an Ihnen, herauszufinden, was und wie Sie es umsetzen wollen.

Ich verstehe es nicht, um ehrlich zu sein, vergessen Sie es, ich werde mir etwas einfallen lassen.

 
Aleksey Mavrin:

Dennoch halte ich diesen Ansatz für suboptimal. Wenn der Kurs fliegt, sollte der Slippage positiv sein. Wenn Sie die Zeit abwarten - es ist ein Roulettespiel - wozu ist dann die Strategie gut, Ihr Gewinn kann schon unter den angegebenen 2 Pfund liegen.

Es ist sinnvoller, die Geschwindigkeit der Preisänderung zu messen, und wenn sie hoch ist, um zu profitieren, zu warten, wenn sie gesunken ist, um zu decken.

wir können einen einfachen Ausrutscher nicht beheben und Sie sprechen von Geschwindigkeit))))
 
Nargiz Ravanova:
wir können einen einfachen Ausrutscher nicht beheben und Sie sprechen von Geschwindigkeit))))

Wenn du dir hohe Ziele setzt, wird der Allmächtige dir helfen, sie zu erreichen! ;)

 
Nargiz Ravanova:
wir können einen einfachen Ausrutscher nicht beheben und Sie sprechen von Geschwindigkeit))))

Nun, um genau zu sein, sieht es so aus, als ob Sie das nicht können. Und über SCHLAF. Möchten Sie den gesamten Expert Advisor für eine gewisse Zeit einfrieren? Oder nur eine bestimmte Funktion, nachdem sie ausgearbeitet wurde. In jedem Fall ist es besser, auch für die Unterbrechung der Arbeit des Expert Advisors das Flag für lange Verzögerungen zu verwenden, und bei der Überprüfung, wenn es keine Erlaubnis gibt, einfach zu OnTick/OnTimer zu gehen. Für kurze Verzögerungen können SieSLEEP verwenden.
Übrigens:SLEEP funktioniert nicht in Indikatoren.

Die Funktion Sleep() kann nicht von benutzerdefinierten Indikatoren aufgerufen werden, da Indikatoren im Schnittstellen-Thread ausgeführt werden und diesen nicht verlangsamen dürfen.

Verstehen Sie also die Verwendung von Flaggen, Sie werden sie in Zukunft brauchen.

Grund der Beschwerde: