Merkmale der Sprache mql5, Feinheiten und Techniken - Seite 19

 
Artyom Trishkin:

Wie kann ich den Zeitpunkt des Öffnens der letzten Position und den Zeitpunkt des Schließens der letzten Position bestimmen?

Generell würde ich gerne die allgemeinen Prinzipien und Algorithmen kennen, um Informationen über offene/geschlossene Positionen in mql5 zu erhalten.

Was ist zu beachten, welche Besonderheiten gibt es im Moment?

Die Sache ist die, dass ich MQL4-Syntax verwende, die 1000 Mal einfacher und verständlicher ist als MQL5-Syntax, wenn ich mit dem Handelsteil arbeite.

Sie wissen sehr gut, wie einfach und klar Ihre Aufgabe in drei Zeilen in MQL4 gelöst werden kann. Deshalb ist es genau so, wie ich es mache.

Für Antworten auf alle Fragen zu MQL5 schaue ich in den Quellcode der Bibliothek. Alle Nuancen, die ich kenne, sind dort berücksichtigt worden.

Zum jetzigen Zeitpunkt können wir feststellen, dass Hedge- und Netting-Positionen sehr unterschiedlich sind. Beim Netting können Sie zum Beispiel monatelang immer nur eine Position halten, während Sie ständig handeln. Daher ist die Netting-Position im normalen MT5-Verständnis etwas schlecht durchdachtes und dementsprechend unpraktisch. Für dieses Netting können wir also unsere eigene Positionsessenz erstellen. In MT4 können Sie auch Netting-Positionen haben, aber mit einer viel klareren Interaktion.

Eröffnen Sie eine Position für 1 Lot. Schließen Sie ihn dann bei 0,99 und zahlen Sie den gleichen Betrag ein. Und so weiter, mehrmals.

Die Absicherung ist nicht deshalb so praktisch, weil man mehrere Positionen für mehrere Richtungen haben kann, sondern weil man mehrere Positionen für ein Symbol in EINER Richtung haben kann. Genau so stelle ich mir ein angenehmes Arbeiten mit Positionen in Netting-Systemen vor. Nicht wie im MT5.

Wenn Sie mit Netting-Konten arbeiten, sollten Sie idealerweise immer eine Tabelle haben, die vollständig mit den MT4-Konten übereinstimmt. Denn nur diese Tabellen geben Ihnen einen sofortigen Überblick darüber, was auf dem Handelskonto passiert ist und wie es passiert ist. Nicht die MT5-Statistiken.

Was den MT5-Hedge betrifft, ist alles ganz einfach. In der Nähe habe ich mich allerdings nicht aufgehalten. Ich weiß es also nicht.

 
fxsaber:
Es ist nicht immer möglich, die SL/TP-Niveaus einer geschlossenen Position zu kennen.

Aus dem Zitat geht auch hervor, dass TP-Positionen im MT5 immer eine Marktorder sind. Setzen Sie kein Lesezeichen für das Grenzwert-Gegenstück - siehe oben.

Nun, das ist interessant... Ich muss sicher sein, dass die letzte geschlossene Position mit Gewinnmitnahme geschlossen wurde.

Gibt es eine Möglichkeit, das mit Sicherheit herauszufinden?

 
Artyom Trishkin:

Nun, das ist interessant... Ich muss sicher sein, dass die letzte geschlossene Position mit Gewinnmitnahme geschlossen wurde.

Gibt es eine Möglichkeit, dies mit Sicherheit zu wissen?

Ich tue, was mir geraten wurde:

