Rule catalog
All seven v1 Rules you can add to a Flow. Filter rules drop signals; transform rules modify them.
Overview
Rules are the processing units inside a Flow's pipeline. They run in array order, top-to-bottom, on a per-Destination clone of the canonical signal. Two families:
- Filter, evaluates the signal and either lets it continue or drops it. When a signal is dropped, a Delivery row is written with status
filteredand the rule name recorded. No further rules run and no dispatch occurs for that Destination. - Transform, mutates the signal clone (symbol, volume, comment, etc.) and always continues. The original Signal row is never touched.
Rule ordering matters
transform.symbol_map before filter.symbol_allow so the filter sees the broker-side symbol, not the source symbol.filter.symbol_allow
Drop signals whose symbol is not in the allow list. Only signals whose Symbol exactly matches one of the listed values will continue to the next rule or Destination.
Config schema
{
"type": "filter.symbol_allow",
"enabled": true,
"config": {
"symbols": ["EURUSD", "GBPUSD", "XAUUSD"]
}
}jsonUse it when
Your Source receives signals for many instruments but a specific Destination (e.g. a conservative MT5 account) should only trade a curated list. Add this rule at the top of the pipeline so signals for unlisted symbols are dropped before any transform runs.
filter.symbol_block
Drop signals whose symbol is in the block list. The inverse of filter.symbol_allow, every symbol passes except those you explicitly block.
Config schema
{
"type": "filter.symbol_block",
"enabled": true,
"config": {
"symbols": ["BTCUSD", "ETHUSD"]
}
}jsonUse it when
Most signals from your Source are fine to pass through, but a small set of instruments is off-limits for a particular account, for example, blocking crypto pairs on a broker that charges high swap fees for them.
filter.action_allow
Drop signals whose action is not in the allow list. Valid action values include buy, sell, buylimit, selllimit, buystop, sellstop, close, and closeall.
Config schema
{
"type": "filter.action_allow",
"enabled": true,
"config": {
"actions": ["buy", "sell"]
}
}jsonUse it when
A Destination should only receive market orders, not pending orders or close signals. For example, an MT5 account managed by a specific risk strategy can be restricted to buy and sell only, ignoring any buylimit or close signals from the Source.
filter.time_window
Drop signals received outside a weekly schedule. Each window specifies a day of the week, an opening time, and a closing time. Times are evaluated in the configured timezone. Multiple windows can be defined for the same or different days.
Config schema
{
"type": "filter.time_window",
"enabled": true,
"config": {
"tz": "America/New_York",
"windows": [
{ "day": "Monday", "from": "09:30", "to": "16:00" },
{ "day": "Tuesday", "from": "09:30", "to": "16:00" },
{ "day": "Wednesday", "from": "09:30", "to": "16:00" },
{ "day": "Thursday", "from": "09:30", "to": "16:00" },
{ "day": "Friday", "from": "09:30", "to": "16:00" }
]
}
}jsonUse it when
You only want trades placed during active market hours for a given region, or when your strategy is known to perform poorly around news events outside regular hours. The example above restricts signals to US equity session hours, Monday through Friday.
transform.symbol_map
Rename a signal's symbol using a lookup map. The rule rewrites signal.Symbol to the broker-side name before any downstream filter or Destination receives it. Replaces the old per-connection SymbolMaps table.
Config schema
{
"type": "transform.symbol_map",
"enabled": true,
"config": {
"map": {
"GOLD": "XAUUSD",
"US30": "DJ30",
"OIL": "USOIL"
}
}
}jsonUse it when
Your signal source uses generic or exchange-standard symbol names (e.g. GOLD) but your broker uses a different ticker (XAUUSD). Map as many symbols as you need. Symbols not in the map are left unchanged. Place this rule before any filter that checks symbol names.
transform.volume_scaler
Multiply the signal's volume by a constant factor before dispatch. Values below 1 reduce the position size; values above 1 increase it. The result is passed directly to the Destination, ensure it is within the broker's lot size constraints.
Config schema
{
"type": "transform.volume_scaler",
"enabled": true,
"config": {
"factor": 0.5
}
}jsonUse it when
You want to run the same strategy at a different risk level on a second account. Set up a separate Flow with a factor of 0.5 to halve the position size automatically, without changing the original signal or the primary Flow.
transform.comment_template
Set the trade comment (or notification message body) using a template with placeholders. The rendered comment is attached to every MT5 order placed by this Flow, making it easy to trace the source of a trade in your broker's order history.
Config schema
{
"type": "transform.comment_template",
"enabled": true,
"config": {
"template": "{{symbol}}-{{action}}-{{comment}}"
}
}jsonAvailable placeholders: {{symbol}}, {{action}}, {{volume}}, {{comment}} (original comment from the signal, if any), and {{source}} (Source name).
Use it when
You manage multiple strategies or accounts and want every MT5 order labelled with the symbol, direction, and source so you can filter the order history later. Also useful for Telegram and Discord notification Flows where the message body should follow a consistent format.