TRADEINDEX
TRADEINDEX(N) returnerer barindeksen der en tidligere handel ble utført i ProBacktest og ProOrder, slik at strategier kan telle barer siden den N-te siste inngangen.
Syntaks
TRADEINDEX(N)Parametere
| Navn | Type | Standard | Beskrivelse |
|---|---|---|---|
N | heltall | 1 | Handelsnummer regnet bakover i tid. 1 er den siste handelen, 2 den før den, og så videre. |
Slik fungerer det
Hver utført ordre registreres sammen med indeksen til baren den ble fylt på. TRADEINDEX(N) slår opp den indeksen for den N-te siste handelen. Verdien er en absolutt barindeks, samme nummerering som BARINDEX bruker for den gjeldende baren, ikke et antall forløpte barer.
Spørsmålet om medgått tid besvares derfor med en subtraksjon: BARINDEX - TRADEINDEX(1) er antall barer siden den siste utførelsen. Dette driver tidsbasert handelsstyring, for eksempel å gå ut av en stillestående posisjon etter et fast antall barer, håndheve en nedkjøling mellom innganger, eller tillate pyramidering bare etter at den forrige fyllingen har blitt gammel nok.
Med DEFPARAM CumulateOrders = true, teller hver delinngang som sin egen handel, så TRADEINDEX(1) refererer til den siste påfyllingen, ikke den opprinnelige inngangen i den akkumulerte posisjonen. TRADEPRICE(N) følger samme nummerering og returnerer utførelsesprisen i stedet for barindeksen, og de to brukes ofte sammen.
Eksempler
Eksempel 1, Tidsstopp etter fem barer i handelen (ProOrder)
// Close everything once 5 bars have passed since the last execution
IF onmarket AND BARINDEX - TRADEINDEX(1) >= 5 THEN
SELL AT MARKET
EXITSHORT AT MARKET
ENDIFUansett hvilken retning posisjonen har, lukkes den når fem barer har gått siden den siste utførelsen. Dette er referanseeksempelet for instruksjonen.
Eksempel 2, Pyramidering styrt av antall barer og prisutvikling (ProBacktest)
DEFPARAM CumulateOrders = true
myMACD = MACD[12,26,9](close)
long = myMACD crosses over 0
exit = myMACD crosses under 0
// Initial entry
IF NOT LongOnMarket AND long THEN
BUY 1 CONTRACTS AT MARKET
ENDIF
IF LongOnMarket AND exit THEN
SELL AT MARKET
ENDIF
// Add only if 5 bars have passed and price is 10 points beyond the last fill
IF BARINDEX - TRADEINDEX(1) > 5 AND Close - TRADEPRICE(1) > 10 AND LongOnMarket THEN
BUY 1 CONTRACTS AT MARKET
ENDIF
// One trailing stop protects the whole accumulated position
SET STOP %TRAILING 1.5Flere kontrakter kjøpes bare når den siste fyllingen er minst fem barer gammel og prisen har beveget seg ti punkter forbi den, et standard pyramideringsfilter som kombinerer TRADEINDEX med TRADEPRICE.
Eksempel 3, Nedkjølingsperiode mellom påfølgende innganger (ProOrder)
// No new trade within 20 bars of the previous execution
signal = close crosses over average[20](close)
coolingDown = BARINDEX - TRADEINDEX(1) < 20
IF NOT onmarket AND signal AND NOT coolingDown THEN
BUY 1 CONTRACT AT MARKET
SET STOP LOSS 25
ENDIFEtter hver utførelse nekter strategien nye innganger i 20 barer, noe som hindrer hyppige gjeninnganger i hakkete markedsforhold.
Vanlige feil og fallgruver
- Indeks, ikke alder.
TRADEINDEX(1)returnerer en barindeks, ikke antall barer siden handelen. Å sammenligne den direkte med en liten konstant er meningsløst, trekk den alltid fraBARINDEX. - Omvendt nummerering. N teller bakover, 1 er den siste handelen. Å anta at 1 betyr den første handelen i sesjonen snur logikken uten at det varsles.
- Ingen handler ennå. På de første barene i en backtest, før noen utførelse, er verdien ikke meningsfull. Sikre tidsbaserte betingelser med
onmarketeller et flagg som snus etter første inngang. - CumulateOrders endrer betydningen. Med akkumulerte posisjoner er hvert delfyll en handel, så
TRADEINDEX(1)følger den siste påfyllingen og ikke posisjonens opprinnelige inngang. Bruk en lagret variabel ved første inngang hvis den opprinnelige baren har betydning.
Relaterte instruksjoner
BarIndex, indeksen til gjeldende bar, referansen for beregning av forløpte barer.TRADEPRICE, utførelsesprisen for den N-te siste handelen.POSITIONPRICE, gjennomsnittsprisen for den åpne posisjonen.ONMARKET, sann så lenge en posisjon er åpen.CumulateOrders, DEFPARAM som gjør at hver delinngang teller som en handel.BarsSince, teller barer siden en betingelse var sann.COUNTOFPOSITION, størrelsen på posisjonen som er åpen nå.LONGONMARKET, sann så lenge en long-posisjon er åpen.