/// <summary> /// "20170607,8401151#DnWide#10-16-3-5,11521459#UpTight#10-16-3-5", /// </summary> /// <param name="line"></param> /// <param name="key"></param> /// <returns></returns> protected Dictionary <int, PriceAction> Dep_ReadSpvPRLine(string line, out string key) { int prt_lev = 1; string[] line_pa = line.Split(','); Print("line_pa=" + line_pa[0] + "," + line_pa[1]); Dictionary <int, PriceAction> mkt_ctxs = new Dictionary <int, PriceAction>(); for (int i = 1; i < line_pa.Length; i++) { Print("line_pa[" + i + "]=" + line_pa[i]); int t, minUp, maxUp, minDn, maxDn; TraceMessage(this.Name, prt_lev); string[] mkt_ctx = line_pa[i].Split('#'); TraceMessage(this.Name, prt_lev); int.TryParse(mkt_ctx[0], out t); //parse the time of the PA; TraceMessage(this.Name, prt_lev); //string[] pa = mkt_ctx[1].Split('#'); PriceActionType pat = (PriceActionType)Enum.Parse(typeof(PriceActionType), mkt_ctx[1]); //parse the PA type; TraceMessage(this.Name, prt_lev); string[] v = mkt_ctx[2].Split('-'); TraceMessage(this.Name, prt_lev); int.TryParse(v[0], out minUp); int.TryParse(v[1], out maxUp); int.TryParse(v[2], out minDn); int.TryParse(v[3], out maxDn); TraceMessage(this.Name, prt_lev); mkt_ctxs.Add(t, new PriceAction(pat, new Volatility(minUp, maxUp, minDn, maxDn))); } // if(mkt_ctxs.Count > 0) { // Dict_SpvPR.Add(line_pa[0], mkt_ctxs); // } key = line_pa[0]; return(mkt_ctxs); }
// public int minUpTicks; // public int maxUpTicks; // public int minDownTicks; // public int maxDownTicks; public PriceAction(PriceActionType pat) { this.paType = pat; // this.minUpTicks = min_UpTicks; // this.maxUpTicks = max_UpTicks; // this.minDownTicks = min_DnTicks; // this.maxDownTicks = max_DnTicks; }
/// <summary> /// Add the price ation type that allowed for trading /// </summary> /// <param name="pat"></param> public void AddPriceActionTypeAllowed(PriceActionType pat) { if (!priceAction_Allowed.Contains(pat)) { priceAction_Allowed.Add(pat); } int p = (int)PriceActionType.DnTight; Print("PriceActionType.DnTight=" + p); }
/// <summary> /// "20170607,8401151#DnWide#10-16-3-5,11521459#UpTight#10-16-3-5", /// </summary> /// <param name="line"></param> /// <param name="key"></param> /// <returns></returns> protected List <MarketContext> ReadSpvPRLine(string line, out string key) { int prt_lev = 1; string[] line_pa = line.Split(','); Print("line_pa=" + line_pa[0] + "," + line_pa[1]); List <MarketContext> mkt_ctxs = new List <MarketContext>(); for (int i = 1; i < line_pa.Length; i++) { Print("line_pa[" + i + "]=" + line_pa[i]); int t, minUp, maxUp, minDn, maxDn; TraceMessage(this.Name, prt_lev); string[] mkt_ctx = line_pa[i].Split('#'); TraceMessage(this.Name, prt_lev); int.TryParse(mkt_ctx[0], out t); //parse the time of the PA; TraceMessage(this.Name, prt_lev); //string[] pa = mkt_ctx[1].Split('#'); PriceActionType pat = (PriceActionType)Enum.Parse(typeof(PriceActionType), mkt_ctx[1]); //parse the PA type; TraceMessage(this.Name, prt_lev); string[] v = mkt_ctx[2].Split('-'); TraceMessage(this.Name, prt_lev); int.TryParse(v[0], out minUp); int.TryParse(v[1], out maxUp); int.TryParse(v[2], out minDn); int.TryParse(v[3], out maxDn); TraceMessage(this.Name, prt_lev); Print("t,pat,minUp,maxUp,minDn,maxDn=" + t + "," + pat + "," + minUp + "," + maxUp + "," + minDn + "," + maxDn); mkt_ctxs.Add(new MarketContext(t, new PriceAction(pat, new Volatility(minUp, maxUp, minDn, maxDn)))); } // if(mkt_ctxs.Count > 0) { // Dict_SpvPR.Add(line_pa[0], mkt_ctxs); // } key = line_pa[0]; TraceMessage(this.Name, prt_lev); Print(CurrentBar + ":key=" + key + ",mkt_ctxs.Count=" + mkt_ctxs.Count); return(mkt_ctxs); }
/// <summary> /// Check if the price action type allowed for supervised PR bits /// SpvPRBits set by the command file /// </summary> /// <returns></returns> public bool PriceActionAllowedBySpvPRBits(PriceActionType pat) { int i = (int)pat; return((i & SpvPRBits) > 0); // switch(pat) { // case PriceActionType.UpTight: // // i = (1 & SpvPRBits); // //Print("IsSpvAllowed4PAT:" + pat.ToString() + ", (1 & SpvPRBits)=" + i); // return (1 & SpvPRBits) > 0; // case PriceActionType.UpWide: //wide up channel // i = (2 & SpvPRBits); // //Print("IsSpvAllowed4PAT:" + pat.ToString() + ", (2 & SpvPRBits)=" + i); // return (2 & SpvPRBits) > 0; // case PriceActionType.DnTight: // // i = (4 & SpvPRBits); // //Print("IsSpvAllowed4PAT:" + pat.ToString() + ", (4 & SpvPRBits)=" + i); // return (4 & SpvPRBits) > 0; // case PriceActionType.DnWide: //wide dn channel // i = (8 & SpvPRBits); // //Print("IsSpvAllowed4PAT:" + pat.ToString() + ", (8 & SpvPRBits)=" + i); // return (8 & SpvPRBits) > 0; // case PriceActionType.RngTight: // // i = (16 & SpvPRBits); // //Print("IsSpvAllowed4PAT:" + pat.ToString() + ", (16 & SpvPRBits)=" + i); // return (16 & SpvPRBits) > 0; // case PriceActionType.RngWide: // // i = (32 & SpvPRBits); // //Print("IsSpvAllowed4PAT:" + pat.ToString() + ", (32 & SpvPRBits)=" + i); // return (32 & SpvPRBits) > 0; // case PriceActionType.UnKnown: // // i = (64 & SpvPRBits); // //Print("IsSpvAllowed4PAT:" + pat.ToString() + ", (64 & SpvPRBits)=" + i); // return (64 & SpvPRBits) > 0; // default: // return false; // } }
public PriceAction(PriceActionType pat, Volatility volatility) { this.paType = pat; this.voltality = volatility; }