//+------------------------------------------------------------------+
//| Возвращает причину закрытия позиции по Take Profit               |
//+------------------------------------------------------------------+
bool IsClosedByTP (const string symbol)
{
  //--- Получим комментарий последней сделки на указанном символе
  string last_comment = LastDealComment (symbol);
  //--- Если в комментарии есть строка "tp"
  if(StringFind (last_comment, "tp", 0) > -1)
    return (true);
  //--- Если нет строки "tp"
  return (false);
}
//+------------------------------------------------------------------+
//| Возвращает причину закрытия позиции по Stop Loss                 |
//+------------------------------------------------------------------+
bool IsClosedBySL (const string symbol)
{
  //--- Получим комментарий последней сделки на указанном символе
  string last_comment = LastDealComment (symbol);
  //--- Если в комментарии есть строка "sl"
  if(StringFind (last_comment, "sl", 0) > -1)
    return (true);
  //--- Если нет строки "sl"
  return (false);
}
//+------------------------------------------------------------------+
//| Возвращает комментарий последней сделки на указанном символе     |
//+------------------------------------------------------------------+
string LastDealComment (const string symbol)
{
  int    total_deals  = 0;  // Всего сделок в списке выбранной истории
  string deal_symbol  = ""; // Символ сделки
  string deal_comment = ""; // Комментарий сделки
                            //--- Если история сделок получена
  if(HistorySelect (0, TimeCurrent ()))
  {
    //--- Получим количество сделок в полученном списке
    total_deals = HistoryDealsTotal ();
    //--- Пройдемся по всем сделкам в полученном списке от последней сделки к первой
    for(int i = total_deals - 1; i >= 0; i--)
    {
      //--- Получим комментарий сделки
      deal_comment = HistoryDealGetString (HistoryDealGetTicket (i), DEAL_COMMENT);
      //--- Получим символ сделки
      deal_symbol = HistoryDealGetString (HistoryDealGetTicket (i), DEAL_SYMBOL);
      //--- Если символ сделки и текущий символ равны, остановим цикл
      if(deal_symbol == symbol)
        break;
    }
  }
  //---
  return (deal_comment);
}
 
Andrey Dik:

Ich tue, was mir geraten wurde.

OK, woher weiß ich, ob der letzte Handel zur Schließung oder Umkehrung einer Position geführt hat?

Wenn eine Position geschlossen oder umgedreht wird, ist es sinnvoll, ihre Daten zu überprüfen, die für die Logik des Beraters notwendig sind: Volumen, Tatsache der Schließung bei Take oder Stop, usw..

Andernfalls, wenn die Tatsache der Schließung bei Übernahme im letzten Geschäft festgestellt wurde, die Position aber bestehen geblieben ist, ist es nicht sinnvoll, die Daten der zuletzt geschlossenen Position zu überprüfen (sie existiert noch).

Im Allgemeinen ist es natürlich schwierig, schnell auf die Logik des MT5-Auftragssystems nach dem Vierer umzuschalten - so viele Fragen entstehen, wenn man über die Logik des Verhaltens des EA nachdenkt, die von den Daten der letzten geschlossenen Position abhängt - im Vierer ist alles transparent - die Position hat ihren eigenen Typ, und es ist die letzte - sie ist geeignet - nehmen Sie die Daten und verwenden Sie sie. Aber hier ... Absicherung, Netting ... und wir brauchen das gleiche Ergebnis... und dann fangen wir an, anders zu denken...

 
Artyom Trishkin:

OK, woher wissen Sie also, ob der letzte Handel zu einer Schließung oder Umkehrung einer Position geführt hat?

1. Wenn die Position geschlossen oder umgedreht wird, ist es sinnvoll, die Daten zu überprüfen, die für die Logik des Expert Advisors erforderlich sind: das Volumen, die Tatsache, dass die Position bei Take oder Stop geschlossen wurde, usw..

Andernfalls, wenn die Tatsache der Schließung der Gewinnmitnahme in der letzten Position erkannt wurde, die Position aber bestehen blieb, ist es nicht sinnvoll, die Daten der letzten geschlossenen Position zu überprüfen (sie existiert noch).

Im Allgemeinen ist es natürlich schwierig, schnell auf die Logik des MT5-Auftragssystems nach dem Vierer umzuschalten - so viele Fragen entstehen, wenn man über die Logik des Beraterverhaltens nachdenkt, das an die Daten der letzten geschlossenen Position gebunden ist - im Vierer ist alles transparent - die Position hat ihren eigenen Typ, und es ist die letzte - es passt, wir nehmen die Daten und verwenden sie. Aber hier ... Absicherung, Netting ... und wir brauchen das gleiche Ergebnis... und dann fangen wir an, über alles Mögliche nachzudenken...

1. Art der Transaktion prüfen, IN, OUT oder IN/OUT

2. Wenn eine Position durch SL oder TP geschlossen wurde, ist sie bereits geschlossen, wir brauchen die Geschäftsart nicht zu prüfen.

 
Andrej Dik:

1. Überprüfen Sie die Art der Transaktion, IN, OUT oder IN/OUT

