Fehler, Irrtümer, Fragen - Seite 2019

 
fxsaber:

Darüber wurde schon oft geschrieben. Aus irgendeinem Grund nicht korrigiert.

Ich habe schon einmal gelesen, dass Pfeile nicht immer sofort nach einer Transaktion angezeigt werden können. Ich habe auch eine solche Anwendung geöffnet. Aber um solche Auslassungen in der Liste auf der Registerkarte Geschichte zu haben, habe ich noch keine Beiträge gesehen.

P.S. Und ja, nach der Bereitstellung von Beweisen und alle notwendigen Daten, um den Fehler zu reproduzieren, aus irgendeinem Grund eine komplette ignorieren für eine ganze Woche, obwohl von Anfang an reagierte, weigert sich zuzustimmen, dass es ein Fehler ist.

 
Anatoli Kazharski:

Ich habe schon einmal gelesen, dass die Pfeile nicht immer sofort nach einem Handel angezeigt werden. Ich habe auch eine solche Anwendung geöffnet. Aber in der Liste auf der Registerkarte " Geschichte" habe ich solche Auslassungen noch nicht gesehen.

Sie müssen mehrmals die Registerkarte wechseln, damit der Verlauf korrekt angezeigt wird. Das ist bei der Fehlersuche sehr unangenehm.

 
fxsaber:

Die Registerkarten müssen mehrmals gewechselt werden, dann wird der Verlauf korrekt. Das ist bei der Fehlersuche sehr lästig.

Ja, das ist in manchen Fällen sehr lästig, wenn es um die Entwicklung und das Debugging von Handelsstrategien geht.

Ich habe nicht bemerkt, dass das Umschalten der Registerkarten den Inhalt der Verlaufsliste irgendwie verändert hat:


 
Anatoli Kazharski:

Ich habe nicht bemerkt, dass sich der Inhalt der Verlaufsliste ändert, wenn ich die Registerkarte wechsle:

Klicken Sie mit der rechten Maustaste und ändern Sie Deals/Order.

 
Anatoli Kazharski:

Ja, das ist in manchen Fällen ein großes Hindernis bei der Entwicklung und Fehlersuche von Handelsstrategien.

Ich habe nicht festgestellt, dass der Wechsel der Registerkarte den Inhalt der Verlaufsliste in irgendeiner Weise verändert hat:


So etwas gibt es. Ich rette mich mit einem Schieberegler und einer Pause.
 
fxsaber:

Klicken Sie mit der rechten Maustaste und ändern Sie Vorgänge/Auftrag.

Ja, solche Aktionen stellen die Liste der Geschäftshistorie wieder her:


 
Kommentare, die sich nicht auf dieses Thema beziehen, wurden nach "Fragen von MQL4 MT4 MetaTrader 4 Anfängern" verschoben.
 
Alle realen Symbole auf dem Konto haben die Form "EURUSD.hello". Gibt es nach der Erstellung eines benutzerdefinierten "EURUSD" keine Probleme beim Kopieren vom Signalservice?
 

Bitte fügen Sie die folgenden Werte hinzu

ENUM_DEAL_REASON

Kennung

Beschreibung

DEAL_REASON_LIMIT

Das Geschäft wurde aufgrund der Auslösung einer Limit-Order ausgeführt

DEAL_GRUND_MARKT

Das Geschäft wurde aufgrund der Auslösung einer Market Order ausgeführt

DEAL_GRUND_STOP

Das Geschäft wurde aufgrund einer Stop-Order ausgeführt, die


Das scheint unnötig zu sein. Es gibt jedoch Situationen, in denen der Auftrag teilweise ausgeführt wurde, wodurch ein Geschäft zustande kam.In diesem Fall wird DEAL_ORDER zwar gefunden, steht aber nicht in der Verlaufstabelle, da der Auftrag noch aktiv ist.

Mit anderen Worten: Um herauszufinden, welche Art von Auftrag das Geschäft ausgelöst hat, ist es nicht immer hilfreich, auf die Auftragshistorie zurückzugreifen. Wenn wir kein Chaos bei der Suche nach Aufträgen unter den "toten und lebendigen" Aufträgen verursachen wollen, können wir einfach weitere Ausführungsflags (nach den bestehenden Flags) hinzufügen, um die Kompatibilität mit ENUM_ORDER_REASON undENUM_POSITION_REASON zu wahren. Gleichzeitig ist es wünschenswert, die gleichen Flags zuENUM_POSITION_REASON hinzuzufügen, um kompatibel zu sein

POSITION_REASON_LIMIT  == DEAL_REASON_LIMIT
POSITION_REASON_MARKET == DEAL_REASON_MARKET
POSITION_REASON_STOP   == DEAL_REASON_STOP
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства сделок
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства сделок
  • www.mql5.com
