Sie müssen die Bedingungen immer noch bei jedem neuen Tick überprüfen, und wenn es beim vorherigen Tick nicht funktioniert hat, wird es beim neuen Tick anders sein.
Und es muss eine Fehlerbehandlung vorgenommen werden.
Wenn Sie dies über ein Array tun, dann überprüfen Sie nur die Ticks der geänderten Aufträge, die in das Array geschrieben wurden, mit allen anderen Aufträgen.
Das stimmt ungefähr, ja, danke. In diesem Fall sollten Sie, wenn Sie in Objekten speichern, besser eindeutige Majicies anstelle von Tickets verwenden, da es sonst Dutzende von Objekten mit demselben Namen gibt.
StringToInteger(ObjectName(0,i,0)
Ein Tippfehler? Ich glaube, beide Funktionen können nur einen Parameter annehmen.
Nerd Trader #: Wenn Sie dies über ein Array tun, dann überprüfen Sie nur die Ticks der geänderten Aufträge, die in das Array geschrieben wurden, mit allen anderen.
Ungefähr richtig, ja, danke. In diesem Fall, wenn wir in Objekten speichern, sollten wir besser eindeutige Majics anstelle von Tickets haben, sonst gibt es Dutzende von Objekten mit dem gleichen Namen.
Ein Tippfehler? Ich glaube, beide Funktionen können nur einen Parameter annehmen.
Wissen Sie übrigens, warum der folgende Fehler in regelmäßigen Abständen auftritt? Auf 100 erfolgreich eröffnete Aufträge entfallen etwa 10 dieser Aufträge.
2021.10.10 16:18:09.853 2021.01.05 21:15:00 test EURUSD,M5: 4051 | order.sl_price: 2.813499706815862e-262
2021.10.10 16:18:09.853 2021.01.05 21:15:00 test EURUSD,M5: OrderSend error 4051
2021.10.10 16:18:09.853 2021.01.05 21:15:00 test EURUSD,M5: unknown trade cmd 406958564 for OrderSend function
order.sl_price: 2.813499706815862e-262 - Stoploop-Preis, diese Zahl sollte eindeutig nicht sein. 4051 - "Ungültiger Wert des Funktionsparameters" - ist dies der Auftragstyp? Auch damit sollte es keine Probleme geben.
Wissen Sie übrigens, warum der folgende Fehler in regelmäßigen Abständen auftritt? Auf 100 erfolgreich eröffnete Aufträge entfallen etwa 10 dieser Aufträge.
order.sl_price: 2.813499706815862e-262 - Stoppkurs, offensichtlich sollte diese Zahl nicht sein. 4051 - "Ungültiger Wert des Funktionsparameters" - ist dies der Auftragstyp? Auch damit sollte es keine Probleme geben.
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 19.02.2008 |//| Описание : Возвращает суммарный профит открытых позиций в пунктах |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ("" - любой символ, |//| NULL - текущий символ) |//| op - операция (-1 - любая позиция) |//| mn - MagicNumber (-1 - любой магик) |//+----------------------------------------------------------------------------+int GetProfitOpenPosInPoint(string sy="", int op=-1, int mn=-1) {
double p;
int i, k=OrdersTotal(), pr=0;
if (sy=="0") sy=Symbol();
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if ((OrderSymbol()==sy || sy=="") && (op<0 || OrderType()==op)) {
if (mn<0 || OrderMagicNumber()==mn) {
if (OrderTicket()== GetTicketMaxMinOrder(0) || OrderTicket()== GetTicketMaxMinOrder(1) ) {
p=MarketInfo(OrderSymbol(), MODE_POINT);
if (p==0) if (StringFind(OrderSymbol(), "JPY")<0) p=0.0001; else p=0.01;
if (OrderType()==OP_BUY) {
pr+=(MarketInfo(OrderSymbol(), MODE_BID)-OrderOpenPrice())/p;
}
if (OrderType()==OP_SELL) {
pr+=(OrderOpenPrice()-MarketInfo(OrderSymbol(), MODE_ASK))/p;
}
}
}
}
}
}
return(pr);
}
Makar hat Code in den EA so weit nur eingefügt, um Gewinn in Währung und Gewinn in Pips zu vergleichen, soweit ich verstehe, kann es verstanden werden, wenn diese Funktionen Nullwerte haben
Sie müssen die Bedingungen immer noch bei jedem neuen Tick überprüfen, und wenn es beim vorherigen Tick nicht funktioniert hat, wird es beim neuen Tick anders sein.
Und es muss eine Fehlerbehandlung vorgenommen werden.
Ein Tippfehler? Ich glaube, beide Funktionen können nur einen Parameter annehmen.
Wenn Sie dies über ein Array tun, dann überprüfen Sie nur die Ticks der geänderten Aufträge, die in das Array geschrieben wurden, mit allen anderen.
Ungefähr richtig, ja, danke. In diesem Fall, wenn wir in Objekten speichern, sollten wir besser eindeutige Majics anstelle von Tickets haben, sonst gibt es Dutzende von Objekten mit dem gleichen Namen.
Ein Tippfehler? Ich glaube, beide Funktionen können nur einen Parameter annehmen.
Das werden sie nicht.
Entschuldigung
h ttps://www.mql5.com/ru/docs/objects/objectname
Dies ist für MT5
und dies ist für MT4
Das werden sie nicht.
Entschuldigung
Wissen Sie übrigens, warum der folgende Fehler in regelmäßigen Abständen auftritt? Auf 100 erfolgreich eröffnete Aufträge entfallen etwa 10 dieser Aufträge.
2021.10.10 16:18:09.853 2021.01.05 21:15:00 test EURUSD,M5: 4051 | order.sl_price: 2.813499706815862e-262 2021.10.10 16:18:09.853 2021.01.05 21:15:00 test EURUSD,M5: OrderSend error 4051 2021.10.10 16:18:09.853 2021.01.05 21:15:00 test EURUSD,M5: unknown trade cmd 406958564 for OrderSend functionorder.sl_price: 2.813499706815862e-262 - Stoploop-Preis, diese Zahl sollte eindeutig nicht sein.
4051 - "Ungültiger Wert des Funktionsparameters"
- ist dies der Auftragstyp? Auch damit sollte es keine Probleme geben.
Meinen Sie mit Ticket oder Preis "min und max"?
Nach Ticket
Wissen Sie übrigens, warum der folgende Fehler in regelmäßigen Abständen auftritt? Auf 100 erfolgreich eröffnete Aufträge entfallen etwa 10 dieser Aufträge.
order.sl_price: 2.813499706815862e-262 - Stoppkurs, offensichtlich sollte diese Zahl nicht sein.
4051 - "Ungültiger Wert des Funktionsparameters"
- ist dies der Auftragstyp? Auch damit sollte es keine Probleme geben.
Versuchen Sie, "NormalizeDouble" zu verschieben
Nach Ticket
Versuchen Sie "NormalizeDouble" zu verschieben
unverändert.
Makar hat Code in den EA so weit nur eingefügt, um Gewinn in Währung und Gewinn in Pips zu vergleichen, soweit ich verstehe, kann es verstanden werden, wenn diese Funktionen Nullwerte haben