Any of the 5 moving averages (EXPONENTIAL HULL SIMPLE WEIGHTED WILDERS) can be shortened (truncated) to your desired length via the Plot Length input (min. of 1)
Script includes: TimeFrame, AverageType, PlotLength, AddChartBubble with Bubble mover, Breakout signals.
Image has bars' transparency setting of 50% for clarity:
Script includes: TimeFrame, AverageType, PlotLength, AddChartBubble with Bubble mover, Breakout signals.
Code:
input Price = close;
input TimeFrame = AggregationPeriod.MIN;
input AverageType = AverageType.EXPONENTIAL; # EXPONENTIAL HULL SIMPLE WEIGHTED WILDERS
input AverageLength = 10;
input PlotLength = 10;
input Displace = 0;
input Bubble = no; # Bubble visible: default is OFF
input BubbleMoveH = 0; # Bubble Move Horizontal
input BubbleMoveV = 0.0; # Bubble Move Vertical
input showBreakoutSignals = no;
def lastBar = HighestAll(If(IsNaN(close), 0, BarNumber()));
plot MA = if BarNumber() < lastBar - PlotLength then Double.NaN else
MovingAverage(AverageType, close(period = TimeFrame), AverageLength); # MA = Moving Average
MA.DefineColor("Up", GetColor(6));
MA.DefineColor("Down", GetColor(5));
MA.AssignValueColor(if MA > MA[1] then MA.Color("Up") else MA.Color("Down"));
MA.SetLineWeight(1);
MA.SetStyle(1);
MA.HideBubble(); # Place hashtag ( # ) before code to show MA Bubble price on Y axis
MA.HideTitle(); # Place hashtag ( # ) before code to show MA Bubble price in Chart Title
# Breakout Arrows
plot UpSignal = Price crosses above MA;
plot DownSignal = Price crosses below MA;
UpSignal.SetHiding(!showBreakoutSignals);
DownSignal.SetHiding(!showBreakoutSignals);
MA.SetDefaultColor(GetColor(1));
UpSignal.SetDefaultColor(Color.UPTICK);
UpSignal.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_UP);
DownSignal.SetDefaultColor(Color.DOWNTICK);
DownSignal.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_DOWN);
# Bubble Mover
def data = if IsNaN(MA) then data[1] else MA + BubbleMoveV * TickSize();
def x = !IsNaN(close[(0 + (+BubbleMoveH))]) and IsNaN(close[(-1 + (+BubbleMoveH))]);
def y = data;
AddChartBubble(Bubble and x, y, " " + Round(y, 2),
if data > data[1] then MA.Color("Up") else MA.Color("Down"),
if data > data[1] then yes else no);
def k = 0;
def BubbleLine = IsNaN(MA[k + 0]) and !IsNaN(MA[BubbleMoveH + 0]);
def w = if (Bubble and !IsNaN(close[k]) and IsNaN(close[k - 1])) then MA[k] else if BubbleLine then w[1] else Double.NaN;
plot zw = w;
zw.SetDefaultColor(Color.GRAY); # (128,128,128)
zw.SetLineWeight(1);
zw.SetStyle(1);
zw.HideBubble();
zw.HideTitle();
Image has bars' transparency setting of 50% for clarity: