public static void Open() { HQService.SubscribeStart(); var accounts = AccountDA.List <Account>(); foreach (Account account in accounts) { LoadAccount(account); } var units = UnitDA.List <Unit>(); foreach (Unit unit in units) { LoadUnit(unit); } var positions = PositionDA.List(); foreach (Position position in positions) { LoadPosition(position); } var items = AccountGroupDA.ListItems(); foreach (AccountGroupItem item in items) { LoadAccountGroupItem(item); } HQService.Get(positions.Select(p => p.code)); TradeBiz.Start(); }
public Result <List <Base> > List4Undirected() { UserRoleEnum role = (UserRoleEnum)int.Parse(UserRA.Get(user_id.ToString(), "role")); List <Model.Common.Base> lst = UnitDA.List4Undirected(role == UserRoleEnum.Administrator ? 0 : user_id); return(Result(lst)); }
public Result UpdateUnits(UserUnits model) { ApiResultEnum result = UnitDA.UpdateUserID(model); if (result == ApiResultEnum.Success && MonitorRA.GetStatusTrade() != 0) { string[] keys = TradeRA.KeySearch("U_*"); foreach (string key in keys) { string _user_id = TradeRA.Get(key, "user_id"); if (model.unit_ids.Contains(int.Parse(key.Substring(2)))) { if (model.id != _user_id) { UnitRA.UpdateUserID(model.id, key); } } else { if (model.id == _user_id) { UnitRA.UpdateUserID("0", key); } } } } return(Result(result)); }
public Result <List <Base> > List4Filter() { UserRoleEnum role = (UserRoleEnum)int.Parse(UserRA.Get(user_id.ToString(), "role")); List <Base> lst = UnitDA.List <Base>(role == UserRoleEnum.Administrator ? 0 : user_id); return(Result(lst)); }
public Result <List <Model.DB.Unit> > List() { UserRoleEnum role = (UserRoleEnum)int.Parse(UserRA.Get(user_id.ToString(), "role")); List <Model.DB.Unit> lst = UnitDA.List <Model.DB.Unit>(role == UserRoleEnum.Administrator ? 0 : user_id); return(Result(lst)); }
public Result UpdateRatioFreezing(Model.DB.Unit model) { ApiResultEnum result = UnitDA.UpdateRatioFreezing(model); if (result == ApiResultEnum.Success && MonitorRA.GetStatusTrade() != 0) { UnitRA.UpdateRatioFreezing(model.ratio_freezing, "U_" + model.id); } return(Result(result)); }
public Result UpdateStatus(Status model) { ApiResultEnum result = UnitDA.UpdateStatus(model); if (result == ApiResultEnum.Success && MonitorRA.GetStatusTrade() != 0) { UnitRA.UpdateStatus(model.status, "U_" + model.id); } return(Result(result)); }
public Result Update(Model.DB.Unit model) { ApiResultEnum result = UnitDA.Update(model); if (result == ApiResultEnum.Success && MonitorRA.GetStatusTrade() != 0) { OpenCloseBiz.LoadUnit(model, false); } return(Result(result)); }
public static void RunUnitCapitalMonitor() { string[] keys = TradeRA.KeySearch("U_*"); foreach (string key in keys) { Unit unit = UnitRA.Get(key); if (unit.user_id > 0 && unit.ratio_warning > 0) { if (unit.capital_total < unit.ratio_warning * unit.capital_scale && unit.status_order_enum == StatusOrderEnum.Allowed) { StatusOrder model = new StatusOrder(unit.id, StatusOrderEnum.NoBuying); UnitDA.UpdateStatusOrder(model); UnitRA.UpdateStatusOrder(model.status, "U_" + model.id); UserDA.ListParents(unit.user_id).ForEach(user_id => { MessageBiz.Send(user_id.ToString(), MessageTypeEnum.Unit_Warning, "单元[" + unit.code + "]资产已低于预警线,被禁止买入"); }); NLog.Info(string.Format("单元[{0}]资产已低于预警线,被禁止买入。总资产:{1}", unit.code, unit.capital_total)); } else if (unit.capital_total > unit.ratio_warning * unit.capital_scale && unit.status_order_enum == StatusOrderEnum.NoBuying) { StatusOrder model = new StatusOrder(unit.id, StatusOrderEnum.Allowed); UnitDA.UpdateStatusOrder(model); UnitRA.UpdateStatusOrder(model.status, "U_" + model.id); MessageBiz.Send(unit.user_id.ToString(), MessageTypeEnum.Unit_Recovery, "单元[" + unit.code + "]资产已高于预警线,恢复交易"); } } if (unit.user_id > 0 && unit.ratio_close_position > 0 && unit.capital_total < unit.ratio_close_position * unit.capital_scale) { List <Position> list = PositionRA.List4Unit(unit.id).Where(p => p.count_sellable > 0).ToList(); if (list.Count > 0) { list.ForEach(p => { Order order = new Order() { code = p.code, count = p.count_sellable, type_enum = OrderTypeEnum.Sell, unit_id = unit.id, price = DataBiz.GetPriceByPriceType(p.code, OrderPriceEnum.Buy5), user_id = 1, platform = 1 }; Order(order); }); UserDA.ListParents(unit.user_id).ForEach(user_id => { MessageBiz.Send(unit.id.ToString(), MessageTypeEnum.Unit_Close_Position, "单元[" + unit.code + "]资产已低于平仓线,被强制平仓"); }); NLog.Info(string.Format("单元[{0}]资产已低于平仓线,被强制平仓。总资产:{1}", unit.code, unit.capital_total)); } } } }
public Result <int> Add(Model.DB.Unit model) { int id = 0; model.created_by = user_id; model.status_order_enum = StatusOrderEnum.Allowed; ApiResultEnum result = UnitDA.Add(model, ref id); if (result == ApiResultEnum.Success && MonitorRA.GetStatusTrade() != 0) { model.id = id; OpenCloseBiz.LoadUnit(model); } return(Result(result, id)); }
public Result Delete(Model.DB.AccountGroup model) { var units = UnitDA.List4AccountGroup(model.id); if (units.Count > 0) { return(Result(ApiResultEnum.Cited, string.Join(",", units.Select(u => u.code)))); } model.created_by = user_id; ApiResultEnum result = AccountGroupDA.Delete(model); if (result == ApiResultEnum.Success && MonitorRA.GetStatusTrade() != 0) { AccountGroupRA.Delete4AccountGroup(model.id); } return(Result(result, string.Empty)); }
public static void SaveUnitCapital(Dictionary <int, decimal[]> dic) { string[] keys = TradeRA.KeySearch("U_*"); foreach (string key in keys) { Unit unit = UnitRA.Get(key); UnitDA.UpdateCapital(unit); Statement statement = new Statement() { unit_id = unit.id, capital_total = unit.capital_total, capital_stock_value = unit.capital_stock_value, capital_inout = unit.capital_inout, fee = dic.ContainsKey(unit.id) ? dic[unit.id][0] : 0, profit = dic.ContainsKey(unit.id) ? dic[unit.id][1] : 0, }; StatementDA.Add(statement); } }
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 <List <Base> > List4Account(int account_id) { List <Base> lst = UnitDA.List4Account(account_id); return(Result(lst)); }
public Result <List <Base> > List4User(int _user_id) { List <Base> lst = UnitDA.List4User(_user_id > 0 ? _user_id : user_id); return(Result(lst)); }
public Result Delete(Model.DB.Unit model) { return(Result(UnitDA.Delete(model, user_id))); }