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) { // запись логов в БД } }
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); }
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; }
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; }
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 //}; }
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(); }
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); } }