Ease of Movement (eom)

Ease of Movement (EOM) relates the movement of candle midpoints to their high-low range and traded volume. When div is positive, an upward move produces a positive reading and a downward move produces a negative one. The absolute value grows when the displacement and range are large relative to volume. div sets the scale of these readings: a negative value reverses their sign, while a value of zero makes every otherwise-defined reading zero.

A simple moving average over length smooths these readings into the EOM series. With a positive div, a positive output means that upward readings dominate over that period, while a negative output means that downward readings dominate. A value near zero corresponds to movements that offset one another, have little displacement or range, or carry high volume relative to their amplitude.

Block declaration

A strategy can contain multiple [[eom]] blocks. Each block produces a distinct EOM series identified by its id field.

The block does not expose a source parameter because it always uses the candle high, low, and volume series. It derives hl2 from high and low.

Examples

Minimal setup

This block uses the default length 14, the default scale factor 10000, and the main symbol and timeframe defined in [backtest].

[[eom]]
id = "ease"

Custom fixed setup

This block uses a length of 20 for a smoother series and a scale factor of 5000. Given the same length and input data, this factor halves the values produced with the default 10000 without changing their sign.

[[eom]]
id     = "ease"
length = 20
div    = 5000

Finding the optimal length

This block explores several lengths during the grid search while keeping the default scale factor. Each length produces a different degree of smoothing, allowing a more responsive series to be compared with a steadier one.

[[eom]]
id           = "ease"
length.start = 10
length.stop  = 30
length.step  = 5

Crossing into positive territory

This example detects when EOM moves from a negative or zero value to a positive value. The condition is true only on the crossing candle: ease must be positive on the current candle and less than or equal to zero on the previous one.

[[eom]]
id = "ease"

[[condition]]
id            = "eom_turns_positive"
condition     = "ease > 0 and ease[1] <= 0"
next_block_id = "..."

Dedicated symbol and timeframe

This block computes EOM from the high, low, and volume of the daily candles from BINANCE:ETHUSDT, independently of the primary symbol and timeframe defined in [backtest]. See Exchanges, Symbols and Timeframes for alignment rules.

[[eom]]
id        = "ease_daily"
symbol    = "BINANCE:ETHUSDT"
timeframe = "D"

Parameters

ParameterDescription
id
 String
 Required
Unique name used to identify the EOM series produced by the block.
length
 Integer
 Optional
Number of defined values smoothed by the simple moving average; must be between 1 and 10000. A shorter length makes the series more responsive, while a higher length makes it steadier. Candles with zero volume are ignored and do not count towards these values. If length is omitted, the default is 14.

Usage:
• Fixed: length = value
• Grid search:
 – length.start = min_value
 – length.stop = max_value
 – length.step = value (optional, default 1)
div
 Integer
 Optional
Factor applied to the calculation to set the scale of the series. A positive value preserves the EOM sign and changes its magnitude proportionally. Zero reduces defined readings to zero, while a negative value reverses their sign. Any signed integer is accepted. If div is omitted, the default is 10000.

Usage:
• Fixed: div = value
• Grid search:
 – div.start = min_value
 – div.stop = max_value
 – div.step = value (optional, default 1)
symbol
 String
 or Array
 Optional
Market symbol from which EOM reads high, low, and volume. If symbol is omitted, the block uses the main symbol defined in [backtest]. For formats, arrays, and alignment rules, see Exchanges, Symbols and Timeframes.
timeframe
 String
 or Array
 Optional
Timeframe on which EOM is computed. If timeframe is omitted, the calculation uses the grid’s main timeframe defined in [backtest]. For accepted formats and timeframe alignment rules, see Exchanges, Symbols and Timeframes.

The source key is not accepted in [[eom]].

Available variables

Use the identifiers below directly in your expressions. The EOM block exposes one numeric series and its calculation parameters, together with its input sources, symbol, and timeframe.

Assume the block is configured as follows:

[[eom]]
id = "ease"

Then:

VariableDescription
ease or ease[0]
Decimal
Current Ease of Movement value.
ease[n]
Decimal
Ease of Movement value from n candles ago.
ease.length
Decimal
Smoothing length used by the ease series.
ease.div
Decimal
Scale factor applied to the ease series.
ease.high_source
ease.low_source
ease.volume_source
String
Names of the high, low, and volume input series used by EOM.
ease.symbol
String
Market symbol used by the EOM series.
ease.timeframe
String
Timeframe used by the EOM series.

Notes

  • Numeric variables support arithmetic, comparison, and logical operators.
  • Text variables are strings intended only for equality and inequality comparisons.