Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 1259

 
Yevhenii Levchenko:
Verstehe ich das richtig, dass in mt5 anstelle von closing time, POSITION_TIME_UPDATE beobachtet werden sollte?
Nein. Sie brauchen ein abschließendes Geschäft.
 
Valerius:

TakeProfit wird in Pips und Trailing TakeProfit in der Einzahlungswährung berechnet. Trailing TakeProfit ist der Gewinn in der Währung des Depots von einem oder mehreren Aufträgen, und setzt Stops von Aufträgen in der in den Einstellungen angegebenen Höhe, d.h. in einem berechneten Abstand.

In den Einstellungen wird zum Beispiel ein Trailing Take Profit in Höhe von $100 angegeben. Sobald der Preis den Gewinn von 100$ erreicht hat und weiter steigt, berechnet das Programm den Abstand von 100$ und platziert alle Stop-Losses der Orders an der berechneten Stelle, wenn es möglich ist. Sobald der Kurs auf die Stopps zurückfällt, werden alle Aufträge geschlossen. Dies ist im Prinzip dasselbe wie der Trailing Stop, nur dass er in der Depotwährung berechnet wird und dem Gewinn folgt. Vielleicht habe ich irgendwo einen Fehler gemacht, aber das ist der Grundsatz. Ich hoffe, ich habe es erklärt.

Nachlauf - Bewegung. Trailing Stop - wir verschieben den Stop entsprechend dem Algorithmus. Trailing TakeProfit - wir verschieben das Niveau, während es sich einem Algorithmus nähert.

 
Artyom Trishkin:
Nein. Sie brauchen ein abschließendes Geschäft.

Ich danke Ihnen!

Hier ist eine Funktion für martin, die den letzten Handel auf Gewinn überprüft. Wenn es unrentabel ist, gibt es das Volumen des Geschäfts zurück. Wie richtig ist es, so zu verfahren?

double lastDealVolume() {
   datetime lastDealTime = 0;
   double volume = 0;
   if(HistorySelect(TimeCurrent() - PeriodSeconds(PERIOD_D1) * 10, TimeCurrent())) {
      int historyDealsTotal = HistoryDealsTotal();
      for(int i = historyDealsTotal - 1; i >= 0; i--) {
         if(HistoryDealSelect(HistoryDealGetTicket(i))) {
            ulong dealTicket = HistoryDealGetTicket(i);
            ENUM_DEAL_TYPE dealType = (ENUM_DEAL_TYPE) HistoryDealGetInteger(dealTicket, DEAL_TYPE);
            if(HistoryDealGetString(dealTicket, DEAL_SYMBOL) == _Symbol && HistoryDealGetInteger(dealTicket, DEAL_MAGIC) == MagicNumber &&
                  (dealType == DEAL_TYPE_BUY || dealType == DEAL_TYPE_SELL) ) {
               if(HistoryDealGetInteger(dealTicket, DEAL_TIME) > lastDealTime) {
                  lastDealTime = (datetime) HistoryDealGetInteger(dealTicket, DEAL_TIME);
                  if(HistoryDealGetDouble(dealTicket, DEAL_PROFIT) < 0) {
                     volume = HistoryDealGetDouble(dealTicket, DEAL_VOLUME);
                  } else {
                     volume = 0;
                  }
               }
            }
         }
      }
   } else Print("HistorySelect() (lastOrderVolume) error! ");
   return volume;
}

Wenn wir den Gewinn der gesamten Position wissen wollen:

-> Suche nach allen Geschäften und Ermittlung der DEAL_POSITION_ID des letzten Geschäfts;
-> Suche und Ermittlung des Gewinns der gesamten Position anhand der DEAL_POSITION_ID?

Oder gibt es einen kürzeren Weg?

 
Yevhenii Levchenko:

Ich danke Ihnen!

Hier ist eine Funktion für martin, die den letzten Handel auf Gewinn überprüft. Wenn es unrentabel ist, gibt es das Volumen des Geschäfts zurück. Wie richtig ist es, so zu verfahren?

Wenn wir den Gewinn der gesamten Position wissen wollen:

-> Suche nach allen Geschäften und Ermittlung der DEAL_POSITION_ID des letzten Geschäfts;
-> Suche und Ermittlung des Gewinns der gesamten Position anhand der DEAL_POSITION_ID?

Oder gibt es einen kürzeren Weg?

Betrachten Sie das Problem aus einem anderen Blickwinkel. Warum sollten wir die Historie durchsuchen, wenn wir die Positions-ID zum Zeitpunkt der Positionsschließung abrufen und die Aufträge und Geschäfte dieser Position auswählen können, wenn wir bereits alles wissen.

 
Alexey Viktorov:

Betrachten Sie das Problem aus einem anderen Blickwinkel. Warum sollte man die Historie durchsuchen, wenn man die Positions-ID zum Zeitpunkt der Schließung der Position abrufen und die Aufträge und Geschäfte dieser Position auswählen kann, wenn man bereits alles weiß?

Die Sache ist die, dass Sie dies überprüfen müssen, bevor Sie einen Handel eröffnen :(

Aber wenn du keinen kurzen hast, kannst du auch den langen Weg nehmen :)

 
Yevhenii Levchenko:

Das Problem ist, dass es vor der Eröffnung eines Geschäfts geprüft werden muss :(

Aber wenn es keinen kurzen Weg gibt, kann man immer noch den langen Weg nehmen :)

