Antwort

Bug oder Problem auf meinem VPS lagging?, ich habe eine Menge von Terminals und EAs arbeiten auf meinem VPS, aber manchmal SL +TP nicht auf die Reihenfolge gesetzt?, warum?

24 Antworten

Karish

Customer, bbp_participant, community, sq-ultimate, 443 replies.

Profil besuchen

vor 8 Jahren #114929

Bug oder Problem auf meinem VPS lagging?, ich habe eine Menge von Terminals und EAs arbeiten auf meinem VPS, aber manchmal SL +TP nicht auf die Reihenfolge gesetzt?, warum?

 

ist es wegen meiner VPS lagging?, oder es gibt etwas falsch mit dem mql4-Code?, mein VPS ist auf hohe CPU + Speicherverbrauch regelmäßig wegen der vielen Terminals und EAs arbeiten,

vielleicht deswegen?...

 

es ist sehr selten, aber mir ist es schon das 3. Mal passiert...

 

 

Ist das auch jemandem hier passiert? Danke...

0

Karish

Customer, bbp_participant, community, sq-ultimate, 443 replies.

Profil besuchen

vor 8 Jahren #136121

Nein, ich erhalte die 146 Fehlermeldung "Trade context is busy", sonst nichts..,

 

gestern habe ich den mql4-Code geändert und den Befehl hinzugefügt, um zu warten, wenn der Kontext beschäftigt ist, aber immer noch mit dem gleichen Fehler, BTW, dass Fehler nur auf die DEMO-Konten mit Live-Konto passiert, ich bin nicht immer einen Fehler, was auch immer..,

Was könnte das sein?

0

mikeyc

Kunde, bbp_participant, Gemeinschaft, 877 Antworten.

Profil besuchen

vor 8 Jahren #136122

Wenn der Handelskontext ausgelastet ist, liegt das entweder an einem überlasteten Terminal oder daran, dass der Broker viel Zeit für die Bearbeitung der Aufträge benötigt.

 

Wenn das Problem nach einem Neustart immer noch auftritt, würde ich mir einen anderen Broker suchen.

0

Karish

Customer, bbp_participant, community, sq-ultimate, 443 replies.

Profil besuchen

vor 8 Jahren #136124

Habe das auch mit den gleichen EAs auf dem Global Prime Demo Server versucht, gleiche Scheiße..,

aber ich habe den mql4-Code bereits wieder geändert, also werde ich sehen, was als nächstes passieren wird,

ill aktualisieren.. und wenn ich es behoben ill posten die fix,

 

wir danken Ihnen für Ihre Teilnahme.

0

geektrader

Customer, bbp_participant, community, 522 replies.

Profil besuchen

vor 8 Jahren #136155

Das ist ganz einfach: Sie dürfen NIEMALS mehr als 8 EAs pro MT4-Instanz laufen lassen, wenn Sie eine zuverlässige Orderausführung wollen (was Sie wahrscheinlich wollen, wenn Sie mit echtem Geld handeln)! Das ist eine der vielen MT4-Terminal-Beschränkungen (vor einigen Jahren war es nur 1 Thread pro MT4-Instanz!) und hat überhaupt nichts mit Ihrem Broker zu tun (@mikeyc: wenn der Broker überlastet ist, bekommen Sie nicht "trade context is busy", sondern "trade timeout", obwohl ich heutzutage noch keinen der seriösen Broker mehr gesehen habe, der diesen Fehler anzeigt).

Das liegt einfach daran, dass in jedem MT4-Terminal nur 8 Auftragsoperationen auf einmal verarbeitet werden können (entweder das Eröffnen eines neuen Auftrags, das Ändern eines bestehenden Auftrags oder das Schließen eines bestehenden Auftrags), und Sie können nichts dagegen tun, da das beschissene MT4-Terminal so konzipiert ist.

 

Sicherlich gibt es "Hacks", um das zu umgehen, und der EA könnte einfach erneut versuchen, den Auftrag zu ändern, wenn er zuvor wegen eines belegten Handelskontextes fehlgeschlagen ist, oder der EA könnte prüfen, ob der Handelskontext frei ist oder nicht, und warten, wenn dies nicht der Fall ist, bevor er den nächsten Befehl weitergibt, um etwas mit einem Auftrag zu tun. Diese Lösungen sind jedoch nicht sehr sicher und im Live-Handel nicht akzeptabel, da sie die Dinge immer auf die eine oder andere Weise verzögern. Wenn der EA nach einem Fehler einen neuen Versuch unternimmt, kann sich der Preis bereits zu weit bewegt haben. Vor allem bei Nachrichten kann es passieren, dass Ihre Order nie den benötigten SL erhält, weil er sich bereits darüber hinaus bewegt hat und er dann einfach nicht mehr auf den gewünschten Wert gesetzt werden kann. Das Gleiche gilt für das Warten, bis der Handelskontext frei wird, auch das kostet zu viel Zeit und ist auch deshalb sehr unsicher.

 

