Example #1
0
        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();
            });
        }
Example #2
0
        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();
            });
        }