Rule Collider

Instructions for AI models

Version 705a9e6011 of 2026-11-14, made from the product's feature catalogue and symbol list: 42 symbols, 186 features, 7 kinds of cross-asset condition. The same page as plain text, for a model to read: /ai-instructions.txt.

Rule Collider tests one trading rule on one symbol over years of one broker's price history and reports what it did, in R, on data the rule was not fitted to. It has no AI model inside it. This page teaches a model of the user's own how a rule is written for it, so that a setup described in words can be turned into the tool's settings.

For the person reading this

Give your AI model this page and your setup. A line to copy:

Read https://app.rulecollider.com/ai-instructions.txt and follow it. Then turn this setup into Rule Collider settings: <your setup in words>

The model answers with the settings in words and with the rule as a block of JSON. Paste that block into the builder under "Paste a rule". The builder checks it, fills the form and shows the rule in words; compare that with what you asked for. Nothing runs until you run it, and a paste counts against nothing.

Your task, if you are the model

  1. Translate; do not judge. Turn the setup into settings. Give no opinion on whether it will make money and promise nothing.
  2. Ask for what is missing; do not guess. A rule needs a symbol, a direction, at least one condition with a number, a stop and a target. If the setup leaves one out, or leans on a time of day it does not give, ask the user. Settings the tool fills by itself (listed below as defaults) can be left out of the rule.
  3. Use only the names on this page: the symbols, the features, the operators and the ranges, written exactly as they are here. Never invent a name. A feature is available only for the symbols and the clock this page says.
  4. When part of the setup cannot be expressed, say so before anything else and name the part. You may offer the nearest condition the tool has as an approximation, and write the rule with it only after the user has accepted it. Never put an approximation in without saying so.
  5. Answer in this order: first the settings in words, in the builder's order (Symbol, Direction, Clock, Conditions, Entry, Exit, Filters, Costs); then the rule as one block of JSON, for the builder's "Paste a rule" box; then the line: Rule Collider is a research tool. Past results do not predict future results. This is not investment advice.
  6. Leave window and validation out of the rule. The builder supplies the dates and the out-of-sample split.

What a rule is

The rule as JSON

Only symbol, direction and conditions are required. Every other block may be left out and takes the default named below. A complete example:

{
  "symbol": "EURUSD",
  "direction": "BUY",
  "clock": "h1",
  "conditions": [
    {
      "feature": "rsi",
      "operator": "gt",
      "threshold": 60
    }
  ],
  "entry": {
    "trigger": "state",
    "order_type": "stop",
    "distance": {
      "type": "pips",
      "value": 2
    },
    "expiry_bars": 4
  },
  "exit": {
    "stop": {
      "type": "atr",
      "value": 2.5
    },
    "target": {
      "type": "r",
      "value": 2
    }
  },
  "filters": {
    "weekdays": [
      "mon",
      "tue",
      "wed",
      "thu",
      "fri"
    ]
  },
  "costs": {
    "spread": "measured",
    "commission_pips": 0
  }
}

Top level

entry

exit

filters

costs

Traps

Symbols

42 symbols. The reference markets are the short names used in cross-asset features, x_<market>_<kind>. The "also called" column holds names people use for the symbol: a setup that uses one of them means that symbol, with nothing to confirm, and the rule carries the name in the first column. A currency pair written with a slash (EUR/USD) is the same symbol without it.

