Warning! This section will be deprecated on February 1st 2025. Please move all your Indicators to the cTrader Store catalogue.
An update for this algorithm is currently pending moderation. Please revisit this page shortly to access the algorithm's latest version.
Description
The indicator displays on the price chart a moving average with the JSmooth smoothing type (the smoothing type proposed by Mark Jurik).
mfejza
Joined on 25.01.2022
- Distribution: Free
- Language: C#
- Trading platform: cTrader Automate
- File name: mJSmoothMA.algo
- Rating: 5
- Installs: 557
- Modified: 27/07/2023 11:13
Note that publishing copyrighted material is strictly prohibited. If you believe there is copyrighted material in this section, please use the Copyright Infringement Notification form to submit a claim.
Comments
Log in to add a comment.
for unknown some reasons I can not upload source code of indicator. please get it from comnet content
using System;
using cAlgo.API;
using cAlgo.API.Indicators;
using cAlgo.API.Internals;
namespace cAlgo
{
[Indicator(IsOverlay = true, AccessRights = AccessRights.None)]
public class mJSmoothMA : Indicator
{
[Parameter("Periods (20)", DefaultValue = 20)]
public int inpPeriod { get; set; }
[Output("MarkJuric Smooth MovingAverage", LineColor = "Orange", PlotType = PlotType.Line, LineStyle = LineStyle.Solid, Thickness = 2)]
public IndicatorDataSeries outJSMA { get; set; }
private double alpha, alpha1, alpha2;
private IndicatorDataSeries _a1, _a2, _a3, _a4, _jsma;
protected override void Initialize()
{
alpha = 0.45 * (inpPeriod - 1) / (0.45 * (inpPeriod - 1) + 2);
alpha1 = alpha * alpha;
alpha2 = (1 - alpha) * (1 - alpha);
_a1 = CreateDataSeries();
_a2 = CreateDataSeries();
_a3 = CreateDataSeries();
_a4 = CreateDataSeries();
_jsma = CreateDataSeries();
}
public override void Calculate(int i)
{
_a1[i] = (1 - alpha) * Bars.ClosePrices[i] + alpha * (i>1 ? _a1[i-1] : 0);
_a2[i] = (1 - alpha) * (Bars.ClosePrices[i] - _a1[i]) + alpha * (i>1 ? _a2[i-1] : 0);
_a3[i] = _a1[i] + _a2[i];
_a4[i] = (_a3[i] - (i>1 ? _jsma[i-1] : Bars.ClosePrices[i])) * alpha2 + alpha1 * (i>1 ? _a4[i-1] : 0);
_jsma[i] = (i>1 ? _jsma[i-1] : Bars.ClosePrices[i]) + _a4[i];
outJSMA[i] = _jsma[i];
}
}
}
Please continue to support Drift Hunters and join me in discovering the next exciting things the game has to offer!