public Result PositionMoveIn(PositionMoveIn model) { StockInfo stock = StockInfoBiz.GetStock(model.code); if (stock == null || model.unit_id == 0 || model.account_id == 0 || model.price_cost == 0 || model.count == 0) { return(Result(ApiResultEnum.Failed)); } Position position = PositionRA.Get("P_" + model.code + "_A_" + model.account_id + "_U_" + model.unit_id); Deal deal = new Deal() { code = model.code, name = stock.name, count = model.count, price = model.price_cost, money = model.count * model.price_cost, unit_id = model.unit_id, account_id = model.account_id, type_enum = OrderTypeEnum.Buy, }; TradeBiz.AdjustPosition(position, deal, model.price_cost, 2); return(Result(ApiResultEnum.Success)); }
public Result Cancel(Cancel model) { Dictionary <int, string> dic = new Dictionary <int, string>(); model.trade_nos.ForEach(trade_no => { List <Order> orders = OrderRA.List4Trade(trade_no); foreach (Order order in orders) { if (model.unit_id == order.unit_id && !string.IsNullOrWhiteSpace(order.order_no) && order.cancel_count == 0 && order.deal_count < order.count) { if (dic.ContainsKey(order.account_id)) { dic[order.account_id] += "," + order.order_no; } else { dic.Add(order.account_id, order.order_no); } } } }); foreach (var kvp in dic) { TradeBiz.Cancel(kvp.Key, kvp.Value); } return(Result(ApiResultEnum.Success)); }
public Result Order(Order model) { model.account_id = 0; model.user_id = user_id; model.platform = platform; return(Result(TradeBiz.Order(model))); }
public Result OrderLimit(Order model) { if (model.account_id == 0) { return(Result(ApiResultEnum.InvalidRequest)); } model.user_id = user_id; model.platform = platform; return(Result(TradeBiz.Order(model))); }
public Result Delete(Model.DB.Account model) { var account_groups = AccountGroupDA.List4Account(model.id); if (account_groups.Count > 0) { return(Result(ApiResultEnum.Cited, string.Join(",", account_groups.Select(u => u.code)))); } model.created_by = user_id; ApiResultEnum result = AccountDA.Delete(model); if (result == ApiResultEnum.Success && MonitorRA.GetStatusTrade() != 0) { TradeBiz.RemoveAccount(model.id); AccountRA.Delete("A_" + model.id); } return(Result(result)); }
public Result UpdateItems(Model.DB.AccountGroup model) { model.items = model.items.OrderBy(i => i.sort_buy).AsEnumerable().DistinctBy(i => i.account_id).ToList(); ApiResultEnum result = AccountGroupDA.UpdateItems(model); if (result == ApiResultEnum.Success && MonitorRA.GetStatusTrade() != 0) { var units = UnitDA.List4AccountGroup(model.id); foreach (var kvp in units) { UnitRA.UpdatePriorityStrategy(model.priority_strategy, "U_" + kvp.id); } AccountGroupRA.Delete4AccountGroup(model.id); List <Model.DB.AccountGroupItem> items = AccountGroupDA.ListItems4AccountGroup(model.id); foreach (Model.DB.AccountGroupItem item in items) { OpenCloseBiz.LoadAccountGroupItem(item); } TradeBiz.RunCalculateValue(); } return(Result(result)); }
public Result Transfer(Transfer model) { string[] keys = TradeRA.KeySearch("D_" + model.deal_no + "_*_U_0"); if (keys.Length > 0 && TradeRA.KeyExists("U_" + model.unit_id)) { Deal deal = DealRA.Get(keys[0]); if (deal.type_enum == OrderTypeEnum.Sell) { int sellable_count = PositionRA.GetSellable(model.unit_id, deal.code, deal.account_id); if (deal.count > sellable_count) { return(Result(ApiResultEnum.Order_Account_Negative_Position)); } } deal.unit_id = model.unit_id; DealRA.UpdateUnit(model.unit_id, keys[0]); TradeRA.KeyRename(keys[0], keys[0].Substring(0, keys[0].Length - 1) + model.unit_id); TradeBiz.NewDeal(deal, deal.price, 1); return(Result(ApiResultEnum.Success)); } return(Result(ApiResultEnum.Failed)); }
public Result <List <AccountPosition> > ListAccountPosition(int account_id) { List <AccountPosition> list = new List <AccountPosition>(); List <Position> list_in = (account_id == 0) ? PositionRA.List() : PositionRA.List4Account(account_id); list_in.ForEach(p => { list.Add(new AccountPosition() { account_id = p.account_id, account_name = p.account_name, code = p.code, name = p.name, count = 0, count_in = p.count }); }); List <Tuple <int, JY.PositionItem> > list_sys = new List <Tuple <int, JY.PositionItem> >(); if (account_id > 0) { TradeBiz.QueryPosition(account_id).ForEach(p => { list_sys.Add(new Tuple <int, JY.PositionItem>(account_id, p)); }); } else { string[] keys = TradeRA.KeySearch("A_*"); foreach (var key in keys) { int id = int.Parse(key.Substring(2)); TradeBiz.QueryPosition(id).ForEach(p => { list_sys.Add(new Tuple <int, JY.PositionItem>(id, p)); }); } } foreach (var t in list_sys) { AccountPosition ap = list.Find(p => p.account_id == t.Item1 && p.code == t.Item2.code); if (ap == null) { list.Add(new AccountPosition() { account_id = t.Item1, account_name = AccountRA.GetName(t.Item1), code = t.Item2.code, name = t.Item2.name, count = (int)decimal.Parse(t.Item2.count), count_in = 0 }); } else { ap.count = (int)decimal.Parse(t.Item2.count); } } return(Result(list)); }