void klineplot.refreshK(List <TXF.K_data.K> mk) { if (KL.autoRefresh == false) { return; } List <int[]> TX = new List <int[]>(); int i, Highest = 0, Lowest = int.MaxValue, Highest_Qty = 0; for (i = 0; i < 6; i++) { TX.Add(new int[KL.KLine_num]); } for (i = 0; i < KL.KLine_num; i++) { if (mk.Count >= i + 1) { int istart = mk.Count - KL.KLine_num; istart = Math.Max(0, istart); Highest_Qty = Math.Max(Highest_Qty, Convert.ToInt32(mk[i + istart].qty)); Highest = Math.Max(Highest, Convert.ToInt32(mk[i + istart].high)); Lowest = Math.Min(Lowest, Convert.ToInt32(mk[i + istart].low)); TX[0][i] = Convert.ToInt32(mk[i + istart].open); TX[1][i] = Convert.ToInt32(mk[i + istart].high); TX[2][i] = Convert.ToInt32(mk[i + istart].low); TX[3][i] = Convert.ToInt32(mk[i + istart].close); TX[4][i] = Convert.ToInt32(mk[i + istart].qty); } TX[5][i] = i + 1; } KL.PS.InvokeIfRequired(() => { KL.CP.OpenData = TX[0]; // opens; KL.CP.HighData = TX[1]; //highs; KL.CP.LowData = TX[2]; //lows; KL.CP.CloseData = TX[3]; //closes; KL.CP.AbscissaData = TX[5]; // times; //KL.lpp.AbscissaData = new int[] { mk.Count }; //KL.lpp.DataSource = new float[] { mk[mk.Count-1].close }; //KL.lpp.TextData = new string[] { "⮜" };//⬅⮜←⟵ //KL.PS.XAxis1.WorldMin = 0; //KL.PS.XAxis1.WorldMax = KL.KLine_num + 1; //KL.PS.YAxis1.WorldMin = Lowest; //KL.PS.YAxis1.WorldMax = Highest; //KL.PS.YAxis1.TickTextNextToAxis = false; KL.AdjustChart(mk, Highest, Lowest); KL.PS.Refresh(); }); KL.PS_volumn.InvokeIfRequired(() => { KL.hp.AbscissaData = TX[5]; KL.hp.DataSource = TX[4]; KL.PS_volumn.XAxis1.WorldMin = 0; KL.PS_volumn.XAxis1.WorldMax = KL.KLine_num + 1; KL.PS_volumn.YAxis1.WorldMin = 1; KL.PS_volumn.YAxis1.WorldMax = Convert.ToInt32(Highest_Qty * 1.1); //PS_volumn.Location = new System.Drawing.Point(PS.Location.X, PS_volumn.Location.Y); KL.PS_volumn.YAxis1.TickTextNextToAxis = false; KL.PS_volumn.Refresh(); }); }
void klineplot.refreshK(List <TXF.K_data.K> mk) { if (KL.autoRefresh == false) { return; } List <int[]> TX = new List <int[]>(); int i, Highest = 0, Lowest = int.MaxValue, Highest_Qty = 0; for (i = 0; i < 6; i++) { TX.Add(new int[KL.KLine_num]); } List <float> close = new List <float>(); for (i = 0; i < KL.KLine_num; i++) { if (mk.Count >= i + 1) { if (mk.Count > close.Count) { close.Add(new float()); } int istart = mk.Count - KL.KLine_num; istart = Math.Max(0, istart); Highest_Qty = Math.Max(Highest_Qty, Convert.ToInt32(mk[i + istart].qty)); Highest = Math.Max(Highest, Convert.ToInt32(mk[i + istart].high)); Lowest = Math.Min(Lowest, Convert.ToInt32(mk[i + istart].low)); //TX[0][i] = Convert.ToInt32(mk[i + istart].open); //TX[1][i] = Convert.ToInt32(mk[i + istart].high); //TX[2][i] = Convert.ToInt32(mk[i + istart].low); //TX[3][i] = Convert.ToInt32(mk[i + istart].close); close[i] = Convert.ToInt32(mk[i + istart].close); TX[4][i] = Convert.ToInt32(mk[i + istart].qty); } else { if (mk.Count > 0) { TX[3][i] = TX[3][i - 1]; } } TX[5][i] = i + 1; } KL.PS.InvokeIfRequired(() => { KL.linePlot.DataSource = close; //closes; KL.linePlot.AbscissaData = TX[5]; // times; KL.AdjustChart(mk, Highest, Lowest); KL.PS.Refresh(); }); KL.PS_volumn.InvokeIfRequired(() => { KL.hp.AbscissaData = TX[5]; KL.hp.DataSource = TX[4]; KL.PS_volumn.XAxis1.WorldMin = 0; KL.PS_volumn.XAxis1.WorldMax = KL.KLine_num + 1; KL.PS_volumn.YAxis1.WorldMin = 1; KL.PS_volumn.YAxis1.WorldMax = Convert.ToInt32(Highest_Qty * 1.1); //PS_volumn.Location = new System.Drawing.Point(PS.Location.X, PS_volumn.Location.Y); KL.PS_volumn.YAxis1.TickTextNextToAxis = false; KL.PS_volumn.Refresh(); }); }