symbolalso calledwhat it isclassone pipreference marketsranges it does not have
[AEX25]AEX, Netherlands 25, NL25Netherlands 25 Index CFD, cash (EUR)index0.1eurusd, dji30session_open, session_open_control, round_100, round_50
[ASX200]ASX 200, Australia 200, AUS200ASX200 Index CFD, cash (AUD)index0.1audusd, gold, copper, dji30session_open, session_open_control, round_100, round_50
AUDCAD-Australian Dollar vs Canadian Dollarforex0.0001nonehas all
AUDJPY-Australian Dollar vs Japanese Yenforex0.01nonehas all
AUDNZD-Australian Dollar vs New Zealand Dollarforex0.0001nonehas all
AUDUSDaussieAustralian Dollar vs US Dollarforex0.0001nzdusd, gold, copper, usdcad, brenthas all
BRENTBrent, UK oil, UKOIL, XBRUSDBRENT Crude Oil (100 barrels) CFD, USDenergy0.1gold, usdcad, dji30, sp500, ngasround_100, round_50
[CAC40]CAC 40, France 40, FRA40CAC40 Index CFD, cash (EUR)index0.1eurusd, dji30, ftse100session_open, session_open_control, round_100, round_50
CADJPY-Canadian Dollar vs Japanese Yenforex0.01nonehas all
CHFJPY-Swiss Franc vs Japanese Yenforex0.01nonehas all
COPPER-Copper (1,000 lbs) vs US Dollar Cent CFDmetal0.1gold, audusd, dji30, sp500, silverround_100, round_50
CRUDOILWTI, US oil, crude oil, USOIL, XTIUSDWTI Crude Oil (100 barrels) CFD, USDenergy0.1brent, usdcad, dji30, gold, sp500round_100, round_50
[DJI30]Dow, Dow Jones, DJIA, US30, Wall Street 30Dow Jones Index CFD, cash (USD)index0.1sp500, brent, gold, usdjpy, eurusdsession_open, session_open_control, round_100, round_50
EURAUD-Euro vs Australian Dollarforex0.0001nonehas all
EURCAD-Euro vs Canadian Dollarforex0.0001nonehas all
EURCHF-Euro vs Swiss Francforex0.0001nonehas all
EURGBP-Euro vs Great Britain Poundforex0.0001eurusd, gbpusd, ftse100, brent, dji30has all
EURJPY-Euro vs Japanese Yenforex0.01nonehas all
EURUSD-Euro vs US Dollarforex0.0001gbpusd, usdchf, gold, dji30, eurgbp, usdjpyhas all
[FTSE100]FTSE, FTSE 100, UK100, FootsieFTSE100 Index CFD, cash (GBP)index0.1dji30, sp500, gbpusd, eurgbp, brentsession_open, session_open_control, round_100, round_50
GBPCHF-Great Britain Pound vs Swiss Francforex0.0001nonehas all
GBPJPY-Great Britain Pound vs Japanese Yenforex0.01gbpusd, usdjpy, eurjpy, dji30, goldhas all
GBPUSDcableGreat Britain Pound vs US Dollarforex0.0001eurusd, eurgbp, ftse100, gold, usdjpyhas all
GERMANY40DAX, DAX 40, GER40, DE40Germany 40 Index CFD, cash (EUR)index0.1dji30, eurusd, gold, brent, usdjpysession_open, session_open_control, round_100, round_50
GOLDXAUUSDGold (100 oz) vs US Dollar CFDmetal0.1silver, brent, dji30, eurusd, usdjpy, copper, ftse100, usdcadround_100, round_50
[HSCEI50]HSCEI, China H-sharesHong Kong China H-shares Index CFD, cash (HKD)index1nonesession_open, session_open_control, round_100, round_50
[HSI50]Hang Seng, HSI, HK50Hang Seng Index CFD, cash (HKD)index0.1audusd, dji30, coppersession_open, session_open_control, round_100, round_50
[JP225]Nikkei, Nikkei 225, JPN225Nikkei 225 Index CFD, cash (JPY)index0.1usdjpy, gbpjpy, dji30, sp500, goldsession_open, session_open_control, round_100, round_50
NGASnatural gas, NATGAS, XNGUSDUS Natural Gas (1000 MMBtu) CFD, USDenergy0.01noneround_100, round_50
NZDJPY-New Zealand Dollar vs Japanese Yenforex0.01nonehas all
NZDUSDkiwiNew Zealand Dollar vs US Dollarforex0.0001audusd, gold, copper, usdcad, eurusdhas all
PLATINUMXPTUSDPlatinum (100 oz) vs US Dollar CFDmetal0.1noneround_100, round_50
SILVERXAGUSDSilver (5000 oz) vs US Dollar CFDmetal0.01gold, copper, eurusd, dji30, brentround_100, round_50
[SMI20]SMI, Swiss Market Index, SWI20SMI20 Index CFD, cash (CHF)index0.1eurusd, usdchf, dji30, goldsession_open, session_open_control, round_100, round_50
[SP500]S&P, S&P 500, SPX, US500Standard and Poor's Index CFD, cash (USD)index0.1dji30, brent, gold, usdjpy, eurusdsession_open, session_open_control, round_100, round_50
STXE50Euro Stoxx 50, Euro Stoxx, EU50, SX5EEuro Stocks 50 Index CFD, cash (EUR)index0.1eurusd, dji30, ftse100session_open, session_open_control, round_100, round_50
US100Nasdaq, Nasdaq 100, NAS100, NDX, US Tech 100US100 Index CFD, cash (USD)index0.1sp500, dji30, usdjpy, gold, eurusdsession_open, session_open_control, round_100, round_50
USDCADloonieUS Dollar vs Canadian Dollarforex0.0001brent, audusd, gold, nzdusd, eurusd, usdjpyhas all
USDCHFswissyUS Dollar vs Swiss Francforex0.0001eurusd, gold, dji30, usdjpy, gbpusdhas all
USDCNH-US Dollar vs Offshore Renminbi Yuanforex0.001usdjpy, audusd, gold, copper, dji30round_100, round_50
USDJPY-US Dollar vs Japanese Yenforex0.01eurjpy, gbpjpy, gold, dji30, sp500has all
XAUEURgold in eurosGold Spot (100 oz) vs Euro, CFDmetal0.1gold, eurusd, eurgbpround_100, round_50

Features

186 features of the symbol being traded, in groups, and seven kinds of condition on another market. The example column is one way the feature is used, not a suggestion. The descriptions are written for the m5 clock; on the h1 clock a name with no timeframe in it is the same reading on hourly bars.

Trend (9)

Direction and strength of the M5 moving-average structure.

featurewhat it isunitexample
trend_ema20_vs_ema50EMA20 above EMA50. 1 when the 20-bar exponential average is above the 50-bar average on M5, else 0.flaggt 0
price_above_ema20Close above EMA20. 1 when the bar closes above the 20-bar exponential average, else 0.flaggt 0
price_above_ema50Close above EMA50. 1 when the bar closes above the 50-bar exponential average, else 0.flageq 0
ema20_slopeEMA20 slope. Change of the 20-bar exponential average over the last 5 bars, in pips.pipsgt 2
ema50_slopeEMA50 slope. Change of the 50-bar exponential average over the last 10 bars, in pips.pipslt 0
price_vs_ema20_atrClose vs EMA20 (ATR). Distance of the close from the 20-bar exponential average, in multiples of the ATR(14).atrgt 1
price_vs_ema50_atrClose vs EMA50 (ATR). Distance of the close from the 50-bar exponential average, in multiples of the ATR(14).atrlt -1.5
ema_spread_normEMA spread (ATR). EMA20 minus EMA50, in multiples of the ATR(14); positive when the fast average is above the slow one.atrgt 0.5
adxADX (14). Average directional index over 14 M5 bars with Wilder smoothing; higher means a stronger trend in either direction.indexgt 25

Momentum (40)

Rate of change, oscillators, range position and order-flow proxies on M5 bars.

featurewhat it isunitexample
rsiRSI (14). Relative strength index over 14 M5 bars with Wilder smoothing, 0 to 100.indexlt 30
rsi_deviationRSI minus 50. RSI(14) centred on zero, so positive values mean recent gains outweigh losses.indexgt 15
stoch_kStochastic %K (14). Position of the close within the 14-bar high-low range, 0 to 100.indexgt 80
bb_pct_bBollinger %B (20, 2). Position of the close within the Bollinger bands (20-bar mean, 2 standard deviations); 0 at the lower band, 1 at the upper band, outside that range beyond the bands.ratiogt 1
price_vs_bb_midClose vs Bollinger middle. Close minus the 20-bar Bollinger middle band, divided by the band width.ratiolt -0.25
macd_histogramMACD histogram (12, 26, 9). MACD line minus its 9-bar signal line, in pips.pipsgt 0
momentum_5_pips5-bar change (pips). Close minus the close 5 bars earlier, in pips.pipsgt 10
momentum_10_pips10-bar change (pips). Close minus the close 10 bars earlier, in pips.pipslt -10
momentum_3_atr3-bar change (ATR). Close minus the close 3 bars earlier, in multiples of the ATR(14).atrgt 1
momentum_5_atr5-bar change (ATR). Close minus the close 5 bars earlier, in multiples of the ATR(14).atrgt 1.5
momentum_10_atr10-bar change (ATR). Close minus the close 10 bars earlier, in multiples of the ATR(14).atrlt -2
roc_20_atr20-bar change (ATR). Close minus the close 20 bars earlier, in multiples of the ATR(14).atrgt 2
price_vs_20d_high_atrClose vs 20-bar high (ATR). Close minus the highest high of the last 20 M5 bars (this bar included), in ATR multiples; zero or negative, zero only when the bar closes exactly at the 20-bar high.atrgt -0.5
price_vs_20d_low_atrClose vs 20-bar low (ATR). Close minus the lowest low of the last 20 M5 bars (this bar included), in ATR multiples; zero or positive, zero only when the bar closes exactly at the 20-bar low.atrlt 0.5
price_vs_20d_mid_atrClose vs 20-bar range middle (ATR). Close minus the midpoint of the last 20 bars' high-low range, in ATR multiples.atrgt 1
channel_high_20_atrClose vs prior 20-close high (ATR). Close minus the highest close of the 20 bars before this one (this bar left out), in ATR multiples; positive only when the bar closed above every one of those closes.atrgt 0
channel_low_20_atrClose vs prior 20-close low (ATR). Close minus the lowest close of the 20 bars before this one (this bar left out), in ATR multiples; negative only when the bar closed below every one of those closes.atrlt 0
channel_pos_20Position in the prior 20-close channel. Where the close sits between the lowest and the highest close of the 20 bars before this one; 0 at the channel low, 0.5 at its middle, 1 at its high, above 1 or below 0 outside the channel.fractiongt 1
channel_high_30_atrClose vs prior 30-close high (ATR). Close minus the highest close of the 30 bars before this one (this bar left out), in ATR multiples; positive only when the bar closed above every one of those closes.atrgt 0
channel_low_30_atrClose vs prior 30-close low (ATR). Close minus the lowest close of the 30 bars before this one (this bar left out), in ATR multiples; negative only when the bar closed below every one of those closes.atrlt 0
channel_pos_30Position in the prior 30-close channel. Where the close sits between the lowest and the highest close of the 30 bars before this one; 0 at the channel low, 0.5 at its middle, 1 at its high, above 1 or below 0 outside the channel.fractiongt 1
channel_high_55_atrClose vs prior 55-close high (ATR). Close minus the highest close of the 55 bars before this one (this bar left out), in ATR multiples; positive only when the bar closed above every one of those closes.atrgt 0
channel_low_55_atrClose vs prior 55-close low (ATR). Close minus the lowest close of the 55 bars before this one (this bar left out), in ATR multiples; negative only when the bar closed below every one of those closes.atrlt 0
channel_pos_55Position in the prior 55-close channel. Where the close sits between the lowest and the highest close of the 55 bars before this one; 0 at the channel low, 0.5 at its middle, 1 at its high, above 1 or below 0 outside the channel.fractiongt 1
price_vs_5d_high_atrClose vs 5-day high (ATR). Close minus the highest high of the last 1,440 M5 bars (five 24-hour days), in ATR multiples.atrgt -1
price_vs_5d_low_atrClose vs 5-day low (ATR). Close minus the lowest low of the last 1,440 M5 bars (five 24-hour days), in ATR multiples.atrlt 1
price_vs_50d_high_atrClose vs 50-day high (ATR). Close minus the highest high of the last 14,400 M5 bars (fifty 24-hour days), in ATR multiples.atrgt -2
price_vs_50d_low_atrClose vs 50-day low (ATR). Close minus the lowest low of the last 14,400 M5 bars (fifty 24-hour days), in ATR multiples.atrlt 3
range_positionPosition in 20-bar range. Where the close sits in the last 20 bars' high-low range, 0 at the low and 1 at the high.fractiongt 0.9
zscore_50Close z-score (50 bars). Close minus its 50-bar mean, divided by the 50-bar standard deviation.zscorelt -2
zscore_200Close z-score (200 bars). Close minus its 200-bar mean, divided by the 200-bar standard deviation.zscoregt 2
mean_rev_speedMean-reversion speed. Rolling 100-bar regression slope of the bar-to-bar price change on the previous price; negative values mean moves tend to reverse.ratiolt -0.1
vwap_distanceClose vs 50-bar VWAP (ATR). Close minus the tick-volume-weighted average of the typical price over 50 bars, in ATR multiples.atrgt 1
money_flow_20Money flow (20 bars). 20-bar sum of close-location value times tick volume; positive when closes sit near bar highs on volume.volumegt 0
obv_slope_20OBV slope (20 bars). Slope per bar of on-balance tick volume fitted over the last 20 bars.volumegt 0
volume_ratioTick volume vs 50-bar average. This bar's tick volume divided by the 50-bar average tick volume.ratiogt 1.5
vol_price_divergeVolume and price direction. Sign of the 20-bar price change times the sign of the 20-bar tick-volume change; 1 when both rose or both fell, -1 when they moved opposite ways, 0 when either is flat.signeq -1
m5_gap_atrOpen gap (ATR). This bar's open minus the previous close, in ATR multiples.atrgt 0.5
m5_gap_atr_33-bar gap sum (ATR). Sum of the last three open-to-previous-close gaps, in ATR multiples.atrlt -1
close_vs_prev_close_atrOne-bar return (ATR). This bar's close minus the previous bar's close, in ATR multiples; negative when the bar closed below the bar before it.atrlt 0

Volatility (13)

Range, ATR and variance measures and their regime.

featurewhat it isunitexample
bb_widthBollinger width. Two standard deviations of the close over 20 bars divided by the 20-bar mean, i.e. half the full upper-to-lower band width relative to the middle band.ratiolt 0.002
vol_expandingATR above its average. 1 when the ATR(14) is above its 50-bar average, else 0.flageq 1
atr_zATR vs 50-bar average. ATR(14) minus its 50-bar average, divided by that average.ratiogt 0.3
atr_ratio_20_50ATR over 50-bar average. ATR(14) divided by its 50-bar average; 1 means typical, above 1 expanding.ratiogt 1.3
range_percentileBars at least this wide (last 100). Share of the last 100 bars whose high-low range is at least as wide as this bar's, 1 to 100; 100 means the narrowest bar in the window, values near 1 mean the widest.percentlt 10
gk_volatilityGarman-Klass volatility (20 bars). Garman-Klass open-high-low-close volatility estimate over 20 bars, per bar in log-price units.ratiolt 0.0005
parkinson_volatilityParkinson volatility (20 bars). Parkinson high-low volatility estimate over 20 bars, per bar in log-price units.ratiolt 0.0005
vol_of_volVolatility of ATR (20 bars). Standard deviation of the ATR(14) over 20 bars divided by its 20-bar mean.ratiogt 0.2
gk_ratioFast vs slow Garman-Klass. 10-bar Garman-Klass variance divided by the 50-bar one; above 1 when recent bars are more volatile.ratiogt 1.5
return_autocorrVolatility clustering. Lag-1 autocorrelation of squared 5-minute log returns over 50 bars, -1 to 1; 0 when undefined.ratiogt 0.2
spread_atr_ratioSpread vs ATR. Broker spread in points times the pip size, divided by the ATR(14).ratiolt 0.5
atr_pct_60dATR percentile (60 days). Percentile rank of the ATR(14) within the trailing 17,280 M5 bars (sixty 24-hour days), 0 to 1.percentilelt 0.3
session_atr_zATR z-score for this session type. ATR(14) z-scored against the trailing 1,920 bars of the same session type (Asian, London, New York or off-hours).zscoregt 1

