All indicators

SWMA: Symmetric Weighted Moving Average

A moving average of the close with triangular weights, so the bars in the middle of the window count most and the ends count least.

BTCUSD1h
Fixed data to Oct 6, 2026, UTC
Loading the chart

The Symmetric Weighted Moving Average averages the close over the last period bars with weights shaped like a triangle. With half = (period - 1) / 2, the bar k bars back weighs half + 1 - |k - half|: the middle bar weighs most, and the weights fall off evenly toward the newest and the oldest bar. The weighted sum is divided by the total of the weights.

A triangle of weights is what you get by smoothing with a simple average twice, so it removes more short-term noise than a single simple average of the same length. The line starts once period bars exist and always uses the close.

How to read SWMA: Symmetric Weighted Moving Average

Read it as a smooth trend line. It is calmer than a simple average of the same length, so a turn in the line is less likely to be a single noisy bar. Price holding above a rising line describes an uptrend, and below a falling line a downtrend.

The weights peak in the middle of the window, so the line describes prices centred about half bars ago and lags by that much. Shorter periods follow price closely; longer ones show only the broad swing.

Settings

Period
How many bars the triangle spans. A longer period smooths more and lags more.

Frequently asked questions

Why are the middle bars weighted most?

The triangle puts its peak at the centre of the window. That shape filters short noise better than equal weights, at the cost of a lag of about half the window.

Can I choose a different price than the close?

No. The calculation is fixed to the close, so there is no source setting.

When does the line appear?

Once period bars exist. Before that the oldest tap has no bar to read, so nothing is drawn.

Write your own in OpenScript

Every study here is plain OpenScript. Change a setting, combine two, or turn one into a strategy, then backtest it in /trading and run it in sandbox trading (analyzer mode in OpenAlgo) before going further.