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

 

Ich bin auf ein Problem gestoßen - beim Testen an einem bestimmten Punkt erscheint aus unbekannten Gründen der Fehler "ungültige Haltestellen", aber die Haltestellen sind korrekt.

Der Algorithmus ist trivial - eine Bestellung aufgeben

   MqlTradeResult result = { 0 };
   MqlTradeRequest request = { 0 };
   
   double price = SymbolInfoDouble(_Symbol, isBuy ? SYMBOL_ASK : SYMBOL_BID);
   double sl = price - lvl * _Point;
   double tp = price + lvl * _Point;

   request.action = TRADE_ACTION_DEAL;
   request.magic = magic;
   request.symbol = _Symbol;
   request.volume = lot;
   request.price = price;
   request.deviation = deviation;
   request.type = isBuy ? ORDER_TYPE_BUY : ORDER_TYPE_SELL;

   OrderSend(request, result);

   order = result.order;
   
   if (order)
   {   
      ZeroMemory(result);
      ZeroMemory(request);

      request.action = TRADE_ACTION_SLTP;
      request.order = order;
      request.symbol = _Symbol;
      request.sl = isBuy ? sl : tp;
      request.tp = isBuy ? tp : sl;

      if (!OrderSend(request, result))
      {
         Print(" --- Can not modify order --- error = " + GetLastError() + " order = " + order + " price = " + price);
      }
   }

wenn sie geschlossen ist, wiederholen Sie den Vorgang

Infolgedessen habe ich solche Ergebnisse erhalten (ich habe am 01.05.2010 begonnen):

