public void SetUp() { LaunchSettingsFixture.SetupEnvVars(); _config = new ConfigurationBuilder() .AddJsonFile($"appsettings.json", true, true) .AddEnvironmentVariables() .Build(); _trackingConfig = _config.Get <TrackingConfig>(); var alpacaConfig = _config.Get <AlpacaConfig>(); var env = alpacaConfig.Alpaca_Use_Live_Api ? Environments.Live : Environments.Paper; var key = new SecretKey(alpacaConfig.Alpaca_App_Id, alpacaConfig.Alpaca_Secret_Key); _alpacaClient = new AlpacaClient( env.GetAlpacaTradingClient(key), env.GetAlpacaStreamingClient(key), env.GetAlpacaDataClient(key), env.GetAlpacaDataStreamingClient(key) ); _mockAlpacaClient = new Mock <IAlpacaClient>(); _mockAlpacaClient.Setup(x => x.GetTotalEquity()).ReturnsAsync(TOTAL_EQUITY); _context = new StockContext(); _initStockContext = new InitStockContext(Mock.Of <ILogger <InitStockContext> >(), _context); _initStockContext.StartAsync(default).Wait();
public Strategy(IAlpacaClient alpacaClient) { _alpacaClient = alpacaClient; MoneyTracker = new MoneyTracker { CostOfLastPosition = 0, MoneyMade = 0 }; }
public void SetUp() { LaunchSettingsFixture.SetupEnvVars(); _config = new ConfigurationBuilder() .AddJsonFile($"appsettings.json", true, true) .AddEnvironmentVariables() .Build(); _alpacaClient = new AlpacaClient(_config.Get <AlpacaConfig>()); _mockAlpacaClient = new Mock <IAlpacaClient>(); }
public ScheduledTrader( ILogger <ScheduledTrader> logger, ITrackingRepository trackingRepository, IAlpacaClient alpacaClient, IEnumerable <StrategyHandler> strategies) { _logger = logger ?? throw new ArgumentNullException(nameof(logger)); _trackingRepository = trackingRepository ?? throw new ArgumentNullException(nameof(trackingRepository)); _alpacaClient = alpacaClient ?? throw new ArgumentNullException(nameof(alpacaClient)); _strategies = strategies?.Where(x => x.StockStrategy.TradingFrequency != Domain.TradingFrequency.Minute) ?? throw new ArgumentNullException(nameof(strategies)); }
public StartStreamingTrader( ILogger <StartStreamingTrader> logger, IAlpacaClient alpacaClient, IEnumerable <StrategyHandler> strategies, ITrackingRepository trackingRepository ) { _logger = logger ?? throw new ArgumentNullException(nameof(logger)); _alpacaClient = alpacaClient ?? throw new ArgumentNullException(nameof(alpacaClient)); _strategies = strategies ?? throw new ArgumentNullException(nameof(strategies)); _trackingRepository = trackingRepository ?? throw new ArgumentNullException(nameof(trackingRepository)); }
public ReconcileStockData( ILogger <ReconcileStockData> logger, IAlpacaClient alpacaClient, IEnumerable <StrategyHandler> strategies, ITrackingRepository trackingRepository ) { _logger = logger ?? throw new ArgumentNullException(nameof(logger)); _alpacaClient = alpacaClient ?? throw new ArgumentNullException(nameof(alpacaClient)); _strategies = strategies ?? throw new ArgumentNullException(nameof(strategies)); _trackingRepository = trackingRepository ?? throw new ArgumentNullException(nameof(trackingRepository)); }
public StrategyHandler( ILogger <StrategyHandler> logger, IAlpacaClient alpacaClient, ITrackingRepository trackingRepository, IStrategy strategy, TradingFrequency frequency, decimal percentageOfEquityToAllocate, string stockSymbol) { _logger = logger ?? throw new ArgumentNullException(nameof(logger)); _alpacaClient = alpacaClient ?? throw new ArgumentException(nameof(alpacaClient)); _trackingRepository = trackingRepository ?? throw new ArgumentException(nameof(trackingRepository)); _strategy = strategy ?? throw new ArgumentException(nameof(strategy)); _tradingFrequency = frequency; _percentageOfEquityToAllocate = percentageOfEquityToAllocate; _stockSymbol = stockSymbol; HistoricalData = new List <StockInput>(); }
private static async Task AutoTradeStocks(IAlpacaClient alpacaClient, StockConfig stockConfig, MLConfig mlConfig) { if ((stockConfig.Stock_List?.Count ?? 0) == 0) { throw new ArgumentException("You must pass an least one valid stock symbol", nameof(stockConfig)); } var strategies = new List <Strategy>() { new MeanReversionStrategy(alpacaClient), new MLStrategy(alpacaClient, mlConfig), new MicrotrendStrategy(alpacaClient), //new NewsStrategy(alpacaClient, config.Get<NewsSearchConfig>()), }; var strategy = strategies .SingleOrDefault(x => string.Equals(x.GetType().Name, stockConfig.Stock_Strategy, StringComparison.OrdinalIgnoreCase)); if (strategy == null) { throw new ArgumentException($"Could not find any strategies with the name '{stockConfig.Stock_Strategy}'", nameof(stockConfig)); } if (!await alpacaClient.ConnectStreamApi()) { throw new UnauthorizedAccessException("Failed to connect to streaming API. Authorization failed."); } foreach (var stockSymbol in stockConfig.Stock_List) { var stockData = await alpacaClient.GetStockData(stockSymbol); if ((stockData?.Count ?? 0) == 0) { throw new ArgumentException($"You stock symbol {stockSymbol} is not valid.", nameof(stockConfig)); } strategy.HistoricalData = stockData; alpacaClient.SubscribeMinuteAgg(stockSymbol, async y => await strategy.HandleMinuteAgg(y)); } }
public async Task SellStocks(string sym, int quantity, decimal price, IAlpacaClient alpaca) { await alpaca.AlpacaClientTrading().PostOrderAsync(sym, quantity, OrderSide.Sell, OrderType.Limit, TimeInForce.Day, price); }
public MLStrategy(IAlpacaClient client, MLConfig config) : base(client) { _config = config; }
public NewsStrategy(IAlpacaClient client, NewsSearchConfig config) : base(client) { _config = config; _lastReturn = false; }
public MicrotrendStrategy(IAlpacaClient client) : base(client) { }
public AccountController(IAlpacaClient alpacaClient) { _alpacaClient = alpacaClient; }
public MeanReversionStrategy(IAlpacaClient client) : base(client) { }
public AssestsController(IAlpacaClient alpacaClient) { _alpacaClient = alpacaClient; }