Indicator · Pine Script v6 · Own pane

Linear Transformation (LINEAR)

by mihakralj

This indicator plots a linear transformation of a chosen price source in a separate pane.

View on GitHub

GitHub stars47on the repository
Pine versionv6current
Lines of code46
Settings4inputs
LicenceMIT
Last update8 months ago28 Feb 2026

Add It to Your TradingView Chart

  1. 1Copy the scriptPress Copy script above, or the copy button on the code below.
  2. 2Open the Pine EditorOpen a TradingView chart and choose Pine Editor at the bottom of the screen.
  3. 3Paste over the templateCreate a new indicator, select all of the template text and paste. Press Save and give it a name.
  4. 4Add it to the chartPress Add to chart, then adjust the settings with the gear icon next to its name.

Source Code

46 lines of Pine Script v6 from indicators/numerics/linear.pine, published under MIT. Keep the author's credit and licence lines when you reuse it.

linear.pine
// The MIT License (MIT)
// © mihakralj
//@version=6
indicator("Linear Transformation (LINEAR)", "LINEAR", overlay=false)

//@function Applies a linear transformation (y = a*(x - sma) + sma + b) relative to the source's SMA, calculated internally.
//@param source series float The input series to transform.
//@param period simple int The lookback period for the internal SMA calculation.
//@param a float The scaling factor (slope).
//@param b float The offset (intercept).
//@returns series float The linearly transformed series relative to its internally calculated SMA.
//@optimized for performance and dirty data
linear(series float source, float a, float b) =>
    if na(source) or na(a) or na(b)
        runtime.error("Parameters 'source', 'a', 'b' cannot be na and 'period' must be > 0.")
    var int p = 200
    var array<float> buffer = array.new_float(p, na)
    var int head = 0
    var float sum = 0.0
    var int valid_count = 0
    float oldest = array.get(buffer, head)
    if not na(oldest)
        sum -= oldest
        valid_count -= 1
    if not na(source)
        sum += source
        valid_count += 1
    array.set(buffer, head, source)
    head := (head + 1) % p
    smaValue = nz(sum / valid_count, source)
    a * (source - smaValue) + smaValue + b


// ---------- Main loop ----------

// Inputs
i_source = input(close, "Source")
i_smaPeriod = input.int(200, "SMA Period", minval=1)
i_a = input.float(2.0, "Scale (a)")
i_b = input.float(20.0, "Offset (b)")

// Calculation
transformedSource = linear(i_source, i_a, i_b)

// Plot
plot(transformedSource, "Linear Transformation", color=color.yellow, linewidth=2)

Overview

Linear Transformation (LINEAR) computes a streaming simple moving average, then scales the source deviation from that average by factor a and adds offset b, so the result equals a times the deviation plus the average plus b. Scale and offset change the slope and vertical shift. The SMA length input is declared but not passed into the calculation; the average stays fixed at 200 bars. It does not generate entries, exits, or stop rules.

Details

Published by

mihakralj on GitHub

Type

Indicator, Pine Script v6

Draws

Separate pane below the chart

Category

Moving averages

Markets

Any symbol

Timeframes

Any timeframe

Risk Notes

No repainting, lookahead or stacked entries were found in its code or README. That says nothing about how well it works: test it first.

Topics

pinescriptpinescript-indicatorstechnical-analysistradingview-indicators

Settings

The inputs you can change from the gear icon on the chart. Defaults are the author's.

SettingTypeDefaultVariable
Sourcesourceclosei_source
SMA Periodint200i_smaPeriod
Scale (a)float2.0i_a
Offset (b)float20.0i_b
Third-party code. ForexR did not write, test or endorse this script, and the summary above was generated automatically from its code and README. Indicators describe the past, and a strategy's backtest can look better than live trading, especially when a script repaints. Check it in the Strategy Tester and on a demo account before you rely on it.

Similar Pine Scripts

948 stars

The Derivative Oscillator calculates a double-exponentially smoothed Relative Strength Index (RSI) and subtracts its Simple Moving Average (SMA) to form the main oscillator line. A secondary signal line is plotted using an SMA of the main oscillator values. Th

Indicator v4 Oscillators & momentumMoving averages
Updated 10 days ago · GPL-3.0 GitHub repository of Derivative Oscillator

Beep Boop

by magic8bot
409 stars

This indicator calculates a modified MACD oscillator and signal line alongside a trend EMA filter, plotting the output as a stylized column histogram in a separate pane. Instead of plotting true MACD distance, it quantifies positive and negative histogram mome

Indicator v4 Oscillators & momentumTrend
Updated 3 years ago · MIT GitHub repository of Beep Boop

MACD

by Alorse
330 stars

This indicator calculates and plots the standard Moving Average Convergence Divergence oscillator in a separate pane. It computes the difference between a fast and slow moving average, derives a signal line through smoothing, and plots a histogram representing

Indicator v4 Oscillators & momentumMoving averages
Updated 2 months ago · None stated GitHub repository of MACD
318 stars

Calculates and plots moving averages on selected VIX volatility terms (VIX9D, VIX, VIX3M, or VIX6M) in a separate pane. The script computes user-defined short and long moving averages using EMA or SMA. It shades the background red when the short-term moving av

Indicator v5 Volatility & bandsMoving averages
Updated 2 months ago · MIT GitHub repository of [TVT] VIX Short Term Danger

f_push()

by ricardosantos79
261 stars

This demonstration script implements a custom FIFO array push function in Pine Script v4. It maintains a fixed-length array of closing prices by popping the oldest value and inserting the newest close at the front index. The script plots the newest price eleme

Indicator v4 Moving averages
Updated 4 years ago · None stated GitHub repository of f_push()
257 stars

Donald SPX - Options Trading is an indicator designed to assist SPX index option traders by tracking session benchmarks and multi-timeframe moving average data. It calculates a 200-period weighted moving average (WMA) and requests multi-timeframe bar data from

Indicator v5 Moving averagesScreeners & dashboards Repaints
Updated 6 weeks ago · None stated GitHub repository of Donald SPX - Options Trading

More indicators

Trade Your Charts With a Regulated Broker

Compare brokers that connect to TradingView, with spreads, minimum deposits and leverage side by side.

Compare brokers