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

 
Ihor Herasko:

Ja, natürlich. Die Funktion ist universell geschrieben. Wenn wir sie bei jedem Tick ansprechen, geht die Schleife durch die gesamte Kontohistorie. Und die Kontohistorie kann recht umfangreich sein (ich habe Fälle erlebt, in denen es mehr als 100 000 Bestellungen gab). Um die Ausführung zu beschleunigen, müssen Sie die Schleife nicht jedes Mal über den gesamten Verlauf laufen lassen. Es reicht aus, dies nur einmal ganz am Anfang zu tun und sich den Index des zuletzt bearbeiteten Auftrags zu merken. Beim nächsten Mal müssen Sie die Schleife nur für die Aufträge durchlaufen, deren Index größer als der gespeicherte Index ist. Danach merken Sie sich wieder den Index der letzten Bestellung und so weiter.

Ich danke Ihnen für die ausführliche Erklärung. Jetzt weiß ich sozusagen, in welche Richtung ich schauen muss. Übrigens hat das Demokonto mit 5 EAs gut funktioniert, in dem Sinne, dass keine Trades mehr als einmal während des aktuellen Datums eröffnet wurden und es keine Verzögerung bei der Eröffnung aller 5 EA-Positionen gab.
 
Vitaly Muzichenko:

Schuld daran ist der Floating Spread.

Das dachte ich auch zuerst, aber es gilt auch für Paare mit festem Spread (wie DAX30) und für Netze, die aus Orders in einer Richtung bestehen (einschließlich einer Order) - in diesem Fall ist der Spread irrelevant (ein Preis bestimmt den Gewinn - entweder nur Bid oder nur Ask).

Vitaly, Ihrer Antwort habe ich entnommen, dass es keinen offensichtlichen Fehler in den Formeln gibt?

 
Igor Zakharov:

Das dachte ich auch zuerst, aber es gilt auch für Paare mit festem Spread (wie DAX30) und für Netze, die aus Orders in einer Richtung bestehen (einschließlich einer Order) - in diesem Fall ist der Spread irrelevant (ein Preis bestimmt den Gewinn - entweder nur Bid oder nur Ask).

Vitaliy, ich habe Ihre Antwort so verstanden, dass es keinen offensichtlichen Fehler in den Formeln gibt?

Hier ist die Formel des Arbeitnehmers:

 double poi=SymbolInfoDouble(mSymbol,SYMBOL_POINT);
 int dig=(int)SymbolInfoInteger(mSymbol,SYMBOL_DIGITS);
 double TickValue=SymbolInfoDouble(mSymbol,SYMBOL_TRADE_TICK_VALUE);

 double BuyAwerage=0,SellAwerage=0;
  if(_GetP.Buy._Lots>0)  BuyAwerage= NormalizeDouble(bid-(_GetP.Buy._AllProfit/( TickValue*_GetP.Buy._Lots ))*poi,dig);
  if(_GetP.Sell._Lots>0) SellAwerage=NormalizeDouble(ask+(_GetP.Sell._AllProfit/(TickValue*_GetP.Sell._Lots))*poi,dig);
 
Vitaly Muzichenko:

Hier ist die Formel des Arbeiters:

Das heißt, die vollständige Analogie. Meine Formel ist sogar noch etwas universeller - im Allgemeinen darf die Tickgröße nicht gleich einem Punkt sein (häufig bei Indizes zu finden).

Danke.

 

Hallo.

Vielleicht ist auch jemand auf die folgende Panne in MT4 gestoßen.

Ich teste ein Handelssystem mit mehreren Robotern für ein Demokonto.

Aber regelmäßig 1-2 mal am Tag gibt es eine Situation, dass der Roboter einen Kaufstopp oder Verkaufsstoppauftrag setzt, der nicht funktioniert. Dieser Auftrag ist gelb hervorgehoben, und wenn Sie versuchen, ihn zu löschen, erhalten Sie eine Warnung über deaktivierte Parameter.

Der Roboter, der ihn gemäß dem Algorithmus gesetzt hat, sollte seine Arbeit fortsetzen, aber er tut dies nur für einen Preis, der besser ist als der in einer falschen Order gesetzte, d.h. für einen Sell Stop für Aufträge oberhalb und für einen Buy Stop nur für Aufträge unterhalb.

Wenn ich alle anderen Orders lösche (dank meines Demokontos) und das Terminal für eine Weile ausschalte, wird diese Order bei Bedarf aktiviert und entweder per Programmbefehl oder manuell geschlossen.

Bitte teilen Sie uns mit, ob dies mit dem Demokonto zu tun hat oder ob mehrere Roboter an verschiedene Fenster angeschlossen sind.

Diese Art der Anbindung erhöht die Qualität des Gesamtsystems, da das Terminal viel besser auf die Befehle der einzelnen Roboter reagiert, als wenn alle Befehle in einem Expert Advisor zusammengefasst sind. Der Gewinn an Reaktionszeit des Terminals ist sehr signifikant und die Pünktlichkeit der Ausführung von Befehlen ist viel besser und optimal, wenn die gesamte Logik des Handelssystems auf mehrere Roboter verteilt ist.

Allerdings habe ich das Problem, dass ein oder zwei Aufträge eingefroren werden.

Vielleicht hat jemand dieses Problem schon einmal gehabt oder kann eine Ursache für den fehlerhaften Betrieb sowie eine Lösung vorschlagen.

Vielen Dank im Voraus.

 

auf dem Bild ist grün, was in den Terminaleinstellungen nicht der Fall ist.

Wo kann ich die Farben sehen, die durch die Zahlen festgelegt sind?

ssb

 
Pavel Ipatov:

Aber von Zeit zu Zeit setzt der Roboter 1-2 Mal am Tag einen Kauf- oder Verkaufsauftrag, der nicht funktioniert. Er ist gelb markiert, und wenn Sie versuchen, ihn zu löschen, erscheint im Fenster eine Meldung über deaktivierte Parameter.

Dies ist geschehen, und zwar mehr als einmal. In meinem Fall war es immer die Schuld des Brokers, nicht die des Roboters - wenn Sie sich an den Support wenden, werden sie ihn zwangsweise entfernen. Wenn es sich um eine Demo handelt, würde ich ein neues Konto bei einem anderen Broker eröffnen.

 
Artsem:

auf dem Bild ist grün, was in den Terminaleinstellungen nicht der Fall ist.

Wo kann ich die Farben sehen, die durch die Zahlen festgelegt sind?

ssb

Äh... Photoshop.

 
Artsem:

auf dem Bild ist grün, was in den Terminaleinstellungen nicht der Fall ist.

Wo kann ich die Farben sehen, die durch die Zahlen festgelegt sind?

ssb

  1. Klicken Sie auf den Pfeil der Dropdown-Liste.
  2. Wählen Sie Benutzerdefiniert.
  3. Sie sehen dann ein Fenster wie dieses.

In der Palette wählen Sie die gewünschte Farbe aus, oder Sie können sogar manuell numerische Werte angeben: Rot, Grün, Blau.

 
Ihor Herasko:

  1. Klicken Sie auf den Pfeil der Dropdown-Liste.
  2. Wählen Sie Benutzerdefiniert.
  3. Ein Fenster wie das folgende wird angezeigt.

Wählen Sie in der Palette die gewünschte Farbe aus oder geben Sie manuell numerische Werte ein: Rot, Grün, Blau.

Ja, ich habe die benutzerdefinierte Schaltfläche nicht bemerkt.

Ich kann die Farbe in Ihrem Panel nicht in "numerisch" ändern.