Candle (10)

Shape of the current M5 bar and short streaks.

featurewhat it isunitexample
body_ratioBody to range. Absolute close-minus-open divided by the bar's high-low range, 0 to 1.fractiongt 0.7
upper_wick_ratioUpper wick to range. High minus the higher of open and close, divided by the bar's range.fractiongt 0.5
lower_wick_ratioLower wick to range. Lower of open and close minus the low, divided by the bar's range.fractiongt 0.5
is_bullishClose above open. 1 when the bar closes above its open, else 0.flageq 1
close_location_valueClose location in bar. Where the close sits in the bar's range, -1 at the low, 0 in the middle, 1 at the high.ratiogt 0.5
consecutive_upUp-bar streak. Number of consecutive bars before this one that closed above their open.countgte 3
consecutive_downDown-bar streak. Number of consecutive bars before this one that closed below or at their open.countgte 3
bullish_ratio_5Up bars in last 5. Fraction of the last 5 bars that closed above their open.fractiongte 0.8
range_rank_7Rank by range among the last seven bars. This bar's rank by range (high minus low) among itself and the six bars before it: 1 is the widest, 7 strictly the narrowest of the seven.rankeq 7
bullish_ratio_10Up bars in last 10. Fraction of the last 10 bars that closed above their open.fractionlte 0.2

Session (6)

Asian, London and New York session structure in broker time (the chart time in MT5).

featurewhat it isunitexample
session_idSession. 0 Asian (broker hours 0 to 7), 1 London (8 to 14), 2 New York (15 to 21), 3 off-hours (22 to 23).indexeq 1
asian_range_atrAsian range (ATR). High-low range of the day's Asian session in ATR multiples; grows bar by bar during the session, fixed afterwards.atrlt 3
price_vs_asian_midClose vs Asian midpoint. Close minus the midpoint of the Asian range, divided by that range; 0.5 at the Asian high, -0.5 at the Asian low.ratiogt 0.5
session_momentum_atrMove since session open (ATR). Close minus the last close before the current session began, in ATR multiples. Sessions are the four session_id blocks and restart at midnight broker time.atrgt 2
session_volume_ratioSession volume vs previous session. Average tick volume so far in this session divided by the previous session's average.ratiogt 1.4
london_asian_breakoutLondon break of Asian range (ATR). During London hours, how far the close is beyond the Asian high (positive) or low (negative) in ATR multiples; 0 inside the range, missing outside London.atrgt 0.5

Calendar (10)

Clock and calendar position of the bar in broker time (the chart time in MT5).

featurewhat it isunitexample
hourHour. Hour of the bar in broker time (0 to 23).hourlt 18
day_of_weekDay of week. 0 Monday to 6 Sunday, broker time.indexlt 4
day_of_monthDay of month. Calendar day of the bar, 1 to 31.countlte 5
week_of_monthWeek of month. 1 for days 1 to 7, 2 for 8 to 14, and so on up to 5.indexeq 3
is_month_endLast three days of the month. 1 on the last three calendar days of the month, else 0.flageq 1
is_month_startFirst three days of the month. 1 on the first three calendar days of the month, else 0.flageq 0
is_eom_windowMonth-end window. 1 on the last five and the first two calendar days of a month, else 0.flageq 1
trading_days_to_month_endWeekdays left in the month. How many weekdays remain in the calendar month, this day included; 1 on the month's last weekday, 5 on the fifth-last.counteq 5
is_gotobiGotobi day. 1 on Japan's settlement days (the 5th, 10th, 15th, 20th and 25th of the month and the month's last day, each moved to the Friday before when it falls on a weekend), else 0.flageq 1
minute_of_dayMinute of the day. The bar's opening minute of the broker day, 0 at midnight to 1435 at 23:55; 1065 is the 17:45 bar.minuteeq 1065

Scheduled releases (17)

Time to and from five scheduled releases (the FOMC statement, the US jobs report, the US consumer price index, the ECB's and the Bank of England's rate decisions) and the days they fall on, in broker time, at the scheduled minute from the institutions' own calendars. Computed when a rule runs, so there is no stored range.

