STRATEGYPROFIT
STRATEGYPROFIT geeft de cumulatieve winst of het cumulatieve verlies, in geld, van elke gesloten trade in een ProBacktest- of ProOrder-strategie. Open posities worden uitgesloten.
Syntaxis
myCurrentProfit = STRATEGYPROFITHoe het werkt
Elke keer dat de strategie een trade sluit, wordt het gerealiseerde resultaat van die trade bij een doorlopend totaal opgeteld. STRATEGYPROFIT stelt dat totaal op elke bar beschikbaar, uitgedrukt in geld in plaats van in punten of procenten. Een waarde van 0 op de eerste bars betekent simpelweg dat er nog geen trade is gesloten.
Alleen gesloten trades tellen mee. Een positie die nog open is, hoe diep in de winst ook, verandert de waarde niet totdat hij wordt verlaten. Om de ongerealiseerde performance van de huidige positie te lezen, gebruik je POSITIONPERF in plaats daarvan. De twee zijn complementair: STRATEGYPROFIT beschrijft het verleden, POSITIONPERF beschrijft het heden.
De variabele wordt vaak gebruikt voor equity-afhankelijke logica, bijvoorbeeld het systeem stilzetten na een drawdown-drempel, de omvang verlagen na een reeks verliezen, of een sessie afsluiten zodra een winstdoel is bereikt. Wanneer posities over bars worden opgebouwd, stel DEFPARAM CumulateOrders = true zodat de engine de gecombineerde positie open houdt en winst realiseert zoals de logica verwacht.
Voorbeelden
Voorbeeld 1, Positie afbouwen zodra een winstdrempel is bereikt (ProBacktest)
DEFPARAM CumulateOrders = true // allow accumulated positions
myCurrentProfit = STRATEGYPROFIT
IF myCurrentProfit > 1000 THEN
SELL 100 SHARES AT MARKET
ENDIFZodra de gerealiseerde winst van alle gesloten trades meer dan 1000 valuta-eenheden bedraagt, verkoopt de strategie 100 aandelen tegen marktprijs. Dit is het canonieke gebruikspatroon uit de officiële referentie.
Voorbeeld 2, Equity stop die de strategie stilzet (ProOrder)
// Stop the system permanently after 500 units of realized loss
IF STRATEGYPROFIT < -500 THEN
SELL AT MARKET
EXITSHORT AT MARKET
QUIT
ENDIFEen beveiliging voor kapitaalbehoud. Wanneer het gerealiseerde verlies de limiet overschrijdt, wordt elke open positie gesloten en QUIT zorgt dat de strategie geen verdere orders meer plaatst.
Voorbeeld 3, De gerealiseerde equity curve plotten (ProBacktest)
// Inspect the realized equity curve while backtesting
GRAPH STRATEGYPROFIT AS "Realized PnL"
IF NOT onmarket AND close > average[50](close) THEN
BUY 1 CONTRACT AT MARKET
SET STOP LOSS 30
SET TARGET PROFIT 60
ENDIFGRAPH tekent de lopende gerealiseerde winst onder de backtest-grafiek, waardoor eenvoudig te zien is wanneer de strategie geld verdiende of teruggaf.
Veelvoorkomende fouten en valkuilen
- Open posities zijn onzichtbaar.
STRATEGYPROFITbeweegt alleen wanneer een trade wordt gesloten. Een strategie die dit controleert terwijl een grote positie open staat, ziet verouderde informatie. Combineer metPOSITIONPERFwanneer de huidige trade van belang is. - Geld, geen punten. De waarde is uitgedrukt in de accountvaluta, dus drempelwaarden zoals
> 1000betekent 1000 valuta-eenheden, niet 1000 punten. Dezelfde drempel gedraagt zich heel anders bij instrumenten met verschillende puntwaarden. - Backtest- en live waarden verschillen. In een live ProOrder-run begint het totaal weer bij nul wanneer de strategie wordt gestart; het neemt de backtest-historie niet over. Op equity gebaseerde regels gedragen zich daarom direct na uitrol anders.
- GRAPH is backtest only.
GRAPH STRATEGYPROFITwerkt in ProBacktest maar wordt genegeerd bij live ProOrder-uitvoering, dus diagnostische plots verdwijnen zodra het systeem live handelt.
Gerelateerde instructies
POSITIONPERF, ongerealiseerde performance van de momenteel open positie.PROFIT, take profit-configuratie in procenten voor een positie.LOSS, stop loss-configuratie in procenten voor een positie.CumulateOrders, DEFPARAM die bepaalt of orders samenvoegen tot één positie.GRAPH, plot een waarde onder de backtest-grafiek ter inspectie.ONMARKET, waar zolang er een positie open is.TRADEPRICE, instapprijs van de huidige positie.COUNTOFPOSITION, grootte van de momenteel open positie.