TRADEINDEX
TRADEINDEX(N) geeft de barindex waar een eerdere trade is uitgevoerd in ProBacktest en ProOrder, zodat strategieën de bars sinds de N-de meest recente instap kunnen tellen.
Syntaxis
TRADEINDEX(N)Parameters
| Naam | Type | Standaard | Beschrijving |
|---|---|---|---|
N | geheel getal | 1 | Tradenummer teruggeteld in de tijd. 1 is de meest recente trade, 2 de trade daarvoor, en zo verder. |
Hoe het werkt
Elke uitgevoerde order wordt vastgelegd samen met de index van de bar waarop hij is gevuld. TRADEINDEX(N) zoekt die index op voor de N-de meest recente trade. De waarde is een absolute barindex, dezelfde nummering die BARINDEX gebruikt voor de huidige bar, niet een telling van verstreken bars.
De vraag over de verstreken tijd wordt daarom met een aftrekking beantwoord: BARINDEX - TRADEINDEX(1) is het aantal bars sinds de laatste uitvoering. Dat drijft tijdgebonden tradebeheer aan, bijvoorbeeld een stilgevallen positie na een vast aantal bars sluiten, een afkoelperiode tussen instappen afdwingen, of pyramiding alleen toestaan nadat de vorige fill is verouderd.
Met DEFPARAM CumulateOrders = true, elke gedeeltelijke instap geldt als een eigen trade, dus TRADEINDEX(1) verwijst naar de laatste bijkoop, niet naar de oorspronkelijke instap van de opgebouwde positie. TRADEPRICE(N) volgt dezelfde nummering en geeft de uitvoeringskoers terug in plaats van de barindex; de twee worden vaak samen gebruikt.
Voorbeelden
Voorbeeld 1, Tijdstop na vijf bars in de trade (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
ENDIFWelke richting de positie ook heeft, hij wordt gesloten zodra er vijf bars zijn verstreken sinds de meest recente fill. Dit is het referentievoorbeeld voor de instructie.
Voorbeeld 2, Pyramiding beperkt door aantal bars en prijsvoortgang (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.5Extra contracten worden alleen gekocht wanneer de laatste uitvoering minstens vijf bars oud is en de prijs tien punten verder is gestegen, een standaard pyramidingfilter, een combinatie van TRADEINDEX met TRADEPRICE.
Voorbeeld 3, Afkoelperiode tussen opeenvolgende instappen (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
ENDIFNa elke uitvoering weigert de strategie 20 bars lang nieuwe instappen, wat snel opeenvolgend herinstappen in onrustige omstandigheden voorkomt.
Veelvoorkomende fouten en valkuilen
- Index, niet leeftijd.
TRADEINDEX(1)retourneert een bar-index, niet het aantal bars sinds de trade. Hem direct met een kleine constante vergelijken is zinloos; trek hem altijd af vanBARINDEX. - Omgekeerde nummering. N telt terug, 1 is de laatste trade. Aannemen dat 1 de eerste trade van de sessie is, keert de logica stilzwijgend om.
- Nog geen trades. Op de eerste bars van een backtest, voordat er iets is uitgevoerd, is de waarde niet zinvol. Scherm tijdgebonden condities af met
onmarketof een flag die omslaat na de eerste instap. - CumulateOrders verandert de betekenis. Bij geaccumuleerde posities is elke gedeeltelijke fill een trade, dus
TRADEINDEX(1)volgt de laatste toevoeging in plaats van de oorspronkelijke instap van de positie. Gebruik een opgeslagen variabele bij de eerste instap als de oorspronkelijke bar van belang is.
Gerelateerde instructies
BarIndex, index van de huidige bar, de referentie voor berekeningen met verstreken bars.TRADEPRICE, uitvoeringsprijs van de N-de meest recente trade.POSITIONPRICE, gemiddelde prijs van de open positie.ONMARKET, waar zolang er een positie open is.CumulateOrders, DEFPARAM waardoor elke deelinstap als een trade meetelt.BarsSince, telt bars sinds een voorwaarde waar was.COUNTOFPOSITION, grootte van de momenteel open positie.LONGONMARKET, waar zolang er een long positie open is.