Example #1
0
 public WeiTuoEventArgs(StockWeiTuo wt, DataChangeType dataChangeType)
 {
     // TODO: Complete member initialization
     this.wt             = wt;
     this.done           = false;
     this.dataChangeType = dataChangeType;
 }
 public void Update(StockWeiTuo wt)
 {
     this.WTnbr       = wt.WTnbr;
     this.Code        = wt.Code;
     this.Name        = wt.Name;
     this.Time        = wt.Time;
     this.Price       = wt.Price;
     this.Qty_deal    = wt.Qty_deal;
     this.WeiTuo_Type = wt.WeiTuo_Type;
     this.Title1      = wt.Title1;
     this.Title2      = wt.Title2;
     this.Status      = wt.Status;
     this.Qty_cancel  = wt.Qty_cancel;
     this.Fee         = wt.Fee;
     this.Price_deal  = wt.Price_deal;
 }
        public override void QueryWeiTuo(JObject jomsg)
        {
            JObject WeiTuoInfo = jomsg;
            JArray  jorders    = new JArray();

            if (WeiTuoInfo.Property("data") != null)
            {
                jorders = (JArray)WeiTuoInfo["data"];
            }
            List <StockWeiTuo> WeiTuoList = new List <StockWeiTuo>();

            for (int i = 0; i < jorders.Count; i++)
            {
                JObject         jorder    = (JObject)jorders[i];
                StockWeiTuo     wt        = new StockWeiTuo();
                System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1));
                System.DateTime dt        = startTime.AddMilliseconds((long)jorder["created_at"]);
                wt.Time     = dt.ToString("yyyy-MM-dd HH:mm:ss.fff");
                wt.Code     = jorder["symbol"].ToString();
                wt.Name     = wt.Code;
                wt.Price    = System.Convert.ToDouble(jorders[i]["price"].ToString());
                wt.Qty      = System.Convert.ToDouble(jorders[i]["amount"].ToString());
                wt.Qty_deal = System.Convert.ToDouble(jorders[i]["filled_amount"].ToString());
                wt.Fee      = -System.Convert.ToDouble(jorders[i]["fill_fees"].ToString());
                if (wt.Qty_deal != 0)
                {
                    wt.Price_deal = Math.Round(System.Convert.ToDouble(jorders[i]["executed_value"].ToString()) / wt.Qty_deal, 8, MidpointRounding.AwayFromZero);
                }
                else
                {
                    wt.Price_deal = 0;
                }
                wt.CancelTime  = "";
                wt.WTnbr       = jorders[i]["id"].ToString();
                wt.WeiTuo_Type = string.Format("{0}-{1}", jorders[i]["side"].ToString(), jorders[i]["type"].ToString());
                string status = jorder["state"].ToString();
                switch (status)
                {
                case "submitted":
                    wt.Status = TradeOrderStatus.Open;
                    break;

                case "partial_filled":
                    wt.Status = TradeOrderStatus.Part_Filled;
                    break;

                case "filled":
                    wt.Status = TradeOrderStatus.Filled;
                    break;

                case "canceled":
                    wt.Status = TradeOrderStatus.Cancelled;
                    break;

                case "partial_canceled":
                    wt.Status = TradeOrderStatus.Cancelled;
                    break;

                case "pending_cancel":
                    wt.Status = TradeOrderStatus.Canceling;
                    break;

                default:
                    wt.Status = TradeOrderStatus.UnKnow;
                    break;
                }
                string[] sendtype = wt.WeiTuo_Type.Split(new char[] { '-' });
                if (sendtype[0] == "buy")
                {
                    wt.Fee    = wt.Fee * wt.Price_deal;
                    wt.Title1 = "0";
                    wt.Title2 = "买入";
                }
                else
                {
                    wt.Title1 = "1";
                    wt.Title2 = "卖出";
                }
                if (wt.Status == TradeOrderStatus.Cancelled)
                {
                    wt.Qty_cancel = wt.Qty - wt.Qty_deal;
                }
                else
                {
                    wt.Qty_cancel = 0;
                }
                WeiTuoList.Add(wt);
            }
            RaiseWeiTuo(WeiTuoList);
        }
Example #4
0
        public override void QueryWeiTuo(JObject jomsg)
        {
            JObject WeiTuoInfo = jomsg;
            JObject jorder     = null;

            if (WeiTuoInfo.Property("data") != null)
            {
                jorder = (JObject)WeiTuoInfo["data"];
            }
            if (jorder != null)
            {
                List <StockWeiTuo> WeiTuoList = new List <StockWeiTuo>();
                StockWeiTuo        wt         = new StockWeiTuo();
                System.DateTime    startTime  = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1));
                System.DateTime    dt         = startTime.AddMilliseconds((long)jorder["created-at"]);
                wt.Time        = dt.ToString("yyyy-MM-dd HH:mm:ss.fff");
                wt.Code        = jorder["symbol"].ToString();
                wt.Name        = wt.Code;
                wt.Price       = System.Convert.ToDouble(jorder["order-price"].ToString());
                wt.Qty         = System.Convert.ToDouble(jorder["order-amount"].ToString());
                wt.Qty_deal    = System.Convert.ToDouble(jorder["filled-amount"].ToString());
                wt.Fee         = -System.Convert.ToDouble(jorder["filled-fees"].ToString());
                wt.Price_deal  = System.Convert.ToDouble(jorder["price"].ToString());
                wt.CancelTime  = "";
                wt.WTnbr       = jorder["order-id"].ToString();
                wt.WeiTuo_Type = jorder["order-type"].ToString();
                string status = jorder["order-state"].ToString();
                switch (status)
                {
                case "submitted":
                    wt.Status = TradeOrderStatus.Open;
                    break;

                case "partial-filled":
                    wt.Status = TradeOrderStatus.Part_Filled;
                    break;

                case "filled":
                    wt.Status = TradeOrderStatus.Filled;
                    break;

                case "canceled":
                    wt.Status = TradeOrderStatus.Cancelled;
                    break;

                case "partial-canceled":
                    wt.Status = TradeOrderStatus.Cancelled;
                    break;

                default:
                    wt.Status = TradeOrderStatus.UnKnow;
                    break;
                }
                string[] sendtype = wt.WeiTuo_Type.Split(new char[] { '-' });
                if (sendtype[0] == "buy")
                {
                    wt.Fee    = wt.Fee * wt.Price_deal;
                    wt.Title1 = "0";
                    wt.Title2 = "买入";
                }
                else
                {
                    wt.Title1 = "1";
                    wt.Title2 = "卖出";
                }
                if (wt.Status == TradeOrderStatus.Cancelled)
                {
                    wt.Qty_cancel = wt.Qty - wt.Qty_deal;
                }
                else
                {
                    wt.Qty_cancel = 0;
                }
                WeiTuoList.Add(wt);
                RaiseWeiTuo(WeiTuoList);
            }
        }