Skip to main content

Risk Management

RiskManagement is a session-level guard that blocks entry independently of signal results. It enforces daily caps on profit, loss, drawdown, and trade count. Limits reset automatically on each new trading day.

Namespace: MZpack.NT8.Algo Inheritance: RiskManagement Source: [INSTALL PATH]/API/RiskManagement.cs

Properties​

Daily Profit Limit​

PropertyTypeDefaultDescription
DailyProfitLimitEnableboolfalseEnable daily profit limit
DailyProfitLimitdouble—Maximum daily profit in Currency

Daily Loss Limit​

PropertyTypeDefaultDescription
DailyLossLimitEnableboolfalseEnable daily loss limit
DailyLossLimitdouble—Maximum daily loss in Currency

Daily Max Drawdown​

PropertyTypeDefaultDescription
DailyMaxDrawdownEnableboolfalseEnable daily max drawdown
DailyMaxDrawdowndouble—Maximum drawdown from daily peak in Currency

Daily Trades Limit​

PropertyTypeDefaultDescription
DailyTradesLimitEnableboolfalseEnable daily trades limit
DailyTradesLimitint—Maximum number of trades per day

General​

PropertyTypeDefaultDescription
CurrencyCurrencyUsDollarAccount currency for limit calculations
EntryNamestring—Entry name used to count trades

Methods​

MethodDescription
IsEnabled()Returns true if any limit is enabled
IsRiskReached()Returns true if any enabled limit has been reached
OnAccountItemUpdate(Account account, AccountItem item, double value)Monitors realized and unrealized PnL; closes all positions when a limit is hit
OnOrderUpdate(Order order, OrderState state)Increments the daily trade count when an order with matching EntryName is filled
OnMarketData(DateTime time)Resets all tracking on a new trading day

Limit Logic​

LimitTriggered When
Daily ProfitrealizedPnL + unrealizedPnL >= DailyProfitLimit
Daily LossrealizedPnL + unrealizedPnL <= -DailyLossLimit
Max DrawdownCashValue - maxCashValue <= -DailyMaxDrawdown
Daily TradesdailyTrades >= DailyTradesLimit

When any limit is reached, RiskManagement calls Strategy.Positions.CancelClose(false, "Risk Management", ...) to close all open positions and prevent new entries.

Daily Reset​

On each new trading day (detected in OnMarketData), all counters and flags reset:

  • dailyTrades resets to 0
  • maxCashValue updates to the current cash value
  • All reached flags clear

See Also​