Funktioniert bei mt5 nicht korrekt im Vergleich zu mt4. Er öffnet ein Geschäft und schließt es sofort wieder.
Was kann das Problem sein?
Ich habe den Code schnell durchgesehen. Es ist seltsam, dass unter MT4 solche Bedingungen geschrieben wurden
if(!OrderSend(symbol_,type_,LotNormalize(lot_),price_,slip,0,0,"C4F"+IntegerToString(ticket_))) Print("Error: ",GetLastError()," during setting the pending order.");
Es wird nie zum Drucken kommen. Und der Code ist sicherlich ein HDD-Killer.
// Liste ändern:// 26.11.2018// Fix: Magische und geschlossene MT4-Positionen kommentieren: die entsprechenden Felder von Eröffnungsgeschäften haben eine höhere Priorität als die von geschlossenen Geschäften.// Fix: Die seltene Änderung von MT5-OrdersTotal und MT5-PositionsTotal während der MT4-OrdersTotal und MT4-OrderSelect Berechnung wird berücksichtigt.// Fix: Orders, die eine Position eröffnet haben, aber noch keine Zeit hatten, von MT5 gelöscht zu werden, werden von der Bibliothek nicht mehr berücksichtigt.
Hervorgehoben. Dies ist die Art von Skript
#include <MT4Orders.mqh>
#include <Debug.mqh> // https://c.mql5.com/3/173/Debug.mqh#define AskSymbolInfoDouble(_Symbol, SYMBOL_ASK)
voidOnStart()
{
OrderSend(_Symbol, OP_BUYLIMIT, 0.1, Ask, 0, 0, 0);
int Total = _P(OrdersTotal());
while (!IsStopped())
{
constint NewTotal = OrdersTotal();
if (Total != NewTotal)
{
_P(NewTotal);
// wenn (NeueSumme < Summe)// Alert("https://www.mql5.com/ru/forum/290673#comment_9493241");
Total = NewTotal;
}
}
}
auf Hedge-Konten, die früher auftauchten
2018.11.2615:27:46.513voidOnStart(), Line = 10: OrdersTotal() = 12018.11.2615:27:56.128voidOnStart(), Line = 18: NewTotal = 22018.11.2615:27:56.128voidOnStart(), Line = 18: NewTotal = 1
Jetzt nur noch dies.
2018.11.2615:30:29.224voidOnStart(), Line = 10: OrdersTotal() = 1
Bei Netting-Konten haben wir es in allen Fällen noch nicht geschafft, die MT5-Fehler (ausgeführte Order wird nicht gelöscht) zu umgehen. D.h. die Bibliothek weiß nicht, wie sie in allen Fällen die Fehler der MT5-Plattform umgehen kann (und eigentlich auch nicht sollte).
Die Bibliothek ist nicht in der Lage (und sollte es eigentlich auch nicht sein), die Unzulänglichkeiten der MT5-Plattform selbst in allen Fällen zu umgehen.
Zum Beispiel, dieses
zur Eröffnung einer Position wurde platziert und OrdersTotal erhöhte sich um eins.
Sie wurde ausgeführt und OrdersTotal verringerte sich um eins, aber PositionsTotal erhöhte sich nicht um eins. D.h. es gibt eine Position, aber das Terminal weiß nichts davon.
Zum Beispiel gibt es weder Positionen noch Aufträge - PositionsTotal = 0, OrdersTotal = 0.
Sie platzieren eine Market Order. In diesem Fall ist PositionsTotal = 0, OrdersTotal = 1.
Der Marktauftrag wird ausgeführt - OrdersTotal = 0. Aber PositionsTotal = 0!
Es kostet viel Mühe, in diese Situation zu geraten. Noch schwieriger ist es, sie zu bemerken. Aber MT5 schafft solche Tricks.
MT4Orders versucht, solche Dinge so weit wie möglich zu vermeiden, aber das ist nicht immer möglich. Ob die Autoren des TS versuchen, solche Schwächen der Plattform in reinem MQL5 oder SB zu berücksichtigen, können wir nur vermuten. Es ist aber unwahrscheinlich.
Können Sie mir ein Beispiel für eine mt4-Variante nennen?
https://www.mql5.com/de/code/7712
Ähnlich dem, was Sie mit Spreader gemacht haben
Leider wurde MQL4_To_MQL5.mqh nicht für die Konvertierung und Indikatoren erstellt. Aber sie sind im Code vorhanden.
Ich werde sie nicht hinzufügen. Vielleicht wird jemand zustimmen. Es gab Artikel zu diesem Thema.
fxsaber
Funktioniert bei mt5 nicht korrekt im Vergleich zu mt4. Es öffnet ein Geschäft und schließt es sofort wieder.
Was kann das Problem sein?
fxsaber
Funktioniert bei mt5 nicht korrekt im Vergleich zu mt4. Er öffnet ein Geschäft und schließt es sofort wieder.
Was kann das Problem sein?
Ich habe den Code schnell durchgesehen. Es ist seltsam, dass unter MT4 solche Bedingungen geschrieben wurden
Es wird nie zum Drucken kommen. Und der Code ist sicherlich ein HDD-Killer.
Ich habe es für plattformübergreifende gezwickt.
fxsaber
Danke für die Hilfe. Aber das Problem ist das gleiche.
Er öffnet eine Order und schließt sie sofort wieder. Und so jede Sekunde im Kreis und ohne Unterbrechung.
Es gibt kein solches Problem auf mt4.
Vielen Dank für Ihre Hilfe. Aber das Problem ist das gleiche.
Er öffnet einen Auftrag und schließt ihn sofort wieder. Und so jede Sekunde im Kreis und ohne Unterbrechung.
Bei mt4 gibt es dieses Problem nicht.
Leider habe ich nicht die Möglichkeit, Ihr Problem zu verstehen.
Hervorgehoben. Dies ist die Art von Skript
auf Hedge-Konten, die früher auftauchten
Jetzt nur noch dies.
Bei Netting-Konten haben wir es in allen Fällen noch nicht geschafft, die MT5-Fehler (ausgeführte Order wird nicht gelöscht) zu umgehen. D.h. die Bibliothek weiß nicht, wie sie in allen Fällen die Fehler der MT5-Plattform umgehen kann (und eigentlich auch nicht sollte).
Forum zum Thema Handel, automatische Handelssysteme und Testen von Handelsstrategien
Bibliotheken: MT4Orders
fxsaber, 2017.04.20 06:20
Die neueste Version ist immer hier.Aktualisiert.
Zum Beispiel, dieses
zur Eröffnung einer Position wurde platziert und OrdersTotal erhöhte sich um eins.
Zum Beispiel gibt es weder Positionen noch Aufträge - PositionsTotal = 0, OrdersTotal = 0.
Sie platzieren eine Market Order. In diesem Fall ist PositionsTotal = 0, OrdersTotal = 1.
Der Marktauftrag wird ausgeführt - OrdersTotal = 0. Aber PositionsTotal = 0!
Es kostet viel Mühe, in diese Situation zu geraten. Noch schwieriger ist es, sie zu bemerken. Aber MT5 schafft solche Tricks.
MT4Orders versucht, solche Dinge so weit wie möglich zu vermeiden, aber das ist nicht immer möglich. Ob die Autoren des TS versuchen, solche Schwächen der Plattform in reinem MQL5 oder SB zu berücksichtigen, können wir nur vermuten. Es ist aber unwahrscheinlich.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Библиотеки: MT4Orders
fxsaber, 2018.12.05 19:43