Exemplo n.º 1
0
        public void InsertTest()
        {
            var trade = new TradeBook();

            trade.BuyOrderId      = "235245213353431";
            trade.BuyPrice        = 13;
            trade.BuyVolume       = 1;
            trade.BuyTradeVolume  = 0;
            trade.BuyTradePrice   = 0;
            trade.BuyTradeAmount  = 0;
            trade.SellOrderId     = "";
            trade.SellPrice       = 3;
            trade.SellVolume      = 0;
            trade.SellTradeVolume = 0;
            trade.SellTradePrice  = 0;
            trade.SellTradeAmount = 0;
            trade.Profit          = 1;
            trade.Status          = TradeStatus.买单中.ToString();
            trade.UpdateDate      = DateTime.Now.ToString();
            trade.CreateDate      = DateTime.Now.ToString();
            var result = TradeBookRepository.CrateOrder(trade);

            //var result = TradeBookRepository.CreateTradeBook2(trade);
            Assert.IsTrue(result == 1);
        }
Exemplo n.º 2
0
        /// <summary>
        /// 创建交易订单
        /// </summary>
        /// <param name="currency">交易货币类型</param>
        /// <param name="price">价格</param>
        /// <param name="volume">交易量</param>
        /// <param name="profitPrice">利润单价</param>
        /// <returns></returns>
        public static bool CreateTrade(CurrencyType currency, decimal price, decimal volume, decimal profitPrice)
        {
            if (volume * price > 10)
            {
                throw new Exception("主人很穷,测试下单就不要搞那么大数据了吧!");
            }
            var tradeId = 0;
            var result  = new ResponseModel()
            {
                Code = "1000"
            };                                                 //TradeServices.Order(price, volume, TradeType.buy, currency);

            if (result.Code == "1000")
            {
                var tradeBook = new TradeBook();
                tradeBook.BuyOrderId      = result.Id;
                tradeBook.BuyPrice        = price;
                tradeBook.BuyVolume       = volume;
                tradeBook.BuyTradeAmount  = volume * price;
                tradeBook.BuyTradePrice   = 0;
                tradeBook.BuyTradeVolume  = 0;
                tradeBook.SellOrderId     = "";
                tradeBook.SellPrice       = 0;
                tradeBook.SellVolume      = 0;
                tradeBook.SellTradeAmount = 0;
                tradeBook.SellTradeVolume = 0;
                tradeBook.SellTradePrice  = 0;
                tradeBook.Profit          = profitPrice;
                tradeBook.Status          = TradeStatus.买单中.ToString();
                tradeBook.UpdateDate      = DateTime.Now.ToString();
                tradeBook.CreateDate      = DateTime.Now.ToString();
                tradeId = TradeBookRepository.CrateOrder(tradeBook);
            }
            return(result.Code == "1000" && tradeId > 0);
        }
Exemplo n.º 3
0
        /// <summary>
        /// 创建TradeBook
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public static int CrateOrder(TradeBook model)
        {
            var sql = $@"INSERT INTO TradeBook(TradeId,BuyOrderId,BuyPrice,BuyVolume,BuyTradeVolume,BuyTradePrice,BuyTradeAmount,SellOrderId,SellPrice,SellVolume,SellTradeVolume,SellTradePrice,SellTradeAmount,Profit,Status,UpdateDate,CreateDate) 
                       VALUES(NULL,'{model.BuyOrderId}',{model.BuyPrice},{model.BuyVolume},{model.BuyTradeVolume},{model.BuyTradePrice},{model.BuyTradeAmount},'{model.SellOrderId}',{model.SellPrice},{model.SellVolume},{model.SellTradeVolume},{model.SellTradePrice},{model.SellTradeAmount},{model.Profit},'{model.Status}','{model.UpdateDate}','{model.CreateDate}')";

            return(DataProvider.GetConnection().Execute(sql));
        }
 private void printTradingLog(TradeBook trade, List <OrderBook> orderBook, StockTickTransaction tickData)
 {
     //foreach (var order in orderBook)
     //{
     //    if (trade.orderId==order.orderId)
     //    {
     //        Console.WriteLine("成交时间:{0},挂单时间:{1},成交量:{2},成交价:{3},ask1:{4},bid1:{5},lp:{6}", trade.time, order.time, trade.volume, trade.price, tickData.Ask1, tickData.Bid1, tickData.LastPrice);
     //    }
     //}
 }