featurewhat it isunitexample
minutes_to_fomcMinutes to the FOMC statement. Minutes from the bar's close to the next FOMC statement (the Federal Reserve's, 14:00 Eastern on the meeting's last day): 0 on the bar that closes on the release, no value more than 2,880 minutes (two days) before it.minuteslte 1440
minutes_since_fomcMinutes since the FOMC statement. Minutes from the last FOMC statement (the Federal Reserve's, 14:00 Eastern on the meeting's last day) to the bar's close: 5 on the M5 bar that holds its first five minutes, no value more than 2,880 minutes (two days) after it.minuteslte 60
is_fomc_dayFOMC statement day. 1 on every bar of the broker day of an FOMC statement (the Federal Reserve's, 14:00 Eastern on the meeting's last day), else 0.flageq 1
minutes_to_nfpMinutes to the US jobs report. Minutes from the bar's close to the next US jobs report (the Employment Situation, 08:30 Eastern): 0 on the bar that closes on the release, no value more than 2,880 minutes (two days) before it.minuteslte 1440
minutes_since_nfpMinutes since the US jobs report. Minutes from the last US jobs report (the Employment Situation, 08:30 Eastern) to the bar's close: 5 on the M5 bar that holds its first five minutes, no value more than 2,880 minutes (two days) after it.minuteslte 60
is_nfp_dayUS jobs report day. 1 on every bar of the broker day of a US jobs report (the Employment Situation, 08:30 Eastern), else 0.flageq 1
minutes_to_cpi_usMinutes to the US CPI release. Minutes from the bar's close to the next US consumer price index release (08:30 Eastern): 0 on the bar that closes on the release, no value more than 2,880 minutes (two days) before it.minuteslte 1440
minutes_since_cpi_usMinutes since the US CPI release. Minutes from the last US consumer price index release (08:30 Eastern) to the bar's close: 5 on the M5 bar that holds its first five minutes, no value more than 2,880 minutes (two days) after it.minuteslte 60
is_cpi_us_dayUS CPI day. 1 on every bar of the broker day of a US consumer price index release (08:30 Eastern), else 0.flageq 1
minutes_to_ecbMinutes to the ECB decision. Minutes from the bar's close to the next ECB monetary policy decision (14:15 Frankfurt; the press conference follows half an hour later): 0 on the bar that closes on the release, no value more than 2,880 minutes (two days) before it.minuteslte 1440
minutes_since_ecbMinutes since the ECB decision. Minutes from the last ECB monetary policy decision (14:15 Frankfurt; the press conference follows half an hour later) to the bar's close: 5 on the M5 bar that holds its first five minutes, no value more than 2,880 minutes (two days) after it.minuteslte 60
is_ecb_dayECB decision day. 1 on every bar of the broker day of an ECB monetary policy decision (14:15 Frankfurt; the press conference follows half an hour later), else 0.flageq 1
minutes_to_boeMinutes to the Bank of England decision. Minutes from the bar's close to the next Bank of England Bank Rate announcement (12:00 London): 0 on the bar that closes on the release, no value more than 2,880 minutes (two days) before it.minuteslte 1440
minutes_since_boeMinutes since the Bank of England decision. Minutes from the last Bank of England Bank Rate announcement (12:00 London) to the bar's close: 5 on the M5 bar that holds its first five minutes, no value more than 2,880 minutes (two days) after it.minuteslte 60
is_boe_dayBank of England decision day. 1 on every bar of the broker day of a Bank of England Bank Rate announcement (12:00 London), else 0.flageq 1
minutes_to_next_releaseMinutes to the next scheduled release. The smallest of the five minutes-to values: minutes from the bar's close to the next FOMC statement, US jobs report, US CPI release, ECB decision or Bank of England decision; no value when none is within 2,880 minutes.minuteslte 60
minutes_since_releaseMinutes since the last scheduled release. The smallest of the five minutes-since values: minutes from the last FOMC statement, US jobs report, US CPI release, ECB decision or Bank of England decision to the bar's close; no value when none is within 2,880 minutes.minuteslte 60

Levels (29)

