Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 1443

 

Ich habe einen unerklärlichen Moment erlebt. Das Konto ist real. Der Roboter setzt eine Pending Order und folgt dann dem Preis. Nachdem der Preis die Pending Order "gefangen" hat, eröffnet er eine SELL-Position mit einem festgelegten Stop Loss und Take Profit. Bis zu diesem Punkt gibt es keine Probleme. Dann bewegt sich der Kurs in die von mir gewünschte Richtung, und eigentlich sollte der Take-Profit, der 50 Punkte beträgt, funktionieren. Aber das tat es nicht. Trotz der Tatsache, dass der aktuelle Preis unter das Niveau des Preises fiel, zu dem die Position eröffnet wurde, plus die Größe des Spreads, d.h. 50 + 14 Pips, wurde die Position mit einer Größe von 36 Pips vom Eröffnungskurs geschlossen. Und so wiederholt es sich von Zeit zu Zeit, von Geschäft zu Geschäft. Ich lasse den Roboter auf dem Testgerät laufen und sehe, dass alle geschlossenen Positionen die Größe von 50 Pips haben, wie es sein sollte.

Gibt es wirklich eine konstante Abweichung mit einer Größe, die ungefähr der Größe des Spreads von 14 Pips entspricht? Etwas seltsam, finden Sie nicht auch? Hier ist das Log eines der gestrigen Trades.

KE      0       05:36:02.089    Trades  '1000008949': modify #1021600709 sell stop 0.04 EURUSDrfd -> price: 1.07870, sl: 1.07970, tp: 1.07820) done in 8.663 ms
RK      0       05:45:14.097    Trades  '1000008949': deal #1021883094 sell 0.04 EURUSDrfd at 1.07870 done (based on order #1021600709)
RJ      0       07:49:46.015    Network '1000008949': scanning network for access points
PJ      0       07:49:46.873    Network '1000008949': scanning network finished
IR      0       10:51:16.238    Trades  '1000008949': market buy 0.04 EURUSDrfd, close #1021600709 sell 0.04 EURUSDrfd 1.07870
FF      0       10:51:16.258    Trades  '1000008949': accepted market buy 0.04 EURUSDrfd, close #1021600709 sell 0.04 EURUSDrfd 1.07870
JF      0       10:51:16.558    Trades  '1000008949': market buy 0.04 EURUSDrfd, close #1021600709 sell 0.04 EURUSDrfd 1.07870 placed for execution
OI      0       10:51:16.558    Trades  '1000008949': order #1021607738 buy 0.04 / 0.04 EURUSDrfd at market done in 316.213 ms
EF      0       10:51:16.558    Trades  '1000008949': deal #1021888944 buy 0.04 EURUSDrfd at 1.07834 done (based on order #1021607738)

Mit freundlichen Grüßen, Vladimir.

 
MrBrooklin Pending Order und folgt dann dem Preis. Nachdem der Preis die Pending Order "gefangen" hat, eröffnet er eine SELL-Position mit einem festgelegten Stop Loss und Take Profit. Bis zu diesem Punkt gibt es keine Probleme. Dann bewegt sich der Kurs in die von mir gewünschte Richtung, und eigentlich sollte der Take-Profit, also 50 Punkte, funktionieren. Aber das tat es nicht. Trotz der Tatsache, dass der aktuelle Preis unter das Niveau des Preises fiel, zu dem die Position eröffnet wurde, plus die Größe des Spreads, d.h. 50 + 14 Pips, wurde die Position mit einer Größe von 36 Pips vom Eröffnungskurs geschlossen. Und so wiederholt es sich von Zeit zu Zeit, von Geschäft zu Geschäft. Ich lasse den Roboter auf dem Testgerät laufen und sehe, dass alle geschlossenen Positionen die Größe von 50 Pips haben, wie es sein sollte.

Gibt es wirklich eine konstante Abweichung, und mit der gleichen Größe, etwa gleich der Größe des Spreads von 14 Pips. Das ist doch seltsam, oder? Hier ist das Transaktionsprotokoll.

Mit freundlichen Grüßen, Vladimir.

Vielleicht übersehe ich etwas, aber ich glaube, Sie müssen verstehen, was bieten und fragen sind.

 
Vladimir Deryagin #:

