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

 
Aleksandr Slavskii #:

Wie erfahre ich den Zeitpunkt der Schließung einer Position im Tester?

Ich öffne die Positionen 1, 2, 3

Schließen der Positionen 3, 2, 1

Weder im Prüfbericht noch im Prüfprogramm selbst habe ich herausgefunden, wie ich die Schlusszeit einer bestimmten Position herausfinden kann.

Das Gleiche gilt für den vom Tester geschriebenen Bericht: Es gibt keine Möglichkeit, den Zeitpunkt des Schließens einer Position herauszufinden.


Ich muss den Zeitpunkt des Öffnens und Schließens einer Position herausfinden. Wie geht das?

fxsaber schreibt in einer seiner Bibliotheken: "Danke an die Entwickler für die Erstellung von Tester-Caches und die Hilfe beim Öffnen der Formate.

Ich konnte nur das Format der opt-Dateien finden.

Wenn jemand weiß, wo auf dem Forum sie offenlegen tst-Dateien - Single-Pass-Format, bitte geben Sie mir einen Link, vielleicht kann ich Position_ID in ihnen zu finden.

fxsaber wenn Sie lesen, bitte antworten.

Suche nach einem Marktausstiegsgeschäft

DEAL_ENTRY_IN

Markteintritt

DEAL_ENTRY_OUT

Verlassen des Marktes

DEAL_ENTRY_INOUT

Umkehrung

DEAL_ENTRY_OUT_BY

Schließen mit einer Gegenposition

und suchen Sie nach der Positions-ID auf dem Ticket dieses Geschäfts

DEAL_TICKET

Ticket des Geschäfts. Eine eindeutige Nummer, die jedem Geschäft zugewiesen wird

lang

DEAL_ORDER

Auftrag, auf dessen Grundlage das Geschäft ausgeführt wurde.

long

DEAL_TIME

Zeitpunkt der Ausführung der Transaktion

datetime

DEAL_TIME_MSC

Zeitpunkt der Transaktion in Millisekunden seit dem 01.01.1970

long

ABSCHLUSS_TYP

Art des Geschäfts

ENUM_DEAL_TYPE

DEAL_ENTRY

Richtung des Geschäfts - Markteintritt, Marktaustritt oder Umkehrung

ENUM_DEAL_ENTRY

DEAL_MAGIC

Magische Zahl für das Geschäft (sieheORDER_MAGIC)

lang

DEAL_REASON

Grund oder Quelle der Transaktion

ENUM_DEAL_REASON

DEAL_POSITION_ID

Kennung der Position, an deren Eröffnung, Änderung oder Schließung dieses Geschäft beteiligt war. Jede Position hat eine eindeutige Kennung, die allen Geschäften zugewiesen wird, die während der Laufzeit der Position an dem Instrument ausgeführt werden.

lang


Im Allgemeinen ist der Zeitpunkt, zu dem ein Geschäft den Markt verlässt, der Zeitpunkt der Positionsschließung.

 
Alexey Viktorov #:

Suchen Sie nach ...

Ich danke Ihnen. Aber das ist überhaupt nicht das, wonach ich gesucht habe.

Offensichtlich habe ich die Frage wieder nicht richtig formuliert :(

Ich bin daran interessiert, wie man Positionsinformationen aus einer ReportTester.xlsx oder .tst Datei extrahiert .

Das, was Sie vorgeschlagen haben, ist nicht im Bericht enthalten.

 
MrBrooklin #:

   //лот = процент риска от баланса / (размер стоплосса * Размер минимального изменения цены в валюте депозита / Минимальный шаг изменения цены в пунктах)
   eLot=AccountInfoDouble(ACCOUNT_BALANCE)*eRisk/100/(MathAbs(ePrice-eStopLoss)*SymbolInfoDouble(eSymbol,SYMBOL_TRADE_TICK_VALUE)/SymbolInfoDouble(eSymbol,SYMBOL_TRADE_TICK_SIZE));
 
Aleksei Stepanenko #:

Vielen Dank, Alexey, für den Code! Morgen werde ich Ihre Formel ausführlicher behandeln.

Mit freundlichen Grüßen, Vladimir.

 
Gern geschehen)
Hier sind Preis und Verlust Preise. Wenn Ihr Verlust in Pips angegeben ist, verwenden Sie Punkt.
 
Aleksei Stepanenko #:
Gern geschehen)
Hier sind Preis und Verlust Preise. Wenn Ihr Verlust in Pips angegeben ist, verwenden Sie Punkt.

Alexey, wenn ich Stop Loss in Punkte umrechne, bekomme ich Unsinn. Die Sache ist die, dass ich im Skript eine Formel verwendet habe, die ich im Internet gefunden habe. Ich weiß nicht mehr, wo, es ist einfach schon lange her. Ich habe in Excel eine Tabelle mit dieser Formel erstellt und sie bei Bedarf verwendet. So sieht sie aus:

Deshalb habe ich mich an die Community gewandt, um zu klären, wie wahr das ist. Die Formel selbst sieht in der Exel-Tabelle wie folgt aus:

лот = (баланс * риск (в %) * 0,01) / (стоп-лосс (в пунктах) * курс валюты (в моем случае в руб.))

Mit freundlichen Grüßen, Vladimir.

 

Vladimir, alles funktioniert

input int eLoss=2000;
input double eRisk=5.0;

double eLot=AccountInfoDouble(ACCOUNT_BALANCE)*eRisk/100/(eLoss*SymbolInfoDouble(eSymbol,SYMBOL_POINT)*SymbolInfoDouble(eSymbol,SYMBOL_TRADE_TICK_VALUE)/SymbolInfoDouble(eSymbol,SYMBOL_TRADE_TICK_SIZE));
 
Aleksei Stepanenko #:

Vladimir, alles funktioniert

Alexey, tut mir leid, aber wir haben uns nicht verstanden. Das Missverständnis lag eher auf meiner Seite. Ich dachte, du würdest mir empfehlen, einen Punkt in meiner Funktion anzuwenden. ))

Mit freundlichen Grüßen, Vladimir.

 
Ah, ich verstehe)
 
Aleksei Stepanenko #:

Vladimir, alles funktioniert

Viele Divisionen ohne Überprüfung des Teilers auf Null. Explosiv.