Bli medlem i dag
ProBacktest/probacktest · proorder

LONGONMARKET

LONGONMARKET i ProBacktest og ProOrder returnerer sann så lenge en long posisjon er åpen. Brukes til å sikre innganger, utganger og stoppstyring i strategikode.

Syntaks

probuilder
LongOnMarket

Slik fungerer det

LONGONMARKET tar ingen argumenter og returnerer sann når strategien for øyeblikket har en long posisjon, uavhengig av størrelsen. Den returnerer falsk når strategien er uten posisjon og også når den er short; motstykket på short-siden er SHORTONMARKET, og ONMARKET dekker begge retninger på én gang.

Verdien gjenspeiler bare utførte ordrer. En ventende limit- eller stoppinngang som ikke er utført, lar LONGONMARKET være false til fyllingen skjer. Med CumulateOrders aktivert, leses flere stablede long-innganger fortsatt som én enkelt sann verdi; bruk COUNTOFPOSITION for å undersøke position size.

De to standardmønstrene er IF NOT LongOnMarket THEN ... ENDIF for å hindre dupliserte long-innganger, og IF LongOnMarket THEN ... ENDIF for å få utgangs- eller stopphåndteringskode til å kjøre bare mens en long-handel er aktiv.

Eksempler

Eksempel 1, Inngangssikring mot dupliserte long-posisjoner (ProBacktest)

probuilder
// Open a long only when no long position is already held
IF NOT LongOnMarket THEN
    BUY 1 LOT AT MARKET TomorrowOpen
ENDIF

Uten sikringen ville strategien sende inn en ny kjøpsordre på hver bar. Dette er eksempelet fra den offisielle referansen.

Eksempel 2, System med glidende gjennomsnitt og sikringer for inngang og utgang (ProOrder)

probuilder
DEFPARAM CumulateOrders = false

fastMA = Average[20](close)
slowMA = Average[50](close)

// Enter long on a bullish cross, only when flat
IF NOT LongOnMarket AND fastMA CROSSES OVER slowMA THEN
  BUY 1 CONTRACT AT MARKET
ENDIF

// Exit the long on a bearish cross
IF LongOnMarket AND fastMA CROSSES UNDER slowMA THEN
  SELL AT MARKET
ENDIF

Hver blokk er betinget av posisjonstilstanden, så innganger utløses bare uten posisjon og utganger bare mens man er long.

Eksempel 3, Stoppstyring begrenset til åpne long-posisjoner (ProOrder)

probuilder
// Promote the stop to breakeven after 15 points of open profit
IF LongOnMarket THEN
  IF close - tradeprice >= 15 * pointsize THEN
    SET STOP BREAKEVEN
  ENDIF
ENDIF

Posisjonsstyringsinstruksjoner som SET STOP BREAKEVEN krever en åpen posisjon, så LONGONMARKET-vakten hindrer kjøretidsfeil når man er uten posisjon.

Vanlige feil og fallgruver

  • Å anta at falsk betyr ingen posisjon. LONGONMARKET er false både når strategien er uten posisjon og når den er short. Kode som bare skal kjøre når ingen posisjon av noe slag er åpen, må teste NOT OnMarket i stedet.
  • Ventende ordrer teller ikke. Mellom plassering av en limit- eller stoppinngang og dens fyll forblir LONGONMARKET falsk, så en usikret inngangsblokk kan legge flere ordrer i kø. LongTriggered hjelper med å oppdage baren der en long inngang ble utført.
  • Ingen størrelsesinformasjon. Flagget sier ingenting om hvor mange kontrakter som holdes. Pyramidelogikk som stabler innganger under CumulateOrders trenger COUNTOFPOSITION for å begrense eksponeringen.
  • Feil omfang. Å lime strategiutdrag inn i en indikator tar LONGONMARKET med seg, og indikatoren klarer da ikke å kompilere. Posisjonstilstand finnes bare i ProBacktest og ProOrder.
  • ONMARKET, sann så lenge en posisjon er åpen, long eller short.
  • SHORTONMARKET, sann så lenge en short-posisjon er åpen.
  • MARKET, utfører ordrer til gjeldende markedspris.
  • BUY, åpner en long-posisjon.
  • SELL, lukker en long-posisjon.
  • LongTriggered, signaliserer at en long inngangsordre ble utført.
  • COUNTOFPOSITION, størrelsen på den åpne posisjonen.
  • TRADEPRICE, utførelsesprisen for en tidligere handel.