Сделка является отражением факта совершения торговой операции на основании ордера, содержащего торговый приказ. Каждая сделка описывается свойствами, позволяющими получить информацию о ней. Для чтения значений свойств используются функции вида Идентификатор позиции, в открытии, изменении или закрытии которой участвовала эта сделка. Каждая...
 

In einem benachbarten Threadhttps://www.mql5.com/ru/forum/216697/page3 wurde eine Frage zu OrderCalcMargin aufgeworfen.


Test: Prüfen wir 2 verschiedene Möglichkeiten zur Berechnung der Einlage, indem wir verschiedene Eröffnungspreise einsetzen.

#define  TOSTRING(A) #A+" = "+(string)(A)
void OnStart()
  {
   double margin_1=999,price_1;

   Print(TOSTRING(price_1=SymbolInfoDouble(Symbol(),SYMBOL_ASK)));
   Print("price_1= ",price_1," margin_1= ",NormalizeDouble(margin_1,8)," ",TOSTRING(OrderCalcMargin(ORDER_TYPE_BUY,_Symbol,0.1,price_1,margin_1)));
   Print("price_1= ",price_1," margin_1= ",NormalizeDouble(margin_1,8)," ",TOSTRING(MyOrderCalcMargin(ORDER_TYPE_BUY,_Symbol,0.1,price_1,margin_1)));
   Print(TOSTRING(price_1=SymbolInfoDouble(Symbol(),SYMBOL_BID)));
   Print("price_1= ",price_1," margin_1= ",NormalizeDouble(margin_1,8)," ",TOSTRING(OrderCalcMargin(ORDER_TYPE_BUY,_Symbol,0.1,price_1,margin_1)));
   Print("price_1= ",price_1," margin_1= ",NormalizeDouble(margin_1,8)," ",TOSTRING(MyOrderCalcMargin(ORDER_TYPE_BUY,_Symbol,0.1,price_1,margin_1)));
   Print(TOSTRING(price_1=10.0));
   Print("price_1= ",price_1," margin_1= ",NormalizeDouble(margin_1,8)," ",TOSTRING(OrderCalcMargin(ORDER_TYPE_BUY,_Symbol,0.1,price_1,margin_1)));
   Print("price_1= ",price_1," margin_1= ",NormalizeDouble(margin_1,8)," ",TOSTRING(MyOrderCalcMargin(ORDER_TYPE_BUY,_Symbol,0.1,price_1,margin_1)));
   Print(TOSTRING(price_1=1.0));
   Print("price_1= ",price_1," margin_1= ",NormalizeDouble(margin_1,8)," ",TOSTRING(OrderCalcMargin(ORDER_TYPE_BUY,_Symbol,0.1,price_1,margin_1)));
   Print("price_1= ",price_1," margin_1= ",NormalizeDouble(margin_1,8)," ",TOSTRING(MyOrderCalcMargin(ORDER_TYPE_BUY,_Symbol,0.1,price_1,margin_1)));
  }

// Альтернатива OrderCalcMargin
bool MyOrderCalcMargin(const ENUM_ORDER_TYPE action,const string symbol,const double volume,const double price,double &margin)
  {
   double MarginInit,MarginMain;

   const bool Res=SymbolInfoMarginRate(symbol,action,MarginInit,MarginMain);

   margin=Res ? MarginInit*price*volume*SymbolInfoDouble(symbol,SYMBOL_TRADE_TICK_VALUE)/
          (SymbolInfoDouble(symbol,SYMBOL_TRADE_TICK_SIZE)*AccountInfoInteger(ACCOUNT_LEVERAGE)) : 0;

   return(Res);
  }

Hier ist das LOG

LF      0       04:28:05.464    test (AUDJPY,H1)        price_1=SymbolInfoDouble(Symbol(),SYMBOL_ASK) = 88.712
KP      0       04:28:05.464    test (AUDJPY,H1)        price_1= 88.712 margin_1= 26.19 OrderCalcMargin(ORDER_TYPE_BUY,_Symbol,0.1,price_1,margin_1) = true
CR      0       04:28:05.464    test (AUDJPY,H1)        price_1= 88.712 margin_1= 26.19399834 MyOrderCalcMargin(ORDER_TYPE_BUY,_Symbol,0.1,price_1,margin_1) = true
ED      0       04:28:05.464    test (AUDJPY,H1)        price_1=SymbolInfoDouble(Symbol(),SYMBOL_BID) = 88.7
PR      0       04:28:05.464    test (AUDJPY,H1)        price_1= 88.7 margin_1= 26.19 OrderCalcMargin(ORDER_TYPE_BUY,_Symbol,0.1,price_1,margin_1) = true
KS      0       04:28:05.464    test (AUDJPY,H1)        price_1= 88.7 margin_1= 26.1904551 MyOrderCalcMargin(ORDER_TYPE_BUY,_Symbol,0.1,price_1,margin_1) = true
EP      0       04:28:05.464    test (AUDJPY,H1)        price_1=10.0 = 10.0
HK      0       04:28:05.464    test (AUDJPY,H1)        price_1= 10.0 margin_1= 26.19 OrderCalcMargin(ORDER_TYPE_BUY,_Symbol,0.1,price_1,margin_1) = true
HH      0       04:28:05.464    test (AUDJPY,H1)        price_1= 10.0 margin_1= 2.95270069 MyOrderCalcMargin(ORDER_TYPE_BUY,_Symbol,0.1,price_1,margin_1) = true
KN      0       04:28:05.464    test (AUDJPY,H1)        price_1=1.0 = 1.0
FS      0       04:28:05.464    test (AUDJPY,H1)        price_1= 1.0 margin_1= 26.19 OrderCalcMargin(ORDER_TYPE_BUY,_Symbol,0.1,price_1,margin_1) = true
PR      0       04:28:05.464    test (AUDJPY,H1)        price_1= 1.0 margin_1= 0.29527007 MyOrderCalcMargin(ORDER_TYPE_BUY,_Symbol,0.1,price_1,margin_1) = true

Die Funktion OrderCalcMargin berücksichtigt bei der Berechnung der Marge nicht den Eröffnungskurs

Dies scheint mit dem Wechselkurs der angegebenen Währung zusammenzuhängen, der für den Zeitpunkt und den Eröffnungskurs neu berechnet werden muss.

Wenn die notierte Währung USD ist (und die Kontowährung ebenfalls USD ist), dann ändert sich die berechnete Marge entsprechend dem Eröffnungskurs.

Protokoll für GBPUSD

KK      0       05:25:15.763    test (GBPUSD,H1)        price_1=SymbolInfoDouble(Symbol(),SYMBOL_ASK) = 1.32354
CR      0       05:25:15.763    test (GBPUSD,H1)        price_1= 1.32354 margin_1= 44.12 OrderCalcMargin(ORDER_TYPE_BUY,_Symbol,0.1,price_1,margin_1) = true
DD      0       05:25:15.763    test (GBPUSD,H1)        price_1= 1.32354 margin_1= 44.118 MyOrderCalcMargin(ORDER_TYPE_BUY,_Symbol,0.1,price_1,margin_1) = true
GD      0       05:25:15.763    test (GBPUSD,H1)        price_1=SymbolInfoDouble(Symbol(),SYMBOL_BID) = 1.32341
LS      0       05:25:15.763    test (GBPUSD,H1)        price_1= 1.32341 margin_1= 44.11 OrderCalcMargin(ORDER_TYPE_BUY,_Symbol,0.1,price_1,margin_1) = true
NQ      0       05:25:15.763    test (GBPUSD,H1)        price_1= 1.32341 margin_1= 44.11366667 MyOrderCalcMargin(ORDER_TYPE_BUY,_Symbol,0.1,price_1,margin_1) = true
DG      0       05:25:15.763    test (GBPUSD,H1)        price_1=10.0 = 10.0
LM      0       05:25:15.763    test (GBPUSD,H1)        price_1= 10.0 margin_1= 333.33 OrderCalcMargin(ORDER_TYPE_BUY,_Symbol,0.1,price_1,margin_1) = true
NO      0       05:25:15.763    test (GBPUSD,H1)        price_1= 10.0 margin_1= 333.33333333 MyOrderCalcMargin(ORDER_TYPE_BUY,_Symbol,0.1,price_1,margin_1) = true
HM      0       05:25:15.763    test (GBPUSD,H1)        price_1=1.0 = 1.0
ED      0       05:25:15.763    test (GBPUSD,H1)        price_1= 1.0 margin_1= 33.33 OrderCalcMargin(ORDER_TYPE_BUY,_Symbol,0.1,price_1,margin_1) = true
OD      0       05:25:15.763    test (GBPUSD,H1)        price_1= 1.0 margin_1= 33.33333333 MyOrderCalcMargin(ORDER_TYPE_BUY,_Symbol,0.1,price_1,margin_1) = true

Ist es ein Fehler oder sollte es einer sein?

OrderCalcMargin и проблема с ним связанная.
OrderCalcMargin и проблема с ним связанная.
  • 2017.10.04
  • www.mql5.com
Один советник работает на счёте MetaQuotes-Demo на семи валютных парах и на трёх парах реальном счёте робо. Итого 10 экземпляров советника запущено...