TradeReady.io
Strategy Development

Built-in Indicators

7 technical indicators available for strategy entry and exit conditions

Download .md

The platform computes 7 technical indicators using pure numpy — no TA-Lib dependency. Indicators are recomputed on every candle close for every pair in your strategy's pairs list, using the candle interval set in timeframe.

Each indicator produces one or more output values that map directly to condition keys in entry_conditions and exit_conditions.

All indicators require a minimum number of candles before they produce valid values. Strategies will not generate signals until enough history is available.


RSI — Relative Strength Index

Measures: Momentum — how overbought or oversold an asset is.

Period: 14 candles. Minimum data: 15 candles.

RSI oscillates between 0 and 100. Values below 30 indicate oversold conditions (potential bounce). Values above 70 indicate overbought conditions (potential reversal).

Output keyDescription
rsi_14RSI value, 0–100

Entry condition keys:

KeyTypeExampleWhen true
rsi_belowfloat30RSI(14) is below this value — oversold signal
rsi_abovefloat50RSI(14) is above this value — momentum confirmation

Exit condition keys:

KeyTypeExampleWhen true
rsi_abovefloat70RSI rose above threshold — overbought, exit long
rsi_belowfloat35RSI dropped below threshold — momentum fading

Typical usage:

{
  "entry_conditions": { "rsi_below": 30 },
  "exit_conditions": { "rsi_above": 70 }
}

MACD — Moving Average Convergence Divergence

Measures: Trend direction and momentum changes via moving average crossovers.

Periods: Fast EMA 12, slow EMA 26, signal EMA 9. Minimum data: 26 candles.

MACD produces three values: the MACD line (fast EMA minus slow EMA), the signal line (EMA of MACD), and the histogram (MACD minus signal). A bullish crossover happens when the MACD line crosses above the signal line.

Output keyDescription
macd_lineMACD line value
macd_signalSignal line value
macd_histHistogram (MACD - signal)

Condition keys:

KeyTypeExampleWhen true
macd_cross_above (entry)booltrueMACD line just crossed above signal — bullish
macd_cross_below (entry/exit)booltrueMACD line just crossed below signal — bearish

Typical usage:

{
  "entry_conditions": { "macd_cross_above": true, "adx_above": 25 },
  "exit_conditions": { "macd_cross_below": true }
}

macd_cross_above and macd_cross_below detect the crossover event — they are true only on the candle where the cross occurs, not on every subsequent candle.


SMA — Simple Moving Average

Measures: Trend direction by averaging the closing price over N candles.

Periods: 20 and 50. Minimum data: Equal to the period.

SMA smooths out price noise. When price is above a long-period SMA, the asset is in an uptrend. When price crosses above a short SMA from below, it signals a potential trend entry.

Output keyDescription
sma_2020-period simple moving average
sma_5050-period simple moving average

Entry condition keys:

KeyTypeExampleWhen true
price_above_smaint50Price is above the SMA of this period — uptrend filter
price_below_smaint20Price is below the SMA of this period — reversion setup

Typical usage:

{
  "entry_conditions": { "price_above_sma": 50, "macd_cross_above": true }
}

EMA — Exponential Moving Average

Measures: Trend direction like SMA but with more weight on recent prices, so it reacts faster.

Periods: 12 and 26. Minimum data: Equal to the period.

Output keyDescription
ema_1212-period exponential moving average
ema_2626-period exponential moving average

Entry condition keys:

KeyTypeExampleWhen true
price_above_emaint12Price is above the EMA of this period
price_below_emaint26Price is below the EMA of this period

Typical usage — fast-reacting trend filter:

{
  "entry_conditions": { "price_above_ema": 12, "volume_above_ma": 1.5 }
}

Bollinger Bands

Measures: Volatility and price extremes relative to a moving average.

Period: 20, standard deviation multiplier: 2. Minimum data: 20 candles.

Bollinger Bands produce three lines: the middle band (SMA-20), an upper band (SMA + 2 std), and a lower band (SMA - 2 std). When price touches the lower band, it may be oversold. When price breaks above the upper band, it may signal a breakout.

Output keyDescription
bb_upperUpper band (SMA + 2 std)
bb_middleMiddle band (SMA-20)
bb_lowerLower band (SMA - 2 std)

Entry condition keys:

KeyTypeExampleWhen true
bb_below_lowerbooltruePrice is below the lower band — mean reversion setup
bb_above_upperbooltruePrice is above the upper band — breakout signal

Typical usage — mean reversion:

{
  "entry_conditions": { "bb_below_lower": true, "rsi_below": 40 },
  "exit_conditions": { "rsi_above": 60 }
}

ADX — Average Directional Index

Measures: Trend strength (not direction — only how strong the trend is, regardless of which way it's going).

Period: 14. Minimum data: 15 candles.

ADX ranges from 0 to 100. Values above 25 indicate a strong trend is present. Values below 20 suggest a ranging, choppy market where trend-following strategies tend to underperform.

Output keyDescription
adxADX value, 0–100

Entry condition key:

KeyTypeExampleWhen true
adx_abovefloat25ADX is above this threshold — trend is strong enough to trade

Typical usage — trend filter (prevents entries in choppy markets):

{
  "entry_conditions": {
    "macd_cross_above": true,
    "adx_above": 25
  }
}

The recommendation engine flags adx_above thresholds above 30 as potentially too restrictive (missing valid entries) and below 15 as too permissive (entering in choppy markets). The 20–25 range is the sweet spot for most strategies.


ATR — Average True Range

Measures: Volatility — how much an asset moves per candle on average.

Period: 14. Minimum data: 15 candles.

ATR measures the average range of price movement across 14 candles. It is not used directly in entry/exit condition keys, but it appears in the observation space for Gymnasium environments where your model can use it as a volatility signal.

Output keyDescription
atrAverage true range in price units

ATR is most useful for dynamic position sizing — size smaller when ATR is high (volatile), larger when ATR is low (calm) — which you can implement in a Gymnasium agent or a custom strategy executor.


Volume Moving Average

Measures: Whether current trading volume is higher than the recent average — confirms that a price move has buying/selling conviction behind it.

Period: 20. Minimum data: 20 candles.

Output keyDescription
volume_ma_2020-period simple moving average of volume

Entry condition key:

KeyTypeExampleWhen true
volume_above_mafloat1.5Current volume > 1.5x the 20-period average

Typical usage — confirm breakouts with volume:

{
  "entry_conditions": {
    "bb_above_upper": true,
    "volume_above_ma": 2.0,
    "adx_above": 25
  }
}

Complete Condition Reference

All Entry Conditions (AND logic)

KeyTypeDescription
rsi_belowfloatRSI(14) below value — oversold
rsi_abovefloatRSI(14) above value — momentum
macd_cross_aboveboolMACD crossed above signal this candle
macd_cross_belowboolMACD crossed below signal this candle
price_above_smaintPrice above SMA of this period
price_below_smaintPrice below SMA of this period
price_above_emaintPrice above EMA of this period
price_below_emaintPrice below EMA of this period
bb_below_lowerboolPrice below lower Bollinger Band
bb_above_upperboolPrice above upper Bollinger Band
adx_abovefloatADX(14) above threshold
volume_above_mafloatVolume above N times the 20-period volume MA

All Exit Conditions (OR logic, priority order)

KeyTypePriorityDescription
stop_loss_pctfloat1 (highest)Exit when loss from entry >= this %
take_profit_pctfloat2Exit when gain from entry >= this %
trailing_stop_pctfloat3Exit when price drops this % from peak since entry
max_hold_candlesint4Force exit after N candles (prevents stuck positions)
rsi_abovefloat5Exit when RSI rises above value
rsi_belowfloat5Exit when RSI falls below value
macd_cross_belowbool5Exit when MACD turns bearish

Common Strategy Patterns

StyleEntryExit
RSI Oversold Bounce{"rsi_below": 30, "adx_above": 20}{"take_profit_pct": 5, "stop_loss_pct": 2}
MACD Momentum{"macd_cross_above": true, "volume_above_ma": 1.2}{"macd_cross_below": true, "stop_loss_pct": 3}
Bollinger Mean Reversion{"bb_below_lower": true, "rsi_below": 40}{"rsi_above": 60, "max_hold_candles": 24}
Trend Following{"price_above_sma": 50, "macd_cross_above": true, "adx_above": 25}{"trailing_stop_pct": 2, "stop_loss_pct": 4}
Volume Breakout{"price_above_ema": 20, "volume_above_ma": 2.0, "adx_above": 30}{"take_profit_pct": 8, "stop_loss_pct": 2}

Next Steps

On this page