2. Wenn die Position durch SL oder TP geschlossen wird, ist sie nicht mehr vorhanden, sie ist geschlossen, Sie müssen die Art des Handels nicht überprüfen.

Gilt sie für Netting? Oder für eine Hecke? Ist es nicht möglich, in einem Hedge-Konto mehrere Positionen in einer Richtung zu halten? Oder ist es eine Position, und ....? Was ist "und"? ... Verdammt... Ich weiß nicht, was "und" ist... Es gibt eine Menge Fragen, die Antworten sind noch nicht in meinem Kopf.
 
Artyom Trishkin:
Gilt das auch für Netze? Oder gilt das auch für das Hedging? Kann es in einem Hedge-Konto nicht mehrere Positionen in eine Richtung geben? Oder ist es eine Position, und ....? Was ist "und"? ... Verdammt... Ich weiß nicht, was "und" ist... Viele Fragen, noch keine Antworten.

Auch für die Hecke.

Im Laufe der Jahre wurde mein Gehirn auf Netting geschärft: Order->Transaktion->Position. Es kann viele Geschäfte in einer Position geben (in einem Hedge gibt es nur ein Geschäft, korrigieren Sie mich, wenn ich falsch liege), Sie können anhand der Art des Geschäfts erkennen, was mit der Position passiert ist.

In einer Hecke ist es natürlich leichter zu verstehen, aber schwieriger zu verfolgen. Natürlich ist dies meine persönliche Meinung.

 
Andrej Dik:

Auch für eine Absicherung.

Im Laufe der Jahre wurde mein Gehirn auf Netting geschärft: Order->Transaktion->Position. Es kann viele Geschäfte in einer Position geben (in einem Hedge gibt es nur ein Geschäft, korrigieren Sie mich, wenn ich falsch liege), Sie können anhand der Art des Geschäfts erkennen, was mit der Position passiert ist.

In einer Hecke ist es natürlich leichter zu verstehen, aber schwieriger zu verfolgen. IMHO natürlich.

Ich verstehe, danke. Ich werde es herausfinden.
 
Artyom Trishkin:

Nun, das ist interessant... Ich muss sicher sein, dass die letzte geschlossene Position mit Gewinnmitnahme geschlossen wurde.

Gibt es eine Möglichkeit, dies mit Sicherheit zu wissen?

Wenn Sie das letzte Geschäft DEAL_ENTRY_OUT finden und den gesamten Verlauf der Position HistorySelectByPosition in dieser Liste auswählen, gibt es 2 Geschäfte und 2 Aufträge, die eine Position eröffnen und schließen. Der Auftrag, auf dessen Grundlage der Abschluss erfolgte, enthält ORDER_PRICE_OPEN. Dann prüfen Sie die Positionsart und die Auftragsart, mit der sie geschlossen wurde. Wenn die Auftragsart entgegengesetzt ist, bedeutet dies, dass es sich um einen Abschluss handelt. Dementsprechend ist der Orderpreis der Preis, den wir suchen sollten, mit einer kleinen Korrektur: Wenn der Ordergewinn > 0 ist, dann ist dies der Preis des TP, wenn er < 0 ist, dann wurde die Position auf SL geschlossen.

Wenn wir den Kommentar zur Bestellung berücksichtigen, sollten wir uns nicht auf ihn verlassen.

 
Alexey Viktorov:

Wenn Sie den letzten Handel DEAL_ENTRY_OUT finden und die gesamte Historie der Position HistorySelectByPosition in dieser Liste auswählen, gibt es für Hadge-Konten 2 Trades und 2 Aufträge, die eine Position eröffnen und schließen. Der Auftrag, auf dessen Grundlage der Abschluss erfolgte, enthält ORDER_PRICE_OPEN. Dann prüfen Sie die Positionsart und die Auftragsart, mit der sie geschlossen wurde. Wenn die Auftragsart entgegengesetzt ist, bedeutet dies, dass es sich um einen Abschluss handelt. Dementsprechend ist der Orderpreis der Preis, den wir suchen sollten, mit einer kleinen Korrektur: Wenn der Ordergewinn > 0 ist, dann ist dies der Preis des TP, wenn er < 0 ist, dann wurde die Position auf SL geschlossen.

Wenn wir uns auf den Kommentar zum Beschluss verlassen, würde ich das nicht tun.

Was ist mit dem SL? Wie bestimmen Sie, was das SL-Schleppnetz an Gewinn einbrachte?