private void GetHistoryCandle()
        {
            try
            {
                var klineString = kline.GetHistory();
                var klines      = JConverter.JsonConver <List <object[]> >(klineString);

                foreach (var k in klines)
                {
                    var ohlcPoint = new OhlcPoint()
                    {
                        Open  = Convert.ToDouble(k[1], new CultureInfo("en-US")),
                        High  = Convert.ToDouble(k[2], new CultureInfo("en-US")),
                        Low   = Convert.ToDouble(k[3], new CultureInfo("en-US")),
                        Close = Convert.ToDouble(k[4], new CultureInfo("en-US"))
                    };
                    OhclValues.Add(ohlcPoint);
                    LabelsX.Add(Convert.ToInt64(k[0]).UnixToDateTime().ToString(formatX));
                }
            }
            catch (Exception ex)
            {
                // запись логов в БД
            }
        }
Пример #2
0
        public OhlcPoint NouveauPoint()
        {
            var  r          = new Random();
            bool estNegatif = false;

            estNegatif = r.NextDouble() > 0.5 ? true : false;

            double aOpen  = estNegatif ? -1 * r.Next(0, 50) : 1 * r.Next(0, 50);
            double bMax   = r.Next(0, 50);
            double cMin   = estNegatif ? -1 * r.Next(0, 50) : 1 * r.Next(0, 50);;
            double dClose = r.Next(0, 50);



            double high  = bMax > cMin ? bMax : cMin;
            double less  = high == bMax ? cMin : bMax;
            double open  = r.Next(Convert.ToInt32(less), Convert.ToInt32(high));
            double close = r.Next(Convert.ToInt32(less), Convert.ToInt32(high));

            OhlcPoint point = new OhlcPoint(open, high, less, close);

            listeBourse.Add(point);
            listeDate.Add(DateTime.Now.ToString("hh:mm:ss"));
            return(point);
        }
Пример #3
0
 public static void UpdateValues(this OhlcPoint point, BinanceKline newKline)
 {
     point.Open  = (double)newKline.Open;
     point.High  = (double)newKline.High;
     point.Low   = (double)newKline.Low;
     point.Close = (double)newKline.Close;
 }
Пример #4
0
 public static void UpdateValues(this OhlcPoint point, OhlcPoint newPoint)
 {
     point.Open  = newPoint.Open;
     point.High  = newPoint.High;
     point.Low   = newPoint.Low;
     point.Close = newPoint.Close;
 }
Пример #5
0
        private void FillChart()
        {
            var chartValues = new ChartValues <OhlcPoint>();
            var timestamps  = new List <string>();

            foreach (var candle in this.candles)
            {
                var ohlc = new OhlcPoint((double)candle.Open, (double)candle.Max, (double)candle.Min, (double)candle.Close);
                chartValues.Add(ohlc);

                timestamps.Add(candle.Timestamp.ToString("dd MMM"));
            }

            SeriesCollection = new SeriesCollection
            {
                new OhlcSeries()
                {
                    Title  = "BTCUSD",
                    Values = chartValues
                }
            };

            chart.Series = SeriesCollection;

            Labels            = timestamps.ToArray();
            chartAxisX.Labels = null;
            chartAxisX.Labels = Labels;

            //chartAxisY.Separator = new Separator()
            //{
            //    IsEnabled =  true,
            //    Step = 10
            //};
        }
Пример #6
0
        public void AjoutPoint(object sender, EventArgs e)
        {
            if (PointsSerie[0].Values.Count > nombrePointMax)
            {
                PointsSerie[0].Values.RemoveAt(0);
            }

            OhlcPoint point = m_Bourse.NouveauPoint();

            PointsSerie[0].Values.Add(point);
            //math.essai();
            this.OnNotifyCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Add, PointsSerie));
        }
        private void Kline_MessageEvent(object sender, KlineEventArgs e)
        {
            try
            {
                Candle candle    = JConverter.JsonConver <Candle>(e.Message);
                var    ohlcPoint = new OhlcPoint()
                {
                    Open  = candle.k.o,
                    High  = candle.k.h,
                    Low   = candle.k.l,
                    Close = candle.k.c
                };

                var firstCandle = OhclValues.FirstOrDefault();
                if (isClose)
                {
                    OhclValues.Add(ohlcPoint);
                    OhclValues.Remove(firstCandle);
                    LabelsX.Add(candle.k.t.UnixToDateTime().ToString(formatX));
                    isClose = false;
                }
                else
                {
                    if (OhclValues.Count > 0)
                    {
                        var lastOhlc = OhclValues.Last();
                        lastOhlc.Open  = ohlcPoint.Open;
                        lastOhlc.High  = ohlcPoint.High;
                        lastOhlc.Low   = ohlcPoint.Low;
                        lastOhlc.Close = ohlcPoint.Close;
                    }
                    else
                    {
                        OhclValues.Add(ohlcPoint);
                        LabelsX.Add(candle.k.t.UnixToDateTime().ToString(formatX));
                    }
                }

                if (candle.k.x) // проверка должна быть после добавления, иначе добавим закрытую свечу
                {
                    isClose = true;
                }
            }
            catch (Exception ex)
            {
                //TODO: запись логов в БД
            }
            //CreateChartValuesLines();
        }
Пример #8
0
        private void LoadJson(string fileFullPath)
        {
            try
            {
                ohlcChartValues.Clear();
                volumeChartValues.Clear();
                string jsonString = File.ReadAllText(fileFullPath);
                var    candles    = JsonConvert.DeserializeObject <List <MarketCandle> >(jsonString);

                foreach (var candle in candles.Take(250))
                {
                    var ohlc = new OhlcPoint((double)candle.OpenPrice, (double)candle.HighPrice, (double)candle.LowPrice, (double)candle.ClosePrice);
                    ohlcChartValues.Add(ohlc);
                    volumeChartValues.Add(new VolumePair(candle.QuoteCurrencyVolume, (ohlc.Close >= ohlc.Open)));
                }

                Y2Max = volumeChartValues.Select(v => v.Volume).Max() * 5;    // stretch the y-axis by 5x.
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }