示例#1
0
 public override void FinishedLoadData(string contract, string cycle, List <BarData> barDatas, bool isLast)
 {
     if (contract == Setting.Contracts[0] && cycle == Setting.Cycles[0])
     {
         kdj = new KDJ(barDatas, 9, 3, 3);
     }
     if (isLast)
     {
         StartStrategy();
     }
 }
示例#2
0
        /// <summary>
        /// KDJ死叉
        /// </summary>
        /// <returns></returns>
        bool CrossKdjDown(KDJ kdj)
        {
            var preDValue = kdj.GetDValue(kdj.Count - 2);
            var preJValue = kdj.GetJValue(kdj.Count - 2);
            var dValue    = kdj.GetDValue(kdj.Count - 1);
            var jValue    = kdj.GetJValue(kdj.Count - 1);

            if (!JPR.IsNaN(preDValue) && !JPR.IsNaN(preJValue) && !JPR.IsNaN(dValue) && !JPR.IsNaN(jValue))
            {
                return(preJValue > preDValue && jValue < dValue);
            }
            return(false);
        }
示例#3
0
        public override void OnStrategyStart()
        {
            kdj         = KDJ.create(Bars, 10, BarData.Close);
            kdj.Color   = Color.Green;
            kdj.K.Color = Color.White;
            kdj.D.Color = Color.Yellow;
            Draw(kdj, 2);
            Draw(kdj.K, 2);
            Draw(kdj.D, 2);

            line80       = new HorizontalLine(Bars, 80);
            line80.Color = Color.Red;
            Draw(line80, 2);

            line20       = new HorizontalLine(Bars, 20);
            line20.Color = Color.Green;
            Draw(line20, 2);
        }
示例#4
0
        public override void OnStrategyStart()
        {
            kdj = KDJ.create(Bars, 10, BarData.Close);
            kdj.Color = Color.Green;
            kdj.K.Color = Color.White;
            kdj.D.Color = Color.Yellow;
            Draw(kdj, 2);
            Draw(kdj.K, 2);
            Draw(kdj.D, 2);

            line80 = new HorizontalLine(Bars, 80);
            line80.Color = Color.Red;
            Draw(line80, 2);

            line20 = new HorizontalLine(Bars, 20);
            line20.Color = Color.Green;
            Draw(line20, 2);
        }
示例#5
0
        protected override void OnBar(Instrument instrument, Bar bar)
        {
            Bars.Add(bar);

            Log(bar, barsGroup);

            if (kdj.Count == 0)
            {
                return;
            }


            Log(kdj.KSeries.Last, kGroup);
            Log(kdj.DSeries.Last, dGroup);
            Log(kdj.Last, jGroup);

            Log(KDJ.K.Value(Bars, Bars.Count - 1, 10), k2Group);
            Log(KDJ.D.Value(Bars, Bars.Count - 1, 10), d2Group);
            Log(KDJ.Value(Bars, Bars.Count - 1, 10), j2Group);

            Console.WriteLine("{0}, {1}", kdj.LastDateTime, kdj.KSeries.Last);
        }
示例#6
0
        protected override void OnStrategyStart()
        {
            kdj = new KDJ(Bars, 10);

            AddGroups();
        }
示例#7
0
文件: Quote.cs 项目: dominwong4/FTNN
        void updateKDJ(/*ref KLData kLData,*/ ref DateTime time, ref SortedList <DateTime, KLData> KLDataArr)
        {
            KLData       kLData = KLDataArr[time];
            const double N = 9, M1 = 3, M2 = 3;

            KDJ    kdj = new KDJ();
            double K = 0, D = 0, J = 0, RSV = 0;
            int    index = KLDataArr.IndexOfKey(time);


            //Update MinMaxPirce
            double min = Double.MaxValue, max = Double.MinValue;

            for (int i = index; i >= 0 && i > index - N; i--)
            {
                //A slow way!!
                //var t = KLDataArr.ElementAt(i).Value;
                var t = KLDataArr.Values[i];
                if (t.Low < min)
                {
                    min = t.Low;
                }
                if (t.High > max)
                {
                    max = t.High;
                }
            }

            if (index == 0 || Double.IsNaN(KLDataArr.Values[index - 1].kdj.K))
            {
                RSV = (kLData.Close - min) / (max - min) * 100;
                K   = (1 * RSV + (M1 - 1) * 0) / 1;
                D   = (1 * K + (M2 - 1) * 0) / 1;
                J   = 3 * K - 2 * D;
            }
            else
            {
                var okLData = KLDataArr.Values[index - 1];
                RSV = (kLData.Close - min) / (max - min) * 100;
                K   = (1 * RSV + (M1 - 1) * okLData.kdj.K) / M1;
                D   = (1 * K + (M2 - 1) * okLData.kdj.D) / M2;
                J   = 3 * K - 2 * D;

                //For other
                long timeBetween = kLData.sysTime.Ticks - okLData.sysTime.Ticks;

                kdj.crossPoint = Vector2.checkCrossPoint
                                 (
                    new Vector2(okLData.kdj.K, 0),
                    new Vector2(K, timeBetween),
                    new Vector2(okLData.kdj.J, 0),
                    new Vector2(J, timeBetween)
                                 );

                /*kdj.angle_KJ =
                 *  angleBetween(*/
            }

            kdj.K      = K;
            kdj.D      = D;
            kdj.J      = J;
            kdj.RSV    = RSV;
            kLData.kdj = kdj;

            KLDataArr[time] = kLData;
        }