Diskussion zum Artikel "Die Transaktionen des Handels Anfrage- und Antwortstrukturen, Beschreibung und Protokollierung" - Seite 6

 
MrBrooklin Funktion OnTick() oder nach ihr? Wenn es ein grundlegender Unterschied ist, warum?

Mit freundlichen Grüßen, Vladimir.

Sehr gut. Es gibt keinen Unterschied. Zumindest in der Plugin-Datei.

 
Artyom Trishkin #:

Das ist gut. Das ist kein Unterschied. Es kann in einer Plug-in-Datei sein.

Aha, ich verstehe. Ich danke dir!

Mit freundlichen Grüßen, Vladimir.

 
Artyom Trishkin #:

Die Daten werden auf dem Server gespeichert. Das Terminal empfängt sie in seiner Umgebung und der Expert Advisor verwendet sie dann.

Artem, ich quäle Sie wahrscheinlich mit meiner Dummheit, aber wie lange werden die Daten eines Geschäfts auf dem Server gespeichert? Einen Tag, zwei, drei... ein Jahr? Ich habe sowohl Literatur als auch Nachschlagewerke gelesen und nirgends diese Information gefunden.

Mit freundlichen Grüßen, Vladimir.

 
MrBrooklin #:

Artem, ich langweile Sie wahrscheinlich mit meiner Dummheit, aber wie lange werden die Transaktionsdaten auf dem Server gespeichert? Einen Tag, zwei, drei... ein Jahr? Ich habe die Literatur und das Handbuch gelesen und nirgendwo diese Information gefunden.

Mit freundlichen Grüßen, Vladimir.

Vladimir, wozu brauchst du sie? Diese Daten werden nur benötigt, um einige strittige Momente zu klären. Aber wenn ein Broker etwas Ausgefallenes tut, ist es unwahrscheinlich, dass er etwas beweisen kann. Und die spezifische Aufbewahrungszeit wird vom Broker selbst festgelegt, und es gibt keine Regelung dafür.

 
Alexey Viktorov #:

Wladimir, warum brauchen Sie sie? Diese Daten werden nur benötigt, um einige strittige Punkte zu klären. Aber wenn der Makler etwas Ausgefallenes tut, ist es unwahrscheinlich, dass er etwas beweisen kann. Und die spezifische Aufbewahrungszeit wird vom Makler selbst festgelegt, und es gibt keine Regelung dafür.

Hallo Alexey, ich muss das für meine Selbstbildung wissen und gleichzeitig möchte ich es gründlich verstehen. Ich scheine diese Transaktionen überhaupt nicht zu verstehen. Als ich dir zugehört habe, schien alles klar zu sein, aber nach einiger Zeit hat sich alles aufgelöst. Da haben wir es wieder! Ich verstehe überhaupt nichts mehr!

Mit freundlichen Grüßen, Vladimir.

 

Lassen Sie mich ein konkretes Beispiel geben. Ich habe eine offene Position für das Wochenende übrig. Hier ist ein Screenshot von meinem Live-Konto:


Die Transaktion ist durchgeführt, die Position ist offen. Ich führe das Skript aus:

//+------------------------------------------------------------------+
//|1.mq5 |
//|Urheberrecht 2023, MetaQuotes Ltd. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2023, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
ulong pos_ticket;
double pos_open;
//+------------------------------------------------------------------+
//||
//+------------------------------------------------------------------+
void  OnTradeTransaction(
   const MqlTradeTransaction&    trans,   // Struktur der Handelstransaktion
   const MqlTradeRequest&        request, // Struktur der Anfrage
   const MqlTradeResult&         result   // Antwortstruktur
)
  {
   if(trans.type==TRADE_TRANSACTION_DEAL_ADD)
     {
      if(HistoryDealSelect(trans.deal) && HistoryDealGetInteger(trans.deal,DEAL_ENTRY)==DEAL_ENTRY_IN)
        {
         pos_ticket=trans.position;
         pos_open=trans.price;
        }
     }
  }
//+------------------------------------------------------------------+
//| Skript-Programmstartfunktion|
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   Print("Ticket = ",pos_ticket);
   Print("Price = ",pos_open);
  }
