BRINOVS blocks: Risk management (14 to 19)

Guide to the six BRINOVS risk blocks: session limits, loss streak pause, drawdown breaker, balance guard, exposure cap and a trading window for your bot.

Risk management (blocks 14 to 19)

These blocks help you keep a bot inside limits you choose. They stop NEW purchases when a limit is reached. Contracts that are already open are never touched. You find them in the Blocks menu under BRINOVS, in the sub-folder "Risk management" (soft sand). In a bot, the setting blocks (Session limits, Exposure cap) go in "Run once at start" of "1. Trade parameters". The question blocks (Balance guard, Drawdown breaker, Trading window) usually sit in an if inside "2. Purchase conditions", and Loss streak pause is made for "4. Restart trading conditions". The limits are checked by the BRINOVS execution layer before every purchase. The block saves your numbers, and the last saved numbers stay in force even if you delete the block. A guard that is set up but cannot decide says no. Pretend (dry run) purchases are not stopped by the money limits.

Two words used here. The balance is the money in your account. A round is one purchase; a hedge or a multi-contract purchase counts as one round, with all its profits and losses added together. The folder also holds a helper value block, Risk status. It reads ok or halted, the halt reason, the session profit or loss, open contracts and their stake, the balance, the losing rounds in a row and the drawdown. These blocks protect your money to a degree, but they cannot stop a single contract from losing its stake, and they never change your chance of winning.

The blocks

Session limits

  • Kind: BRINOVS custom, block #14
  • Type id: bnv_session_limits
  • Shape: Action block (it can have blocks above and below)
  • Where it goes: In "Run once at start" of "1. Trade parameters". Only inside the Trade parameters block.
  • What it does: Stops all new purchases once a limit is hit: a maximum loss, an optional profit target, a maximum number of trades or a maximum time. Contracts that are already open keep running.
  • Inputs:
    • Session limits: max loss: a number above 0 (toolbox starts at 10), with a dropdown "(amount)" (first choice) or "% of start balance".
    • profit target: 0 means off (starts at 0).
    • max trades: a whole number, 0 means off (starts at 0).
    • max minutes: 0 means off (starts at 0).
    • count from: "the session start" (first choice) or "00:00 UTC today".
    • after a halt: "wait for me (Resume ticket)" (first choice) or "resume next UTC day".
    • worst case: count open stakes: a tick box, ticked at the start.
    • Resume ticket: a whole number, 0 or more (starts at 0).
  • How it works: Before every purchase the bot adds up your finished real trades since the start point and compares them with the limits. With worst case ticked, it also counts the stakes of open contracts and of this purchase as if they all lost. When a limit is hit, the halt is saved: a page refresh does not clear it. Only a higher Resume ticket (or the next UTC day, if you chose that) starts a new session.
  • Example:
┌─ 1. Trade parameters ──────────────────────────────────────┐
│   Session limits: max loss (10) [ (amount) ▾ ]             │
│     profit target (0)  max trades (0)  max minutes (0)     │
│     count from [ the session start ▾ ]  worst case ☑       │
│     after a halt [ wait for me ▾ ]  Resume ticket (0)      │
└────────────────────────────────────────────────────────────┘

Once the finished trades have lost 10, the next purchase is refused and the bot stops with the reason.

  • Good to know:
    • It refuses and stops the bot if the max loss is not above 0, a percent is above 100, a box is not a number, or (for percent) the start balance is unknown. It needs the execution layer.
    • A halt is never cleared silently. Raise the Resume ticket by one to continue. Max trades counts open contracts too.
    • It limits losses to a degree only: one contract can still lose its whole stake.

Loss streak pause

  • Kind: BRINOVS custom, block #15
  • Type id: bnv_loss_streak_pause
  • Shape: True/false block
  • Where it goes: Anywhere a true/false block is wanted. Made for an if in "4. Restart trading conditions".
  • What it does: Pauses new purchases after a number of finished losing rounds in a row. It says true while trading may go on.
  • Inputs:
    • Fewer than ... losing rounds in a row: a whole number from 1 to 100 (toolbox starts at 3).
    • pause for ... minutes: 0 means until the Resume ticket is raised (starts at 10).
    • Resume ticket: a whole number, 0 or more (starts at 0).
  • Gives back: True while fewer than the chosen number of rounds have lost in a row and no pause is running. False during a pause.
  • How it works: The bot counts finished real rounds, newest first, until it finds one that is not a loss. A round that ends at exactly 0 ends the streak. When the streak is reached the pause is saved. After the pause time the count starts again from zero.
  • Example:
┌─ 4. Restart trading conditions ────────────────────────────┐
│ if  < Fewer than (3) losing rounds in a row                │
│       pause for (10) minutes  Resume ticket (0) >          │
│ then  Trade again                                          │
└────────────────────────────────────────────────────────────┘

After 3 lost rounds in a row, no new purchase is made for 10 minutes.

  • Good to know:
    • The pause never changes your stake. It only waits.
    • It is also enforced on every purchase once the block has saved its numbers, even if you delete the block later.
    • A wrong number (not 1 to 100, negative minutes) stops the bot with a message. It does not change your chance of winning.

Drawdown breaker

  • Kind: BRINOVS custom, block #16
  • Type id: bnv_drawdown_breaker
  • Shape: True/false block
  • Where it goes: Anywhere a true/false block is wanted, usually an if in "2. Purchase conditions".
  • What it does: Locks new purchases when your balance falls too far from its highest point of the session. This fall is called a drawdown. It says true while trading is allowed.
  • Inputs:
    • Drawdown below ... % from the highest balance: above 0 and at most 100 (toolbox starts at 10).
    • lock for ... minutes: 0 means until the Resume ticket is raised (starts at 30).
    • Resume ticket: a whole number, 0 or more (starts at 0).
  • Gives back: True while no lock is running and the drawdown is below the limit. False when locked, or when the balance is unknown or older than 60 seconds.
  • How it works: The bot tracks the highest balance, counting the stakes of open contracts as still yours. When the balance falls by the chosen percent from that peak, it locks. The peak and the lock are saved, so a refresh does not reset them. When the lock time is over, the peak starts again from the current balance.
  • Example:
┌─ 2. Purchase conditions ───────────────────────────────────┐
│ if  < Drawdown below (10) % from the highest balance       │
│       lock for (30) minutes  Resume ticket (0) >           │
│ then  Purchase [ Over ▾ ]                                  │
└────────────────────────────────────────────────────────────┘

If the balance peaked at 100 and falls to 90, purchases are locked for 30 minutes.

  • Good to know:
    • It is also enforced on every purchase once the block has saved its numbers, even if you delete the block later.
    • It does not touch open contracts. Its lock ends by time or by a higher Resume ticket.
    • It cannot stop one contract from losing. It does not change your chance of winning.

Balance guard

  • Kind: BRINOVS custom, block #17
  • Type id: bnv_balance_guard
  • Shape: True/false block
  • Where it goes: Anywhere a true/false block is wanted, usually an if in "2. Purchase conditions".
  • What it does: Says true when your live balance is at least a chosen number of times the stake of your next purchase. It blocks a purchase when you do not have enough money to cover it with a safety margin.
  • Inputs:
    • Balance is at least ... x the next stake: a number of 1 or more (toolbox starts at 2).
  • Gives back: True when the balance is at least that many times the stake (from your Trade options). False when it is lower, or when the balance is unknown or older than 60 seconds.
  • How it works: The block also saves your number. The same rule is checked on every purchase, using the whole stake of the purchase. If you never use the block, the rule is still on with 1 x the stake. Money already promised to purchases being placed does not count as available. An old balance is asked for again once before the bot decides.
  • Example:
┌─ 2. Purchase conditions ───────────────────────────────────┐
│ if  < Balance is at least (2) x the next stake >           │
│ then  Purchase [ Over ▾ ]                                  │
└────────────────────────────────────────────────────────────┘

With a stake of 5, the bot buys only if the balance is at least 10.

  • Good to know:
    • If the balance cannot be read, the purchase is refused and the bot stops with a message.
    • The rule is on even if you delete the block. The last saved number stays.
    • It protects your balance. It does not change your chance of winning.

Exposure cap

  • Kind: BRINOVS custom, block #18
  • Type id: bnv_exposure_cap
  • Shape: Action block (it can have blocks above and below)
  • Where it goes: In "Run once at start" of "1. Trade parameters". Only inside the Trade parameters block.
  • What it does: Limits how many contracts may be open at the same time and how much stake may be at risk at the same time. Exposure means the money you have out on open contracts.
  • Inputs:
    • Exposure cap: max open contracts: a whole number, 0 means no limit (toolbox starts at 3).
    • max total stake at risk: a number, 0 means no limit (starts at 10).
  • How it works: Before each purchase the bot adds the open contracts, the purchases still being placed and the new purchase, and compares with both caps. Two purchases made at the same moment cannot both use the same room. A purchase over a cap is refused and the bot stops with the reason.
  • Example:
┌─ 1. Trade parameters ──────────────────────────────────────┐
│ Run once at start:                                         │
│   Exposure cap: max open contracts (3) (0 = no limit)      │
│     max total stake at risk (10) (0 = no limit)            │
└────────────────────────────────────────────────────────────┘

With 8 already at risk, a new purchase of 3 is refused (11 is above 10). A purchase of 2 goes through.

  • Good to know:
    • It needs at least one limit above 0, or the bot stops with a message.
    • Multi purchase and Hedge purchase count every contract of the batch.
    • It is a safety limit. It does not change your chance of winning.

Trading window

  • Kind: BRINOVS custom, block #19
  • Type id: bnv_trading_window
  • Shape: True/false block
  • Where it goes: Anywhere a true/false block is wanted, usually an if before Purchase in "2. Purchase conditions".
  • What it does: Says true while the time of day and the weekday are inside the window you set, in the time zone you choose. Use it to trade only at certain hours.
  • Inputs:
    • from and to: two times typed as 09:30, 24-hour clock (starts at 09:00 to 17:00).
    • Mon Tue Wed Thu Fri Sat Sun: a tick box for each day (weekdays ticked at the start).
    • time zone: a fixed offset from UTC, from UTC-12 to UTC+14 (starts at UTC).
  • Gives back: True inside the window, false outside.
  • How it works: The start time is inside the window, the end time is not. A window that ends before it starts, like 22:00 to 06:00, runs overnight, and its weekday is the day it started. The zone is a fixed offset, so it does not change with daylight saving.
  • Example:
┌─ 2. Purchase conditions ───────────────────────────────────┐
│ if  < Inside the trading window [ 09:00 ] to [ 17:00 ]     │
│   Mon ☑ Tue ☑ Wed ☑ Thu ☑ Fri ☑ Sat ☐ Sun ☐                │
│   time zone [ UTC ▾ ] >                                    │
│ then  Purchase [ Over ▾ ]                                  │
└────────────────────────────────────────────────────────────┘

The bot buys on weekdays between 09:00 and 17:00 UTC only.

  • Good to know:
    • It only answers the question. It does not stop a purchase by itself, so put it in an if.
    • The bot stops with a message if a time is not like 09:30, the start equals the end, or no day is ticked.
    • It says nothing about the chance to win.

Build a bot with these blocks

BRINOVS is free to open. Sign in with Deriv, open the Bot Builder, and try everything on a demo account.

Open BRINOVS

BRINOVS Digits is a free bot builder and trading page built on Deriv's Bot Builder. Trading carries risk and you can lose money. Nothing in this guide is financial advice or a promise of profit. Test every bot on a demo account first.

Guide home · Open BRINOVS