public void MovingAverageStrategyTest() { var data = CreateMarketData(); var parameters = new MovingAverageParameters(); var target = SimulateStrategy(data, x => x.Create(parameters)); var actual = ToApprovedString(target); Approvals.Verify(actual); }
public MovingAverageStrategy( IMarketDataCache marketDataCache, IStakingService stakingService, ISearcher searcher, MovingAverageParameters parameters) { _searcher = searcher; _marketDataCache = marketDataCache; _stakingService = stakingService; _parameters = parameters; }
public void Optimise(DateTime fromDate, DateTime endDate) { _stakingService.Evaluate(fromDate, endDate); var potentials = Enumerable.Range(1, 90).SelectMany(w => { return(Enumerable.Range(1, 60).Select(t => { var threshold = (double)t / 10; return new MovingAverageParameters { Window = w, Threshold = threshold }; })); }); var optimum = _searcher.Maximum(potentials, fromDate, endDate); _parameters = (MovingAverageParameters)optimum; }
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(), });