OPEN-SOURCE SCRIPT
已更新

Ease-of-Movement Flow Oscillator

344
Ease-of-Movement Flow Oscillator

A volume oscillator that measures how easily price moves — distance travelled relative to the volume required to travel it. Large travel on light volume = high ease (a frictionless drift); small travel on heavy volume = low ease (absorption — effort without result). Above zero, price advances with little resistance; below zero, it declines with little resistance. It adds an absorption warning and a plain-language forward-calibration layer, so you can tell at a glance whether a move is frictionless or being absorbed, and whether the signal has actually paid here.

Why these parts are combined (not a mashup for show). Ease of movement relates distance to the volume needed for it — a different question from "buying vs selling." A frictionless advance and an absorbed advance look identical on a price chart but behave differently next, so that's the core read. An effort-vs-result check (price making a new extreme while ease does not) flags absorption — heavy volume no longer moving price — which the raw line alone misses. Forward calibration removes blind faith: instead of assuming a cross "should" pay, it measures whether it actually has, with realistic profit/stop outcomes. Together they form one coherent volume-flow tool.

How it works. Distance moved = midpoint change; box ratio = (volume ÷ scale) ÷ range. Ease = distance ÷ box ratio, smoothed, standardized and soft-bounded to ±100 that auto-fits its own magnitude. A signal fires only when ease decisively clears a confirmation band beyond zero (filtering the constant zero-line chatter). Absorption divergence is detected from confirmed price pivots versus the ease line. Each signal is then labelled by a triple barrier — a profit target and equal stop in ATR units plus a time limit — split into in-sample and recent out-of-sample, with a confidence interval and a multiple-testing check.

How to use. Read the Verdict row (Long/Short, Absorption, or Wait) and the Conviction row, which reads "High" only when that signal type shows a positive edge that survives the test on this symbol. Green above zero = easy up, red below = easy down; shaded bands = strong ease; the faint band lines mark where signals fire. Best used with your own trend and risk plan, not alone.

What's original. The absorption (effort-vs-result) flag, auto volume scaling, a noise-filtering signal band, the forward triple-barrier calibration with an out-of-sample split, and a conviction read that openly admits when there's no proven edge.

Volume note. This needs real volume — use a futures contract such as NSE:NIFTY1!. On a cash index it reports "No volume" rather than printing noise.

Honesty & limitations. Edge figures are computed on this chart's own history with overlapping windows and no costs — context, not a guaranteed backtest; past behaviour doesn't predict the future. Volume quality varies by feed and instrument.

Disclaimer: for research and education only. Not financial advice. Trading carries risk of loss; manage your own positions.
版本注释
minor change
版本注释
Performance upgrade: the forward-calibration engine now computes its triple-barrier outcome once per bar and reuses it, instead of recomputing the identical result three times — noticeably faster loading and lower runtime with byte-for-byte identical signals, stats, and visuals. No behaviour, inputs, or outputs changed. Same tool, leaner engine.
版本注释
v1.1 — Correctness + finishing pass

- Correctness (important): the buy/sell crossovers called ta.crossover / ta.crossunder from behind a
short-circuiting "has volume" check, so on no-volume symbols and before cumulative volume turned
positive they were skipped and could misfire once volume appeared. They now run on every bar as
Pine requires, with the volume check applied to the result. On normal volume symbols the signals
look the same; the fix clears the warning and corrects the volume-onset edge cases.
- Added a Data Window (EXP_) export bus so the ease line, signals and absorption read can feed other
scripts via input.source().
- Added a cost model: a new "Round-trip cost (R)" input and a Net R row. Conviction now requires a
signal to BOTH beat its base rate (Wilson) AND survive costs — a gross edge that costs eat through
is not tradeable, and the panel now says so.
- Added the MPL-2.0 licence header.

Descriptive research tooling, in-sample statistics, not investment advice.

免责声明

这些信息和出版物并非旨在提供,也不构成TradingView提供或认可的任何形式的财务、投资、交易或其他类型的建议或推荐。请阅读使用条款了解更多信息。