- Stoploss unter Trade Eröffnungs-Bar
- MQL4 - Frage zur Perioden Betrachtung
- Mehrere EA
Hallo ich hätte da eine kurze Frage - wie kann bei mehreren offenen pending orders (mql5) die gesetzten TP addieren und zB durch deren Anzahl dividieren (Mittelwert eruieren?) Danke
Da musst du die History durchsuchen.
Verwendest du den MT5 im Hedgingmode? Oder sind die Orders von unterschiedlichen Instrumenten (Charts)?
Man unterscheidet ja beim MT5 Orders, Deals und Positions.
Du benötigst die Funktionen: HistorySelect(...), HistoryOrdersTotal(), HistoryOrderGetTicket(...), usw.
Es gibt viele Beispiele, auch auf YT.
Da musst du die History durchsuchen.
Verwendest du den MT5 im Hedgingmode? Oder sind die Orders von unterschiedlichen Instrumenten (Charts)?
Man unterscheidet ja beim MT5 Orders, Deals und Positions.
Du benötigst die Funktionen: HistorySelect(...), HistoryOrdersTotal(), HistoryOrderGetTicket(...), usw.
Es gibt viele Beispiele, auch auf YT.
nein - kein hedgingmode und auch keine unterschiedlichen charts.
ich würde mich da gerne auf die deals konzentrieren - wie kann ich bei der history nur die noch offenen deals herausfinden?
was ist YT?
Das gilt für offenen Positionen:
uint o = PositionsTotal(); // keine Pending-Orders while(o-->0) { if( PositionGetTicket(o) <= 0 || PositionGetSymbol(o) != _Symbol || PositionGetInteger(POSITION_MAGIC) != MagicNumber ) continue; ...
und wenn Du jetzt alle Position... durch Order ersetzt kriegst Du alle Pening-Orders:
uint o = OrdersTotal(); // keine Pending-Orders while(o-->0) { if( OrderGetTicket(o) <= 0 || OrderGetString(ORDER_SYMBOL) != _Symbol || OrderGetInteger(ORDER_MAGIC) != MagicNumber ) continue; ...
nein - kein hedgingmode und auch keine unterschiedlichen charts.
ich würde mich da gerne auf die deals konzentrieren - wie kann ich bei der history nur die noch offenen deals herausfinden?
was ist YT?
Ich glaube du verwechselst Deals mit Orders.
Es können nur Orders offen sein. Ein Deal ist quasi der vorgang bei dem eine Order in eine Position übergeht.
Also Ausführung oder Teilausführung.
Ich glaube du verwechselst Deals mit Orders.
Es können nur Orders offen sein. Ein Deal ist quasi der vorgang bei dem eine Order in eine Position übergeht.
Also Ausführung oder Teilausführung.
ah ok danke - du hast recht.
eine letzte Frage noch - wie kann ich zB den TP - Mittelwert von allen offenen Orders berechnen?
So, jetzt habe ich mir das zu Gemüte geführt. Das Ganze funktioniert in etwa so:
#define TYPE ENUM_ORDER_TYPE // abbreviations #define DATE datetime #property script_show_inputs input uint inp_Lookback = 3; // Days to lookback in history void OnStart() { datetime to = TimeCurrent(); // now datetime from = to-(86400*inp_Lookback); // calculate startime HistorySelect(from,to); // request history ulong ticket; double Order_price; double Order_volume; string symbol; TYPE type; double Order_TP; uint total=HistoryOrdersTotal(); // number of current pending orders for(uint i=0;i<total;i++) // iterate through orders { if((ticket=HistoryOrderGetTicket(i))>0) // return order ticket by its position in the list { // check the type symbol = HistoryOrderGetString (ticket,ORDER_SYMBOL); type =(TYPE)HistoryOrderGetInteger(ticket,ORDER_TYPE); Order_price = HistoryOrderGetDouble (ticket,ORDER_PRICE_OPEN); Order_volume= HistoryOrderGetDouble (ticket,ORDER_VOLUME_INITIAL); Order_TP = HistoryOrderGetDouble (ticket,ORDER_TP); switch(type) { case (ORDER_TYPE_BUY_STOP): DoPrint(type,Order_price,Order_volume,Order_TP); // break; case (ORDER_TYPE_SELL_STOP): DoPrint(type,Order_price,Order_volume,Order_TP); // break; } } } } void DoPrint(TYPE aType,double aPrice, double aVolume, double aTP) { Print(TypeToString(aType), " | price:",DoubleToString(aPrice,_Digits), " volume:",DoubleToString(aVolume,2), " TP:",DoubleToString(aTP,_Digits)); } //+------------------------------------------------------------------+ //| Returns the string name of the order type | //+------------------------------------------------------------------+ string TypeToString(TYPE aType) { switch(aType) { case (ORDER_TYPE_BUY): return("buy"); case (ORDER_TYPE_SELL): return("sell"); case (ORDER_TYPE_BUY_LIMIT): return("buy limit"); case (ORDER_TYPE_SELL_LIMIT): return("sell limit"); case (ORDER_TYPE_BUY_STOP): return("buy stop"); case (ORDER_TYPE_SELL_STOP): return("sell stop"); case (ORDER_TYPE_BUY_STOP_LIMIT): return("buy stop limit"); case (ORDER_TYPE_SELL_STOP_LIMIT):return("sell stop limit"); } return("unknown type"); }
Stell den Cursor auf HistoryOrdersTotal() und drück F1. Dort ist der Code her. Hier ist er entsprechend modifiziert.
LG

- 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.