public static void Initialize(SimplexFundsData data, string[] fundsNames, IStockDataProvider dataProvider) { for (int i = 0; i < fundsNames.Length; i++) { data.Stocks[i] = dataProvider.GetStockDefinition(fundsNames[i]); } }
/// <summary> /// Gets stocks by their symbols /// </summary> /// <param name="stockDataProvider"></param> /// <param name="symbols"></param> /// <returns></returns> public IEnumerable<Stock> GetStocks(IStockDataProvider stockDataProvider, IEnumerable<string> symbols) { if (stockDataProvider == null) throw new ArgumentNullException("stockDataProvider"); // check that symbols were provided if (symbols == null) return new List<Stock>(); // enumerate symbols, if necessary var symbolList = symbols as string[] ?? symbols.ToArray(); // get stocks by symbols var stocks = _marketDataRepository.StocksQuery.Where(s => symbolList.Contains(s.Symbol)).ToList(); // get list of symbols for stocks that were not found var missingStocks = symbolList.Except(stocks.Select(s => s.Symbol)).ToList(); // get data for stocks that are missing if (missingStocks.Count > 0) { var newStocks = stockDataProvider.GetStockData(missingStocks).Select(CreateStock); // get data for missing stocks and insert it to the repository foreach (var newStock in newStocks) _marketDataRepository.Stocks.Add(newStock); // save changes _marketDataRepository.SaveChanges(); // add new stocks stocks.AddRange(newStocks); } return stocks; }
/// <summary> /// Instantiates a <see cref="PennyPicksEmailStockProvider"/> /// </summary> /// <param name="emailAlertsAppSettings"></param> /// <param name="emailFeedFactory"></param> /// <param name="stockParser"></param> /// <param name="stockDataProviderFactory"></param> /// <param name="stockRetriever"></param> public PennyPicksEmailStockProvider(IEmailAlertsAppSettings emailAlertsAppSettings, IEmailFeedFactory emailFeedFactory, [Dependency(ParserName)] IEmailStockParser stockParser, IStockDataProviderFactory stockDataProviderFactory, IStockRetriever stockRetriever) { // check nulls if (emailAlertsAppSettings == null) throw new ArgumentNullException("emailAlertsAppSettings"); if (emailFeedFactory == null) throw new ArgumentNullException("emailFeedFactory"); if (stockParser == null) throw new ArgumentNullException("stockParser"); if (stockRetriever == null) throw new ArgumentNullException("stockRetriever"); // create feed _feed = emailFeedFactory.CreateFeed(emailAlertsAppSettings.PennyPicksFeedName); _feed.NewEmailsFound += FeedOnNewEmailsFound; // get the stock data provider _stockDataProvider = stockDataProviderFactory.GetStockDataProvider(emailAlertsAppSettings.PennyPicksStockDataProviderName); // set stock parser and retriever _stockParser = stockParser; _stockRetriever = stockRetriever; // start feed _feed.Start(); }
public SystemDefinitionFactory(IStockDataProvider dataProvider, ISystemDataLoader dataLoader, ISlippage slippage, ICommission commission, ISystemExecutionLogger systemExecutionLogger) { _dataProvider = dataProvider; _dataLoader = dataLoader; _slippage = slippage; _commission = commission; _systemExecutionLogger = systemExecutionLogger; }
public void SetUp() { _dataProvider = StockDataProviderUtils.CreateSubstitute(DateTime.MinValue); _dataLoader = SystemDataLoaderUtils.CreateSubstitute(2 * BackBufRange, BackBufRange, DateTime.Now.Date); TestObj = new StocksDataPreloader(_dataProvider, _dataLoader); _stat = new StockStatMock("", BackBufRange); }
public SignalsBBTrendFunds(ISystemDataLoader dataLoader, IStockDataProvider dataProvider, ISystemExecutionLogger systemExecutionLogger) { _dataLoader = dataLoader; _systemExecutionLogger = systemExecutionLogger; _dataRange = StockDataRange.Monthly; _fundsData = new BBTrendFundsData(_fundsNames.Length); BBTrendFundsDataCalculator.Initialize(_fundsData, _fundsNames, BBPeriod, BBSigmaWidth, HLPeriod, dataProvider); _rebalanceSignal = new ModNCounter(RebalanceInterval); }
public PriceUpdate(IStockDataProvider stockDataProvider, IAutomationProvider automationProvider, IRepository repository) { Condition.Requires(stockDataProvider).IsNotNull(); Condition.Requires(automationProvider).IsNotNull(); Condition.Requires(repository).IsNotNull(); this._stockDataProvider = stockDataProvider; this._automationProvider = automationProvider; this._repository = repository; }
public PriceCrossingSMA(IStockDataProvider dataProvider, ISystemDataLoader dataLoader, ISlippage slippage, ICommission commission, ISystemExecutionLogger systemExecutionLogger) { _dataProvider = dataProvider; _dataLoader = dataLoader; _slippage = slippage; _commission = commission; _systemExecutionLogger = systemExecutionLogger; SystemParams.Set(PriceCrossingSMAParams.StockName, ""); SystemParams.Set(PriceCrossingSMAParams.SMAPeriod, 20); }
public BBTrendFunds(IStockDataProvider dataProvider, ISystemDataLoader dataLoader, ISlippage slippage, ICommission commission, ISystemExecutionLogger systemExecutionLogger) { _dataProvider = dataProvider; _dataLoader = dataLoader; _slippage = slippage; _commission = commission; _systemExecutionLogger = systemExecutionLogger; //SystemParams.Set(BBTrendParams.StockName, ""); //SystemParams.Set(BBTrendParams.BBPeriod, 20); //SystemParams.Set(BBTrendParams.BBSigmaWidth, 2f); }
public void SetUp() { _dataProvider = Substitute.For <IStockDataProvider>(); _dataProvider.GetStockDefinition(Arg.Compat.Any <string>()) .Returns((x) => { _getStockDefinitionCalls++; return(new StockDefinition()); }); _testObj = new BufferedDataLoader(_dataProvider); _getStockDefinitionCalls = 0; _getPricesDataCalls = 0; }
/// <summary> /// Initializes a new instance of the <see cref="GatherPriceData"/> class. /// </summary> /// <param name="stockPriceProvider">The stock price provider.</param> public GatherPriceData(IStockPriceProvider stockPriceProvider, IStockDataProvider stockDataProvider) { Condition.Requires(stockPriceProvider).IsNotNull(); Condition.Requires(stockDataProvider).IsNotNull(); this._priceProvider = stockPriceProvider; this._stockDataProvider = stockDataProvider; // TODO - inject this this._scheduler = new Scheduler.Scheduler(); // Schedule the scrape every minute this._scheduler.AddScheduledAction(() => GetStockPrices(), new TimeSpan(0, 1, 0)); }
public SignalsPriceCrossingSMA(string stockName, StockDataRange dataRange, int smaPeriod, ISystemDataLoader dataLoader, IStockDataProvider dataProvider, IMMSignalVolume signalVolumeCalculator) { _dataRange = dataRange; _smaPeriod = smaPeriod; _dataLoader = dataLoader; _dataProvider = dataProvider; _signalVolumeCalculator = signalVolumeCalculator; _stock = _dataProvider.GetStockDefinition(stockName); _statSMA = new StatSMA("") .SetParam(StatSMAParams.Period, new MOParamInt() { Value = _smaPeriod }); }
//private readonly ModNCounter _rebalanceSignal; public SignalsBBTrendMultiFunds(ISystemDataLoader dataLoader, IStockDataProvider dataProvider, ISystemExecutionLogger systemExecutionLogger) { _aggressiveFunds = _fundsNames.Select((_, i) => i > 0).ToArray(); if (_fundsNames.Length != _aggressiveFunds.Length) { throw new Exception("_fundsNames != _aggressiveFunds"); } _dataLoader = dataLoader; _systemExecutionLogger = systemExecutionLogger; _dataRange = StockDataRange.Monthly; _fundsData = new BBTrendFundsData(_fundsNames.Length); BBTrendFundsDataCalculator.Initialize(_fundsData, _fundsNames, BBPeriod, BBSigmaWidth, HLPeriod, dataProvider); //_rebalanceSignal = new ModNCounter(RebalanceInterval); }
public void SetUp() { _dataProvider = StockDataProviderUtils.CreateSubstitute(DateTime.MinValue); _dataLoader = SystemDataLoaderUtils.CreateSubstituteWithConstantPriceInRange(PricesCount, StartingPrice, PriceRange, LastDate); _dataDefinitionProvider = Substitute.For <ISystemDataDefinitionProvider>(); _signalGeneratorOnOpen = Substitute.For <ISignalGeneratorOnOpen>(); _signalGeneratorOnClose = Substitute.For <ISignalGeneratorOnClose>(); _commission = CommissionUtils.CreateSubstitute(); _slippage = SlippageUtils.CreateSusbstitute(); _mmPositionCloseCalculator = Substitute.For <IMMPositionCloseCalculator>(); _systemState = new SystemState() { Cash = InitialCash }; _slippage.CalculateOpen(default, default, default, default).ReturnsForAnyArgs(args => args.ArgAt <float>(3));
public BetCommandHandler( IPortfolioDataProvider portfolioDataProvider, IAccountDataProvider accountDataProvider, IStockDataProvider stockDataProvider, IBetController betController) { Condition.Requires(portfolioDataProvider).IsNotNull(); Condition.Requires(accountDataProvider).IsNotNull(); Condition.Requires(stockDataProvider).IsNotNull(); Condition.Requires(betController).IsNotNull(); this._accountDataProvider = accountDataProvider; this._portfolioDataProvider = portfolioDataProvider; this._stockDataProvider = stockDataProvider; this._betController = betController; }
public SimplexMultiFunds(IStockDataProvider dataProvider, ISystemDataLoader dataLoader, ISlippage slippage, ICommission commission, ISystemExecutionLogger systemExecutionLogger) { _dataProvider = dataProvider; _dataLoader = dataLoader; _slippage = slippage; _commission = commission; _systemExecutionLogger = systemExecutionLogger; SystemParams.Set(SimplexMultiFundsParams.AvgProfitRange, 3); SystemParams.Set(SimplexMultiFundsParams.AvgChangeRange, 6); SystemParams.Set(SimplexMultiFundsParams.AcceptableSingleDD, 0.1); SystemParams.Set(SimplexMultiFundsParams.RiskSigmaMultiplier, 2.0); SystemParams.Set(SimplexMultiFundsParams.MaxSinglePositionSize, 0.8); SystemParams.Set(SimplexMultiFundsParams.MaxPortfolioRisk, 0.8); SystemParams.Set(SimplexMultiFundsParams.TruncateBalanceToNthPlace, 3); }
public GetBetDecisions( IStockDataProvider stockDataProvider, IStockFilter stockFilter, IInvestDecider investDecider, ICommandBus commandBus, IUpdate priceUpdate) { Condition.Requires(stockDataProvider).IsNotNull(); Condition.Requires(stockFilter).IsNotNull(); Condition.Requires(investDecider).IsNotNull(); Condition.Requires(commandBus).IsNotNull(); Condition.Requires(priceUpdate).IsNotNull(); this._stockDataProvider = stockDataProvider; this._stockFilter = stockFilter; this._investDecider = investDecider; this._commandBus = commandBus; this._priceUpdate = priceUpdate; }
public FormMain() { InitializeComponent(); _msgDisplay = new MsgDisplay(this, "MarketOps"); _dataProvider = DataProvidersFactory.GetStockDataProvider(); _systemDataLoader = SystemDataLoaderFactory.Get(_dataProvider); _systemExecutionLogger = new SystemExecutionLoggerToTextBox(edtSimDataLog); _configSystemDefinitions = ConfigSystemDefsLoader.Load(); _systemDefinitionFactory = new SystemDefinitionFactory(_dataProvider, _systemDataLoader, new SlippageNone(), new CommissionNone(), _systemExecutionLogger); StatsFactories.Initialize(); dbgPositions.OnPositionClick += dbgPositions_OnPositionClick; this.Icon = Icon.ExtractAssociatedIcon(Application.ExecutablePath); tcCharts.TabPages.Clear(); PrepareStockDataRangeSource(); InitializeSim(); LoadConfig(); }
/// <summary> /// Gets stocks by their symbols /// </summary> /// <param name="stockDataProvider"></param> /// <param name="symbols"></param> /// <returns></returns> public IEnumerable <Stock> GetStocks(IStockDataProvider stockDataProvider, IEnumerable <string> symbols) { if (stockDataProvider == null) { throw new ArgumentNullException("stockDataProvider"); } // check that symbols were provided if (symbols == null) { return(new List <Stock>()); } // enumerate symbols, if necessary var symbolList = symbols as string[] ?? symbols.ToArray(); // get stocks by symbols var stocks = _marketDataRepository.StocksQuery.Where(s => symbolList.Contains(s.Symbol)).ToList(); // get list of symbols for stocks that were not found var missingStocks = symbolList.Except(stocks.Select(s => s.Symbol)).ToList(); // get data for stocks that are missing if (missingStocks.Count > 0) { var newStocks = stockDataProvider.GetStockData(missingStocks).Select(CreateStock); // get data for missing stocks and insert it to the repository foreach (var newStock in newStocks) { _marketDataRepository.Stocks.Add(newStock); } // save changes _marketDataRepository.SaveChanges(); // add new stocks stocks.AddRange(newStocks); } return(stocks); }
public SignalsBBTrend(string stockName, StockDataRange dataRange, int bbPeriod, float bbSigmaWidth, ISystemDataLoader dataLoader, IStockDataProvider dataProvider, IMMSignalVolume signalVolumeCalculator) { _dataRange = dataRange; _bbPeriod = bbPeriod; _bbSigmaWidth = bbSigmaWidth; _dataLoader = dataLoader; _dataProvider = dataProvider; _signalVolumeCalculator = signalVolumeCalculator; _stock = _dataProvider.GetStockDefinition(stockName); _statBB = new StatBB("") .SetParam(StatBBParams.Period, new MOParamInt() { Value = _bbPeriod }) .SetParam(StatBBParams.SigmaWidth, new MOParamFloat() { Value = bbSigmaWidth }); }
public SystemProcessor( IStockDataProvider dataProvider, ISystemDataLoader dataLoader, ISystemDataDefinitionProvider dataDefinitionProvider, ISignalGeneratorOnOpen signalGeneratorOnOpen, ISignalGeneratorOnClose signalGeneratorOnClose, ICommission commission, ISlippage slippage, IMMPositionCloseCalculator mmPositionCloseCalculator) { _dataProvider = dataProvider; _dataLoader = dataLoader; _dataDefinitionProvider = dataDefinitionProvider; _signalGeneratorOnOpen = signalGeneratorOnOpen; _signalGeneratorOnClose = signalGeneratorOnClose; _commission = commission; _slippage = slippage; _mmPositionCloseCalculator = mmPositionCloseCalculator; _signalsProcessor = new SignalsProcessor(_dataLoader, _commission, _slippage); _positionCloser = new PositionsCloser(_dataLoader, _commission, _slippage); }
public SignalsSimplexMultiFunds(ISystemDataLoader dataLoader, IStockDataProvider dataProvider, ISystemExecutionLogger systemExecutionLogger, MOParams systemParams) { _avgProfitRange = systemParams.Get(SimplexMultiFundsParams.AvgProfitRange).As <int>(); _avgChangeRange = systemParams.Get(SimplexMultiFundsParams.AvgChangeRange).As <int>(); _acceptableSingleDD = systemParams.Get(SimplexMultiFundsParams.AcceptableSingleDD).As <double>(); _riskSigmaMultiplier = systemParams.Get(SimplexMultiFundsParams.RiskSigmaMultiplier).As <double>(); _maxSinglePositionSize = systemParams.Get(SimplexMultiFundsParams.MaxSinglePositionSize).As <double>(); _maxPortfolioRisk = systemParams.Get(SimplexMultiFundsParams.MaxPortfolioRisk).As <double>(); _truncateBalanceToNthPlace = systemParams.Get(SimplexMultiFundsParams.TruncateBalanceToNthPlace).As <int>(); _aggressiveFunds = _fundsNames.Select((_, i) => i > 0).ToArray(); if (_fundsNames.Length != _aggressiveFunds.Length) { throw new Exception("_fundsNames != _aggressiveFunds"); } _dataLoader = dataLoader; _systemExecutionLogger = systemExecutionLogger; _dataRange = StockDataRange.Monthly; _fundsData = new SimplexFundsData(_fundsNames.Length); SimplexFundsDataCalculator.Initialize(_fundsData, _fundsNames, dataProvider); }
/// <summary> /// Instantiates a <see cref="PennyPicksEmailStockProvider"/> /// </summary> /// <param name="emailAlertsAppSettings"></param> /// <param name="emailFeedFactory"></param> /// <param name="stockParser"></param> /// <param name="stockDataProviderFactory"></param> /// <param name="stockRetriever"></param> public PennyPicksEmailStockProvider(IEmailAlertsAppSettings emailAlertsAppSettings, IEmailFeedFactory emailFeedFactory, [Dependency(ParserName)] IEmailStockParser stockParser, IStockDataProviderFactory stockDataProviderFactory, IStockRetriever stockRetriever) { // check nulls if (emailAlertsAppSettings == null) { throw new ArgumentNullException("emailAlertsAppSettings"); } if (emailFeedFactory == null) { throw new ArgumentNullException("emailFeedFactory"); } if (stockParser == null) { throw new ArgumentNullException("stockParser"); } if (stockRetriever == null) { throw new ArgumentNullException("stockRetriever"); } // create feed _feed = emailFeedFactory.CreateFeed(emailAlertsAppSettings.PennyPicksFeedName); _feed.NewEmailsFound += FeedOnNewEmailsFound; // get the stock data provider _stockDataProvider = stockDataProviderFactory.GetStockDataProvider(emailAlertsAppSettings.PennyPicksStockDataProviderName); // set stock parser and retriever _stockParser = stockParser; _stockRetriever = stockRetriever; // start feed _feed.Start(); }
public EditPositionPresenter(IPortfolioRepository portfolioRepository, IStockDataProvider stockService) { _portfolioRepository = portfolioRepository; _stockService = stockService; }
public static IStockDataProvider CreateSubstitute(DateTime nearestTickGETicksBefore) { IStockDataProvider dataProvider = Substitute.For <IStockDataProvider>(); dataProvider.GetNearestTickGETicksBefore(default, default, default, default, default).ReturnsForAnyArgs(nearestTickGETicksBefore);
} // used for dropdown select options public StockViewerModel(IHtmlHelper htmlHelper, IStockDataProvider stockDataProvider) { this._stockData = stockDataProvider; this._htmlHelper = htmlHelper; this.Yh = new YahooHistoryConfig(); }
public StockSymbolUpdateReader(IStockDataProvider provider) => _stockProvider = provider;
public PortfolioService(IPortfolioRepository portfolioRepository, IStockDataProvider stockDataProvider) { _portRepo = portfolioRepository; _stockRepo = stockDataProvider; }
public StocksDataPreloader(IStockDataProvider dataProvider, ISystemDataLoader dataLoader) { _dataProvider = dataProvider; _dataLoader = dataLoader; }
public SystemRunner(IStockDataProvider dataProvider, ISystemDataLoader dataLoader) { _dataProvider = dataProvider; _dataLoader = dataLoader; }
public IndicatorsCalculator(IStockDataProvider dataProvider) { _dataProvider = dataProvider; }
public static void Initialize(BBTrendFundsData data, string[] fundsNames, int bbPeriod, float bbSigmaWidth, int hlPeriod, IStockDataProvider dataProvider) { for (int i = 0; i < fundsNames.Length; i++) { data.Stocks[i] = dataProvider.GetStockDefinition(fundsNames[i]); StockStat statBB = new StatBB("") .SetParam(StatBBParams.Period, new MOParamInt() { Value = bbPeriod }) .SetParam(StatBBParams.SigmaWidth, new MOParamFloat() { Value = bbSigmaWidth }); data.StatsBB[i] = (StatBB)statBB; data.CurrentTrends[i] = BBTrendType.Unknown; data.CurrentExpectations[i] = BBTrendExpectation.Unknown; StockStat statHL = new StatHLChannel("") .SetParam(StatHLChannelParams.Period, new MOParamInt() { Value = hlPeriod }); data.StatsHLChannel[i] = (StatHLChannel)statHL; data.ExpectationChanged[i] = false; } }