[WARNUNG GESCHLOSSEN!] Alle Fragen von Neulingen, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen. - Seite 779

 
ToLik_SRGV:

Die Funktion OrderSend hat die falschen Eröffnungs-/Einstellungskurse. Dieser Fehler macht es unmöglich, Aufträge korrekt zu platzieren, was bedeutet, dass der EA aus irgendeinem Grund mehr Aufträge platzieren möchte und dies aufgrund dieses Fehlers nicht tun kann. Bitte prüfen Sie, ob die Preise der ausstehenden Aufträge normalisiert sind und ob alle Aufträge vorliegen.

Wenn es Ihnen nichts ausmacht, es mit Ihrem professionellen Auge zu betrachten, gibt es dort nichts anderes

Dateien:
test_21_3.mq4  16 kb
 
FoxUA:

Wenn es Ihnen nichts ausmacht, es mit Ihrem professionellen Auge zu betrachten, gibt es dort nichts anderes.

Das Entpacken zeigt, dass der Fehler im Block für schwebende Aufträge auftritt, da Sie versuchen, diese zu einem negativen Preis zu platzieren.

 
ToLik_SRGV:

Das Entpacken hat gezeigt, dass der Fehler im Block für die Einstellung von ausstehenden Aufträgen auftritt, da Sie versuchen, sie zu einem negativen Preis einzustellen.


Wie repariert man das, außer man schlägt den Kopf gegen die Wand ;) wo bin ich hin?

 
ToLik_SRGV:

Nicht im Sinne der Idee. Hier ist ein Auszug aus einem Lehrbuch:

P.S.
Über Petyka, hundert Jahre alt, und immer noch lustig :)))


"... sowie die angegebenen Stop-Order-Kurse von Marktaufträgen, die sich in der Freeze-Zone befinden...".

Es stellt sich jedoch heraus, dass dies eine Auswirkung hat... und Sie müssen es berücksichtigen - ich muss nur die angekündigte Stop-Order-Ebene bei einer offenen Position entfernen... Und wenn Sie die Freeze-Zone bereits betreten haben, müssen Sie nur noch den Börsenschluss abwarten... oder ein Rückzug...

Danke, Kumpel!!!

ZS. Und zu Petya - hier ist die Situation die gleiche... - Ich sage, ich setze 1.6 - es funktioniert, ich setze 1.8 - es funktioniert nicht... Und selbst 1,9 hilft nicht!!! Was für eine Sauerei!!! Es ist furchtbar. Ooh!
Wie lauten die Zahlen? Litern oder so.

 
FoxUA:

Ähm, wie bringt man das wieder in Ordnung, abgesehen davon, dass man den Kopf gegen die Wand schlägt ;) wo habe ich mich nur verlaufen?

Ich erkenne die Abdrücke aus Kims Funktionen... Gehen Sie zu seinem Thread - er hat ein Skript nach jeder Funktion, um sie zu überprüfen. Klarer kann man es nicht machen...
 
artmedia70:
Ich erkenne die Abdrücke aus Kims Funktionen... Gehen Sie zu seinem Zweig - er hat ein Skript nach jeder Funktion, um sie zu überprüfen. Klarer kann man es nicht machen...


ja, es ist aus seiner Bibliothek, die sie mir hier gegeben haben, also sind es die gleichen Skripte, die im Briefkasten sind. und ich habe es hinzugefügt, damit es keine Reaktion gibt

{SetOrder(sy, OP_BUYLIMIT, Lot*3, NormalizeDouble(PrAskLim, Digits), PrAskLim-StopLoss*po, PrAskLim+TakeProfit*po,mn);
    SetOrder(sy, OP_BUYSTOP,  Lot,   NormalizeDouble(PrAskSt, Digits),  PrAskSt-StopLoss*po,  PrAskSt+TakeProfit*po,mn);
    SetOrder(sy, OP_SELLLIMIT,Lot*3, NormalizeDouble(PrBidLim, Digits), PrBidLim+StopLoss*po, PrBidLim-TakeProfit*po,mn);
    SetOrder(sy, OP_SELLSTOP, Lot,   NormalizeDouble(PrBidSt, Digits),  PrBidSt+StopLoss*po,  PrBidSt-TakeProfit*po,mn);
     } 
 
FoxUA:

Ähm, wie heilt man das, abgesehen davon, dass man den Kopf gegen die Wand schlägt ;) wo habe ich mich nur verlaufen?

Weiter geht's.
Negative Zahlen gelangen in die Variablen der Funktionen StopLossLastPos() und TakeProfitLastPos() . Dort erscheinen sie aufgrund des Scheiterns ihrer Arbeit, d.h. -1 ist ein Zeichen für das Scheitern, den letzten Wert von StopLoss und TakeProfit zu erhalten. Sie überprüfen nicht den Erfolg der letzten Werte, so dass -1 als Preis in Ihre Arbeit einfließt, dann zählen Sie daraus die Werte für die Einstellung der schwebenden Aufträge... und so weiter.

Das Ergebnis ist ein Schneeballeffekt und ein Meer von Wanzen. Jetzt werde ich im Testgerät sehen, wie es funktioniert, und ich werde berichten...


 
ToLik_SRGV:

Es geht weiter.
Negative Zahlen gelangen in die Variablen der Funktionen StopLossLastPos() und TakeProfitLastPos() . Sie erscheinen dort aufgrund eines Fehlers, d.h. -1 ist ein Zeichen dafür, dass es nicht gelungen ist, den letzten Wert von StopLoss und TakeProfit zu ermitteln. Sie überprüfen nicht den Erfolg der letzten Werte, so dass -1 als Preis in Ihre Arbeit einfließt, dann zählen Sie daraus die Werte für die Einstellung der schwebenden Aufträge... und so weiter.

Das Ergebnis ist ein Schneeballeffekt und ein Meer von Fehlern. Jetzt werde ich es mir im Testgerät ansehen und berichten...




Ich frage mich, warum das so ist.

 
FoxUA:

Ja, ich frage mich, warum das so ist.

Ich werde mich abmelden.
Der Fehler liegt in der Logik. Sie basiert auf zwei Marktaufträgen. Aber hier gibt es einen feinen Unterschied: Die Funktion OrdersTotal() gibt nicht die Gesamtzahl der offenen Marktaufträge zurück, sondern alle Aufträge, die sich auf dem Markt befinden, zusammen mit den ausstehenden Aufträgen, die eingestellt sind.
Als Ergebnis, während eines Handels, es passiert eine Zeit, wenn es keine Marktaufträge, zu der Zeit, wenn schwebende Aufträge weiterhin zu hängen, das heißt, OrdersTotal() gibt mehr als 0, entsprechend, Ihre Block Eröffnung Marktaufträge if(total_order==0), können sie nicht öffnen, Neue schwebende Aufträge können jedoch (in dem Moment, in dem OrdersTotal() den Wert 2 zurückgibt), aber da es keine Marktaufträge gibt, geben die Funktionen StopLossLastPos() und TakeProfitLastPos() den Wert -1 zurück, während die Bedingung für die Eröffnung schwebender Aufträge if(total_order==2) lautet, so dass sie den Wert -1 erfassen und als Preis verwenden.

 
ToLik_SRGV:

Ich werde mich abmelden.
Es gibt einen Fehler in der Logik. Sie basiert auf zwei Marktaufträgen. Der Trick dabei ist, dass die Funktion OrdersTotal() nicht die Gesamtzahl der offenen Marktaufträge zurückgibt, sondern alle Aufträge, die sich auf dem Markt befinden, zusammen mit den ausstehenden Aufträgen, die gesetzt sind.
Als Ergebnis, während eines Handels, es passiert eine Zeit, wenn es keine Marktaufträge, zu der Zeit, wenn schwebende Aufträge weiterhin zu hängen, das heißt, OrdersTotal() gibt mehr als 0, entsprechend, Ihre Block Eröffnung Marktaufträge if(total_order==0), können sie nicht öffnen, Neue schwebende Aufträge können jedoch (in dem Moment, in dem OrdersTotal() den Wert 2 zurückgibt), aber da es keine Marktaufträge gibt, geben die Funktionen StopLossLastPos() und TakeProfitLastPos() den Wert -1 zurück, während die Bedingung für die Eröffnung schwebender Aufträge if(total_order==2) lautet, so dass sie den Wert -1 erfassen und als Preis verwenden.


Ich habe es verstanden, ich werde es jetzt ändern. Vielen Dank.