//+------------------------------------------------------------------+

Ich erhalte das Ergebnis in der Registerkarte Experten:

2023.10.21 14:41:47.693 1 (EURUSDrfd,M1)        Ticket = 0
2023.10.21 14:41:47.693 1 (EURUSDrfd,M1)        Price = 0.0

Artyom schrieb, dass das Geschäft auf dem Server gespeichert wird, aber er sagte nicht, wie lange es gespeichert wird, und in der Tat ist es jetzt nicht sichtbar. Wie kann das sein? Ich versuche, es bis zum Ende herauszufinden.

Mit freundlichen Grüßen, Vladimir.

 
MrBrooklin #:

Lassen Sie mich ein konkretes Beispiel nennen. Ich habe eine offene Position für das Wochenende. Hier ist ein Screenshot von meinem Live-Konto:


Die Transaktion ist durchgeführt, die Position ist offen. Ich lasse das Skript laufen:

Ich erhalte das Ergebnis auf der Registerkarte Experten:

Artem hat geschrieben, dass das Geschäft auf dem Server gespeichert wird, aber er hat mir nicht gesagt, wie lange es gespeichert wird, und tatsächlich ist es jetzt nicht sichtbar. Wie kann das sein? Ich versuche, es bis zum Ende herauszufinden.

Mit freundlichen Grüßen, Vladimir.

Sie haben ein Skript ausgeführt.

void OnStart()
  {
   Print("DateTime = ", TimeCurrent());
  }

Es ist ein EVENT. Wenn Sie das Skript gestern ausgeführt haben, haben Sie den Ausdruck gestern erhalten. Und heute gibt es keinen Ausdruck mit dem gestrigen Datum und der gestrigen Uhrzeit. Wenn Sie das Skript heute ausführen, wird es wieder ein Ereignis sein. Und wieder erhalten Sie einen Ausdruck mit dem aktuellen Datum und der aktuellen Uhrzeit.

Ein Schlag auf den Kopf, das ist ein Ereignis. Und morgen werden Sie nichts mehr vom gestrigen TUK..... spüren.

 

Und so findet das Skript die Position und die Daten, die ich brauche, ohne Probleme:

//+------------------------------------------------------------------+
//|2.mq5 |
//|Urheberrecht 2023, MetaQuotes Ltd. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2023, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Skript-Programmstartfunktion|
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   for(int i=0; i<PositionsTotal(); i++)
     {
      if(PositionGetTicket(i))
         Print("Ticket = ",PositionGetInteger(POSITION_IDENTIFIER));
         Print("Price = ",PositionGetDouble(POSITION_PRICE_OPEN));
     }
  }
//+------------------------------------------------------------------+

Ergebnis:

2023.10.21 15:33:49.973 2 (EURUSDrfd,M1)        Ticket = 1029935900
2023.10.21 15:33:49.973 2 (EURUSDrfd,M1)        Price = 1.05...

Egal, ob der Markt geöffnet oder geschlossen war, ob es einen Stromausfall gab oder nicht, ob es einen Internetausfall gab oder nicht, diese Variante funktioniert einwandfrei. Allerdings müssen wir zu diesem Zweck einen Zyklus laufen lassen, der nach Meinung von Experten die Ausführung des Programms verlangsamt.

Mit freundlichen Grüßen, Vladimir.

 
Alexey Viktorov #:

Ein Schlag auf den Kopf, das ist ein Ereignis. Und morgen wirst du nichts mehr von dem Tuk Tuk von gestern spüren.....

Es stellt sich heraus, dass ein Geschäft in der Historie nur bis zum Ende der Handelssitzung auf dem Server gespeichert wird? Ist das so?

Mit freundlichen Grüßen, Vladimir.

 

Stop! Und wie kommt es dann, dass der Expert Advisor nach einem Handelstag immer noch diesen Handel (d.h. eine offene Position) sah und nach dem Algorithmus arbeitete? Nein, das ist ein Wahnsinnsding!

Mit freundlichen Grüßen, Vladimir.