Exemplo n.º 5
0
Arquivo: 2.cs Projeto: you06/Test
        static void Main(string[] args)
        {
            TextBook t1 = new TextBook(10, "Man", 23.3);

            Console.WriteLine(t1.takeprice());
            t1.Show();
            TradeBook t2 = new TradeBook(20, "Month", 23.3);

            Console.WriteLine(t2.takeprice());
            t2.Show();
        }
        //按盘口价格模拟成交
        private void transactionSimulation(ref List <OrderBook> orderBook, ref List <TradeBook> tradeBook, StockTickTransaction tickData)
        {
            //如果orderbook上的挂单时间早于tickData数据的时间,认为orderbook的挂单完全成交。
            for (int i = 0; i < orderBook.Count(); i++)
            {
                var order = orderBook[i];
                if (order.time < tickData.TransactionDateTime)
                {
                    if (order.price <= tickData.Bid1 && order.volume > 0) //若order的卖价小于等于bid1的价格,认为其在该时刻已经成交了。
                    {
                        //记录成交信息
                        TradeBook trade = new TradeBook();
                        trade.tradeId = tradeId;
                        tradeId      += 1;
                        trade.time    = tickData.TransactionDateTime;
                        trade.price   = order.price;
                        trade.volume  = order.volume;
                        trade.orderId = order.orderId;
                        //刷新orderbook情况
                        UpdateOrderBookWaitingVolume(order.price, orderBook[i].waitingVolume + orderBook[i].volume, i + 1, ref orderBook);
                        order.waitingVolume = 0;
                        order.volume        = 0;
                        tradeBook.Add(trade);
                        printTradingLog(trade, orderBook, tickData);
                    }
                }
            }
            //如果orderbook上的挂单时间等于或者晚于tickData数据的时间,按照盘口成交,并减少盘口的量。
            var summary = getOrderBookSummary(orderBook);//先汇总挂单价格

            //按挂单价格遍历
            foreach (var price in summary.Keys)
            {
                for (int i = 0; i < orderBook.Count(); i++)//按order挂单的先后顺序成交
                {
                    int tradableVolume = getTradableVolumeFromMarket(tickData, price);
                    int tradedVolume   = 0;
                    if (tradableVolume <= 0)
                    {
                        break;
                    }
                    var order = orderBook[i];
                    if (orderBook[i].volume == 0 || orderBook[i].price != price)
                    {
                        continue;
                    }
                    //先成交他人的订单
                    if (tradableVolume <= orderBook[i].waitingVolume)
                    {
                        //无法成交
                        UpdateOrderBookWaitingVolume(price, tradableVolume, i, ref orderBook);
                        tradedVolume   = tradableVolume;
                        tradableVolume = 0;
                        UpdateTickData(ref tickData, tradedVolume);
                        break;
                    }
                    //再成交策略的挂单
                    else if (tradableVolume <= orderBook[i].waitingVolume + orderBook[i].volume)
                    {
                        //部分成交
                        UpdateOrderBookWaitingVolume(price, tradableVolume, i + 1, ref orderBook);
                        TradeBook trade = new TradeBook();
                        trade.tradeId = tradeId;
                        tradeId      += 1;
                        trade.time    = tickData.TransactionDateTime;
                        trade.price   = price;
                        trade.volume  = tradableVolume - orderBook[i].waitingVolume;
                        trade.orderId = orderBook[i].orderId;
                        UpdateOrderBookWaitingVolume(price, tradableVolume, i + 1, ref orderBook);
                        orderBook[i].volume       -= tradableVolume - orderBook[i].waitingVolume;
                        orderBook[i].waitingVolume = 0;
                        tradedVolume = tradableVolume;
                        UpdateTickData(ref tickData, tradedVolume);
                        tradableVolume = 0;
                        tradeBook.Add(trade);
                        printTradingLog(trade, orderBook, tickData);
                        break;
                    }
                    else
                    {
                        //完全成交
                        UpdateOrderBookWaitingVolume(price, orderBook[i].waitingVolume + orderBook[i].volume, i + 1, ref orderBook);

                        TradeBook trade = new TradeBook();
                        trade.code    = code;
                        trade.tradeId = tradeId;
                        tradeId      += 1;
                        trade.time    = tickData.TransactionDateTime;
                        trade.price   = price;
                        trade.volume  = orderBook[i].volume;
                        trade.orderId = orderBook[i].orderId;
                        UpdateOrderBookWaitingVolume(price, tradableVolume, i + 1, ref orderBook);
                        tradedVolume               = orderBook[i].waitingVolume + orderBook[i].volume;
                        orderBook[i].volume        = 0;
                        orderBook[i].waitingVolume = 0;
                        UpdateTickData(ref tickData, tradedVolume);
                        tradableVolume -= tradedVolume;
                        tradeBook.Add(trade);
                        printTradingLog(trade, orderBook, tickData);
                    }
                }
            }
        }
Exemplo n.º 7
0
 public TradeBook getTradeBook()
 {
     TradeBook ret = new TradeBook(ContextModulePINVOKE.Portfolio_getTradeBook(swigCPtr), false);
     return ret;
 }
Exemplo n.º 8
0
 internal static HandleRef getCPtr(TradeBook obj)
 {
     return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr;
 }
Exemplo n.º 9
0
    public TradeBook getTradeBook()
    {
        TradeBook ret = new TradeBook(ContextModulePINVOKE.Portfolio_getTradeBook(swigCPtr), false);

        return(ret);
    }
Exemplo n.º 10
0
        /// <summary>
        /// 自动卖单
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public static int UpdateOrder(TradeBook model)
        {
            var sql = $@"UPDATE TradeBook SET BuyTradeVolume={model.BuyTradeVolume},BuyTradePrice={model.BuyTradePrice}, BuyTradeAmount={model.BuyTradeAmount},SellOrderId='{model.SellOrderId}',SellPrice={model.SellPrice},SellVolume={model.SellVolume},SellTradeVolume={model.SellTradeVolume},SellTradePrice={model.SellTradePrice},SellTradeAmount={model.SellTradeAmount},Status='{model.Status}',UpdateDate='{DateTime.Now}' WHERE TradeId={model.TradeId}";

            return(DataProvider.GetConnection().Execute(sql));
        }
Exemplo n.º 11
0
 internal static HandleRef getCPtr(TradeBook obj)
 {
     return((obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr);
 }