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
DailyProfitLimitdoubleMaximum daily profit in Currency

Daily Loss Limit

PropertyTypeDefaultDescription
DailyLossLimitEnableboolfalseEnable daily loss limit
DailyLossLimitdoubleMaximum daily loss in Currency

Daily Max Drawdown

PropertyTypeDefaultDescription
DailyMaxDrawdownEnableboolfalseEnable daily max drawdown
DailyMaxDrawdowndoubleMaximum drawdown from daily peak in Currency

Daily Trades Limit

PropertyTypeDefaultDescription
DailyTradesLimitEnableboolfalseEnable daily trades limit
DailyTradesLimitintMaximum number of trades per day

General

PropertyTypeDefaultDescription
CurrencyCurrencyUsDollarAccount currency for limit calculations
EntryNamestringEntry 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