Falls es sich um MQL5 handelt kannst du sicher mit diesem Code was anfangen.
Aus meiner umfangreichen Bibliothek:
bool LastDealsInfo(string _symbol, ulong &deal_ticket, ENUM_DEAL_TYPE &deal_type, long &deal_magic, double &deal_volume, double &deal_price, double &deal_profit, ENUM_DEAL_REASON &deal_reason, int back=3600) { datetime limit=TimeCurrent(); datetime start=limit-back; // 3600=seconds of 1 hour, 86400=seconds of 1 day if(!HistorySelect(start,limit)) // select history return(false); // no history available uint idx, idxMax=HistoryDealsTotal()-1; //ulong deal_ticket; string deal_symbol; ENUM_DEAL_ENTRY deal_entry; //ENUM_DEAL_REASON deal_reason; double deal_commiss; double deal_swap; double deal_rawprof; for(idx=idxMax; idx>0; idx--) { deal_ticket = HistoryDealGetTicket(idx); // get ticket deal_symbol = HistoryDealGetString(deal_ticket,DEAL_SYMBOL); // get symbol if(deal_symbol==_symbol) // check symbol { deal_entry = (ENUM_DEAL_ENTRY )HistoryDealGetInteger(deal_ticket,DEAL_ENTRY); deal_reason = (ENUM_DEAL_REASON)HistoryDealGetInteger(deal_ticket,DEAL_REASON); if(deal_entry==DEAL_ENTRY_OUT) // check entrytype //if(deal_reason==DEAL_REASON_SL) // check reason { deal_type = (ENUM_DEAL_TYPE)HistoryDealGetInteger(deal_ticket,DEAL_TYPE); deal_magic = HistoryDealGetInteger(deal_ticket,DEAL_MAGIC); deal_volume = HistoryDealGetDouble (deal_ticket,DEAL_VOLUME); deal_price = HistoryDealGetDouble (deal_ticket,DEAL_PRICE); deal_commiss = HistoryDealGetDouble (deal_ticket,DEAL_COMMISSION); deal_swap = HistoryDealGetDouble (deal_ticket,DEAL_SWAP); deal_rawprof = HistoryDealGetDouble (deal_ticket,DEAL_PROFIT); deal_profit = deal_commiss+deal_swap+deal_rawprof; return(true); } } } return(false); } double LastDealsProfit(string _symbol, int back=3600) { datetime limit=TimeCurrent(); datetime start=limit-back; // 3600=seconds of 1 hour, 86400=seconds of 1 day if(!HistorySelect(start,limit)) // select history return(NULL); // no history available uint idx, idxMax=HistoryDealsTotal()-1; ulong deal_ticket; string deal_symbol; long deal_entry; long deal_reason; double deal_commiss; double deal_swap; double deal_profit; double deal_result; for(idx=idxMax; idx>0; idx--) { deal_ticket = HistoryDealGetTicket(idx); // get ticket deal_symbol = HistoryDealGetString(deal_ticket,DEAL_SYMBOL); // get symbol if(deal_symbol==_symbol) // check symbol { deal_entry = (ENUM_DEAL_ENTRY )HistoryDealGetInteger(deal_ticket,DEAL_ENTRY); deal_reason = (ENUM_DEAL_REASON)HistoryDealGetInteger(deal_ticket,DEAL_REASON); if(deal_entry==DEAL_ENTRY_OUT) // check entrytype //if(deal_reason==DEAL_REASON_SL) // check reason { deal_commiss = HistoryDealGetDouble (deal_ticket,DEAL_COMMISSION); deal_swap = HistoryDealGetDouble (deal_ticket,DEAL_SWAP); deal_profit = HistoryDealGetDouble (deal_ticket,DEAL_PROFIT); deal_result = deal_commiss+deal_swap+deal_profit; return(deal_result); } } } return(NULL); } double LastDealsPrice(string _symbol, int back=3600) { datetime limit=TimeCurrent(); datetime start=limit-back; // 3600=seconds of 1 hour, 86400=seconds of 1 day if(!HistorySelect(start,limit)) // select history return(NULL); // no history available uint idx, idxMax=HistoryDealsTotal()-1; ulong deal_ticket; string deal_symbol; long deal_entry; long deal_reason; double deal_price; for(idx=idxMax; idx>0; idx--) { deal_ticket = HistoryDealGetTicket(idx); // get ticket deal_symbol = HistoryDealGetString(deal_ticket,DEAL_SYMBOL); // get symbol if(deal_symbol==_symbol) // check symbol { deal_entry = (ENUM_DEAL_ENTRY )HistoryDealGetInteger(deal_ticket,DEAL_ENTRY); deal_reason = (ENUM_DEAL_REASON)HistoryDealGetInteger(deal_ticket,DEAL_REASON); if(deal_entry==DEAL_ENTRY_OUT) // check entrytype //if(deal_reason==DEAL_REASON_SL) // check reason { deal_price = HistoryDealGetDouble (deal_ticket,DEAL_PRICE); return(deal_price); } } } return(NULL); }
Für Donations siehe mein Profil.
Ich muss irgendwie auf Informationen eines speziellen nun geschlossen Deals kommen, von dem ich zu lebzeiten (also direkt nach dem zeitpunkt der erstellung) etwas abrfragen kann, POSITION_IDENTIFIER hört sich richtig an oder?
Wenn die Position dann geschlossen ist, muss ich hier dran kommen:
long HistoryDealGetInteger( |
das will aber nicht klappen, also was genau ist hierbei mit Ticket gemeint & wie komme ich an dieses Zu Lebzeiten der Position ran?
Einfach durchloopen, macht für mich wenig sinn, da wir zu lebzeiten der Position eine Nummer auswählen müssen
ist das eine möglichkeit?
ulong HistoryDealGetTicket( |
Was willst du denn machen?
Falls es sich um MQL5 handelt kannst du sicher mit diesem Code was anfangen.
Aus meiner umfangreichen Bibliothek:
Für Donations siehe mein Profil.
Das ist Leider nicht was ich suche, vielmehr muss der identifikator, direkt nach der Positionseröffnung (also wenn die Position offen ist) erfasst werden. Ich will nachdem die Position geschlossen wurde, mit dieser Identifikatornummer die Informationen abfragen.
Bei deiner Option wird einfach durchgeloopt, und das will ich eher vermeiden.
Das ist Leider nicht was ich suche, vielmehr muss der identifikator, direkt nach der Positionseröffnung (also wenn die Position offen ist) erfasst werden. Ich will nachdem die Position geschlossen wurde, mit dieser Identifikatornummer die Informationen abfragen.
Bei deiner Option wird einfach durchgeloopt, und das will ich eher vermeiden.
Jede position hat eine order nummer, die geht von der pending order in die position und dann weiter in die closed order, bei einer market order ist das die posi5ion nimmer, die kannst verwenden in der order history
Du brauchst also das Ticket der Position.
Im Netting-Mode ist das sehr simpel:
if(PositionSelect(_Symbol)) ulong ticket=PositionGetInteger(POSITION_TICKET);
Im Hedging-Mode musst du durch die Positionen iterieren.
Beispiel, musst du für deine Zwecke umbauen:
void CloseAll(string aSymbol=NULL) { int i; ulong ticket; if(aSymbol==NULL) aSymbol=_Symbol; for(i=PositionsTotal(); i>=0; i--) if(PositionGetSymbol(i)==aSymbol) { ticket=PositionGetTicket(i); if(ticket>0) Trade.PositionClose(ticket); } }
Damit jeder weiß was Bayne möchte :-)
Siehe letzter Thread https://www.mql5.com/de/forum/307954/page2

- 2019.03.24
- www.mql5.com
Jede position hat eine order nummer, die geht von der pending order in die position und dann weiter in die closed order, bei einer market order ist das die posi5ion nimmer, die kannst verwenden in der order history
POSITION_IDENTIFIER oder ORDER_POSITION_ID oder POSITION_TICKET
Welche ist das
Wie genau finde ich diese raus? meinst :
Welche ist das
Auswendig kann ich dir das nicht sagen, aber in der domu stehts bei position und order information, das weis ich noch, bin nicht am pc
wobei bei on trade tranaction brauchst du das ja nicht, da kannst du ja den deal abfangen und die iformationen abfragen
Lies mal den Artikel: https://www.mql5.com/de/articles/211: Orders, Positions und Abschlüsse in MetaTrader 5
Da findest Du Lösungen für alle Deine Fragen. Wenn Du nicht alles lesen willst, ctrl-f & POSITION_IDENTIFIER

- www.mql5.com

- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Ich muss irgendwie auf Informationen eines speziellen nun geschlossen Deals kommen, von dem ich zu lebzeiten (also direkt nach dem zeitpunkt der erstellung) etwas abrfragen kann, POSITION_IDENTIFIER hört sich richtig an oder?
Wenn die Position dann geschlossen ist, muss ich hier dran kommen:
long HistoryDealGetInteger(
ulong ticket_number, // Ticket
ENUM_DEAL_PROPERTY_INTEGER property_id // Identifikator der Eigeschaft
);
das will aber nicht klappen, also was genau ist hierbei mit Ticket gemeint & wie komme ich an dieses Zu Lebzeiten der Position ran?
Einfach durchloopen, macht für mich wenig sinn, da wir zu lebzeiten der Position eine Nummer auswählen müssen
ist das eine möglichkeit?
ulong HistoryDealGetTicket(
int index // Nummer des Deals
);