STRATEGYPROFIT
STRATEGYPROFIT returnerar den kumulativa vinsten eller förlusten, i pengar, för varje stängd affär i en ProBacktest- eller ProOrder-strategi. Öppna positioner är uteslutna.
Syntax
myCurrentProfit = STRATEGYPROFITSå fungerar det
Varje gång strategin stänger en affär läggs det realiserade resultatet av den affären till en löpande summa. STRATEGYPROFIT exponerar den summan på varje bar, uttryckt i pengar i stället för i punkter eller procent. Ett värde på 0 på de första barerna betyder helt enkelt att ingen affär har stängts än.
Endast stängda affärer bidrar. En position som fortfarande är öppen, hur långt i vinst den än är, ändrar inte värdet förrän den stängs. För att läsa den orealiserade utvecklingen för den aktuella positionen, använd POSITIONPERF i stället. De två kompletterar varandra: STRATEGYPROFIT beskriver det förflutna, POSITIONPERF beskriver nuet.
Variabeln används ofta för equity-beroende logik, till exempel att stoppa systemet efter en drawdown-tröskel, minska storleken efter en förlustserie, eller låsa en session när ett vinstmål har nåtts. När positioner ackumuleras över flera barer, sätt DEFPARAM CumulateOrders = true så att motorn håller den kombinerade positionen öppen och realiserar vinst på det sätt logiken förväntar sig.
Exempel
Exempel 1, Skala ur när ett vinsttröskelvärde nås (ProBacktest)
DEFPARAM CumulateOrders = true // allow accumulated positions
myCurrentProfit = STRATEGYPROFIT
IF myCurrentProfit > 1000 THEN
SELL 100 SHARES AT MARKET
ENDIFNär den realiserade vinsten från alla stängda affärer överstiger 1000 valutaenheter säljer strategin 100 aktier till marknadspris. Detta är det kanoniska användningsmönstret från den officiella referensen.
Exempel 2, Equity-stop som stoppar strategin (ProOrder)
// Stop the system permanently after 500 units of realized loss
IF STRATEGYPROFIT < -500 THEN
SELL AT MARKET
EXITSHORT AT MARKET
QUIT
ENDIFEtt skydd för kapitalbevarande. När den realiserade förlusten passerar gränsen stängs varje öppen position och QUIT hindrar strategin från att lägga fler ordrar.
Exempel 3, Plotta den realiserade equity-kurvan (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 ritar den löpande realiserade vinsten under backtest-diagrammet, vilket gör det enkelt att se när strategin tjänade eller gav tillbaka pengar.
Vanliga fel och fallgropar
- Öppna positioner är osynliga.
STRATEGYPROFITändras bara när en affär stängs. En strategi som läser den medan en stor position är öppen ser inaktuell information. Kombinera medPOSITIONPERFnär den aktuella affären spelar roll. - Pengar, inte punkter. Värdet anges i kontovalutan, så tröskelvärden som
> 1000betyder 1000 valutaenheter, inte 1000 punkter. Samma tröskel beter sig mycket olika på instrument med olika punktvärden. - Backtest- och live-värden skiljer sig. I en live-körning av ProOrder börjar totalen om från noll när strategin startas, den ärver inte backtest-historiken. Equity-baserade regler beter sig därför annorlunda direkt efter driftsättning.
- GRAPH is backtest only.
GRAPH STRATEGYPROFITfungerar i ProBacktest men ignoreras vid live-exekvering i ProOrder, så diagnostiska plottar försvinner när systemet handlar live.
Relaterade instruktioner
POSITIONPERF, orealiserad utveckling för den position som just nu är öppen.PROFIT, take profit-konfiguration i procent för en position.LOSS, stop loss-konfiguration i procent för en position.CumulateOrders, DEFPARAM som styr om ordrar ackumuleras till en position.GRAPH, plottar ett värde under backtest-diagrammet för granskning.ONMARKET, sant så länge någon position är öppen.TRADEPRICE, entrypriset för den nuvarande positionen.COUNTOFPOSITION, storleken på den position som är öppen just nu.