public Actor(ICurrencyProvider currencyProvider, IRuleLibrary ruleLibrary) { Guid = Guid.NewGuid(); Data = new ActorData(); CurrencyProvider = currencyProvider; RuleLibrary = ruleLibrary; }
public Actor CreateActor(ICurrencyProvider currencyProvider, IRuleLibrary ruleLibrary, ActorType actorType, string currencyName, string[] rulesForBuy, string[] rulesForSell) { var actor = new Actor(currencyProvider, ruleLibrary); actor.Data.CurrentTime = Const.StartActorTime; actor.Data.Account.BtcCount = 0.001m; actor.Data.Account.CurrencyName = currencyName; actor.Data.Account.CurrencyCount = 0m; actor.Data.ActorType = actorType; actor.Data.ChangeCoefficient = 0.01; actor.Data.HesitationToSell = 0.5; actor.Data.HesitationToBuy = 0.5; actor.Data.IsAlive = true; actor.Data.LastActionTime = new DateTime(2000, 1, 1); actor.Data.Generation = -1; // TODO: доп проверки if (rulesForBuy == null && rulesForSell == null || rulesForBuy.Length == 0 && rulesForSell.Length == 0) { rulesForBuy = ruleLibrary.RulesBuyDictionary.Select(x => x.Key).ToArray(); rulesForSell = ruleLibrary.RulesSellDictionary.Select(x => x.Key).ToArray(); } foreach (var rule in rulesForBuy) { actor.Data.Rules.Add(new BalancedRule(rule, OperationType.Buy)); } foreach (var rule in rulesForSell) { actor.Data.Rules.Add(new BalancedRule(rule, OperationType.Sell) { Guid = Guid.NewGuid(), Coefficient = 0.4 }); } return(actor); }
public async Task <List <Actor> > LoadAliveActors(ICurrencyProvider currencyProvider, IRuleLibrary ruleLibrary) { var aliveActors = new List <Actor>(); var dtoActorData = await actorProvider.LoadAliveActors(); foreach (var dtoData in dtoActorData) { var actor = new Actor(currencyProvider, ruleLibrary) { Data = DbActorToModel(dtoData) }; aliveActors.Add(actor); } return(aliveActors); }