2013.01.16 13:22:16     Core 1  2011.03.18 21:59:00    --- Can not modify order --- error = 4756 order = 4720 price = 1.41795
2013.01.16 13:22:16     Core 1  2011.03.18 21:59:00   failed modify sell 0.10 EURUSD sl: 0.00000, tp: 0.00000 -> sl: 1.42095, tp: 1.41495 [Invalid stops]
2013.01.16 13:22:16     Core 1  2011.03.18 21:59:00   order performed sell 0.10 at 1.41795 [#4720 sell 0.10 EURUSD at 1.41795]
2013.01.16 13:22:16     Core 1  2011.03.18 21:59:00   deal performed [#4720 sell 0.10 EURUSD at 1.41795]
2013.01.16 13:22:16     Core 1  2011.03.18 21:59:00   deal #4720 sell 0.10 EURUSD at 1.41795 done (based on order #4720)
2013.01.16 13:22:16     Core 1  2011.03.18 21:59:00   exchange sell 0.10 EURUSD at 1.41795 (1.41795 / 1.42399 / 1.41795)
2013.01.16 13:22:16     Core 1  2011.03.18 21:59:00   order performed buy 0.10 at 1.42003 [#4719 buy 0.10 EURUSD at 1.42003]
2013.01.16 13:22:16     Core 1  2011.03.18 21:59:00   deal performed [#4719 buy 0.10 EURUSD at 1.42003]
2013.01.16 13:22:16     Core 1  2011.03.18 21:59:00   deal #4719 buy 0.10 EURUSD at 1.42003 done (based on order #4719)
2013.01.16 13:22:16     Core 1  2011.03.18 21:59:00   stop loss triggered sell 0.10 EURUSD 1.41703 sl: 1.42003 tp: 1.41403 [#4719 buy 0.10 EURUSD at 1.42003]
2013.01.16 13:22:16     Core 1  2011.03.18 17:37:33   position modified [sell 0.10 EURUSD 1.41703 sl: 1.42003 tp: 1.41403]
2013.01.16 13:22:16     Core 1  2011.03.18 17:37:33   order performed sell 0.10 at 1.41703 [#4718 sell 0.10 EURUSD at 1.41703]
2013.01.16 13:22:16     Core 1  2011.03.18 17:37:33   deal performed [#4718 sell 0.10 EURUSD at 1.41703]
2013.01.16 13:22:16     Core 1  2011.03.18 17:37:33   deal #4718 sell 0.10 EURUSD at 1.41703 done (based on order #4718)
2013.01.16 13:22:16     Core 1  2011.03.18 17:37:33   exchange sell 0.10 EURUSD at 1.41703 (1.41703 / 1.41711 / 1.41703)
2013.01.16 13:22:16     Core 1  2011.03.18 17:37:33   order performed buy 0.10 at 1.41711 [#4717 buy 0.10 EURUSD at 1.41711]
2013.01.16 13:22:16     Core 1  2011.03.18 17:37:33   deal performed [#4717 buy 0.10 EURUSD at 1.41711]
2013.01.16 13:22:16     Core 1  2011.03.18 17:37:33   deal #4717 buy 0.10 EURUSD at 1.41711 done (based on order #4717)
2013.01.16 13:22:16     Core 1  2011.03.18 17:37:33   stop loss triggered sell 0.10 EURUSD 1.41411 sl: 1.41711 tp: 1.41111 [#4717 buy 0.10 EURUSD at 1.41711]
2013.01.16 13:22:16     Core 1  2011.03.18 13:29:27   position modified [sell 0.10 EURUSD 1.41411 sl: 1.41711 tp: 1.41111]
2013.01.16 13:22:16     Core 1  2011.03.18 13:29:27   order performed sell 0.10 at 1.41411 [#4716 sell 0.10 EURUSD at 1.41411]
2013.01.16 13:22:16     Core 1  2011.03.18 13:29:27   deal performed [#4716 sell 0.10 EURUSD at 1.41411]
2013.01.16 13:22:16     Core 1  2011.03.18 13:29:27   deal #4716 sell 0.10 EURUSD at 1.41411 done (based on order #4716)
2013.01.16 13:22:16     Core 1  2011.03.18 13:29:27   exchange sell 0.10 EURUSD at 1.41411 (1.41411 / 1.41420 / 1.41411)
2013.01.16 13:22:16     Core 1  2011.03.18 13:29:27   order performed buy 0.10 at 1.41420 [#4715 buy 0.10 EURUSD at 1.41420]
2013.01.16 13:22:16     Core 1  2011.03.18 13:29:27   deal performed [#4715 buy 0.10 EURUSD at 1.41420]
2013.01.16 13:22:16     Core 1  2011.03.18 13:29:27   deal #4715 buy 0.10 EURUSD at 1.41420 done (based on order #4715)
2013.01.16 13:22:16     Core 1  2011.03.18 13:29:27   stop loss triggered sell 0.10 EURUSD 1.41120 sl: 1.41420 tp: 1.40820 [#4715 buy 0.10 EURUSD at 1.41420]
2013.01.16 13:22:16     Core 1  2011.03.18 11:56:13   position modified [sell 0.10 EURUSD 1.41120 sl: 1.41420 tp: 1.40820]
2013.01.16 13:22:16     Core 1  2011.03.18 11:56:13   order performed sell 0.10 at 1.41120 [#4714 sell 0.10 EURUSD at 1.41120]
2013.01.16 13:22:16     Core 1  2011.03.18 11:56:13   deal performed [#4714 sell 0.10 EURUSD at 1.41120]
2013.01.16 13:22:16     Core 1  2011.03.18 11:56:13   deal #4714 sell 0.10 EURUSD at 1.41120 done (based on order #4714)
2013.01.16 13:22:16     Core 1  2011.03.18 11:56:13   exchange sell 0.10 EURUSD at 1.41120 (1.41120 / 1.41126 / 1.41120)
2013.01.16 13:22:16     Core 1  2011.03.18 11:56:13   order performed buy 0.10 at 1.41126 [#4713 buy 0.10 EURUSD at 1.41126]
2013.01.16 13:22:16     Core 1  2011.03.18 11:56:13   deal performed [#4713 buy 0.10 EURUSD at 1.41126]
2013.01.16 13:22:16     Core 1  2011.03.18 11:56:13   deal #4713 buy 0.10 EURUSD at 1.41126 done (based on order #4713)
2013.01.16 13:22:16     Core 1  2011.03.18 11:56:13   stop loss triggered sell 0.10 EURUSD 1.40826 sl: 1.41126 tp: 1.40526 [#4713 buy 0.10 EURUSD at 1.41126]
2013.01.16 13:22:16     Core 1  2011.03.18 11:00:28   position modified [sell 0.10 EURUSD 1.40826 sl: 1.41126 tp: 1.40526]
2013.01.16 13:22:16     Core 1  2011.03.18 11:00:28   order performed sell 0.10 at 1.40826 [#4712 sell 0.10 EURUSD at 1.40826]
2013.01.16 13:22:16     Core 1  2011.03.18 11:00:28   deal performed [#4712 sell 0.10 EURUSD at 1.40826]
2013.01.16 13:22:16     Core 1  2011.03.18 11:00:28   deal #4712 sell 0.10 EURUSD at 1.40826 done (based on order #4712)
2013.01.16 13:22:16     Core 1  2011.03.18 11:00:28   exchange sell 0.10 EURUSD at 1.40826 (1.40826 / 1.40835 / 1.40826)
2013.01.16 13:22:16     Core 1  2011.03.18 11:00:28   order performed buy 0.10 at 1.40832 [#4711 buy 0.10 EURUSD at 1.40832]
2013.01.16 13:22:16     Core 1  2011.03.18 11:00:28   deal performed [#4711 buy 0.10 EURUSD at 1.40832]
2013.01.16 13:22:16     Core 1  2011.03.18 11:00:28   deal #4711 buy 0.10 EURUSD at 1.40832 done (based on order #4711)
2013.01.16 13:22:16     Core 1  2011.03.18 11:00:28   stop loss triggered sell 0.10 EURUSD 1.40532 sl: 1.40832 tp: 1.40232 [#4711 buy 0.10 EURUSD at 1.40832]
2013.01.16 13:22:16     Core 1  2011.03.18 09:56:28   position modified [sell 0.10 EURUSD 1.40532 sl: 1.40832 tp: 1.40232]
2013.01.16 13:22:16     Core 1  2011.03.18 09:56:28   order performed sell 0.10 at 1.40532 [#4710 sell 0.10 EURUSD at 1.40532]
2013.01.16 13:22:16     Core 1  2011.03.18 09:56:28   deal performed [#4710 sell 0.10 EURUSD at 1.40532]
2013.01.16 13:22:16     Core 1  2011.03.18 09:56:28   deal #4710 sell 0.10 EURUSD at 1.40532 done (based on order #4710)
2013.01.16 13:22:16     Core 1  2011.03.18 09:56:28   exchange sell 0.10 EURUSD at 1.40532 (1.40532 / 1.40542 / 1.40532)
2013.01.16 13:22:16     Core 1  2011.03.18 09:56:28   order performed buy 0.10 at 1.40543 [#4709 buy 0.10 EURUSD at 1.40543]
2013.01.16 13:22:16     Core 1  2011.03.18 09:56:28   deal performed [#4709 buy 0.10 EURUSD at 1.40543]
2013.01.16 13:22:16     Core 1  2011.03.18 09:56:28   deal #4709 buy 0.10 EURUSD at 1.40543 done (based on order #4709)
2013.01.16 13:22:16     Core 1  2011.03.18 09:56:28   take profit triggered sell 0.10 EURUSD 1.40843 sl: 1.41143 tp: 1.40543 [#4709 buy 0.10 EURUSD at 1.40543]
2013.01.16 13:22:16     Core 1  2011.03.18 09:00:37   position modified [sell 0.10 EURUSD 1.40843 sl: 1.41143 tp: 1.40543]
2013.01.16 13:22:16     Core 1  2011.03.18 09:00:37   order performed sell 0.10 at 1.40843 [#4708 sell 0.10 EURUSD at 1.40843]
2013.01.16 13:22:16     Core 1  2011.03.18 09:00:37   deal performed [#4708 sell 0.10 EURUSD at 1.40843]
2013.01.16 13:22:16     Core 1  2011.03.18 09:00:37   deal #4708 sell 0.10 EURUSD at 1.40843 done (based on order #4708)
2013.01.16 13:22:16     Core 1  2011.03.18 09:00:37   exchange sell 0.10 EURUSD at 1.40843 (1.40843 / 1.40852 / 1.40843)
...

Was könnte das Problem sein? (zu diesem Zeitpunkt waren 80 % meiner Einlage kostenlos)

 
Forux: Ich bin auf ein Problem gestoßen - wenn ich aus unbekannten Gründen an einem bestimmten Punkt prüfe, erscheint die Fehlermeldung "ungültige Haltestellen", aber die Haltestellen sind korrekt.

Das ist das Ergebnis (Stand 2010.05.01):

Was könnte das Problem sein? (80 % der Kaution waren damals frei)

Die Fehlermeldung erscheint als Antwort auf die Positionsänderung. Gleichzeitig gibt es im Code keine Überprüfung des zulässigen Abstands der Sl/Tp-Levels vom aktuellen Kurs. Es kann vorkommen, dass sich der aktuelle Marktpreis den Niveaus von sl oder tp in einem kürzeren Abstand nähert als vom Server erlaubt. Sehen Sie im Handbuch ORDER_STOPS_LEVEL nach
 
Yedelkin:
Die Fehlermeldung erscheint als Antwort auf die Positionsänderung. Der Code prüft nicht den zulässigen Abstand der Sl/Tp-Levels vom aktuellen Kurs. Es kann vorkommen, dass sich der aktuelle Marktpreis während der Bearbeitung von zwei Handelsaufträgen näher an die Sl- oder Tp-Levels heranbewegt hat, als es der Server erlaubt. Schauen Sie in das Handbuch ORDER_STOPS_LEVEL

Änderungen am Code zur Überprüfung vorgenommen:

price = SymbolInfoDouble(_Symbol, isBuy ? SYMBOL_ASK : SYMBOL_BID);
Print(" --- Can not modify order --- error = " + GetLastError() + " order = " + order + " price = " + price);

Infolgedessen hat sich die Fehlerlinie nicht verändert (d. h. der Preis hat sich nicht geändert). Und das kann es wahrscheinlich auch nicht, denn es wurde zweieinhalb Jahre lang an Protokollen getestet, und zwar an der Alpari-Geschichte (98 % Qualität der Geschichte).

Es sieht eher nach einem Fehler des MetaTraders selbst aus, denn vorher passierte das Gleiche, aber es gab keinen Fehler.

 
Forux:Änderungen am Code zur Überprüfung vorgenommen:
Haben Sie auch geprüft, ob die Einrückung zulässig ist?
 
Yedelkin:
Ну а проверку на допустимый отступ тоже сделали?
Yedelkin
:

Haben Sie auch die zulässige Einrückung überprüft?

Der zulässige Abstand bei der Prüfung beträgt 0. Und der Preis hat sich nicht geändert, er ist nach dem Fehler derselbe wie der Preis, zu dem der Auftrag vor der Änderung erstellt wurde.

price = SymbolInfoDouble(_Symbol, isBuy ? SYMBOL_ASK : SYMBOL_BID);
Print("SymbolInfoInteger(_Symbol, SYMBOL_TRADE_STOPS_LEVEL) == " + SymbolInfoInteger(_Symbol, SYMBOL_TRADE_STOPS_LEVEL));
Print(" --- Can not modify order --- error = " + GetLastError() + " isBuy = " + isBuy + " order = " + order +  " price = " + price);

Protokoll

2013.01.16 14:32:28     Core 1  2011.03.18 21:59:00    --- Can not modify order --- error = 4756 isBuy = false order = 4720 price = 1.41795
2013.01.16 14:32:28     Core 1  2011.03.18 21:59:00   SymbolInfoInteger(_Symbol, SYMBOL_TRADE_STOPS_LEVEL) == 0
2013.01.16 14:32:28     Core 1  2011.03.18 21:59:00   failed modify sell 0.10 EURUSD sl: 0.00000, tp: 0.00000 -> sl: 1.42095, tp: 1.41495 [Invalid stops]
2013.01.16 14:32:28     Core 1  2011.03.18 21:59:00   order performed sell 0.10 at 1.41795 [#4720 sell 0.10 EURUSD at 1.41795]
2013.01.16 14:32:28     Core 1  2011.03.18 21:59:00   deal performed [#4720 sell 0.10 EURUSD at 1.41795]
2013.01.16 14:32:28     Core 1  2011.03.18 21:59:00   deal #4720 sell 0.10 EURUSD at 1.41795 done (based on order #4720)
2013.01.16 14:32:28     Core 1  2011.03.18 21:59:00   exchange sell 0.10 EURUSD at 1.41795 (1.41795 / 1.42399 / 1.41795)
...
 
Forux: Und der Preis hat sich nicht geändert, er ist nach dem Fehler derselbe wie der Preis, zu dem der Auftrag vor der Änderung erstellt wurde.

Der Preis selbst kann (im Allgemeinen) zunächst näher an den Niveaus liegen, als es der Server derzeit zulässt. Daher ist es immer ratsam, einen solchen Zustand zu überprüfen.

Forux : Der zulässige Abstand bei der Prüfung beträgt 0.

Ja, es ist jetzt klar, dass die Prüfung auf Einrückung das Problem in diesem Fall nicht löst. Habe ich richtig verstanden, dass die Sl/Tp-Levels für eine Verkaufsposition auf der Grundlage des Geldkurses festgelegt werden?

 
Yedelkin:

Der Preis selbst kann (im Allgemeinen) zunächst näher an den Niveaus liegen, als es der Server derzeit zulässt. Daher ist es immer ratsam, diesen Zustand zu überprüfen.

Ja, es ist nun klar, dass die Prüfung auf Einrückung das Problem in diesem Fall nicht löst. Habe ich richtig verstanden, dass Sl/Tp-Levels für Verkaufspositionen auf der Grundlage des Geldkurses festgelegt werden?

Ja, und der Ein- und Ausstieg erfolgt je nach Auftragsart entweder zu Ask oder Bid.
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров - Документация по MQL5
 
Forux: Ja, und der Ein- und Ausstieg erfolgt je nach Auftragsart entweder über asc oder bid.
Habe ich richtig verstanden, dass die Sl/Tp-Levels für eine Verkaufsposition auf der Grundlagedes Geldkurses festgelegt werden? Wenn das nicht schwierig ist, drucken Sie den aktuellen Ask, Bid, SL & TP für den Problembereich aus
 
Yedelkin:
Habe ich richtig verstanden, dass die Sl/Tp-Levels für eine Verkaufsposition auf der Grundlagedes Geldkurses festgelegt werden? Wenn das nicht schwierig ist, drucken Sie den aktuellen Ask, Bid, SL & TP für den Problembereich aus.
2013.01.16 15:55:57     Core 1  2011.03.18 21:59:00    --- Can not modify order --- error = 4756 isBuy = false order = 4720 price = 1.41795
2013.01.16 15:55:57     Core 1  2011.03.18 21:59:00   TP == 1.41495
2013.01.16 15:55:57     Core 1  2011.03.18 21:59:00   SL == 1.42095
2013.01.16 15:55:57     Core 1  2011.03.18 21:59:00   BID == 1.41795
2013.01.16 15:55:57     Core 1  2011.03.18 21:59:00   ASK == 1.42399
2013.01.16 15:55:57     Core 1  2011.03.18 21:59:00   SymbolInfoInteger(_Symbol, SYMBOL_TRADE_STOPS_LEVEL) == 0
2013.01.16 15:55:57     Core 1  2011.03.18 21:59:00   failed modify sell 0.10 EURUSD sl: 0.00000, tp: 0.00000 -> sl: 1.42095, tp: 1.41495 [Invalid stops]
2013.01.16 15:55:57     Core 1  2011.03.18 21:59:00   order performed sell 0.10 at 1.41795 [#4720 sell 0.10 EURUSD at 1.41795]
2013.01.16 15:55:57     Core 1  2011.03.18 21:59:00   deal performed [#4720 sell 0.10 EURUSD at 1.41795]
2013.01.16 15:55:57     Core 1  2011.03.18 21:59:00   deal #4720 sell 0.10 EURUSD at 1.41795 done (based on order #4720)
2013.01.16 15:55:57     Core 1  2011.03.18 21:59:00   exchange sell 0.10 EURUSD at 1.41795 (1.41795 / 1.42399 / 1.41795)
...
Frage entfernt. (naja, und der Aufstrich o_o).
 

Hallo! Vorher gab es kein MT-5-Programm, aber jetzt haben sie angefangen, mir in der Rubrik "Signale"

Ich brauche keine Informationen. Ich nutze mobiles Internet und zahle für jedes Mb.

Und diese Signale erhöhten die Nutzung des Internets um das 3 bis 4fache.

Frage: Wie kann man konfigurieren, was und wo diese Signale nicht empfangen werden sollen? Ich habe keines der Signale abonniert.

Grund der Beschwerde: