POSITIONPRICE
POSITIONPRICE gibt den durchschnittlichen Einstiegskurs der gesamten offenen Position in ProBacktest und ProOrder zurück, im Unterschied zu TRADEPRICE, das einzelne Einstiegsorders liest.
Syntax
POSITIONPRICEVergangene Werte sind über einen Index-Offset verfügbar, daher PositionPrice[1] liest den durchschnittlichen Positionspreis, wie er auf dem vorherigen Bar war.
So funktioniert es
POSITIONPRICE gibt den durchschnittlichen Kurs an, zu dem die offene Position aufgebaut wurde. Solange die Position aus einer einzigen Einstiegsorder besteht, entspricht er dem Ausführungskurs dieser Order. Sobald die Strategie Kontrakte hinzufügt, durch Pyramidisieren oder Nachkaufen, wird der Wert zum nach Größen gewichteten Durchschnitt aller offenen Einstiege, und jede spätere Zugabe verschiebt ihn erneut.
Die Unterscheidung von TRADEPRICE ist wichtig und eine häufige Fehlerquelle. TRADEPRICE ist auf Orderebene: TRADEPRICE(1) gibt den Einstiegskurs der jüngsten einzelnen Order zurück, TRADEPRICE(2) den davor. POSITIONPRICE arbeitet auf Positionsebene: eine Zahl, die die gesamte offene Position zusammenfasst. Die beiden stimmen nur überein, solange genau eine Einstiegsorder offen ist. Ausstiegslogik, die auf den Gesamt-Breakeven-Punkt der Position reagieren soll, gehört zu POSITIONPRICE; Logik, die auf die letzte Ausführung reagiert, etwa Abstandsregeln zwischen Nachkaufeinstiegen, gehört zu TRADEPRICE.
Befehle, die Abstände zum Einstieg messen, wie SET STOP PLOSS, sind ebenfalls an diesen Durchschnitt gebunden, sodass das Verständnis, wie sich der Durchschnitt beim Hinzufügen von Kontrakten verschiebt, Teil der Vorhersage ist, wo diese Niveaus landen.
Beispiele
Beispiel 1, Nachkaufen und Ausstieg über dem Durchschnitt (ProOrder)
// Unrealized profit of the whole position
floatingprofit = (((close - positionprice) * pointvalue) * countofposition) / pipsize
myMACD = MACD[12,26,9](close)
// Initial entry on a MACD zero-line cross
long = myMACD CROSSES OVER 0
IF NOT LongOnMarket AND long THEN
BUY 1 CONTRACT AT MARKET
ENDIF
// Add a contract if the last order is aged and price fell 20 points below it
IF TRADEINDEX(1) > 5 AND TRADEPRICE(1) - Close > 20 AND LongOnMarket THEN
BUY 1 CONTRACT AT MARKET
ENDIF
// Exit the averaged position once price recovers above its average entry
IF COUNTOFPOSITION >= 2 AND Close > POSITIONPRICE THEN
SELL AT MARKET
ENDIF
SET TARGET PROFIT 20Die Nachkaufregel staffelt neue Einstiege anhand des TRADEPRICE auf Orderebene, während der Ausstieg den Markt mit POSITIONPRICE auf Positionsebene vergleicht und alles schließt, sobald der gemittelte Trade wieder im Plus ist. Dies ist das Referenzbeispiel aus der Originaldokumentation mit neu geschriebenen Kommentaren.
Beispiel 2, Positionsdurchschnitt im Vergleich zum letzten Orderkurs (ProBacktest)
// Plot the two entry price references side by side
IF onmarket THEN
GRAPH positionprice AS "Average position price"
GRAPH tradeprice AS "Latest order entry price"
ENDIFSolange nur eine Order offen ist, überlagern sich die beiden Linien. Nach jedem zusätzlichen Einstieg springt TRADEPRICE auf die neueste Ausführung, während POSITIONPRICE sich nur teilweise bewegt, was den gewichteten Durchschnitt in Aktion zeigt.
Beispiel 3, Breakeven-Stop gemessen am Positionsdurchschnitt (ProOrder)
// Promote the stop to the average entry after a 15 point gain
IF longonmarket AND (close - positionprice) >= 15 * pointsize THEN
SET STOP BREAKEVEN
ENDIFDie Gewinnbedingung wird ab POSITIONPRICE gemessen, daher gilt die Anforderung von 15 Punkten nach dem Nachkaufen für die gesamte Position und nicht für die erste Ausführung.
Häufige Fehler und Stolperfallen
- Verwechslung mit TRADEPRICE. POSITIONPRICE ist der Durchschnitt der gesamten Position, TRADEPRICE der Kurs einer einzelnen Order. Ausstiegsregeln, die gegen TRADEPRICE geschrieben sind, verhalten sich unerwartet, sobald die Position mehr als einen Einstieg umfasst, und umgekehrt.
- Auslesen ohne offene Position. Ohne offene Position enthält der Wert keinen sinnvollen Einstiegskurs. Sichern Sie jede Rechnung mit POSITIONPRICE ab durch
ONMARKET,LONGONMARKET, oderSHORTONMARKETum den Vergleich mit einem veralteten oder Nullwert zu vermeiden. - Der Durchschnitt verschiebt sich. Jede hinzugefügte Order verschiebt POSITIONPRICE in Richtung der neuen Ausführung. Daran verankerte Stops und Gewinnbedingungen verschieben sich mit, was das Risiko nach dem Pyramidisieren unbemerkt vergrößern oder verkleinern kann.
- Index-Offsets lesen die Historie, nicht die Orders.
PositionPrice[1]ist die Momentaufnahme des Durchschnitts vom vorherigen Bar, nicht der Kurs der vorherigen Order. Zugriff Order für Order erfordertTRADEPRICE(N).
Verwandte Befehle
TRADEPRICE, Einstiegskurs einer einzelnen Order, das Gegenstück auf Orderebene.TRADEINDEX, der Bar-Index, an dem eine Order ausgeführt wurde.COUNTOFPOSITION, die vorzeichenbehaftete Größe der offenen Position.POSITIONPERF, Performance einer Position als Verhältnis von Gewinn zu Kosten.POINTVALUE, der Geldwert einer Bewegung von einem Punkt.PIPSIZE, die Größe eines Pips in Kurseinheiten.ONMARKET, wahr, solange eine Position offen ist.BREAKEVEN, verschiebt den Stop oder das Ziel auf den Einstiegskurs.