Midpoint Over Period (MIDPOINT)
period = 14 (2–200) Overview
MIDPOINT computes the center of the rolling range by tracking the highest and lowest values over the last period samples, then averaging them: (max + min) / 2. Because it responds immediately when a new high or low enters the window, it provides a simple, interpretable equilibrium line that adapts to volatility and range expansion.
Traders use MIDPOINT as a trend/mean‑reversion reference: price above the midpoint suggests strength within the recent range; price below suggests weakness. It’s also useful as a baseline series for other transforms and filters when you want range‑aware smoothing without EMA-style recursion.
Implementation Examples
Compute MIDPOINT from a slice or candles:
use vector_ta::indicators::midpoint::{midpoint, MidpointInput, MidpointParams};
use vector_ta::utilities::data_loader::{Candles, read_candles_from_csv};
let data: Vec<f64> = vec![/* ... */];
let input = MidpointInput::from_slice(&data, MidpointParams { period: Some(14) });
let out = midpoint(&input)?;
let candles: Candles = read_candles_from_csv("data/sample.csv")?;
let input = MidpointInput::with_default_candles(&candles); // source="close", period=14
let out = midpoint(&input)?;
for v in out.values { println!("MIDPOINT: {}", v); } Python Bindings
Quick Start ▼
import numpy as np
from vector_ta import midpoint, midpoint_batch, MidpointStream
data = np.asarray([...], dtype=np.float64)
values = midpoint(data, period=14, kernel=None)
stream = MidpointStream(period=14)
for x in data:
v = stream.update(float(x))
if v is not None:
handle(v)
res = midpoint_batch(data, period_range=(5, 30, 5), kernel=None)
values_grid = res['values'] JavaScript/WASM Bindings
Basic Usage ▼
import { midpoint_js, midpoint_batch } from 'vectorta-wasm';
const data = new Float64Array(loadData());
const values = midpoint_js(data, 14);
const out = midpoint_batch(data, { period_range: [5, 30, 5] });
console.log(out.rows, out.cols); Memory-Efficient Operations ▼
import { midpoint_alloc, midpoint_free, midpoint_into, memory } from 'vectorta-wasm';
const len = data.length;
const inPtr = midpoint_alloc(len);
const outPtr = midpoint_alloc(len);
new Float64Array(memory.buffer, inPtr, len).set(data);
midpoint_into(inPtr, outPtr, len, 14);
const values = new Float64Array(memory.buffer, outPtr, len).slice();
midpoint_free(inPtr, len);
midpoint_free(outPtr, len); CUDA Bindings (Rust)
No Rust CUDA bindings are currently available for "midpoint".
Performance Analysis
AMD Ryzen 9 9950X (CPU) | NVIDIA RTX 4090 (GPU) | Benchmarks: 2026-01-08
Related Indicators
Average Directional Index
Technical analysis indicator
Average Directional Movement Index Rating
Technical analysis indicator
Alligator
Technical analysis indicator
Aroon
Technical analysis indicator
Aroon Oscillator
Technical analysis indicator
Chande Momentum Oscillator
Technical analysis indicator