Vielleicht übersehe ich etwas, aber ich glaube, Sie müssen herausfinden, was und ask sind

Ich habe auch angefangen zu zweifeln und dachte, dass das Problem im Code liegt. Aber dann würde ich die gleichen Probleme in der Strategie-Tester haben. Aber im Strategietester ist alles in Ordnung! Ich habe die Ausführungszeit in rot hervorgehoben, wenn ich einen Handel schließe. Vielleicht ist dies das Problem?

Mit freundlichen Grüßen, Vladimir.

P.S. Heute hatte ich 3 Trades und sie schlossen mit einer Abweichung von 10, 14 und 15 Punkten. Es sieht wie eine Abweichung aus. ((

 
Hallo, ein Spread von 15 - 20 Pips bei einem fünfstelligen Preis ist normal. Und 50 Pips sind nicht genug für einen Take. Wenn der Gewinn in der gleichen Größenordnung liegt wie der Spread, werden Sie kein Glück haben. Es hängt allerdings davon ab, wer Sie sind.
 
Aleksei Stepanenko #:
Hallo, ein Spread von 15 - 20 Pips bei einem fünfstelligen Preis ist normal. Und 50 Pips sind nicht genug für einen Take. Wenn der Gewinn in der gleichen Größenordnung liegt wie der Spread, werden Sie kein Glück haben. Aber das hängt davon ab, wer Sie sind.

Hallo Alexey, ich stimme zu, dass dies nicht die idealste Strategie für einen Roboter ist, aber solange sie einen stabilen Gewinn bringt, sollte sie funktionieren. Weniger ist besser, aber besser.

Nun zu meiner Frage. Ich habe mir alle Logs angesehen und festgestellt, dass seit dem 1. Februar die Zeit für das Schließen von Trades stark zugenommen hat - von 50-70 msk auf 330-450 msk. Ich werde mich bei meinem Forex-Händler erkundigen, was passiert ist.

Mit freundlichen Grüßen, Vladimir.


 

Können Sie mir bitte sagen, ob es möglich ist, die ID eines Expert Advisors in der Tabelle "Trade" zu ändern?

Oder nehmen wir an, es gibt ein Skript, das SellLimit-Aufträge setzt,

trade.BuyLimit(1,10.75,NULL,0,0,0,0,0,0,0,0,NULL);

Wie und wo kann man die ID-Nummer im Befehl angeben, damit diese Order von einem Expert Advisor mit einer ähnlichen ID aufgegriffen werden kann?

 
BOBEF #:

Können Sie mir bitte sagen, ob es möglich ist, die ID eines Expert Advisors in der Tabelle "Handel" zu ändern?

Oder nehmen wir an, es gibt ein Skript, das SellLimit-Orders platziert,

trade.BuyLimit(1,10.75,NULL,0,0,0,0,0,0,0,0,NULL);

Wie und wo kann die ID-Nummer im Befehl angegeben werden, damit diese Order von einem Expert Advisor mit einer ähnlichen ID aufgegriffen werden kann?

 trade.SetExpertMagicNumber(magic);
 trade.BuyLimit(1,10.75,NULL,0,0,0,0,NULL);
 
Alexey Viktorov #:

Dankeschön
 

Was falsch sein kann

int aaa = StringFind(Set, txt);

Set - die Zeichenfolge, nach der wir suchen.

txt - das, wonach wir suchen.

warum aaa = -1 ???

Und im Allgemeinen kann eine String-Variable irgendwie anders sein als die gleiche String-Variable.

string a = "A";

string c = "A";

In welchen Fällen ist es möglich, dass a!=c ?

 

Gibt es eine Möglichkeit, die Ausgabe von Datenbankverbindungsfehlern abzubrechen?
Zum Beispiel gibt die Funktion DatabaseOpen() jedes Mal einen Fehler aus, wenn die Datenbank gesperrt ist und die Funktion nicht darauf zugreifen kann.
Aber das ist für mich eine normale Arbeitssituation, ich fange diesen Fehler selbst ab und gebe ihn bei Bedarf aus.

Infolgedessen ist das gesamte Protokoll voll von Meldungen über gesperrte Datenbanken.

2023.02.13 18:57:21.917 database error, database is locked