// Where pair like "TRXETH" and interval like "1m", "5m", "1h", ... public ZCandlestickMap GetCandlesticks(string pair, string interval) { var result = new ZCandlestickMap(CryptoExch.BINANCE, pair, interval); var res = GetOHLC(pair, interval, 500); foreach (var dp in res) { result.Add(dp.time, dp); } return(result); }
// Where pair like "BCHEUR" and interval like "1m", "5m", "1h", ... public ZCandlestickMap GetCandlesticks(string pair, string interval) { var result = new ZCandlestickMap(CryptoExch.KRAKEN, pair, interval); int minutes = int.Parse(ChartIntervals[interval]); var res = GetOHLC(pair, minutes); var ohlcList = res.Pairs[pair]; foreach (var dp in ohlcList) { result.Add(dp.time, dp); } return(result); }
private void btnChart_Click(object sender, EventArgs e) { status("Display Chart"); var selected = m_dataFrameFilesPanel.SelectedPathname; if (selected != null) { var chart = new CryptoForms.CryptoChartForm(); var candlesticks = ZCandlestickMap.ReadFromFile(selected); chart.DisplayChart(candlesticks); chart.ShowInFront(); } }
public void DisplayChart(ZCandlestickMap map) //, string symbol, string interval) { m_map = map; m_title = string.Format("{0} {1}", map.Symbol, m_intervalText[map.Interval]); chart1.BackColor = Color.Black; chart1.ForeColor = Color.White; chart1.ChartAreas[0].BackColor = Color.Black; // Chart Title this.Text = "Crypto Charts: " + m_title; lblTitle.Text = m_title; /*chart1.Titles.Clear(); * chart1.Titles.Add(m_title); * chart1.Titles[0].Font = new Font("Arial", 14, FontStyle.Bold); * chart1.Titles[0].ForeColor = Color.White;*/ // Chart Series chart1.Series.Clear(); var series = new Series("candlestick"); series.ChartType = SeriesChartType.Candlestick; // Set series chart type series["OpenCloseStyle"] = "Triangle"; // Set the style of the open-close marks series["ShowOpenClose"] = "Both"; // Show both open and close marks series["PointWidth"] = "1.0"; // Set point width series["PriceUpColor"] = "Green"; // Set colors bars (up) series["PriceDownColor"] = "Red"; // Set colors bars (down) double min = double.MaxValue, max = double.MinValue; // Add the datapoints to the series foreach (var kv in map) { DataPoint item = new DataPoint((double)kv.Key.ToUnixTimestamp(), kv.Value.yValues); max = Math.Max(max, kv.Value.yValues[0]); min = Math.Min(min, kv.Value.yValues[1]); item.AxisLabel = kv.Key.ToString("MM-dd HH:mm"); series.Points.Add(item); } chart1.ChartAreas[0].AxisY.Maximum = (max * 1.05); chart1.ChartAreas[0].AxisY.Minimum = (min * 0.95); chart1.Series.Add(series); UpdateChartScale(); }
// Where start/end are start and end times for the data // AND granularity is desired timeslice in seconds: {60, 300, 900, 3600, 21600, 86400} public ZCandlestickMap GetCandlesticks(string productId, string intervalSeconds, DateTime?start = null, DateTime?end = null) { var result = new ZCandlestickMap(CryptoExch.GDAX, productId, intervalSeconds); var productPair = GetProductPair(productId); int seconds = int.Parse(ChartIntervals[intervalSeconds]); var dtEnd = (end == null ? DateTime.Now : end.Value); var dtStart = (start == null ? dtEnd.Subtract(TimeSpan.FromSeconds(seconds * 100)) : start.Value); // returns list of list: [[ time, low, high, open, close, volume ], [ 1415398768, 0.32, 4.2, 0.35, 4.2, 12.3 ]] var sticks = AsyncHelpers.RunSync <IEnumerable <object[]> >(() => m_api.ProductsService.GetHistoricRatesAsync(productPair, dtStart, dtEnd, seconds)); //var sticks = await m_api.ProductsService.GetHistoricRatesAsync(productPair, dtStart, dtEnd, int.Parse(ChartIntervals[intervalSeconds])); //string url = BaseUrl + "/products/{0}/candles"; //var sticks = GET<List<List<float>>>(url, productId); foreach (var li in sticks) { var cs = new GdaxCandlestick(li); result.Add(cs.time, cs); } return(result); }