コード例 #1
0
        public override List <PK10CorePress.ChanceClass> getChances(PK10CorePress.CommCollection sc, PK10CorePress.ExpectData ed)
        {
            List <ChanceClass> ret = new List <ChanceClass>();
            ExpectList         el  = sc.orgData;
            List <ChanceClass> scs = new List <ChanceClass>();
            strag_CommOldClass coc = new strag_CommOldClass();

            coc.CommSetting = this.CommSetting;
            coc.ChipCount   = this.ChipCount;
            coc.FixChipCnt  = true;
            //coc.AllowMaxHoldTimeCnt = this.AllowMaxHoldTimeCnt;
            coc.BySer = this.BySer;
            //coc.ReviewExpectCnt = ;
            coc.InputMinTimes = this.InputMinTimes;
            coc.StagSetting   = new StagConfigSetting();
            if (!this.IsTracing)//未持仓时才计算过往概率
            {
                double sucrate = double.NaN;
                if (this.CommSetting.UseLocalWaveData)//如果使用本地数据,获取该期本地数据
                {
                    sucrate = this.LocalWaveData[el.LastData.Expect];
                }
                if (double.IsNaN(sucrate))               //如果数据异常,继续去寻找
                {
                    sucrate = getSucRate(el, coc, true); //该类策略全部是一次性机会,可反复下注
                }
                if (this.RateDic == null)
                {
                    this.RateDic = new Dictionary <string, double>();
                }
                if (!this.RateDic.ContainsKey(this.LastUseData().LastData.Expect))//加入胜率队列
                {
                    RateDic.Add(this.LastUseData().LastData.Expect, sucrate);
                }
                if (!this.CheckEnableIn())
                {
                    return(ret);
                }

                this.IsTracing = true;//满足条件,开始持仓
                //this.debug_maxRate = 0;
            }
            CommCollection scc = new ExpectListProcess(el).getSerialData(InputMinTimes, BySer);

            ret = coc.getChances(scc, el.LastData);
            for (int i = 0; i < ret.Count; i++)
            {
                ret[i].NeedConditionEnd  = true;
                ret[i].OnCheckTheChance += CheckNeedEndTheChance;
            }
            return(ret);
        }
コード例 #2
0
        public override bool CheckNeedEndTheChance(ChanceClass cc, bool LastExpectMatched)
        {
            if (LastExpectMatched)
            {
                return(true);
            }
            if (this.IsTracing == false) //如果策略不持仓,无论是否命中,所有后续机会均关闭
            {
                return(true);
            }
            strag_CommOldClass coc = new strag_CommOldClass();

            coc.CommSetting = this.CommSetting;
            coc.ChipCount   = this.ChipCount;
            coc.FixChipCnt  = true;
            ////coc.AllowMaxHoldTimeCnt = this.AllowMaxHoldTimeCnt;
            coc.BySer = this.BySer;
            //coc.ReviewExpectCnt = ;
            coc.InputMinTimes = this.InputMinTimes;
            coc.StagSetting   = new StagConfigSetting();
            double sucrate = double.NaN;

            if (this.CommSetting.UseLocalWaveData)//如果使用本地数据,获取该期本地数据
            {
                sucrate = this.LocalWaveData[this.LastUseData().LastData.Expect];
            }
            if (sucrate == double.NaN)//如果数据异常,继续去寻找
            {
                sucrate = 100 * getSucRate(this.LastUseData(), coc, cc.AllowMaxHoldTimeCnt == 1 ? true : false);
            }
            if (!this.RateDic.ContainsKey(this.LastUseData().LastData.Expect))
            {
                RateDic.Add(this.LastUseData().LastData.Expect, sucrate);
            }
            if (this.CheckEnableOut())
            {
                return(true);
            }

            return(false);
        }