コード例 #1
0
        void rp_PolicyParam_Arrival(object sender, PolicyParamEventArgs args)
        //void stockMonitor_StockMonitor_ResultArrival(RunningPolicy policy,StockPolicies.PolicyResultEventArgs args)
        {
            RunningPolicy policy = (RunningPolicy)sender;

            _trader.policyParamChange(policy, args.ParamName, args.ParamValue);
        }
コード例 #2
0
        internal void AddStock(List <StockPolicies.RunningPolicy> policies)
        {
            this._policies = policies;
            for (int i = 0; i < policies.Count; i++)
            {
                RunningPolicy rp = policies[i];
                grid_realpolicy.Rows.Add();
                int row = grid_realpolicy.Rows.Count - 1;

                grid_realpolicy.SetCellImage(row, 0, global::EntropyRiseStockTP0.Properties.Resources.Ext_Net_Build_Ext_Net_icons_chart_line);
                grid_realpolicy.SetCellImage(row, 8, global::EntropyRiseStockTP0.Properties.Resources.Ext_Net_Build_Ext_Net_icons_cancel);
                grid_realpolicy.SetCellImage(row, 9, global::EntropyRiseStockTP0.Properties.Resources.Pause_Normal_Red_16px_560489_easyicon_net);
                grid_realpolicy.Rows[row][1]       = rp.SecInfo.Code;
                grid_realpolicy.Rows[row][2]       = rp.SecInfo.Name;
                grid_realpolicy.Rows[row][3]       = "-";
                grid_realpolicy.Rows[row][4]       = "-";
                grid_realpolicy.Rows[row][5]       = "-";
                grid_realpolicy.Rows[row][6]       = "-";
                grid_realpolicy.Rows[row][7]       = rp.PolicyName;
                grid_realpolicy.Rows[row].UserData = rp;
                rp.PolicyMessage_Arrival          += rp_PolicyMessage_Arrival;
                rp.PolicyResult_Arrival           += rp_PolicyResult_Arrival;
                rp.PolicyFunCGet_Arrival          += rp_PolicyFunCGet_Arrival;
                rp_PolicyKeCheArgs_Arrival(rp.kca);
                rp.LiveData_Arrival    += rp_LiveData_Arrival;
                rp.PolicyParam_Arrival += rp_PolicyParam_Arrival;
                rp.InitArgs();
                Simulator(rp.SecInfo, System.DateTime.Now.Date, System.DateTime.Now.Date, rp.PolicyDataReceiver, 0);
            }
        }
コード例 #3
0
        //策略需要拉取信息
        void PolicyFunArraival(object sender, PolicyFunCGetEventArgs args)
        {
            RunningPolicy policy = (RunningPolicy)sender;
            BaseTradeAPI  bta    = RunningST[args.SecInfo.Market];
            var           result = bta.GetType().GetMethod(args.FunName).Invoke(bta, args.Parameters);

            ((RunningPolicy)args.PolicyObject).FunGetResult(args.FunName, result);
        }
コード例 #4
0
 public void InitialStock(RunningPolicy _policy)
 {
     this.policy                   = _policy;
     this.lb_stockcode.Text        = _policy.SecInfo.Code;
     this.lb_stockname.Text        = _policy.SecInfo.Name;
     this.lb_stockprice.Text       = string.Empty;
     this.lb_stockpercent.Text     = string.Empty;
     this.lb_policyname.Text       = _policy.PolicyName;
     policy.LiveData_Arrival      += runningPolicy_LiveData_Arrival;
     policy.PolicyResult_Arrival  += policy_PolicyResult_Arrival;
     policy.PolicyMessage_Arrival += policy_PolicyMessage_Arrival;
 }
コード例 #5
0
 void stockMonitor_StockMonitor_ResultArrival(RunningPolicy policy, StockPolicies.PolicyResultEventArgs args)
 {
     if (!args.PairePoint.Closed)
     {
         policy.Notify(args.PairePoint.TradeGuid, OpenStatus.Opened, args.PairePoint.EnterPoint.OpenQty);
     }
     else
     {
         policy.Notify(args.PairePoint.TradeGuid, OpenStatus.Close, args.PairePoint.OutPoint.OpenQty, 0, "1234");
         policy.Notify(args.PairePoint.TradeGuid, OpenStatus.Closed, args.PairePoint.OutPoint.OpenQty, args.PairePoint.OutPoint.OpenPrice, "1234");
     }
     updateResult(args);
     Write(args);
     //updateResult(args);
     //Write(args);
 }
コード例 #6
0
        //策略开仓
        void PolicyResultArraival(object sender, PolicyResultEventArgs args)
        {
            RunningPolicy policy = (RunningPolicy)sender;

            if (args.IsSim)
            {
                if (!args.PairePoint.Closed)
                {
                    policy.Notify(args.PairePoint.TradeGuid, OpenStatus.Opened);
                }
                else
                {
                    policy.Notify(args.PairePoint.TradeGuid, OpenStatus.Closed);
                }
            }
            else
            {
                ////////////add/////////////
                if (!args.IsReal)
                {
                    if (!args.PairePoint.Closed)
                    {
                        policy.Notify(args.PairePoint.TradeGuid, OpenStatus.Opened);
                    }
                    else
                    {
                        policy.Notify(args.PairePoint.TradeGuid, OpenStatus.Closed);
                    }
                }
                //////////add end////////////
                //if (args.IsReal)
                else
                {
                    Trader trader = traders[args.SecInfo.Market];
                    if (!args.PairePoint.Closed) //开仓
                    {
                        trader.policyTrade(args.SecInfo, args.PolicyName1, args.PairePoint, policy, PolicyTradeType.Open);
                    }
                    else //平仓
                    {
                        trader.policyTrade(args.SecInfo, args.PolicyName1, args.PairePoint, policy, PolicyTradeType.Close);
                    }
                }
            }
        }
コード例 #7
0
        internal void AddStock(List <StockPolicies.RunningPolicy> policies)
        {
            for (int i = 0; i < policies.Count; i++)
            {
                //if(stockMonitors.ContainsKey(policies[i].StockCode))
                //{
                //    //结束本次循环,进行下次循环
                //   continue;
                //}
                //使用uc_StockMonitor控件接收数据
                RunningPolicy rp = policies[i];
                rp.CanStart = true;
                uc_StockMonitor stockMonitor = new uc_StockMonitor();
                stockMonitor.InitialStock(rp);
                stockMonitor.Width = panel_stockmonitor.Width;
                //设置控件的高度
                stockMonitor.Height = 30;
                //设置控件上边缘与其容器的工作区上边缘之间的距离
                stockMonitor.Top   = stockCount * 30 - this.panel_stockmonitor.VerticalScroll.Value;
                stockMonitor.Width = panel_stockmonitor.Width - System.Windows.Forms.SystemInformation.VerticalScrollBarWidth * System.Convert.ToInt32(panel_stockmonitor.VerticalScroll.Visible);
                //设置控件左边缘与其容器的工作区左边缘之间的距离
                stockMonitor.Left = 0;
                //添加
                stockMonitors.Add(rp.PolicyGuid, stockMonitor);
                //数据填充到panel_stockmonitor中
                panel_stockmonitor.Controls.Add(stockMonitor);
                stockMonitor.StockMonitor_ResultArrival += stockMonitor_StockMonitor_ResultArrival;
                stockMonitor.Policy_Remove += stockMonitor_Policy_Remove;
                stockCount = stockMonitors.Count;

                if (!rp.IsReal)
                {
                    Simulator(rp.SecInfo, rp.StartDate, rp.EndDate, rp.PolicyDataReceiver, rp.Inteval);
                }
                else
                {
                }
            }
        }
コード例 #8
0
        private void StartBackTest()
        {
            DateTime        today       = btParameter.StartDate.Date;
            MarketTimeRange marketRange = MarketTimeRange.getTimeRange(securityInfo.Market);
            int             totalcount  = this.policys.Count;

            DataMonitor da = new DataMonitor();

            Parallel.For(0, totalcount, (j, LoopState) =>
            {
                RunningPolicy policy = policys[j];
                Guid g = policy.PolicyGuid;
                string backtesttitle = policy.getBackTestTitle();
                PolicyStarted(new BackTestStartEventArgs(backtesttitle, g));
                policy.PolicyResult_Arrival += policy_PolicyResult_Arrival;
            });
            while (today <= btParameter.EndDate.Date)
            {
                string name = ConfigFileName.HistoryDataFileName + "\\Okex%" + securityInfo.Code + "%" + today.ToString("yyyyMMdd") + ".csv";
                //string name = ConfigFileName.HistoryDataFileName + "\\XBTUSD-" + today.ToString("yyyyMMdd") + ".csv";
                PolicyLoading(name);
                DataTable       tickdatas     = CSVFileHelper.OpenCSV(name);
                List <TickData> list_tickdata = new List <TickData>();
                for (int i = 0; i < tickdatas.Rows.Count; i++)
                {
                    DataRow  dr       = tickdatas.Rows[i];
                    DateTime tickTime = System.Convert.ToDateTime(dr["timestamp"].ToString().Replace("D", " ").Substring(0, 23));

                    //TickData tickdata = TickData.ConvertFromDataRow(dr);

                    TickData tickdata = new TickData();
                    tickdata.Code     = dr["symbol"].ToString();
                    tickdata.SecInfo  = this.securityInfo;
                    tickdata.Time     = tickTime;
                    tickdata.Preclose = 0;
                    tickdata.Open     = 0;
                    tickdata.High     = 0;
                    tickdata.Low      = 0;
                    tickdata.Ask      = System.Convert.ToDouble(dr["askPrice"]);
                    tickdata.Bid      = System.Convert.ToDouble(dr["bidPrice"]);
                    tickdata.Last     = (tickdata.Ask + tickdata.Bid) / 2;
                    tickdata.Volume   = 0;
                    tickdata.Amt      = 0;
                    tickdata.IsReal   = false;
                    tickdata.Asks[0]  = tickdata.Ask;
                    tickdata.Bids[0]  = tickdata.Bid;
                    list_tickdata.Add(tickdata);
                }
                Parallel.For(0, totalcount, (j, LoopState) =>
                {
                    RunningPolicy policy = policys[j];
                    //policy.PolicyMessage_Arrival += policy_PolicyMessage_Arrival;
                    //da.Simulator(tickdatas, policy.PolicyDataReceiver, policy.Inteval);
                    da.BackSimulator(list_tickdata, policy.PolicyDataReceiver, 0);
                    PolicyDataFinished();
                });

                list_tickdata.Clear();
                today = today.AddDays(1);
            }
            Parallel.For(0, totalcount, (j, LoopState) =>
            {
                Stopwatch sw         = new Stopwatch();
                RunningPolicy policy = policys[j];
                Guid g = policy.PolicyGuid;
                PolicyFinished(g, sw.Elapsed);
                policy.PolicyResult_Arrival -= policy_PolicyResult_Arrival;
                sw.Stop();
            });


            RaiseFinished(new EventArgs());
        }
コード例 #9
0
 void rp_LiveData_Arrival(object sender, LiveDataEventArgs args)
 {
     try
     {
         if (args.IsReal)
         {
             RunningPolicy rp = (RunningPolicy)sender;
             for (int i = 1; i < grid_realpolicy.Rows.Count; i++)
             {
                 if (((RunningPolicy)grid_realpolicy.Rows[i].UserData).PolicyGuid == rp.PolicyGuid)
                 {
                     double lastprice;
                     double lastbid = 0;
                     double lastask = 0;
                     try
                     {
                         lastprice = System.Convert.ToDouble(grid_realpolicy.Rows[i][3]);
                     }
                     catch
                     {
                         lastprice = 0;
                     }
                     try
                     {
                         lastbid = System.Convert.ToDouble(grid_realpolicy.Rows[i][5]);
                     }
                     catch { }
                     try
                     {
                         lastask = System.Convert.ToDouble(grid_realpolicy.Rows[i][6]);
                     }
                     catch { }
                     if (args.CurrentPrice != lastprice || args.Bid != lastbid || args.Ask != lastask)
                     {
                         CellStyle ncs;
                         if (args.PreClose < args.CurrentPrice)
                         {
                             grid_realpolicy.SetCellStyle(i, 3, cs_change);
                             ncs = cs_up;
                             grid_realpolicy.SetCellStyle(i, 4, cs_up);
                         }
                         else if (args.PreClose > args.CurrentPrice)
                         {
                             grid_realpolicy.SetCellStyle(i, 3, cs_change);
                             ncs = cs_down;
                             grid_realpolicy.SetCellStyle(i, 4, cs_down);
                         }
                         else
                         {
                             grid_realpolicy.SetCellStyle(i, 3, cs_change);
                             ncs = cs_even;
                             grid_realpolicy.SetCellStyle(i, 4, cs_even);
                         }
                         if (args.Bid > args.PreClose)
                         {
                             grid_realpolicy.SetCellStyle(i, 5, cs_up);
                         }
                         else if (args.Bid < args.PreClose)
                         {
                             grid_realpolicy.SetCellStyle(i, 5, cs_down);
                         }
                         else
                         {
                             grid_realpolicy.SetCellStyle(i, 5, cs_even);
                         }
                         if (args.Ask > args.PreClose)
                         {
                             grid_realpolicy.SetCellStyle(i, 6, cs_up);
                         }
                         else if (args.Ask < args.PreClose)
                         {
                             grid_realpolicy.SetCellStyle(i, 6, cs_down);
                         }
                         else
                         {
                             grid_realpolicy.SetCellStyle(i, 6, cs_even);
                         }
                         //grid_realpolicy.SetCellStyle(i,3,new C1.Win.C1FlexGrid.CellStyle()
                         grid_realpolicy.Rows[i][3] = Math.Round(args.CurrentPrice, 8, MidpointRounding.AwayFromZero);
                         grid_realpolicy.Rows[i][5] = Math.Round(args.Bid, 8, MidpointRounding.AwayFromZero);
                         grid_realpolicy.Rows[i][6] = Math.Round(args.Ask, 8, MidpointRounding.AwayFromZero);
                         grid_realpolicy.Rows[i][4] = string.Format("{0}%", Math.Round((args.CurrentPrice - args.PreClose) / args.PreClose * 100, 2, MidpointRounding.AwayFromZero).ToString("0.00"));
                         ParameterizedThreadStart pts = new ParameterizedThreadStart(reset_grid);
                         Thread th = new Thread(pts);
                         th.Start(new ResetObject(i, ncs));
                     }
                     break;
                 }
             }
         }
     }
     catch { }
 }