Hier hast Du die Liste (fast) aller Funktionen in der man einfach mit Ctrl-f suchen kann: https://www.mql5.com/de/docs/function_indices
Wenn Du dann zB. PositionGetDouble() anklickst siehst Du alle Funktionen zu diesem 'Thema'.
Übrigens Datum/Zeit ist keine reelle Zahl (double) sondern ganzzahlig (int).
So findest Du was Du brauchst mit ein paar Klicks! :)
- www.mql5.com
Hier hast Du die Liste (fast) aller Funktionen in der man einfach mit Ctrl-f suchen kann: https://www.mql5.com/de/docs/function_indices
Wenn Du dann zB. PositionGetDouble() anklickst siehst Du alle Funktionen zu diesem 'Thema'.
Übrigens Datum/Zeit ist keine reelle Zahl (double) sondern ganzzahlig (int).
So findest Du was Du brauchst mit ein paar Klicks! :)
Hey Carl,
schlägst du vor alle offenen Position auf dem Symbol nach der Zeit zu filtern und dann den mit dem größten POSITION_TIME_MSC zu nehmen?
Ich habe leider keinen Ansatz das umzusetzten, wie geht man dabei vor? Wie sieht der Selektor aus finde kein Beipiel im Forum bzw in der Doku. dazu.
Oder kann es sein dass die PositionGetDouble (POSITION_PRICE_OPEN) nur für den Netting-Mode geeigent ist, nicht aber wenn mehrere Positionen gleichzeitig offen sind?
Hey Carl,
schlägst du vor alle offenen Position auf dem Symbol nach der Zeit zu filtern und dann den mit dem größten POSITION_TIME_MSC zu nehmen?
Ich habe leider keinen Ansatz das umzusetzten, wie geht man dabei vor? Wie sieht der Selektor aus finde kein Beipiel im Forum bzw in der
Doku. dazu.
Oder kann es sein dass die PositionGetDouble (POSITION_PRICE_OPEN) nur für den Netting-Mode geeigent ist, nicht aber wenn mehrere
Positionen gleichzeitig offen sind?
musst dir nur umbauen auf den Open Price
ulong YoungestLongPositionTicket(const string symbol, const int MagicNumber) //Gewinn der Gesamtposition { ulong ticket=0; datetime time=D'01.01.1970'; //--- in allen offenen Positionen suchen int i = PositionsTotal(); while(i-->0) { //--- Parameter der Order ulong position_ticket=PositionGetTicket(i);// das Ticket der Position PositionSelectByTicket(position_ticket); string position_symbol=PositionGetString(POSITION_SYMBOL); // Symbol ulong magic=PositionGetInteger(POSITION_MAGIC); // MagicNumber der Position double position_lot=PositionGetDouble(POSITION_VOLUME); ENUM_POSITION_TYPE type = (ENUM_POSITION_TYPE)PositionGetInteger(POSITION_TYPE); datetime opentime = (datetime)PositionGetInteger(POSITION_TIME); //--- wenn die MagicNumber übereinstimmt, sind Stop Loss und Take Profit nicht gesetzt if(position_symbol==symbol && MagicNumber==magic && time < opentime && type == POSITION_TYPE_BUY ) { time=opentime; ticket = position_ticket; } } return(ticket); }
Hey Carl,
schlägst du vor alle offenen Position auf dem Symbol nach der Zeit zu filtern und dann den mit dem größten POSITION_TIME_MSC zu nehmen?
Ich habe leider keinen Ansatz das umzusetzten, wie geht man dabei vor? Wie sieht der Selektor aus finde kein Beipiel im Forum bzw in der Doku. dazu.
Die Liste der Positionen nach int o = PositionsTotal() ist nicht sicher(!) nach Datum/Zeit geordnet! Daher muss durch alle durchgegangen werden zB. mit:
int o = PositionsTotal(); datetime eT = D'3000.12.31 23:59:59' // Max date - msec ist nicht notwendig, meine ich. ulong oldestTicket; while(o-->0){ ulong t = PositionGetTicket(o) // oder string s=PositionGetSymbol(o) wenn Du als nächstes das Symbol für einen Vergleich brauchst (beide wählen die Position!) if ( (datetime)PositionGetInteger(POSITION_TIME) < eT) { eT = (datetime)PositionGetInteger(POSITION_TIME); oldestTicket = (ulong)PositionGetInteger(POSITION_TICKET); } } if ( PositionSelectByTicket(oldestTicket) ) { .... }
Jetzt kannst Du mit der ersten Position machen, was Du vorhast.
Gewöhn Dir an bei Positionen/Pending-Orders von oben runterzuzählen. Machst Du das anders herum und schließt oder löscht Positionen/Order n, rutscht Position/Order n+1 auf n, Du erhöhst dann Deinen Zähler, so dass Du jetzt n+2 siehst, n+1 ist Dir so entgangen (zumindest war es früher so!).
Auf Netting-Konten kann es nur eine Position je Symbol geben, aber mehrere mit verschiedenen Symbolen.
Danke Ihr Beiden, ihr seid echt die Besten!!!
Teste ich so aus, sobald ich dazu komme.
Also, hat geklappt konnte es nach euren Vorlagen umsetzen, nochmal vielen Dank.
Ich habe das ganze für einen Trailing-Stop benötigt, der sich immer nach der Jüngsten Pposition richten soll und der sich abhängig vom Profit in PIPs justiert.
Hierzu eine kurze Frage: ich rechne den aktuell so aus, da mitPOSITION_PROFIT nuzr den Eurogewinn ausweist:
GuV_PIP = (PosPriceOpen - bid) * _Point * 1000000;
Der verstärkungsfaktor ist aber von Symbol zu Symbol verschieden, daher wäre es besser wenn er das direkt vom System zieht, gibts da eine Möglichkeit?
Also, hat geklappt konnte es nach euren Vorlagen umsetzen, nochmal vielen Dank.
Ich habe das ganze für einen Trailing-Stop benötigt, der sich immer nach der Jüngsten Pposition richten soll und der sich abhängig vom Profit in PIPs justiert.
Hierzu eine kurze Frage: ich rechne den aktuell so aus, da mitPOSITION_PROFIT nuzr den Eurogewinn ausweist:
Der verstärkungsfaktor ist aber von Symbol zu Symbol verschieden, daher wäre es besser wenn er das direkt vom System zieht, gibts da eine Möglichkeit?
MathPow(10,_Digits)
Also, hat geklappt konnte es nach euren Vorlagen umsetzen, nochmal vielen Dank.
Ich habe das ganze für einen Trailing-Stop benötigt, der sich immer nach der Jüngsten Pposition richten soll und der sich abhängig vom Profit in PIPs justiert.
Hierzu eine kurze Frage: ich rechne den aktuell so aus, da mitPOSITION_PROFIT nuzr den Eurogewinn ausweist:
Der verstärkungsfaktor ist aber von Symbol zu Symbol verschieden, daher wäre es besser wenn er das direkt vom System zieht, gibts da eine Möglichkeit?
Wenn Du den Gewinn in Punkten verwenden willst und nicht in Geldwerten, müsste es eigentlich so aussehen:
GuV_Pnt = ( posdir==buy ? (bid-PosPriceOpen) : (PosPriceOpen-ask) ) / _Point;
(Pip wird häufig verwendet, aber nur Point ist relevant, es wird vom Broker definiert).
- 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.
Hallo Leute,
wisst ihr wie man den Eröffnugnspreis der letzten vom EA geöffneten Position selektiert?
Ich filtere wie folgt:
In PosPriceOpen wird aber nur der Preis einer offenen Position gespeichert - und zwar der Ersten, die vom EA geöffnet wird. Wenn der EA jetzt weitere 3 Postionen als Beispiel öffnet, ohne die Erste vorher geschlossen zu haben, soll PosPriceOpen nur den Preis der jeweils letzten geöffneten Position speichern.
Wie macht man das?
Danke und Grüße