コード例 #1
0
 public Actor(ICurrencyProvider currencyProvider, IRuleLibrary ruleLibrary)
 {
     Guid             = Guid.NewGuid();
     Data             = new ActorData();
     CurrencyProvider = currencyProvider;
     RuleLibrary      = ruleLibrary;
 }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }