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
LongOnMarketSlik 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)
// Open a long only when no long position is already held
IF NOT LongOnMarket THEN
BUY 1 LOT AT MARKET TomorrowOpen
ENDIFUten 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)
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
ENDIFHver 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)
// Promote the stop to breakeven after 15 points of open profit
IF LongOnMarket THEN
IF close - tradeprice >= 15 * pointsize THEN
SET STOP BREAKEVEN
ENDIF
ENDIFPosisjonsstyringsinstruksjoner 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 OnMarketi 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
CumulateOrderstrenger 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.
Relaterte instruksjoner
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.