The day's open, yesterday's high, low and colour, the week's opening range, the inside bar, the day's stretch, the session's opening range and the round numbers of a currency pair, on the bars of the rule's clock, in broker time. Read on mid prices (the bar's bid plus half its spread), so the daily rollover's spread does not set a level.

featurewhat it isunitexample
inside_bar_runInside bars in a row. 0 when the bar is not inside the bar before it; otherwise how many inside bars in a row end at this bar, where inside means a high not above and a low not below the bar before.counteq 1
price_vs_open_06_atrClose vs the 08:00 broker open (ATR). Close minus the opening price of the day that starts at 08:00 broker time (06:00 in the rule's hours), in ATR multiples; positive when the price is above that open.atrgt 0
price_vs_day_open_atrClose vs the day's open (ATR). Close minus the opening price of the broker day's first bar, in ATR multiples; positive when the price is above the day's open.atrgt 0
prev_day_streakYesterday's colour, as a streak. How many completed days in a row closed on the same side of their open, ending yesterday; positive for up days, negative for down days, 0 when yesterday closed at its open.counteq 1
price_vs_prev_day_high_atrClose vs yesterday's high (ATR). Close minus the highest price of the previous broker day, in ATR multiples; positive when the bar closed above yesterday's high.atrgt 0
price_vs_prev_day_low_atrClose vs yesterday's low (ATR). Close minus the lowest price of the previous broker day, in ATR multiples; negative when the bar closed below yesterday's low.atrlt 0
week_open_range_atrThe week's opening range (ATR). The distance between the high and the low of the week's first four hours, in ATR multiples of the current bar.atrgt 0
price_vs_week_open_high_atrClose vs the week's opening high (ATR). Close minus the high of the week's first four hours, in ATR multiples; positive when the bar closed above that range.atrgt 0
price_vs_week_open_low_atrClose vs the week's opening low (ATR). Close minus the low of the week's first four hours, in ATR multiples; negative when the bar closed below that range.atrlt 0
day_stretch_atrThe day's stretch (ATR). Crabel's stretch for the day: the average over the prior ten completed days of the smaller of (high minus open) and (open minus low), in ATR multiples of the current bar.atrgt 0
session_open_range_atrThe session's opening range (ATR). The distance between the high and the low of the first thirty minutes from the symbol's session open, in ATR multiples of the current bar.atrgt 0
price_vs_session_open_high_atrClose vs the session's opening high (ATR). Close minus the high of the first thirty minutes from the session's open, in ATR multiples; positive when the bar closed above that range.atrgt 0
price_vs_session_open_low_atrClose vs the session's opening low (ATR). Close minus the low of the first thirty minutes from the session's open, in ATR multiples; negative when the bar closed below that range.atrlt 0
session_open_control_range_atrThe box two hours before the session's open (ATR). The distance between the high and the low of the thirty minutes that start two hours before the symbol's session open, in ATR multiples of the current bar.atrgt 0
bars_since_channel_high_20Bars since the 20-bar high was set. How many bars ago the highest high of the prior twenty bars was set, the current bar excluded; 1 when the bar before this one set it, 20 when the oldest of the twenty did.countgte 4
bars_since_channel_low_20Bars since the 20-bar low was set. How many bars ago the lowest low of the prior twenty bars was set, the current bar excluded; 1 when the bar before this one set it, 20 when the oldest of the twenty did.countgte 4
bar_high_vs_channel_high_20_atrThis bar's high vs the 20-bar high (ATR). This bar's high minus the highest high of the prior twenty bars, in ATR multiples; positive when the bar has made a new twenty-bar high.atrgt 0
bar_low_vs_channel_low_20_atrThis bar's low vs the 20-bar low (ATR). The lowest low of the prior twenty bars minus this bar's low, in ATR multiples; positive when the bar has made a new twenty-bar low.atrgt 0
prev_day_open_posYesterday's open inside its range. Where the previous broker day's open sat inside that day's range, from 0 at its low to 1 at its high.fractiongte 0.8
prev_day_close_posYesterday's close inside its range. Where the previous broker day's close sat inside that day's range, from 0 at its low to 1 at its high.fractionlte 0.2
day_open_vs_prev_day_low_atrThe day's open vs yesterday's low (ATR). The broker day's opening price minus the previous day's low, in ATR multiples of the current bar; negative when the day opened below yesterday's range.atrlt 0
day_open_vs_prev_day_high_atrThe day's open vs yesterday's high (ATR). The broker day's opening price minus the previous day's high, in ATR multiples of the current bar; positive when the day opened above yesterday's range.atrgt 0
price_vs_day_high_atrClose vs the day's high so far (ATR). Close minus the highest price of the broker day so far, this bar included, in ATR multiples; 0 when the bar closes at the day's high, otherwise negative.atrgt -0.25
price_vs_day_low_atrClose vs the day's low so far (ATR). Close minus the lowest price of the broker day so far, this bar included, in ATR multiples; 0 when the bar closes at the day's low, otherwise positive.atrlt 0.25
price_vs_pivot_atrClose vs yesterday's pivot (ATR). Close minus the floor-trader pivot P, the mean of the previous broker day's high, low and close, in ATR multiples.atrgt 0
price_vs_r1_atrClose vs yesterday's R1 (ATR). Close minus the first resistance R1, twice the pivot less yesterday's low, in ATR multiples; positive when the bar closed above it.atrgt 0
price_vs_s1_atrClose vs yesterday's S1 (ATR). Close minus the first support S1, twice the pivot less yesterday's high, in ATR multiples; negative when the bar closed below it.atrlt 0
price_vs_session_open_atrClose vs the session's open (ATR). Close minus the price the symbol's session opened at (the open of the first bar at or after the session open), in ATR multiples; present from the session's open to its close, missing otherwise.atrgt 0
price_vs_round_100_pipsClose vs the nearest 00 (pips). Close minus the nearest round number (the 00 levels of a currency pair, 100 pips apart), in pips, from -50 to 50; 0 when the bar closes on a 00, negative just under one, 50 on the 50 between two.pipslt 5

Higher timeframe (24)

Values of the last H1, H4 or D1 bar that had already closed when the M5 bar opened.

featurewhat it isunitexample
h1_rsiH1 RSI (14). RSI(14) of the last completed H1 bar.indexlt 35
h1_trend_ema20_vs_ema50H1 EMA20 above EMA50. 1 when the H1 20-bar exponential average is above the 50-bar one on the last completed H1 bar.flageq 1
h1_ema20_slopeH1 EMA20 slope. Change of the H1 EMA20 over the last 5 H1 bars, in pips.pipsgt 5
h1_bb_pct_bH1 Bollinger %B. Position of the last completed H1 close within the H1 Bollinger bands (20, 2).ratiogt 0.8
h1_macd_histogramH1 MACD histogram. MACD(12, 26, 9) histogram of the last completed H1 bar, in pips.pipsgt 0
h1_stoch_kH1 Stochastic %K. Stochastic %K (14) of the last completed H1 bar, 0 to 100.indexlt 20
h1_adxH1 ADX (14). ADX(14) of the last completed H1 bar.indexgt 25
h1_roc_20_atrH1 20-bar change (H1 ATR). H1 close minus the H1 close 20 bars earlier, in multiples of the H1 ATR(14).atrlt -2.5
h1_momentum_atrClose vs H1 EMA20 (H1 ATR). M5 close minus the H1 EMA20, in multiples of the H1 ATR(14).atrgt 1
m5_h1_trend_agreeM5 and H1 trend agree. 1 when the M5 and H1 EMA20-versus-EMA50 flags are equal, else 0.flageq 1
h4_trend_ema20_vs_ema50H4 EMA20 above EMA50. 1 when the H4 20-bar exponential average is above the 50-bar one on the last completed H4 bar.flageq 1
h4_ema20_slopeH4 EMA20 slope. Change of the H4 EMA20 over the last 5 H4 bars, in pips.pipsgt 10
h4_bb_pct_bH4 Bollinger %B. Position of the last completed H4 close within the H4 Bollinger bands (20, 2).ratiogt 0.67
h4_stoch_kH4 Stochastic %K. Stochastic %K (14) of the last completed H4 bar, 0 to 100.indexgt 80
h4_rsiH4 RSI (14). RSI(14) of the last completed H4 bar.indexgt 55
h4_adxH4 ADX (14). ADX(14) of the last completed H4 bar.indexgt 20
h4_momentum_atrClose vs H4 EMA20 (H4 ATR). M5 close minus the H4 EMA20, in multiples of the H4 ATR(14).atrgt 1
mtf_agree_scoreMulti-timeframe agreement. 3 when the M5, H1 and H4 close-versus-EMA20 signs all agree, -1 when one differs.indexeq 3
mtf_divergenceMulti-timeframe divergence. Absolute gap between the M5 and H1 close-versus-EMA20 readings plus the gap between H1 and H4, in ATR multiples of each timeframe.atrlt 1
d1_trend_ema20_vs_ema50D1 EMA20 above EMA50. 1 when the daily 20-bar exponential average is above the 50-bar one on the last completed day.flageq 1
d1_rsiD1 RSI (14). RSI(14) of the last completed daily bar.indexgt 55
d1_adxD1 ADX (14). ADX(14) of the last completed daily bar.indexgt 25
d1_price_vs_ema20_atrClose vs D1 EMA20 (M5 ATR). M5 close minus the daily EMA20 of the last completed day, in multiples of the M5 ATR(14).atrlt -6
d1_price_vs_ema50_atrClose vs D1 EMA50 (M5 ATR). M5 close minus the daily EMA50 of the last completed day, in multiples of the M5 ATR(14).atrgt 10

Normalized (28)

Percentile ranks and z-scores of a base feature over its trailing 20 or 60 days, so a threshold keeps its meaning as the level drifts.

featurewhat it isunitexample
session_volume_ratio_pct_20dSession volume ratio, 20-day percentile. Percentile rank of session_volume_ratio within the trailing 5,760 bars, 0 to 1.percentilelt 0.4
session_volume_ratio_z_20dSession volume ratio, 20-day z-score. session_volume_ratio minus its trailing 5,760-bar mean, divided by that window's standard deviation.zscoregt 1
session_volume_ratio_pct_60dSession volume ratio, 60-day percentile. Percentile rank of session_volume_ratio within the trailing 17,280 bars, 0 to 1.percentilelt 0.4
session_volume_ratio_z_60dSession volume ratio, 60-day z-score. session_volume_ratio minus its trailing 17,280-bar mean, divided by that window's standard deviation.zscoregt 1
volume_ratio_pct_20dVolume ratio, 20-day percentile. Percentile rank of volume_ratio within the trailing 5,760 bars, 0 to 1.percentilegt 0.8
volume_ratio_z_20dVolume ratio, 20-day z-score. volume_ratio minus its trailing 5,760-bar mean, divided by that window's standard deviation.zscoregt 1.5
volume_ratio_pct_60dVolume ratio, 60-day percentile. Percentile rank of volume_ratio within the trailing 17,280 bars, 0 to 1.percentilegt 0.8
volume_ratio_z_60dVolume ratio, 60-day z-score. volume_ratio minus its trailing 17,280-bar mean, divided by that window's standard deviation.zscoregt 1.5
bb_width_pct_20dBollinger width, 20-day percentile. Percentile rank of bb_width within the trailing 5,760 bars, 0 to 1; low values mean a squeeze.percentilelt 0.2
bb_width_z_20dBollinger width, 20-day z-score. bb_width minus its trailing 5,760-bar mean, divided by that window's standard deviation.zscorelt -1
bb_width_pct_60dBollinger width, 60-day percentile. Percentile rank of bb_width within the trailing 17,280 bars, 0 to 1.percentilelt 0.2
bb_width_z_60dBollinger width, 60-day z-score. bb_width minus its trailing 17,280-bar mean, divided by that window's standard deviation.zscoregt 2
parkinson_volatility_pct_20dParkinson volatility, 20-day percentile. Percentile rank of parkinson_volatility within the trailing 5,760 bars, 0 to 1.percentilelt 0.5
parkinson_volatility_z_20dParkinson volatility, 20-day z-score. parkinson_volatility minus its trailing 5,760-bar mean, divided by that window's standard deviation.zscoregt 1
parkinson_volatility_pct_60dParkinson volatility, 60-day percentile. Percentile rank of parkinson_volatility within the trailing 17,280 bars, 0 to 1 (the README example).percentilelt 0.5
parkinson_volatility_z_60dParkinson volatility, 60-day z-score. parkinson_volatility minus its trailing 17,280-bar mean, divided by that window's standard deviation.zscoregt 1
gk_volatility_pct_20dGarman-Klass volatility, 20-day percentile. Percentile rank of gk_volatility within the trailing 5,760 bars, 0 to 1.percentilelt 0.5
gk_volatility_z_20dGarman-Klass volatility, 20-day z-score. gk_volatility minus its trailing 5,760-bar mean, divided by that window's standard deviation.zscoregt 1
gk_volatility_pct_60dGarman-Klass volatility, 60-day percentile. Percentile rank of gk_volatility within the trailing 17,280 bars, 0 to 1.percentilelt 0.5
gk_volatility_z_60dGarman-Klass volatility, 60-day z-score. gk_volatility minus its trailing 17,280-bar mean, divided by that window's standard deviation.zscoregt 1
roc_20_atr_pct_20d20-bar change, 20-day percentile. Percentile rank of roc_20_atr within the trailing 5,760 bars, 0 to 1.percentilegt 0.9
roc_20_atr_z_20d20-bar change, 20-day z-score. roc_20_atr minus its trailing 5,760-bar mean, divided by that window's standard deviation.zscoregt 0
roc_20_atr_pct_60d20-bar change, 60-day percentile. Percentile rank of roc_20_atr within the trailing 17,280 bars, 0 to 1.percentilelt 0.1
roc_20_atr_z_60d20-bar change, 60-day z-score. roc_20_atr minus its trailing 17,280-bar mean, divided by that window's standard deviation.zscorelt -2
macd_histogram_pct_20dMACD histogram, 20-day percentile. Percentile rank of macd_histogram within the trailing 5,760 bars, 0 to 1.percentilegt 0.9
macd_histogram_z_20dMACD histogram, 20-day z-score. macd_histogram minus its trailing 5,760-bar mean, divided by that window's standard deviation.zscoregt 1.5
macd_histogram_pct_60dMACD histogram, 60-day percentile. Percentile rank of macd_histogram within the trailing 17,280 bars, 0 to 1.percentilelt 0.1
macd_histogram_z_60dMACD histogram, 60-day z-score. macd_histogram minus its trailing 17,280-bar mean, divided by that window's standard deviation.zscorelt -1.5

Cross-asset (7 kinds)

State of a reference market (an index, a metal, an energy contract or a currency pair) at the time of the bar. The name is x_<market>_<kind>, with a reference market of the symbol from the Symbols table: x_gold_rsi is the RSI of gold, for a symbol that lists gold. On the m5 clock only.

kindwhat it isunitexample
trend1 when the other market's 20-bar exponential average is above its 50-bar average, else 0.flaggt 0
rsiRSI(14) of the other market on M5 bars, 0 to 100.indexgt 60
bb_pct_bPosition of the other market's close within its Bollinger bands (20, 2).ratiolt 0
momentum_20The other market's close minus its close 20 bars earlier, in multiples of the other market's ATR(14).atrgt 2
vs_ema50The other market's close minus its 50-bar exponential average, in multiples of the other market's ATR(14).atrgt 1
atr_zThe other market's ATR(14) minus its 50-bar average, divided by that average.ratiogt 0.3
return_corrCorrelation of 5-minute log returns between this symbol and the other market over the last 100 bars, -1 to 1; missing while the other market has not traded for the whole window.ratiogt 0.5

Named ranges

A range is a high and a low. An entry order, a stop or a target can sit at one (entry.level, exit.stop.level, exit.target.level).

rangewhat it is
signal_barthe signal bar's range
prev_dayyesterday's range
week_openthe range of the week's first four hours
day_stretchthe day's open plus and less the stretch
day_atr_boxthe day's open plus and less one hourly ATR
session_openthe first thirty minutes from the session's open
session_open_controlthe thirty minutes two hours before the session's open
channel_20the prior twenty bars' highs and lows
daythe day's range so far
day_h1_opensthe day's highest and lowest hourly open so far
pivot_upthe band from yesterday's pivot to R1
pivot_up2the band from R1 to R2
pivot_downthe band from S1 to yesterday's pivot
pivot_down2the band from S2 to S1
round_100the 00 levels on either side of the close
round_50the 50 levels on either side of the close

Worked examples

Example 1

The setup: "Buy EURUSD when the 14-period RSI is above 60 on the hourly chart. Stop 2.5 ATR, target 2 R."

The settings in words:

{
  "symbol": "EURUSD",
  "direction": "BUY",
  "clock": "h1",
  "conditions": [
    {
      "feature": "rsi",
      "operator": "gt",
      "threshold": 60
    }
  ],
  "exit": {
    "stop": {
      "type": "atr",
      "value": 2.5
    },
    "target": {
      "type": "r",
      "value": 2
    }
  }
}

Rule Collider is a research tool. Past results do not predict future results. This is not investment advice.

Example 2

The setup: "Short the Nikkei when 60-day volatility is in its lower half and the daily RSI is above 60. Stop 2 ATR, target 2.5 R."

The settings in words:

A percentile feature runs from 0 to 1, so "the lower half" is below 0.5, not below 50. "60-day volatility" with no measure named is the Parkinson percentile, and the settings in words say that it was chosen and name the other two.

{
  "symbol": "[JP225]",
  "direction": "SELL",
  "clock": "m5",
  "conditions": [
    {
      "feature": "parkinson_volatility_pct_60d",
      "operator": "lt",
      "threshold": 0.5
    },
    {
      "feature": "d1_rsi",
      "operator": "gt",
      "threshold": 60
    }
  ],
  "exit": {
    "stop": {
      "type": "atr",
      "value": 2
    },
    "target": {
      "type": "r",
      "value": 2.5
    }
  }
}

Rule Collider is a research tool. Past results do not predict future results. This is not investment advice.

Example 3

The setup: "Go long the Dow while Brent's 20-bar momentum is positive. Stop 2 ATR, target 2 R."

The settings in words:

The same condition on a symbol whose reference markets do not include Brent cannot be written; say so and name the reference markets that symbol has.

{
  "symbol": "[DJI30]",
  "direction": "BUY",
  "clock": "m5",
  "conditions": [
    {
      "feature": "x_brent_momentum_20",
      "operator": "gt",
      "threshold": 0
    }
  ],
  "exit": {
    "stop": {
      "type": "atr",
      "value": 2
    },
    "target": {
      "type": "r",
      "value": 2
    }
  }
}

Rule Collider is a research tool. Past results do not predict future results. This is not investment advice.

Example 4

The setup: "Buy gold at the market the moment price closes above its 20-bar average, once per move, at most two trades a day. Stop 2 ATR, target 3 R."

The settings in words:

"The moment it closes above" is the onset trigger; without it the rule enters on every bar the condition holds.

{
  "symbol": "GOLD",
  "direction": "BUY",
  "clock": "m5",
  "conditions": [
    {
      "feature": "price_above_ema20",
      "operator": "gt",
      "threshold": 0
    }
  ],
  "entry": {
    "trigger": "onset",
    "order_type": "market",
    "max_trades_per_day": 2
  },
  "exit": {
    "stop": {
      "type": "atr",
      "value": 2
    },
    "target": {
      "type": "r",
      "value": 3
    }
  }
}

Rule Collider is a research tool. Past results do not predict future results. This is not investment advice.

Example 5

The setup: "Buy GBPUSD on a break of yesterday's high, stop at yesterday's low, target one times the risk."

The settings in words:

{
  "symbol": "GBPUSD",
  "direction": "BUY",
  "clock": "m5",
  "conditions": [
    {
      "feature": "hour",
      "operator": "gte",
      "threshold": 0
    }
  ],
  "entry": {
    "level": "prev_day",
    "distance": {
      "type": "pips",
      "value": 0
    }
  },
  "exit": {
    "stop": {
      "type": "level",
      "level": "prev_day",
      "value": 0
    },
    "target": {
      "type": "r",
      "value": 1
    }
  }
}

Rule Collider is a research tool. Past results do not predict future results. This is not investment advice.

Example 6

The setup: "Buy US100 when the 5-minute RSI is above 55. Stop 2.5 ATR, target 6 ATR."

The settings in words:

A target given in ATR stays in ATR. Converted to R it is the target over the stop: 6 ATR on a stop of 2.5 ATR is 2.4 R, not 6 R.

{
  "symbol": "US100",
  "direction": "BUY",
  "clock": "m5",
  "conditions": [
    {
      "feature": "rsi",
      "operator": "gt",
      "threshold": 55
    }
  ],
  "exit": {
    "stop": {
      "type": "atr",
      "value": 2.5
    },
    "target": {
      "type": "atr",
      "value": 6
    }
  }
}

Rule Collider is a research tool. Past results do not predict future results. This is not investment advice.

Example 7

The setup: "Sell EURUSD when RSI is below 40 on the hourly chart, stop 2 ATR, target 2 R. My account charges 6 dollars a lot for the round turn and a raw spread."

The settings in words:

Raw spread plus commission is the spread switched off and the commission in pips; keeping the measured spread as well would charge both. With the spread off the result says so, and that an account with raw spreads still pays one.

{
  "symbol": "EURUSD",
  "direction": "SELL",
  "clock": "h1",
  "conditions": [
    {
      "feature": "rsi",
      "operator": "lt",
      "threshold": 40
    }
  ],
  "exit": {
    "stop": {
      "type": "atr",
      "value": 2
    },
    "target": {
      "type": "r",
      "value": 2
    }
  },
  "costs": {
    "spread": "off",
    "commission_pips": 0.6
  }
}

Rule Collider is a research tool. Past results do not predict future results. This is not investment advice.

Example 8

The setup: "Buy gold when RSI is oversold."

This cannot be written yet, because three things are missing. Ask for them and do not guess:

Example 9

The setup: "Buy US100 when GOLD hit a 5-day low. Stop 2.5 ATR, target 6 ATR."

This cannot be built as asked. Say so first:

{
  "symbol": "US100",
  "direction": "BUY",
  "clock": "m5",
  "conditions": [
    {
      "feature": "x_gold_rsi",
      "operator": "lt",
      "threshold": 30
    }
  ],
  "exit": {
    "stop": {
      "type": "atr",
      "value": 2.5
    },
    "target": {
      "type": "atr",
      "value": 6
    }
  }
}

Rule Collider is a research tool. Past results do not predict future results. This is not investment advice.

What this page does not say

It lists what can be asked. How a result is judged, what the costs are and what the research found are on the site. A figure for a threshold has to come from the user: the builder shows where a number sits in the feature's own history on the symbol, and this page does not.