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); }
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); }