What do I have to write? HeikenAshiJohn

Created at 12 Aug 2018, 15:54

What do I have to write? HeikenAshiJohn
12 Aug 2018, 15:54


//#reference: ..\Indicators\HeikenAshiJohn.algo
using System;
using System.Linq;
using cAlgo.API;
using cAlgo.API.Indicators;
using cAlgo.API.Internals;
using cAlgo.Indicators;

namespace cAlgo.Robots
{
    [Robot(TimeZone = TimeZones.UTC)]
    public class HAK : Robot
    {

        [Parameter(DefaultValue = 5, 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;
        private IndicatorDataSeries haClose;
        private IndicatorDataSeries haOpen;


        private HeikenAshiJohn HAJ;



        protected override void OnStart()
        {
            HAJ = Indicators.GetIndicator<HeikenAshiJohn>(Periods, MAType);
            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();

        }

        protected override void OnTick()
        {
            int lastBarIndex = MarketSeries.Close.Count - 2;
            int prevBarIndex = lastBarIndex - 1;

            int bars = MarketSeries.Close.Count - 1;

            double haj = maOpen.Result[maOpen.Result.Count - 2];

            if (haj > 0 && !double.IsNaN(maOpen.Result[-1]))

                ExecuteMarketOrder(TradeType.Buy, Symbol, 1000, "Buy", null, 10);

        }
    }
}


@maintenancevlh2018@gmail.com
Replies

maintenancevlh2018@gmail.com
12 Aug 2018, 15:56

//#reference: ..\Indicators\HeikenAshiJohn.algo
using System;
using System.Linq;
using cAlgo.API;
using cAlgo.API.Indicators;
using cAlgo.API.Internals;
using cAlgo.Indicators;

namespace cAlgo.Robots
{
    [Robot(TimeZone = TimeZones.UTC)]
    public class HAK : Robot
    {

        [Parameter(DefaultValue = 5, MinValue = 1)]
        public int Periods { get; set; }

        [Parameter("MA Type", DefaultValue = MovingAverageType.Simple)]
        public MovingAverageType MAType { get; set; }


        private HeikenAshiJohn HAJ;



        protected override void OnStart()
        {
            HAJ = Indicators.GetIndicator<HeikenAshiJohn>(Periods, MAType);

        }

        protected override void OnTick()
        {

            if (haj > 0 && !double.IsNaN(maOpen.Result[-1]))

                ExecuteMarketOrder(TradeType.Buy, Symbol, 1000, "Buy", null, 10);

        }
    }
}


@maintenancevlh2018@gmail.com

maintenancevlh2018@gmail.com
12 Aug 2018, 15:56

using System;
using cAlgo.API;
using cAlgo.API.Indicators;

namespace cAlgo.Indicators
{
    [Indicator(IsOverlay = true, AccessRights = AccessRights.None)]
    public class HeikenAshiJohn : Indicator
    {
        [Parameter(DefaultValue = 5, 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;
        private IndicatorDataSeries haClose;
        private 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, 7, 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];
            }
        }
    }
}


@maintenancevlh2018@gmail.com

PanagiotisCharalampous
13 Aug 2018, 10:13

Dear Trader,

Thanks for posting in our forum. However, it is not very clear what the problem is. Could you please give us a more detailed description?

Best Regards,

Panagiotis


@PanagiotisCharalampous