Die einzige Lösung, wenn Sie es mit dem Live-Handel ernst meinen: Lassen Sie nur 8 EAs pro MT4-Instanz laufen! Es ist einfach so einfach und es führt kein Weg an irgendwelchen Hacks vorbei, wenn Sie eine zuverlässige und schnelle Auftragsausführung/Änderung die ganze Zeit über wollen. Wenn Ihr VPS schnell genug ist, wie Sie sagen, ist das kein Problem. Ich persönlich habe 7 MT4-Terminals laufen, jedes mit 8 EAs (nicht alle sind SQs). Kopieren Sie einfach Ihren bestehenden MT4-Ordner auf einen neuen, und schon haben Sie Ihre nächste Instanz. Das Einzige, was Sie beachten müssen, ist eine weitere Beschränkung, die durch das MT4-Terminal gesetzt wird (ja, schon wieder!): Sie können nur 32 MT4-Instanzen pro Rechner betreiben. Nummer 33 lässt sich einfach nicht starten, auch wenn Sie wieder in ein anderes Verzeichnis kopiert haben. MQ hat das nach der Latenz-Arbitrage von BTN Lightning eingeführt, wo sie diese armen MT4-Broker im großen Stil "abgezockt" haben, indem sie bis zu 200 MT4-Instanzen auf Mega-Servern betrieben haben. Ich habe bereits versucht, diese Beschränkung zu knacken, aber es ist nicht einfach, da MT4 selbst über die Themida-Kopierschutzmethode in eine virtuelle Maschine verpackt ist. Fazit: Die maximale Anzahl an EAs, die Sie zuverlässig ausführen können, ohne einen weiteren VPS zu benötigen, ist 32 x 8 = 256 EAs.

 

P.S.: Wenn Sie die unzuverlässige Lösung wollen (warten, bis der Handelskontext frei wird), verwenden Sie meinen Code (ich habe dies auch live getestet und habe 50 EAs in einer MT4-Instanz damit laufen lassen, ohne dass eine Bestellung jemals einen Fehler über den Handelskontext auslöst, der nicht frei ist):

int CheckTradeContext()
{

uint WaitLimitTradeContext = 120; //Sekunden

    if (!IsTesting() && !IsTradeAllowed() && !IsStopped())
    {
        int ticks = GetTickCount();
        Print("Trade Context Is Busy! Waiting Until It Becomes Free...");
        while (true)
        {
            RefreshRates();
            Print("Warten darauf, dass der Handelskontext frei wird...");
            if (IsStopped())
            {
                Print("Der Experte wurde vom Benutzer gestoppt!");
                return(-1);
            }
            if (GetTickCount() - ticks > 1000 * WaitLimitTradeContext)
            {
                Print("Das maximale Wartelimit von " + WaitLimitTradeContext + " Sekunden wurde überschritten!");
                return(-2);
            }
            if (IsTradeAllowed())
            {
                Print("Der Handelskontext ist frei geworden!");
                return(0);
            }
            Sleep(50);
        }
    }
    //Drucken("Der Handelskontext ist frei!");

    return(1);
}

Dann, vor dem Senden / Ändern / Schließen der Order: if (CheckTradeContext() >= 0) ....


🚀 Unlock Your Edge in Automated Forex Strategy Development 🚀

Historical Forex Data Starting From 1987, 28 Pairs, M1, 99% Error-Free, Lifetime Free Updates

0

Karish

Customer, bbp_participant, community, sq-ultimate, 443 replies.

Profil besuchen

vor 8 Jahren #136171

Vielen Dank an geektrader,

Ich habe jedoch bereits eine Funktion dafür erstellt:

void CheckIfBusy()
{
  if(!IsTesting())
  while(IsTradeContextBusy()){//Print("#ERROR!: Order ("+OrderType()+") - Delayed.");
  Sleep(50);RefreshRates();}
}

aber Ihre ist mehr ausgeklügelt mit einem Timer, ich habe bereits alle meine EAs mit dieser neuen Funktion von Ihnen bearbeitet :),

danke, dass Sie sich die Zeit genommen haben, diesen umfangreichen Beitrag zu schreiben,

über das 8-Thread-Dingsbums und den Link der offiziellen Metaquotes-Aktualisierung: https://forum.mql4.com/54431

Ich danke Ihnen also noch einmal für die Klarstellung und dafür, dass Sie weitere Informationen zu diesem Thema hinzugefügt haben!

So von meinem Verständnis gibt es kein Problem, mehrere MT4 Instanzen auf dem gleichen Handelskonto laufen?, müssen nur MagicNumbers anders zwischen allen EAs habe ich es richtig?

Und was, wenn die EAs sind sehr aktiv zu einem gewissen Grad?, sollte ich dann teilen das Portfolio nicht durch 8,8,8,8 aber in 4,4,4,4 EAs auf der gleichen Instanz?...,

Ich danke Ihnen und warte auf Ihre Antwort, mein Freund.

0

geektrader

Customer, bbp_participant, community, 522 replies.

Profil besuchen

vor 8 Jahren #136179

Schön zu hören, dass Sie auf dem Weg zu einem Nicht-Busy-Trade-Kontext sind:) Es ist wirklich einfach, Sie müssen nichts Besonderes tun, verwenden Sie einfach 8 EAs pro MT4-Instanz, konfigurieren Sie sie auf die gleiche Weise, als ob sie in einem Terminal wären (unterschiedliche magische Zahl usw. natürlich). Sie können eine unbegrenzte Anzahl von Verbindungen zu Ihrem Broker auf demselben Konto laufen lassen, das ist kein Problem (mindestens 32 Verbindungen/Terminals auf demselben Konto sind möglich, so weit habe ich es getestet). Wenn sie sehr aktiv sind, spielt das keine Rolle, jedes MT4-Terminal kann 8 Handelsoperationen parallel durchführen, es spielt keine Rolle, wie aktiv die EAs sind, solange Sie nicht mehr als 8 Anfragen auf einmal pro Terminal machen, wird es gut funktionieren, auch wenn jeder EA einen Befehl alle 1ms sendet:)


🚀 Unlock Your Edge in Automated Forex Strategy Development 🚀

Historical Forex Data Starting From 1987, 28 Pairs, M1, 99% Error-Free, Lifetime Free Updates

0

Karish

Customer, bbp_participant, community, sq-ultimate, 443 replies.

Profil besuchen

vor 8 Jahren #136180

Schön zu hören, dass Sie auf dem Weg zu einem Nicht-Busy-Trade-Kontext sind:) Es ist wirklich einfach, Sie müssen nichts Besonderes tun, verwenden Sie einfach 8 EAs pro MT4-Instanz, konfigurieren Sie sie auf die gleiche Weise, als ob sie in einem Terminal wären (unterschiedliche magische Zahl usw. natürlich). Sie können eine unbegrenzte Anzahl von Verbindungen zu Ihrem Broker auf demselben Konto laufen lassen, das ist kein Problem (mindestens 32 Verbindungen/Terminals auf demselben Konto sind möglich, so weit habe ich es getestet). Wenn sie sehr aktiv sind, spielt das keine Rolle, jedes MT4-Terminal kann 8 Handelsoperationen parallel durchführen, es spielt keine Rolle, wie aktiv die EAs sind, solange Sie nicht mehr als 8 Anfragen auf einmal pro Terminal machen, wird es gut funktionieren, auch wenn jeder EA einen Befehl alle 1ms sendet:)

 

Nochmals vielen Dank an geektrader :),

Ich habe 29 EAs, also habe ich sie auf 5 MT4s verteilt, 6x6x6x6x5, sie sind aktive EAs und handeln täglich, also habe ich vorsichtshalber nur 6 pro Terminal eingesetzt,

 

Danke Kumpel, dass ist sehr kritische Informationen, ich habe nicht über diese 8 Threads Sache wusste ich dachte, es war nur 1 pro Terminal hehe.

eine gute Woche und viele grüne Punkte für Sie! B)

0

geektrader

Customer, bbp_participant, community, 522 replies.

Profil besuchen

vor 8 Jahren #136181

Ja, ich sehe, meine EAs Handel alle 15 Minuten (Ändern von schwebenden Aufträgen - 8 auf einmal jedes Mal), es ist wirklich in Ordnung, wenn Sie 8 pro Terminal verwenden, auch wenn sie "verrückte Scalper" sind, da jeder EA serielle nur in der MQL4 Sprache verarbeitet wird, mit 8 EAs werden Sie nie jemals ein beschäftigtes Handel Kontext bekommen - keine Notwendigkeit, Ressourcen wirklich zu verschwenden. Sie können sicher 8 pro Terminal verwenden.

 

Ja, in der Vergangenheit war es nur 1 Vorgang pro Terminal, hatte haufenweise Terminals laufen zu der Zeit. MT4 ist einfach SCHLECHT!

 

Auch für Sie grüne Kerne:)


🚀 Unlock Your Edge in Automated Forex Strategy Development 🚀

Historical Forex Data Starting From 1987, 28 Pairs, M1, 99% Error-Free, Lifetime Free Updates

0

Ansicht von 8 Antworten - 16 bis 23 (von insgesamt 23)

1 2