Пример #1
0
        private async void CreateChart()
        {
            var pair = (Сurrency.SelectedItem as ComboBoxItem).Content.ToString();

            if (string.IsNullOrEmpty(Interval.Text))
            {
                return;
            }

            var interval = Convert.ToInt32(Interval.Text);

            if (string.IsNullOrEmpty(pair) || interval < 1)
            {
                return;
            }

            var result  = new OHLCResult();
            var endTime = DatePickerEnd.SelectedDate.Value.Millisecond;

            if (!Enum.IsDefined(typeof(Minutes), interval))
            {
                result = await KrakenManager.GetOHLC(pair, 1, endTime);

                result.Pairs[pair] = Helper.CompressDate(result.Pairs[pair], interval);
            }
            else
            {
                result = await KrakenManager.GetOHLC(pair, interval, endTime);
            }
            var chart = new Chart(result, pair, endTime: endTime);

            AddChartToForm(chart);
        }
Пример #2
0
 public Chart(OHLCResult result, string pair, int beginTime = 0, int endTime = 0)
 {
     Model           = CreatePlotModel(result, pair);
     Pair            = pair;
     OHLCResult      = result;
     OHLCListBeginer = result.Pairs[pair];
     EndTime         = endTime;
     BeginTime       = beginTime;
 }
Пример #3
0
        public async Task <OHLCResult> GetOHLC(string pair, int interval = 1, long since = 0)
        {
            var param = new Dictionary <string, string>();

            param.Add("pair", pair);

            param.Add("since", since.ToString());
            param.Add("interval", interval.ToString());

            var res = await QueryPublic("OHLC", param);

            JObject obj = (JObject)JsonConvert.DeserializeObject(res);
            JArray  err = (JArray)obj["error"];

            if (err.Count != 0)
            {
                throw new KrakenException(err[0].ToString(), JsonConvert.DeserializeObject <ResponseBase>(res));
            }

            JObject result = obj["result"].Value <JObject>();

            var ret = new OHLCResult();

            ret.Pairs = new Dictionary <string, List <OHLC> >();

            foreach (var o in result)
            {
                if (o.Key == "last")
                {
                    ret.Last = o.Value.Value <long>();
                }
                else
                {
                    var ohlc = new List <OHLC>();
                    foreach (var v in o.Value.ToObject <decimal[][]>())
                    {
                        ohlc.Add(new OHLC()
                        {
                            Time = (int)v[0], Open = v[1], High = v[2], Low = v[3], Close = v[4], Vwap = v[5], Volume = v[6], Count = (int)v[7]
                        });
                    }
                    ret.Pairs.Add(o.Key, ohlc);
                }
            }

            return(ret);
        }
Пример #4
0
        private PlotModel CreatePlotModel(OHLCResult result, string pair)
        {
            var tmpModel = new PlotModel {
                Title = "Chart", Subtitle = pair
            };
            //tmpModel.ZoomAllAxes(0);
            DateTimeAxis timeSPanAxis1 = new DateTimeAxis()
            {
                Position           = AxisPosition.Bottom,
                MinorIntervalType  = DateTimeIntervalType.Auto,
                MajorGridlineStyle = LineStyle.Dot,
                MinorGridlineStyle = LineStyle.Dot,
                MajorGridlineColor = OxyColor.FromRgb(44, 44, 44),
                TicklineColor      = OxyColor.FromRgb(82, 82, 82)
            };

            tmpModel.Axes.Add(timeSPanAxis1);

            LinearAxis YAxisRight = new LinearAxis()
            {
                Position           = AxisPosition.Right,
                Minimum            = GetMinValueY(result, pair),
                Maximum            = GetMaxValueY(result, pair),
                StartPosition      = 0,
                Selectable         = true,
                MajorGridlineStyle = LineStyle.Dot,
                MinorGridlineStyle = LineStyle.Dot,
                MajorGridlineColor = OxyColor.FromRgb(44, 44, 44),
                TicklineColor      = OxyColor.FromRgb(82, 82, 82)
            };
            LinearAxis XAxisBottom = new LinearAxis()
            {
                Position = AxisPosition.Bottom,

                StartPosition = 0,

                MajorGridlineStyle = LineStyle.Dot,
                MinorGridlineStyle = LineStyle.Dot,
                MajorGridlineColor = OxyColor.FromRgb(44, 44, 44),
                TicklineColor      = OxyColor.FromRgb(82, 82, 82)
            };

            tmpModel.Axes.Add(YAxisRight);
            tmpModel.Axes.Add(XAxisBottom);

            CandleStickSeries candle = new CandleStickSeries()
            {
                Color               = OxyColors.Black,
                IncreasingColor     = OxyColor.FromRgb(0, 197, 49),
                DecreasingColor     = OxyColor.FromRgb(255, 95, 95),
                DataFieldX          = "Time",
                DataFieldHigh       = "H",
                DataFieldLow        = "L",
                DataFieldClose      = "C",
                DataFieldOpen       = "O",
                TrackerFormatString = "Date: {2}\nOpen: {5:0.00000}\nHigh: {3:0.00000}\nLow: {4:0.00000}\nClose: {6:0.00000}",
            };

            var points = new LineSeries {
                Title = "Series 1", MarkerType = MarkerType.Circle
            };


            candle.AddToHighLowSeries(result.Pairs[pair]);
            //candle.Tag = result.Pairs[pair];

            // tmp.Series.Add(points);
            tmpModel.Series.Add(candle);

            return(tmpModel);
        }
Пример #5
0
 private double GetMinValueX(OHLCResult result, string pair)
 {
     return((double)result.Pairs[pair].First().Time);
 }
Пример #6
0
 private double GetMinValueY(OHLCResult result, string pair)
 {
     return((double)result.Pairs[pair].Min(m => m.Low));
 }