futures io

Categories Help    

MultiCharts Downloads / MultiCharts Indicators

Share MultiCharts indicators, EasyLanguage indicators.

Sort by

Show full/short entries Entries
Function for Normalizing Indicator Values 5 *
What follows is a function that normalizes an indicator value between a max and min value of +50/-50. This is a derivation of the normalization function as described in the section "Historical Adjustment to Improve Stationarity" within the book Statistically Sound Machine Learning for Algorithmic Trading of Financial Instruments by David Aronson and Timothy Masters.

The goal of normalization is to retain any predictive value of an indicator that gains its importance from its current value relative to recent values. This normalization process imparts stationarity on the indicator. From the text, "In most case, stationarity improves the accuracy of predictive models. (Recall that, roughly speaking, stationarity means that the statistical properties of an indicator do not change over time.)".

The attached function is in easylanguage syntax. It should be able to take any raw indicator value and normalize it by both centering and scaling it within a range of +50/-50.

Attached is a text file of the easy language code.

I hope you find this useful.

08/15/2021 v001 - corrected the function name return value to the name of the text file

Suggest other entries I might like
Details: Function for Normalizing Indicator Values

August 14th, 2021
Size: 2.77 KB
Downloaded: 36 times
Stochastic MACD from TASC November 2019
This is the Stochastic MACD Indicator for Multicharts. Enjoy.
Suggest other entries I might like
Details: Stochastic MACD from TASC November 2019

March 11th, 2021
Size: 4.74 KB
Downloaded: 29 times
Kaufman AMA with Trend Change
This indicator is the Kaufman Adaptive Moving Average, a/k/a KAMA, but which changes color when the indicator changes direction. This is a direct descendant of the Mov Avg Adaptive indicator that comes with MultiCharts.

I like single line indicators that change color when a trend changes, so this is my implementation of the KAMA with those attributes. The screenshot here is actually from TradeStation, but it looks and functions the same in MC.

Indicator Name: Mov Avg Adaptive Color Change
Inputs: Same as a normal KAMA, plus:
  • UsePlotColoring >>> set to true for coloring; false to turn it off
  • UpTrendColor >>> self explanatory
  • DownTrendColor >>> self explanatory
Small Difference in Original Calculation:
I added the Round2Fraction function to the MAA calculation, to round to the nearest minimum move for the chart. This helps filter out minor fluctuations when the indicator is practically flat, that may show a change in trend that isn't there. I don't believe this fundamentally changes anything, from my observations.

Import the PLA and apply to a chart. You're all set!

I posted a TradeStation version in that section, as the syntax is slightly different.
Suggest other entries I might like
Details: Kaufman AMA with Trend Change

September 30th, 2020
Size: 5.55 KB
Downloaded: 82 times

Keywords: adaptive average kama kaufman moving
Donchian Channel
MultiCharts .NET64 Version 12.0 Release (Build 18187)

using System;
using System.Drawing;
using System.Linq;
using PowerLanguage.Function;

namespace PowerLanguage.Indicator
	public class Donchian Channel : IndicatorObject
		public Donchian Channel(object _ctx):base(_ctx)
			n_bars = 5;

        public int n_bars { get; set; }
		private IPlotObject plothigh, plotlow;
		protected override void Create()
			plothigh = AddPlot(new PlotAttributes("plothigh", EPlotShapes.Line, Color.Red));
			plotlow = AddPlot(new PlotAttributes("plotlow", EPlotShapes.Line, Color.Red));
		protected override void StartCalc()
		protected override void CalcBar()
			if(Bars.High[5] > 0 && Bars.Low[5] > 0)
Suggest other entries I might like
Details: Donchian Channel

October 7th, 2019
Size: 1.73 KB
Downloaded: 106 times
Market Acceleration Indicator
Hi Traders,
I find it necessary to make sure to stay out of the markets when they are "slow" vs "fast". However, historically that is challenging as it has been quite subjective. Watching the time and sales order flow gives a sense, but what is fast now vs earlier or another time period is still subjective.

I wrote the following simple indicator which gives some level of quantitative visibility if the mkt is moving fast vs slow. The indicator takes the time difference between the the last tick update of the bar compared to the previous tick update. A slower market will have a longer duration and therefore a larger value. A fast market will have very short durations of updates with values closer to 0.

I trade with tick charts so that is the lens that I am viewing this indicator. I wanted to have the values coincide with visual trend of values that are trending "up" (faster) vs "down" indicating slower mkts. That is why I applied a sign reversal to the values in the code.

When using the indicator, values closer to 0 indicates very fast, vs. values with larger negative values represent a slower market (hence the duration between updates is longer in duration). In the screenshot, I have a green line and red line manually applied which are my thresholds for fast vs slow. Those levels were based on my own analysis and screen time of the market being traded. You will have to gauge levels yourself based on the market and chart used.

Suggestions welcome and glad to contribute.

Code written in easy-language with use with MC 64 v12.0

Indicator version v000.01

Suggest other entries I might like
Details: Market Acceleration Indicator

March 29th, 2019
Size: 9.21 KB
Downloaded: 213 times
RSI Clone of the original Jurik RSX
I came across some code in that plotted an RSI clone of the original Jurik RSX indicator. I have no idea if there is any similarity between the two. But, it was fun converting the code into multicharts. I am giving the code here.
I have attached a PLA file which can be use by multichart users. Also an image showing the RSX Clone together with the original RSI

Name: RSI Clone of the original Jurik RSX
Version: 1.00
Date: 21-08-2017

{Mark Jurik is a well known and respected name in technical analysis. he provides a number of advanced tools to traders.
The JMA is his product, which is a smoother, less noisy and low lag moving average.
Mr Jurik also provides a smoother, low lag RSI. 
I cam accross a code in which calculated a Jurik RSI Clone. Now,it is quite possible that the clone may be
nothing like the original Jurik RSI.
But, for whatever it is worth, I converted the tradingview code into Multicharts which is easylanguage compatible}

{ Trading viewcode is here:}

input: src(close), Length(14), lvlob(70), lvlos(30), mid(50);
vars: f90_(1), f88(1);
vars: clampmax(0), clampmin(0);
vars: f8(1), f18(1),f20(1),f10(1),v8(1);
vars: f28(1), f30(1), vC(1);
vars: f38(1),f40(1), v10(1),f48(1),f50(1),v14(1),f58(1),f60(1),v18(1);
vars: f68(1),f70(1), v1C(1), f78(1),f80(1), f90(1), v20(1),f0(1),v4(1),v4_(1),rsx(1);

clampmax = 100;
clampmin = 0;

if currentbar > 1 then begin
if f90_[1] = 0 then begin
f90_ = 1;
else begin 
if f88[1] <= f90_[1] then begin
f90_ = f88[1] + 1; 
else begin
f90_ = f90_[1] + 1;

if f90_[1] = 0.0 and (length-1 >= 5) then begin
f88 = Length - 1.0;
else begin
f88 = 5.0;

f8 =  100.0*(src); 
f18 = 3.0 / (length + 2.0) ;
f20 = 1.0 - f18 ;
f10 = f8[1];
v8 = f8 - f10 ;

f28 = f20 * f28[1] + f18 * v8; 
f30 = f18 * f28 + f20 * f30[1];
vC = f28 * 1.5 - f30 * 0.5; 

f38 = f20 * f38[1] + f18 * vC; 
f40 = f18 * f38 + f20 * f40[1];
v10 = f38 * 1.5 - f40 * 0.5; 
f48 = f20 * f48[1] + f18 * v10; 
f50 = f18 * f48 + f20 * f50[1];
v14 = f48 * 1.5 - f50 * 0.5; 
f58 = f20 * f58[1] + f18 * absvalue(v8); 
f60 = f18 * f58 + f20 * f60[1];
v18 = f58 * 1.5 - f60 * 0.5;

f68 = f20 * f68[1] + f18 * v18; 
f70 = f18 * f68 + f20 * f70[1];
v1C = f68 * 1.5 - f70 * 0.5; 
f78 = f20 * f78[1] + f18 * v1C;  
f80 = f18 * f78 + f20 * f80[1]; 
v20 = f78 * 1.5 - f80 * 0.5;

if (f88 >= f90_) and (f8 <> f10) then 
f0 = 1.0 else f0 = 0.0;

if (f88 = f90_) and (f0 = 0.0) then f90 = 0 else f90 = f90_;

if (f88 < f90) and (v20 > 0.0000000001) then
v4_ =  (v14 / v20 + 1.0) * 50.0 
v4 = 50.0;

if (v4_ > 100.0) then begin
rsx = 100.0;
else begin
if v4_ < 0.0 then rsx = 0 else rsx = v4_;

Suggest other entries I might like
Details: RSI Clone of the original Jurik RSX

August 21st, 2017
Size: 8.60 KB
Downloaded: 244 times
Custom Fibonacci Floor Trader Pivots MC.NET 10 5 *
Here's a set of Fibonacci pivots built off of the Custom Floor Trader Pivots generously supplied by Japhro.

Fibonacci pivot points start just the same as standard pivot points. From the base pivot point, Fibonacci multiples of the high-low differential are added to form resistance levels and subtracted to form support levels.

PLN file is zipped to allow upload.
Suggest other entries I might like
Details: Custom Fibonacci Floor Trader Pivots MC.NET 10

April 4th, 2017
Size: 3.61 KB
Downloaded: 168 times
Custom PSAR for MC.NET 10
This is the standard PSAR supplied with MC.NET with the option to change the color of the Bullish and Bearish plots.

PLN file is zipped to allow upload.
Suggest other entries I might like
Details: Custom PSAR for MC.NET 10

April 2nd, 2017
Size: 1.49 KB
Downloaded: 80 times
Custom Floor Trader Pivots for MC.NET 5 *
I wasn't a fan of the standard floor trader pivots indicator in so I had someone revamp it, it was a paid job, since I am not a programmer but I am happy to share it here. My contribution to the community, I suppose.

The standard pivots had a dashed line, even if you selected line, the older sessions pivots cluttered up the chart and the labelling wasn't to my liking, with only markers that covered up the last price marker on the chart axis. We also added pivot mid-points which in my trading experience are very important. Hope you like this one better doesn't allow me to upload the file as is with the .pln extension, so I had to zip it

Since all MC.NET indicators are .pln extension perhaps that can be added to the list of acceptable file types to upload?
Thanks - J
Suggest other entries I might like
Details: Custom Floor Trader Pivots for MC.NET

September 16th, 2016
Size: 3.62 KB
Downloaded: 216 times
DMI change bar color 2 *
I want to change the ID code to change color when there is current bar cross between DM + DM uphill (blue) and down (red). The other bars are still black. View Source (not working)

using System.Drawing;
using PowerLanguage.Function;

namespace PowerLanguage.Indicator
public class DMI_joa : IndicatorObject
private DirMovement m_dirmovement1;

private IPlotObject Plot1;

private IPlotObject Plot2;

private IPlotObject Plot3;

public DMI_joa(object ctx) :
adxtrend = 25;
length = 8;

public int length { get; set; }

public double adxtrend { get; set; }

public Color UpbarColour { get; set; }

public Color DownBarColour { get; set; }

private IPlotObject plotOpen, plotHigh, plotLow, plotClose;

protected override void Create(){
m_dirmovement1 = new DirMovement(this);
Plot1 =
AddPlot(new PlotAttributes("DMI+", 0, Color.Blue,
Color.Empty, 0, 0, true));
Plot2 =
AddPlot(new PlotAttributes("DMI-", 0, Color.Red,
0, 0, true));
Plot3 =
AddPlot(new PlotAttributes("ADX", 0, Color.Cyan,
Color.Empty, 0, 0, false));

// Initialize the IPlotObjects
plotHigh = AddPlot(new PlotAttributes("High",
EPlotShapes.BarHigh, Color.Black));
plotLow = AddPlot(new PlotAttributes("Low",
EPlotShapes.BarLow, Color.Black));
plotOpen = AddPlot(new PlotAttributes("Open",
EPlotShapes.LeftTick, Color.Black));
plotClose = AddPlot(new PlotAttributes("Close",
EPlotShapes.RightTick, Color.Black));

// Default values for the inputs
UpbarColour = Color.Green;
DownBarColour = Color.Red;

protected override void StartCalc(){
m_dirmovement1.PriceH = Bars.High;
m_dirmovement1.PriceL = Bars.Low;
m_dirmovement1.PriceC = Bars.Close;
m_dirmovement1.Length = length;

protected override void CalcBar(){
Plot1.Set(0, m_dirmovement1.DMIPlus.Value);
Plot2.Set(0, m_dirmovement1.DMIMinus.Value);
Plot3.Set(0, m_dirmovement1.ADX.Value);

if (PublicFunctions.DoubleGreater(m_dirmovement1.ADX.Value, adxtrend))
if (this.CrossesOver(m_dirmovement1.DMIPlus, m_dirmovement1.DMIMinus))
Alerts.Alert("Bullish alert");
// plotOpen.Set(Bars.Open[0], UpbarColour);
// plotHigh.Set(Bars.High[0], UpbarColour);
// plotLow.Set(Bars.Low[0], UpbarColour);
// plotClose.Set(Bars.Close[0], UpbarColour);
if (this.CrossesUnder(m_dirmovement1.DMIPlus, m_dirmovement1.DMIMinus))
Alerts.Alert("Bearish alert");
// plotOpen.Set(Bars.Open[0], DownBarColour);
// plotHigh.Set(Bars.High[0], DownBarColour);
// plotLow.Set(Bars.Low[0], DownBarColour);
// plotClose.Set(Bars.Close[0], DownBarColour);

I tried to SetPlotColor and PlotPaintBar and do not get
By the way I use
Can you help me? Thank you
Suggest other entries I might like
Details: DMI change bar color

November 16th, 2015
Size: 14.72 KB
Downloaded: 94 times


Copyright © 2021 by futures io, s.a., Av Ricardo J. Alfaro, Century Tower, Panama, Ph: +507 833-9432 (Panama and Intl), +1 888-312-3001 (USA and Canada),
All information is for educational use only and is not investment advice.
There is a substantial risk of loss in trading commodity futures, stocks, options and foreign exchange products. Past performance is not indicative of future results.