示例#1
0
        public static List <Candle> HA_D_Candles(Instrument instrument, out InstrumentDetails instrumentDetails)
        {
            instrumentDetails = new InstrumentDetails();
            Candle        haPreviounsCandle = null;
            Candle        haCurrentCandle   = null;
            List <Candle> haCandles         = new List <Candle>();
            int           emaPeriod         = 21;
            List <Candle> candles           = OANDA.Data.Prices.GetCandles(instrument.Name, emaPeriod, "D");

            instrumentDetails.Current = candles.LastOrDefault().Close;
            EMA ema = new EMA(emaPeriod);
            List <MyTrade.Core.Model.Candle> wcandles = MyTrade.Core.SqliteDataAccess.WeekyCandles.LoadCandles(instrument.Name);
            PivotPoints pps  = new PivotPoints();
            PivotPoint  wpps = pps.Get(wcandles[wcandles.Count - 2], instrumentDetails.Current);

            instrumentDetails.W_PivotPoints = wpps;
            List <MyTrade.Core.Model.Candle> mcandles = MyTrade.Core.SqliteDataAccess.MonthlyCandles.LoadCandles(instrument.Name);
            PivotPoint mpps = pps.Get(mcandles[mcandles.Count - 2], instrumentDetails.Current);

            instrumentDetails.M_PivotPoints = mpps;
            instrumentDetails.TimeFrame     = Core.Constants.TimeFrame.DAILY;
            for (int i = 0; i < candles.Count; i++)
            {
                instrumentDetails.Max = Math.Max(instrumentDetails.Max, candles[i].High);

                if (i == 0)
                {
                    instrumentDetails.Min = candles[i].Low;
                    instrumentDetails.Min = Math.Min(candles[i].Low, instrumentDetails.Min);
                    haPreviounsCandle     = HeikinAshi.GeneratePrevious(candles[i]);
                    haCandles.Add(haPreviounsCandle);
                }

                else
                {
                    haCurrentCandle = HeikinAshi.Generate(haPreviounsCandle, candles[i]);

                    haCandles.Add(haCurrentCandle);
                    haPreviounsCandle = haCurrentCandle;
                }


                if (i == (candles.Count - 1))
                {
                    instrumentDetails.EMAs = new List <Core.Model.Indicators.EMA>();
                    ema.AddDataPoint(candles[i].Close);
                    instrumentDetails.EMAs.Add(new Core.Model.Indicators.EMA()
                    {
                        Period = 21, Value = ema.Average
                    });
                }
                else
                {
                    ema.AddDataPoint(candles[i].Close);
                }
            }


            return(haCandles);
        }
示例#2
0
        public static InstrumentDetails WeeklyinstrumentDetails(Instrument instrument)
        {
            InstrumentDetails instrumentDetails = new InstrumentDetails();
            int           ema50Period           = 50;
            int           ema9Period            = 9;
            List <Candle> candles = OANDA.Data.Prices.GetCandles(instrument.Name, ema50Period, "W");

            instrumentDetails.Current = candles.LastOrDefault().Close;
            EMA ema50 = new EMA(ema50Period);
            EMA ema9  = new EMA(ema9Period);
            List <MyTrade.Core.Model.Candle> wcandles = MyTrade.Core.SqliteDataAccess.WeekyCandles.LoadCandles(instrument.Name);
            PivotPoints pps  = new PivotPoints();
            PivotPoint  wpps = pps.Get(wcandles[wcandles.Count - 2], instrumentDetails.Current);

            instrumentDetails.W_PivotPoints = wpps;

            instrumentDetails.TimeFrame = Core.Constants.TimeFrame.DAILY;
            for (int i = 0; i < candles.Count; i++)
            {
                instrumentDetails.Max = Math.Max(instrumentDetails.Max, candles[i].High);

                if (i == 0)
                {
                    instrumentDetails.Min = candles[i].Low;
                    instrumentDetails.Min = Math.Min(candles[i].Low, instrumentDetails.Min);
                }
                if (i == (candles.Count - 1))
                {
                    if (instrumentDetails.EMAs == null)
                    {
                        instrumentDetails.EMAs = new List <Core.Model.Indicators.EMA>();
                    }
                    ema50.AddDataPoint(candles[i].Close);
                    ema9.AddDataPoint(candles[i].Close);
                    instrumentDetails.EMAs.Add(new Core.Model.Indicators.EMA()
                    {
                        Period = 50, Value = ema50.Average
                    });
                    instrumentDetails.EMAs.Add(new Core.Model.Indicators.EMA()
                    {
                        Period = 9, Value = ema9.Average
                    });
                }
                else
                {
                    ema50.AddDataPoint(candles[i].Close);
                    ema9.AddDataPoint(candles[i].Close);
                }
            }


            return(instrumentDetails);
        }
        public void GetPivotPointsLevels_GivenBullishTrend_ShouldReturnExtensionLevelGreaterThanPointAandB(double high, double low, double close, PivotPointsType type = PivotPointsType.Default)
        {
            //Arrange
            //Act
            var pivotPoints = (type == PivotPointsType.Default) ? PivotPoints.GetPivotPointsLevels(high, low, close) : PivotPoints.GetPivotPointsLevels(high, low, close, type);

            //Assert
            Assert.Greater(pivotPoints.R2, pivotPoints.R1);
            Assert.Greater(pivotPoints.R1, pivotPoints.PivotPoint);

            Assert.Less(pivotPoints.S2, pivotPoints.S1);
            Assert.Less(pivotPoints.S1, pivotPoints.PivotPoint);
        }
示例#4
0
        public PivotPointsRobot(string name, StartProgram startProgram)
            : base(name, startProgram)
        {
            TabCreate(BotTabType.Simple);
            _tab = TabsSimple[0];

            _pivot = new PivotPoints(name + "Prime", false);
            _pivot = (PivotPoints)_tab.CreateCandleIndicator(_pivot, "Prime");

            _pivot.Save();

            //_tab.CandleFinishedEvent += TradeLogic;
            _tab.CandleFinishedEvent += TradeLogic;
            Slipage   = 0;
            VolumeFix = 1;
            Stop      = 0.5m;
            Load();

            DeleteEvent += Strategy_DeleteEvent;
        }