public void Initialize() { _stochasticOsc = new StochasticOsc(); _prices = GetData(); }
static async Task Main(string[] args) { IStockDataService yahooService = new YahooService(); _priceManager = new PriceManager(yahooService); var prices = CsvExtensions.ReadCsv( @"Data\\all_stocks_5yr.csv", new Dictionary <string, string> { { "date", "StartTime" }, { "open", "Open" }, { "close", "Close" }, { "high", "High" }, { "low", "Low" }, { "volume", "Volume" }, { "Name", "Symbol" } }); var aalPrice = prices.Where(c => c.Symbol.Equals("AAL")).SortByStartTime(); var open = aalPrice.Select(c => (double)c.Open).ToArray(); var high = aalPrice.Select(c => (double)c.High).ToArray(); var low = aalPrice.Select(c => (double)c.Low).ToArray(); var close = aalPrice.Select(c => (double)c.Close).ToArray(); var volume = aalPrice.Select(c => c.Volume).ToArray(); var lstm = new Lstm(open, high, low, close, volume); lstm.Print(); var scale = lstm.CalculateScale(); var min = lstm.CalculateMin(); var stochasticOsc = new StochasticOsc(); var sData = stochasticOsc.Run(GetData()); var plt = new Plot(600, 400); var slow = sData.Select(c => c.SlowValue).ToArray(); var vals = sData.Select(c => c.Value).ToArray(); //var xs = sData.Select(p => p.StartTime.ToOADate()).ToArray(); plt.PlotSignalXY(sData.Select(p => p.StartTime.ToOADate()).ToArray(), slow, label: "slow", color: Color.Red, lineWidth: 2, lineStyle: LineStyle.Solid, markerSize: 0); plt.PlotSignalXY(sData.Select(p => p.StartTime.ToOADate()).ToArray(), vals, label: "fast", color: Color.Black, lineWidth: 2, lineStyle: LineStyle.Solid); plt.Title("IBM Stochastic"); plt.YLabel("Stochastic Unit"); plt.XLabel("Date"); plt.Ticks(dateTimeX: true); //plt.Legend(); plt.AxisBounds(minY: 0, maxY: 100); plt.AxisAuto(verticalMargin: 0.01); plt.Add(new PlottableHLine(20, Color.Black, 1, "", false, 20, 20, LineStyle.Solid)); plt.Add(new PlottableHLine(80, Color.Black, 1, "", false, 80, 80, LineStyle.Solid)); plt.SaveFig("IBM Slow Stochastic Chart.png"); return; //var list = stochasticService.Run(sData); //await TargilAsync(); //var tickerManager = new TickerManager(yahooService, _priceManager); //var tickers = CsvExtensions.ReadConstituentsAsync("Data\\constituents.csv", new Dictionary<string, string> //{ // {"Symbol", "Symbol"}, // {"Name", "Name"}, // {"Sector", "Sector"}, //}).Result; //var msftTicker = tickerManager.GetTickerBySymbol(tickers, "MSFT"); //var prices = await _priceManager.GetPricesAsync( // msftTicker, // new DateTime(2020, 4, 13), // new DateTime(2020, 6, 26), // Interval.OneDay, // false); //var offsetPercent = 1; //var vals = stochasticService.Run(prices); //var plt = new ScottPlot.Plot(600, 400); //plt.PlotSignal(vals.Select(c => (double)c.Value).ToArray()); //plt.Title("Signal Plot Quickstart (5 million points)"); //plt.YLabel("Vertical Units"); //plt.XLabel("Horizontal Units"); //plt.SaveFig("Quickstart_Quickstart_Signal_5MillionPoints.png"); return; //var offsetPercent = 0.5; //var supportPoints = _priceManager.GetSupportExtremaGroups(prices, ExtremaType.Minimum, offsetPercent); //var p = prices.Last(); //Console.WriteLine($"Curret value: {p.Close}"); //Console.WriteLine("Support Points"); //supportPoints.Print(ExtremaType.Minimum); //Console.WriteLine(); //Console.WriteLine("Reject Points"); //rejectPoints.Print(ExtremaType.Maximum); //var daysMomentum = _priceManager.GetDaysMomentum(prices); //daysMomentum.Print(); }