public void tiaokongshengcheng() { double gujia = 60.0; double zonggushu = 2.455 * 10000 * 10000; int renshu = getirenshu; //先实例测试,实际调控这些参数 int duanxianRenshu = 3500; int zhongxianRenshu = 3500; int changxianRenshu = 3000; int duofanRenshu = 3; int kongfangRenshu = 1; int guanwangRenshu = 4; int jiancangRenshu = 1; int renshuZuot = 1; int renshuBuzuot = 1; double[] shizhifenbu = new double[8]; int[,] shizhibiao = new int[8, 2]; string text = System.IO.File.ReadAllText(@"E:\数据\shizhifenbu.txt"); string[] sr = text.Split(','); for (int i = 0; i < 8; i++) { shizhifenbu[i] = double.Parse(sr[i]); } text = System.IO.File.ReadAllText(@"E:\数据\shizhibiao.txt"); sr = text.Split(';'); for (int i = 0; i < 8; i++) { string[] srr = sr[i].Split(','); shizhibiao[i, 0] = int.Parse(srr[0]); shizhibiao[i, 1] = int.Parse(srr[1]); } for (int i = 0; i < getirenshu; i++) { zhengtaicanshu zt = new zhengtaicanshu(gujia, zonggushu, renshu, duanxianRenshu, zhongxianRenshu, changxianRenshu, duofanRenshu, kongfangRenshu, guanwangRenshu, jiancangRenshu, renshuZuot, renshuBuzuot, shizhifenbu, shizhibiao); Getishuzu[i] = new zhengtaifenbuQunti(zt).huoqujieguo(); } }
public override void chigushujuBujian(canshulei canshu) { zhengtaicanshu zz = (zhengtaicanshu)canshu; double cangwei = -1; double chengbenjia = -1; uint chigushu = 0; double keyongzijin = -1; double zijin = -1; //cangwei赋值 switch (jiaoyishuxing.duokong) { case duokongMj.duo: cangwei = 0.55 + 0.3 * 0.01 * suijishu.Next(100); break; case duokongMj.kong: cangwei = 0.85 - 0.6 * 0.01 * suijishu.Next(100); break; case duokongMj.guanwang: cangwei = 0; break; case duokongMj.jiancang: cangwei = 0.5 * 0.01 * suijishu.Next(100); break; } //成本价赋值 chengbenjia = zz.gujia * (1 + 0.05 / 100.0 * suijishu.Next(-100, 101)); //资金赋值,要读取资金分布,总额和其他由指导者部分完成,这里只负责根据参数创建,以及判断创建出的数据是否服从规范 double shizhi; double suijishubb = zz.shizhifenbugailv[zz.shizhifenbugailv.Length - 1] * suijishu.NextDouble(); int count = 0; //计算市值在哪一个分布内 double taaa = 0; foreach (var vbbb in zz.shizhifenbugailv) { if (suijishubb < vbbb && suijishubb > taaa) { break; } taaa = vbbb; count++; } //根据类型赋值 shizhi = suijishu.Next(zz.shizhibiao[count, 0], zz.shizhibiao[count, 1]); switch (jiaoyishuxing.duokong) { case duokongMj.duo: // chigushu = (uint)(shizhi / zz.gujia); zijin = shizhi / cangwei * (1 - cangwei); keyongzijin = zijin; break; case duokongMj.guanwang: zijin = shizhi; chigushu = 0; keyongzijin = zijin; break; case duokongMj.jiancang: //市值即总资金 chigushu = (uint)(shizhi / zz.gujia); zijin = shizhi * (1 - cangwei); keyongzijin = zijin; break; case duokongMj.kong: chigushu = (uint)(shizhi / zz.gujia); zijin = shizhi / cangwei * (1 - cangwei); keyongzijin = zijin; break; } chigushuju = new geti.chigushujuJg(cangwei, chengbenjia, chigushu, keyongzijin, zijin); }
//只依托外部参数,可以直接创建 public override void jiaoyishuxingBujian(canshulei canshu) { zhengtaicanshu zz = (zhengtaicanshu)canshu; //用于构建交易属性结构体的中间变量 chiguleixingMj chiguleixing; duokongMj duokong; bool ift; double jiazhitouzi; //价值投资 jiazhitouzi = suijishu.NextDouble(); //chengbenjia赋值,先用平均值 //持股类型赋值 int cg = zz.duanxianRenshu + zz.zhongxianRenshu + zz.changxianRenshu; int zbbb = suijishu.Next(cg); if (zbbb < zz.duanxianRenshu) { chiguleixing = chiguleixingMj.duan; } else if (zbbb >= zz.duanxianRenshu + zz.zhongxianRenshu) { chiguleixing = chiguleixingMj.chang; } else { chiguleixing = chiguleixingMj.zhong; } //多空赋值以及相关值的赋值,下同 int dk = zz.duofangRenshu + zz.kongfangRenshu + zz.guanwangRenshu + zz.jiancangRenshu; zbbb = suijishu.Next(dk); if (zbbb < zz.duofangRenshu) { duokong = duokongMj.duo; } else if (zbbb >= zz.duofangRenshu && zbbb < zz.duofangRenshu + zz.kongfangRenshu) { duokong = duokongMj.kong; } else if (zbbb >= zz.duofangRenshu + zz.kongfangRenshu && zbbb < zz.duofangRenshu + zz.kongfangRenshu + zz.guanwangRenshu) { duokong = duokongMj.guanwang; } else { duokong = duokongMj.jiancang; } //zuot赋值 int zt = zz.renshuBuzuot + zz.renshuZuot; zbbb = suijishu.Next(zt); if (zbbb < zz.renshuZuot) { ift = true; } else { ift = false; } //加判断,其他枚举不会超出范围 if (jiazhitouzi > 1 || jiazhitouzi < 0) { throw new ArgumentOutOfRangeException("价值投资属性值超出范围"); } jiazhitouzi = Math.Round(jiazhitouzi, 3); jiaoyishuxing = new geti.jiaoyishuxingJg(chiguleixing, duokong, ift, jiazhitouzi); }