public async Task SaveAsync(ChartSetting model) { try { StringContent sc = new StringContent(JsonConvert.SerializeObject(model)); sc.Headers.ContentType = MediaTypeHeaderValue.Parse("application/json"); using (HttpClient client = new HttpClient()) { var msg = model.Id == 0 ? await client.PostAsync($"{connection}", sc) : await client.PutAsync($"{connection}/{model.Id}", sc); if (msg.IsSuccessStatusCode) { var md = JsonConvert.DeserializeObject <ChartSetting>(await msg.Content.ReadAsStringAsync()); model.Id = md.Id; } } } catch (Exception x) { _infoService.ShowError(x); } }
public ActionResult second(DataChange data) { string SinseData = data.Sinse; string ForData = data.For; int ID = data.Id; //qwer ChartSetting chartSetting = new ChartSetting(SinseData, ForData, ID); List <DataPoint> dataPoint = chartSetting.NoteDataPoints(); ViewBag.DataPoints1 = JsonConvert.SerializeObject(dataPoint); int id2 = 2; ChartSetting chartSetting1 = new ChartSetting(SinseData, ForData, id2); List <DataPoint> dataPoint1 = chartSetting1.NoteDataPoints(); ViewBag.DataPoints2 = JsonConvert.SerializeObject(dataPoint1); int id3 = 3; ChartSetting chartSetting2 = new ChartSetting(SinseData, ForData, id3); List <DataPoint> dataPoint2 = chartSetting2.NoteDataPoints(); ViewBag.DataPoints3 = JsonConvert.SerializeObject(dataPoint2); //string Sinse = "12:40 16.03.2020 "; //string For = "20:45 16.03.2020 "; //int id1 = 1; return(View()); }
private void btnDataStreamEdit_Click(object sender, EventArgs e) { if (dataGrid.SelectedDataRows.Length > 0) { _DataStreamInfo cInfo = dataGrid.SelectedDataRows[0] as _DataStreamInfo; if (cInfo != null) { int iIndex = cInfo.DataStream - 1; int iDataStream = source.Count; frmCreateScriptSetting frmCreateScriptSetting = new frmCreateScriptSetting(__cCharts[iIndex], __cScriptSetting.DataRequests[iIndex], cInfo.IsNewSetting); frmCreateScriptSetting.MaxLayerCount = __iMaxLayerIndex + 1; //最大圖層個數=最大圖層索引 + 1 DialogResult cResult = frmCreateScriptSetting.ShowDialog(); frmCreateScriptSetting.Dispose(); if (cResult == DialogResult.OK) { ChartSetting cChartSetting = frmCreateScriptSetting.ChartSetting; RequestSetting cRequestSetting = frmCreateScriptSetting.RequestSetting; ModifyDataStreamInfo(cInfo, cChartSetting, cRequestSetting); source.Refresh(); } } } }
/// <summary> /// 加入交易資料容器(如果有加入交易資料容器則可以在圖表上顯示使用者交易線圖與交易資訊) /// </summary> /// <param name="container">交易資料容器</param> public void AddTradeContainer(TradeContainer container) { if (__cProperty.ChartSettings.Count > 0) { ChartSetting cSetting = __cProperty.ChartSettings[0]; if (cSetting.IsSubChart) { __cProperty.ChartSettings.Add( new ChartSetting() { Axis = new AxisSetting(), IsSubChart = true, LayerIndex = 0, ChartType = EChartType.TradeObject, LegendColor = __cProperty.ForeColor }); __cTrades = container; AddSeries(__cTrades, __cProperty.ChartSettings.Count); //建立完畢後就從 ChartSettings 列表移除(因為 TradeContainer ChartSetting 屬性是由 ZChart 自行建立, 不是由使用者建立所以不用保存在列表內) int iChartCount = __cProperty.ChartSettings.Count; __cProperty.ChartSettings.RemoveAt(iChartCount - 1); } } }
internal static ChartSetting ReadLineChartSetting() { var result = new ChartSetting() { Datasets = new List <Dataset>() }; var data = new List <Datum>(); var now = DateTime.Now; var start = now; var random = new Random(); while (start < now.AddDays(1)) { data.Add(new Datum() { Timestamp = start.ToString("yyyy/MM/dd HH:mm"), Value = random.NextDouble() }); start = start.AddHours(1); } result.Datasets.Add(new Dataset { Label = "demo", BackgroundColor = "lightblue", Data = data }); return(result); }
public async Task <IEnumerable <ChartLookup> > GetLookups(ChartSetting item) { try { using (HttpClient client = new HttpClient()) { var msg = await client.GetStringAsync($"{connection}/Owner={item.Id}"); return(JsonConvert.DeserializeObject <IEnumerable <ChartLookup> >(msg)); } } catch (Exception x) { _errorInfo.ShowError(x); } return(await Task.FromResult(new ChartLookup[] { new ChartLookup { Id = 1, Date = DateTime.Now - TimeSpan.FromDays(1), Value = 250 }, new ChartLookup { Id = 2, Date = DateTime.Now, Value = 350 }, new ChartLookup { Id = 3, Date = DateTime.Now + TimeSpan.FromDays(1), Value = 150 } })); }
private void ProccessObjects(IEnumerable <ITextObject> textObjects, ChartProperty property, bool useROP) { //將 TextObject 物件按照 DataStream 分類 foreach (TextObject cTextObject in textObjects) { Queue <TextObject> cQueue = null; if (!__cObjects.TryGetValue(cTextObject.DataStream, out cQueue)) { cQueue = new Queue <TextObject>(128); __cObjects.Add(cTextObject.DataStream, cQueue); } cQueue.Enqueue(cTextObject); } //將分類好的 TextObject 顯示在 Chart 上 foreach (int iDataStream in __cObjects.Keys) { ChartSetting cChartSetting = property.ChartSettings[iDataStream - 1]; if (cChartSetting.IsSubChart) { Layer cLayer = __cLayers[cChartSetting.LayerIndex]; Rectangle cLayerRect = cLayer.LayerRectangleWithoutAxisY; __cGDI.SaveDC(); __cGDI.ClipRectangle(cLayerRect); Queue <TextObject> cQueue = __cObjects[iDataStream]; while (cQueue.Count > 0) { DrawTextObject(cLayer, cQueue.Dequeue(), property, useROP); } __cGDI.RestoreDC(); } } }
private void btnDataStreamAdd_Click(object sender, EventArgs e) { frmCreateScriptSetting frmCreateScriptSetting = new frmCreateScriptSetting(); frmCreateScriptSetting.MaxLayerCount = __iMaxLayerIndex + 1; //最大圖層個數=最大圖層索引 + 1 DialogResult cResult = frmCreateScriptSetting.ShowDialog(); frmCreateScriptSetting.Dispose(); if (cResult == DialogResult.OK) { ChartSetting cChartSetting = frmCreateScriptSetting.ChartSetting; RequestSetting cRequestSetting = frmCreateScriptSetting.RequestSetting; __cScriptSetting.DataRequests.Add(cRequestSetting); //加入至腳本設定值內 __cCharts.Add(cChartSetting); string[] sRanges = GetRequestRanges(cRequestSetting.Range); int iDataStream = source.Count + 1; source.Add(CreateDataStreamInfo(iDataStream, cChartSetting, cRequestSetting, true)); source.Refresh(); if (cChartSetting.LayerIndex > __iMaxLayerIndex) { __iMaxLayerIndex = cChartSetting.LayerIndex; } } bool bEnabled = source.Count > 0; btnOK.Enabled = bEnabled; btnDataStreamRemove.Enabled = bEnabled; }
internal frmCreateScriptSetting(ChartSetting chartSetting, RequestSetting requestSetting, bool isNewSetting) { __cChartSetting = chartSetting; __cRequestSetting = requestSetting; __bNewSetting = isNewSetting; InitializeComponent(); InitializeSourceGrid(); }
private static void ModifyDataStreamInfo(_DataStreamInfo info, ChartSetting chart, RequestSetting request) { string[] sRanges = GetRequestRanges(request.Range); info.SymbolId = request.SymbolId; info.Range = string.Format("{0} {1}", sRanges[1], (sRanges[0][0] == 'f') ? string.Empty : sRanges[0]); info.LastDate = sRanges[2]; info.Period = request.DataPeriod; info.SubChart = (chart.IsSubChart) ? string.Format("SubChart #{0}", chart.LayerIndex + 1) : "Hide"; }
internal PlotTextObject(GdiEngine engine, ZChart chart, object source, ChartSetting chartSetting) : base(engine, chartSetting) { __cGDI = engine.GDI; __cTextObjects = source as TextContainer; __cTextObjects.SetChartProperty(chart.ChartProperty); __cLayers = new List <Layer>(8); __cObjects = new Dictionary <int, Queue <TextObject> >(8); __cLayers = chart.Layers; }
private ChartViewItem AddChartItem(ChartSetting cs = null) { var csv = cs == null ? new ChartViewItem(new ChartSetting { ChartType = ChartType.Column, Name = "Новый график", AxisXTitle = "Ось X", AxisYTitle = "Ось Y", Title = "Легенда" }, _eventAggregator) : new ChartViewItem(cs, _eventAggregator); Items.Add(csv); return(csv); }
private static _DataStreamInfo CreateDataStreamInfo(int dataStream, ChartSetting chart, RequestSetting request, bool isNewSetting) { string[] sRanges = GetRequestRanges(request.Range); _DataStreamInfo cInfo = new _DataStreamInfo(); cInfo.DataStream = dataStream; cInfo.SymbolId = request.SymbolId; cInfo.Range = string.Format("{0} {1}", sRanges[1], (sRanges[0][0] == 'f') ? string.Empty : sRanges[0]); cInfo.LastDate = sRanges[2]; cInfo.Period = request.DataPeriod; cInfo.SubChart = (chart.IsSubChart) ? string.Format("SubChart #{0}", chart.LayerIndex + 1) : "Hide"; cInfo.IsNewSetting = isNewSetting; return(cInfo); }
public async Task DeleteAsync(ChartSetting model) { try { using (HttpClient client = new HttpClient()) { var msg = await client.DeleteAsync($"{connection}/{model.Id}"); var md = JsonConvert.DeserializeObject <ChartSetting>(await msg.Content.ReadAsStringAsync()); } } catch (Exception x) { _infoService.ShowError(x); } }
/// <summary> /// 加入 Series 資料來源 /// </summary> /// <param name="series">資料來源</param> /// <param name="data_stream">資料串流編號(從 1 開始編號)</param> public void AddSeries(object series, int data_stream) { if (__cAxisX == null && series is IInstrument) { __cInstrument = series as Instrument; __cInstrument.BindResetEvent(onReset); __cAxisX = new AxisX(__cInstrument); __cAxisX.AxisRectangle = __cChartRect; __cAxisX.FontMetrics = __cPainter.GetFontMetrics("0", __cProperty.AxisFont); } Layer cLayer = null; ChartSetting cSetting = __cProperty.ChartSettings[data_stream - 1]; int iCount = __cLayers.Count; if (cSetting.LayerIndex < iCount) { cLayer = __cLayers[cSetting.LayerIndex]; } else { cLayer = CreateLayer(); cLayer.LayerIndex = iCount; __cLayers.Add(cLayer); } __bNewSeries = true; this.Resize(); AbstractPlot cPlot = __cPainter.GetPlot(this, series, cSetting); if (cPlot != null) { cPlot.DataStream = data_stream; cPlot.AdjustAxisScaleFromX(__cAxisX); cLayer.AddPlot(cPlot); } }
internal PlotOhlc(GdiEngine engine, object source, ChartSetting chartSetting) : base(engine, chartSetting) { __cGDI = engine.GDI; __cBars = source as Instrument; }
/// <summary> /// 取得 Plot 物件 /// </summary> /// <param name="chart">ZChart 圖表類別</param> /// <param name="source">資料來源</param> /// <param name="chartType">圖表類型</param> /// <returns>回傳值: AbstractPlot 抽象類別</returns> public override AbstractPlot GetPlot(ZChart chart, object source, ChartSetting chartSetting) { return(PlotEngine.Create(this, chart, source, chartSetting)); }
private void CreateChart() { ChartSetting cSetting1 = new ChartSetting() { Axis = new AxisSetting() { AxisScope = EAxisScope.PriceScaleScope, ScaleMode = EAxisScaleMode.None, ScaleValue = 0, MarginTop = 0, MarginBottom = 0 }, IsSubChart = true, IsShowNewPrice = true, LayerIndex = 0, LegendColor = Color.Yellow, ChartType = EChartType.Candlestick, PenStyles = new PowerLanguage.PenStyle[] { new PowerLanguage.PenStyle(Color.Red, 1), new PowerLanguage.PenStyle(Color.Green, 1), new PowerLanguage.PenStyle(Color.Gray, 1), } }; ChartSetting cSetting2 = new ChartSetting() { Axis = new AxisSetting() { AxisScope = EAxisScope.PriceScaleScope, ScaleMode = EAxisScaleMode.None, ScaleValue = 0, MarginTop = 0, MarginBottom = 0 }, IsSubChart = true, IsShowNewPrice = true, LayerIndex = 0, LegendColor = Color.Red, ChartType = EChartType.OHLC, PenStyles = new PowerLanguage.PenStyle[] { new PowerLanguage.PenStyle(Color.Red, 1), new PowerLanguage.PenStyle(Color.Green, 1), new PowerLanguage.PenStyle(Color.Gray, 1), } }; Font cFont = new System.Drawing.Font("新細明體", 8); ChartProperty cProperty = new ChartProperty() { AxisFont = cFont, AxisColor = Color.Yellow, BackgroundColor = Color.Black, DrawingSource = EDrawingSource.CurrentTech, DrawAideLineColor = Color.LightSkyBlue, ForeColor = Color.White, GridColor = Color.FromArgb(0x30, 0x30, 0x30), LegendFont = cFont, TitleFont = cFont, TextFont = cFont, IsShowGrid = true, TradeLineColor = Color.GreenYellow, TradeSymbolColor = Color.DodgerBlue, ChartSettings = new List <ChartSetting>() { cSetting1, cSetting2 } }; __cChart.SetChartProperty(cProperty); SignalObject cObject = new TestScript(); cObject.onReady += SignalObject_onReady; cObject.ApplyProperty(new SignalProperty() { DefaultContracts = 1, InitialCapital = 100000, MaximumBarsReference = 0, OrderSource = "Netwings.OrderService;Netwings.SimulateOrderService" }); cObject.AddDataStreams(new List <InstrumentDataRequest>() { new InstrumentDataRequest() { Exchange = "TWSE", DataFeed = "Mitake", Range = new DataRequest(DateTime.Today, 1000, DataRequestType.BarsBack, DateTime.Today), Symbol = "TXF0.tw", Resolution = new Resolution(EResolution.Minute, 1) }, new InstrumentDataRequest() { Exchange = "TWSE", DataFeed = "Mitake", Range = new DataRequest(DateTime.Today, 1000, DataRequestType.BarsBack, DateTime.Today), Symbol = "TXF0.tw", Resolution = new Resolution(EResolution.Minute, 5) } }); }
internal static AbstractPlot Create(GdiEngine engine, ZChart chart, object source, ChartSetting chartSetting) { AbstractPlot cPlot = null; EChartType cChartType = chartSetting.ChartType; switch (cChartType) { case EChartType.Candlestick: cPlot = new PlotCandlestick(engine, source, chartSetting); break; case EChartType.HLC: cPlot = new PlotHlc(engine, source, chartSetting); break; case EChartType.OHLC: cPlot = new PlotOhlc(engine, source, chartSetting); break; case EChartType.ClosingLine: cPlot = new PlotClosingLine(engine, source, chartSetting); break; case EChartType.TextObject: cPlot = new PlotTextObject(engine, chart, source, chartSetting); break; case EChartType.TradeObject: cPlot = new PlotTradeObject(engine, source, chartSetting); break; } return(cPlot); }
/// <summary> /// 取得 Plot 物件 /// </summary> /// <param name="chart">ZChart 圖表類別</param> /// <param name="source">資料來源</param> /// <param name="chartSetting">圖表設定值</param> /// <returns>回傳值: AbstractPlot 抽象類別</returns> public abstract AbstractPlot GetPlot(ZChart chart, object source, ChartSetting chartSetting);
/// <summary> /// 建構子 /// </summary> /// <param name="chartSetting">圖表設定值</param> public AbstractPlot(AbstractPaintEngine engine, ChartSetting chartSetting) { __cEngine = engine; __cSetting = chartSetting; }
internal PlotTradeObject(GdiEngine engine, object source, ChartSetting chartSetting) : base(engine, chartSetting) { __cGDI = engine.GDI; __cTrades = source as TradeContainer; }