Es ist nur beim Neustart des Expert Advisors in OnInit notwendig, auf diese Weise zu suchen. Und im Laufe der Arbeit des EA erhalten wir die notwendigen Daten zum Zeitpunkt der Schließung der Position. Aber das ist jedem selbst überlassen. Manche Leute belasten den Prozessor gerne mit unnötigen Aktionen.........

 
Alexey Viktorov:

Dies sollte nur beim Neustart des Expert Advisors in OnInit auf diese Weise gesucht werden. Und in den Prozess der Arbeit des Expert Advisor, um die notwendigen Daten zum Zeitpunkt der Schließung der Position zu erhalten. Aber all dies geht jeden etwas an. Manche Leute belasten den Prozessor gerne mit unnötigen Aktionen.........

Ich bin ein wenig verwirrt, aber wie kann man den Zeitpunkt der Schließung einer Position verfolgen, wenn man nicht bei jedem Tick den Status der Position abfragt? Es sind sicherlich nicht alle Positionen abzufragen, aber immerhin auf jeden Tick Anfrage.

 
Valerius:

TakeProfit wird in Pips und Trailing TakeProfit in der Einzahlungswährung berechnet. Trailing TakeProfit ist der Gewinn in der Währung des Depots von einem oder mehreren Aufträgen, und setzt Stops von Aufträgen in der in den Einstellungen angegebenen Höhe, d.h. in einem berechneten Abstand.

In den Einstellungen wird zum Beispiel ein Trailing Take Profit in Höhe von $100 angegeben. Sobald der Preis den Gewinn von 100$ erreicht hat und weiter steigt, berechnet das Programm den Abstand von 100$ und platziert alle Stop-Losses der Orders an der berechneten Stelle, wenn es möglich ist. Sobald der Kurs auf die Stopps zurückfällt, werden alle Aufträge geschlossen. Im Prinzip ist dies dasselbe wie der Trailing Stop, nur dass er in der Depotwährung berechnet wird und dem Gewinn folgt. Vielleicht habe ich irgendwo einen Fehler gemacht, aber das ist das Prinzip. Ich hoffe, ich habe es erklärt.

Valeriy Yastremskiy:

Nachlauf - Bewegung. Trailing Stop - wir verschieben den Stop entsprechend dem Algorithmus. Trailing TakeProfit - wir verschieben das Niveau, während es sich einem Algorithmus nähert.

Treten Sie mich nicht, aber ich verstehe das nicht. In den Einstellungen des von MetaEditor generierten Expert Advisors, der ein Trailing-Modul enthält, wird das Trailing-Level in Punkten angegeben. Ich habe zum Beispiel das "Take ProfitTrailing Level (in Punkten)" = 100 gesetzt.Wie funktioniert dieser Nachlaufstopper? Korrigieren Sie mich, wenn ich falsch liege. Wenn der aktuelle Kurs den Abstand von 100 Pips vor dem festgelegten Take-Profit-Level erreicht, wird die Trailing-Order aktiviert. Wenn der Kurs den TP erreicht und überschreitet, wird die Position nicht geschlossen. Das Schleppnetz beginnt einfach damit, den Kurs in einem Abstand von 100 Pips zu verfolgen. Wenn der Kurs sich umdreht und gegen die Position läuft, wird die Position entweder durch den TP oder durch den SL geschlossen, der durch das Schleppnetz festgelegt wird, wenn der Kurs weiter als der TP gestiegen ist. Oder?
Общие принципы - Торговые операции - Справка по MetaTrader 5
Общие принципы - Торговые операции - Справка по MetaTrader 5
  • www.metatrader5.com
Перед тем как приступить к изучению торговых функций платформы, необходимо создать четкое представление об основных терминах: ордер, сделка и позиция. — это распоряжение брокерской компании купить или продать финансовый инструмент. Различают два основных типа ордеров: рыночный и отложенный. Помимо них существуют специальные ордера Тейк Профит и...
 
altec3:
Treten Sie mich nicht zu sehr, aber ich verstehe das nicht. In den Einstellungen des in MetaEditor erstellten Expert Advisors, der das Trailing-Modul enthält, wird das Trailing-Level genau in Punkten angegeben. Ich habe zum Beispiel das "Take ProfitTrailing Level (in Punkten)" = 100 gesetzt.Wie funktioniert dieser Nachlaufstopper? Korrigieren Sie mich, wenn ich falsch liege. Wenn der aktuelle Kurs den Abstand von 100 Pips vor dem festgelegten Take-Profit-Level erreicht, wird die Trailing-Order aktiviert. Wenn der Kurs den TP erreicht und überschreitet, wird die Position nicht geschlossen. Das Schleppnetz beginnt einfach damit, den Kurs in einem Abstand von 100 Pips zu verfolgen. Wenn sich der Kurs umkehrt und gegen die Position läuft, wird die Position bis zum TP geschlossen, oder bis zum SL, wenn sich das Schleppnetz weiter als der TP bewegt. Oder?

Ohne den Code ist es schwer, nicht zu antworten.

 
Alexey Viktorov:

Dies sollte nur beim Neustart des Expert Advisors in OnInit auf diese Weise gesucht werden. Und in den Prozess der Arbeit des Expert Advisor, um die notwendigen Daten zum Zeitpunkt der Schließung der Position zu erhalten. Aber all dies geht jeden etwas an. Manche Leute belasten den Prozessor gerne mit unnötigen Aktionen.........

Sie wird nicht bei jeder Zecke überprüft. Liegt ein Signal vor, beginnt er mit der Prüfung und eröffnet einen Handel. Das ist alles :)
Grund der Beschwerde: