public void Optimise(DateTime fromDate, DateTime toDate)
        {
            _stakingService.Evaluate(fromDate, toDate);


            Dictionary <int, List <int> > histogram = new();
            var history = _marketDataCache.TakeUntil(toDate).ToArray();

            for (var i = 1; i < history.Length; i++)
            {
                var previousPrice = Convert.ToInt32(history[i - 1].DeltaPercent);
                var currentPrice  = Convert.ToInt32(history[i].DeltaPercent);

                if (!histogram.ContainsKey(previousPrice))
                {
                    histogram[previousPrice] = new List <int>();
                }
                histogram[previousPrice].Add(currentPrice);
            }

            var parameters = Enumerable.Range(1, 100)
                             .Select(x => new ProbabilityParameters {
                Threshold = -x, Histogram = histogram
            });

            var optimal = _searcher.Maximum(parameters, fromDate, toDate);

            _parameters = (ProbabilityParameters)optimal;
        }
예제 #2
0
        public void ProbabilityStrategyTest()
        {
            var data       = CreateMarketData();
            var parameters = new ProbabilityParameters();

            var target = SimulateStrategy(data, x => x.Create(parameters));
            var actual = ToApprovedString(target);

            Approvals.Verify(actual);
        }
 public ProbabilityStrategy(
     IMarketDataCache marketDataCache,
     ISearcher searcher,
     IStakingService stakingService,
     ProbabilityParameters parameters)
 {
     _marketDataCache = marketDataCache;
     _searcher        = searcher;
     _stakingService  = stakingService;
     _parameters      = parameters;
 }
예제 #4
0
 public IStrategy Create(IParameters parameters)
 {
     return(parameters switch
     {
         LinearRegressionParameters p => Create(p),
         RelativeStrengthParameters p => Create(p),
         DeltaParameters p => Create(p),
         VolumeParameters p => Create(p),
         GradientParameters p => Create(p),
         EntropyParameters p => Create(p),
         StaticDatesParameters p => Create(p),
         MovingAverageParameters p => Create(p),
         HolidayEffectParameters p => Create(p),
         WeightedParameters p => Create(p),
         OptimalStoppingParameters p => Create(p),
         ProbabilityParameters p => Create(p),
         SpreadParameters p => Create(p),
         ClusteringParameters p => Create(p),
         _ => throw new NotImplementedException(),
     });