Status
Closed
Budget
60.00 USD
Payment Method
Direct Payment
Job Description
Please view link below for full description
https://docs.google.com/document/d/1Dgqjg2Xe3ds22LEDEuLYydQvsV3bOVgbb3EnmIbAbSY/edit?usp=sharing
using System; using cAlgo.API; using cAlgo.API.Internals; using cAlgo.API.Indicators; namespace cAlgo { [Levels(0, 20, 40, 60, 80, 100)] [Indicator(IsOverlay = false, TimeZone = TimeZones.UTC, AccessRights = AccessRights.None, ScalePrecision = 2)] public class DSSBressert : Indicator { [Parameter("Stochastic period", DefaultValue = 13)] public int Stochastic_Period { get; set; } [Parameter("EMA period", DefaultValue = 8)] public int EMA_Period { get; set; } [Parameter("WMA period", DefaultValue = 8)] public int WMA_Period { get; set; } [Output("DSS", Color = Colors.White, Thickness = 1)] public IndicatorDataSeries DSS { get; set; } [Output("DSS Up", Color = Colors.DodgerBlue, PlotType = PlotType.Points, Thickness = 5)] public IndicatorDataSeries DSS_Up { get; set; } [Output("DSS Down", Color = Colors.Red, PlotType = PlotType.Points, Thickness = 5)] public IndicatorDataSeries DSS_Down { get; set; } [Output("WMA", Color = Colors.Gold, Thickness = 1)] public IndicatorDataSeries WmaResult { get; set; } [Output("L1", LineStyle = LineStyle.Solid, Color = Colors.LightGray)] public IndicatorDataSeries L1 { get; set; } [Output("L2", LineStyle = LineStyle.DotsRare, Color = Colors.LightGray)] public IndicatorDataSeries L2 { get; set; } [Output("L3", LineStyle = LineStyle.DotsRare, Color = Colors.LightGray)] public IndicatorDataSeries L3 { get; set; } [Output("L4", LineStyle = LineStyle.Solid, Color = Colors.LightGray)] public IndicatorDataSeries L4 { get; set; } private double Ln = 0; private double Hn = 0; private double LXn = 0; private double HXn = 0; private double alpha = 0; private IndicatorDataSeries mit; private WeightedMovingAverage WMA; protected override void Initialize() { mit = CreateDataSeries(); alpha = 2.0 / (1.0 + EMA_Period); WMA = Indicators.WeightedMovingAverage(DSS, WMA_Period); } public override void Calculate(int index) { L1[index] = 20; L2[index] = 40; L3[index] = 60; L4[index] = 80; if (double.IsNaN(mit[index - 1])) { mit[index - 1] = 0; } if (double.IsNaN(DSS[index - 1])) { DSS[index - 1] = 0; } Ln = MarketSeries.Low.Minimum(Stochastic_Period); Hn = MarketSeries.High.Maximum(Stochastic_Period); mit[index] = mit[index - 1] + alpha * ((((MarketSeries.Close[index] - Ln) / (Hn - Ln)) * 100) - mit[index - 1]); LXn = mit.Minimum(Stochastic_Period); HXn = mit.Maximum(Stochastic_Period); DSS[index] = DSS[index - 1] + alpha * ((((mit[index] - LXn) / (HXn - LXn)) * 100) - DSS[index - 1]); if (DSS[index] > DSS[index - 1]) { DSS_Up[index] = DSS[index]; DSS_Down[index] = double.NaN; } if (DSS[index] < DSS[index - 1]) { DSS_Down[index] = DSS[index]; DSS_Up[index] = double.NaN; } WmaResult[index] = WMA.Result[index]; } } }
James, can you explain in a few words what you want? Maybe then I can help you.
svtelet@gmail.com
Vladimir