Heiken Ashi indicator isn't letting me export values!
Created at 12 Jan 2018, 03:33
Heiken Ashi indicator isn't letting me export values!
12 Jan 2018, 03:33
Hello fellow traders!
I'm trying to get the Heiken Ashi 'high'/'open'/'low'/'close' values from this indicator into my cBot but I keep getting weird log messages saying 'NaN' or "Error CS1061: 'cAlgo.Indicators.HeikenAshiSmoothed' does not contain a definition for 'haHigh'..."
I'm currently using a small test peice of code to try and display the values before I build my cBot around it, but I'm having a hard time figuring out whats wrong!
Here is the test code within the cBot:
[Robot(TimeZone = TimeZones.UTC, AccessRights = AccessRights.None)] public class NewcBot : Robot { private HeikenAshiSmoothed _heikenAshi; protected override void OnStart() { _heikenAshi = Indicators.GetIndicator<HeikenAshiSmoothed>(0, MovingAverageType.Simple); Print("start"); double xxTest = _heikenAshi.haHigh.LastValue; Print("{0}", xxTest); }
And here is the indicator code!
using System; using cAlgo.API; using cAlgo.API.Indicators; namespace cAlgo.Indicators { [Indicator(IsOverlay = true, AccessRights = AccessRights.None)] public class HeikenAshiSmoothed : Indicator { [Parameter(DefaultValue = 1, MinValue = 1)] public int Periods { get; set; } [Parameter("MA Type", DefaultValue = MovingAverageType.Simple)] public MovingAverageType MAType { get; set; } private MovingAverage maOpen; private MovingAverage maClose; private MovingAverage maHigh; private MovingAverage maLow; public IndicatorDataSeries haClose; public IndicatorDataSeries haOpen; protected override void Initialize() { maOpen = Indicators.MovingAverage(MarketSeries.Open, Periods, MAType); maClose = Indicators.MovingAverage(MarketSeries.Close, Periods, MAType); maHigh = Indicators.MovingAverage(MarketSeries.High, Periods, MAType); maLow = Indicators.MovingAverage(MarketSeries.Low, Periods, MAType); haOpen = CreateDataSeries(); haClose = CreateDataSeries(); } public override void Calculate(int index) { double haHigh; double haLow; Colors Color; if (index > 0 && !double.IsNaN(maOpen.Result[index - 1])) { haOpen[index] = (haOpen[index - 1] + haClose[index - 1]) / 2; haClose[index] = (maOpen.Result[index] + maClose.Result[index] + maHigh.Result[index] + maLow.Result[index]) / 4; haHigh = Math.Max(maHigh.Result[index], Math.Max(haOpen[index], haClose[index])); haLow = Math.Min(maLow.Result[index], Math.Min(haOpen[index], haClose[index])); Color = (haOpen[index] > haClose[index]) ? Colors.Red : Colors.Blue; ChartObjects.DrawLine("BarHA" + index, index, haOpen[index], index, haClose[index], Color, 5, LineStyle.Solid); ChartObjects.DrawLine("LineHA" + index, index, haHigh, index, haLow, Color, 1, LineStyle.Solid); } else if (!double.IsNaN(maOpen.Result[index])) { haOpen[index] = (maOpen.Result[index] + maClose.Result[index]) / 2; haClose[index] = (maOpen.Result[index] + maClose.Result[index] + maHigh.Result[index] + maLow.Result[index]) / 4; haHigh = maHigh.Result[index]; haLow = maLow.Result[index]; } } } }
/algos/indicators/show/311