Bli medlem i dag
ProBacktest/probacktest · proorder

POSITIONPRICE

POSITIONPRICE returnerer gjennomsnittlig inngangspris for hele den åpne posisjonen i ProBacktest og ProOrder, i motsetning til TRADEPRICE som leser enkelte inngangsordrer.

Syntaks

probuilder
POSITIONPRICE

Tidligere verdier er tilgjengelige med en indeksforskyvning, så PositionPrice[1] leser gjennomsnittlig posisjonspris slik den var på forrige bar.

Slik fungerer det

POSITIONPRICE rapporterer gjennomsnittsprisen den åpne posisjonen ble bygd opp til. Så lenge posisjonen består av en enkelt inngangsordre, er den lik fyllingsprisen for den ordren. Så snart strategien legger til kontrakter, gjennom pyramidering eller nedsnitting, blir verdien gjennomsnittet av alle åpne innganger vektet etter størrelsene sine, og hver senere tilføyelse flytter den igjen.

Skillet fra TRADEPRICE er viktig og er en vanlig kilde til feil. TRADEPRICE er på ordrenivå: TRADEPRICE(1) returnerer inngangsprisen til den siste enkeltordren, TRADEPRICE(2) den forrige. POSITIONPRICE er på posisjonsnivå: ett tall som oppsummerer hele den åpne posisjonen. De to stemmer overens bare så lenge det er nøyaktig én inngangsordre åpen. Utgangslogikk som skal reagere på posisjonens samlede breakeven-punkt hører til POSITIONPRICE; logikk som reagerer på den siste fyllingen, for eksempel avstandsregler mellom innsnittende innganger, hører til TRADEPRICE.

Instruksjoner som måler avstander fra inngangen, som SET STOP PLOSS, er også ankret til dette gjennomsnittet, så å forstå hvordan gjennomsnittet forskyves når kontrakter legges til er en del av å forutsi hvor de nivåene ender opp.

Eksempler

Eksempel 1, Snitte ned og gå ut over snittet (ProOrder)

probuilder
// 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 20

Snittregelen fordeler nye innganger ved hjelp av TRADEPRICE på ordrenivå, mens utgangen sammenligner markedet med POSITIONPRICE på posisjonsnivå og lukker alt så snart den snittede handelen er tilbake over vannet. Dette er referanseeksempelet fra kildedokumentasjonen med omskrevne kommentarer.

Eksempel 2, Posisjonssnitt mot siste ordrepris (ProBacktest)

probuilder
// 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"
ENDIF

Så lenge bare én ordre er åpen overlapper de to linjene. Etter hver ekstra inngang hopper TRADEPRICE til den nyeste fyllingen mens POSITIONPRICE bare flytter seg delvis, som viser det vektede gjennomsnittet i arbeid.

Eksempel 3, Breakeven-stop målt fra posisjonssnittet (ProOrder)

probuilder
// Promote the stop to the average entry after a 15 point gain
IF longonmarket AND (close - positionprice) >= 15 * pointsize THEN
  SET STOP BREAKEVEN
ENDIF

Gevinstbetingelsen måles fra POSITIONPRICE, så etter innsnitting gjelder kravet på 15 punkter for hele posisjonen og ikke for den første fyllingen.

Vanlige feil og fallgruver

  • Å forveksle den med TRADEPRICE. POSITIONPRICE er snittet for hele posisjonen, TRADEPRICE prisen for én ordre. Utgangsregler skrevet mot TRADEPRICE oppfører seg uventet så snart posisjonen inneholder mer enn én inngang, og omvendt.
  • Å lese den når man er flat. Uten åpen posisjon inneholder verdien ingen meningsfull inngangspris. Beskytt all aritmetikk på POSITIONPRICE med ONMARKET, LONGONMARKET, eller SHORTONMARKET for å unngå å sammenligne mot en foreldet verdi eller null.
  • Snittet flytter seg. Hver ordre som legges til forskyver POSITIONPRICE mot den nye fyllingen. Stop og gevinstbetingelser som er forankret til den flyttes også, noe som i det stille kan utvide eller innsnevre risikoen etter pyramidering.
  • Indeksforskyvninger leser historikk, ikke ordrer. PositionPrice[1] er forrige bars øyeblikksbilde av gjennomsnittet, ikke prisen på forrige ordre. Tilgang ordre for ordre krever TRADEPRICE(N).
  • TRADEPRICE, inngangspris for en enkelt ordre, motstykket på ordrenivå.
  • TRADEINDEX, barindeksen der en ordre ble utført.
  • COUNTOFPOSITION, størrelsen på den åpne posisjonen med fortegn.
  • POSITIONPERF, avkastning for en posisjon som forholdet mellom gevinst og kostnad.
  • POINTVALUE, kontantverdien av en bevegelse på ett punkt.
  • PIPSIZE, størrelsen på én pip i prisenheter.
  • ONMARKET, sann så lenge en posisjon er åpen.
  • BREAKEVEN, flytter stoppen eller målet til inngangsprisen.