예제 #1
0
        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();
            }
        }
예제 #2
0
파일: jianzaozhe.cs 프로젝트: yanzhishun/wu
        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);
        }
예제 #3
0
파일: jianzaozhe.cs 프로젝트: yanzhishun/wu
        //只依托外部参数,可以直接创建
        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);
        }