private async Task <string> GetStock(string StockSymbol) { double?dblStockValue = await YahooAPI.GetStockRateAsync(StockSymbol); if (dblStockValue == null) { return(string.Format("This \"{0}\" is not an valid stock symbol", StockSymbol)); } else { return(string.Format("Stock Price of {0} is {1}", StockSymbol, dblStockValue)); } }
public void getQuoteYahoo() { // sorted by price, for calculate mean List <Quotes> tmpQuoteLst = new List <Quotes>(); for (int i = 0; i < TMP_QUOTE_SIZE; i++) { string stkQuote = YahooAPI.getQuote(symbol); stkQuote = Regex.Replace(stkQuote, "[\"]|[\r]|[\n]", ""); string[] entries = stkQuote.Replace("\r", "").Split(','); Quotes tmpQuote = new Quotes(); // TODO: last price only, maybe change later. tmpQuote.QtLastPrice = Convert.ToDouble(entries[2]); //tmpQuote.QtTime = Convert.ToDateTime(entries[1]); // why data magically appeared? TODO: figure it out after 12am someday //tmpQuote.QtLastSize = Convert.ToInt64(entries[3]); tmpQuoteLst.Add(tmpQuote); } List <Quotes> SortedList = tmpQuoteLst.OrderBy(o => o.QtLastPrice).ToList(); // calculate average, take away the smallest and the largest price double avgPrice = 0; for (int i = 1; i < TMP_QUOTE_SIZE - 1; i++) { avgPrice += SortedList[i].QtLastPrice; } avgPrice /= TMP_QUOTE_SIZE - 2; Quotes qtick = new Quotes(); qtick = tmpQuoteLst[TMP_QUOTE_SIZE - 1]; qtick.QtLastAvgPrice = avgPrice; // push back to quote list this.quoteList.Add(qtick); while (quoteList.Count > MAX_QUOTE_LIST) { quoteList.RemoveAt(0); } // calculate unrealized PNL // TODO: this is incorrect. Need bid/ask price for the correct number. // probably later Quotes lastQuote = quoteList[quoteList.Count - 1]; if (this.openPrice != 0) { this.unrealizedPNL = (lastQuote.QtLastPrice - this.openPrice) * this.share; } Console.WriteLine("Getting quote {0}", this.symbol); }
public void ExecuteOptionRules() { List <TMRule> rules = new List <TMRule>(); rules = DalManager.GetRules("Option"); if (rules != null && rules.Count > 0) { IOptionsEnt DDSoption = null; IStocksEnt DDStock = null; List <TMStockInfo> optionSymbols = DalManager.GetStockSymbols();//get all symbols DalManager.InsertLog("EXEC", "ExecuteOptionRules started at:" + DateTime.Now.ToString()); foreach (TMStockInfo symbol in optionSymbols) { try { // DDSoption = dds.GetOptionsByStock(symbol.Symbol); // DDStock = dds.GetStockBySymbol(symbol.Symbol); TMStockEnt TMstock = new TMStockEnt(symbol.Symbol, symbol.StockID, DDStock); TMstock.PriceBar = YahooAPI.GetHistoricalData(symbol.Symbol, DateTime.Now.AddDays(-360)); //need to change with an interface or factory pattern TMstock.GenerateIndicators(); //creates all sma , bollinger, candles etc while (DDSoption.Next()) { TMOptionEnt TMoption = new TMOptionEnt(symbol.Symbol, symbol.StockID, DDSoption); TMoption.StockEnt = TMstock; foreach (TMRule rule in rules) { TMoption.RuleName = rule.RuleName; TMoption.RuleID = rule.RuleID; //Evaluator<TMOptionEnt> e = new Evaluator<TMOptionEnt>(rule.RuleXml); //bool success = e.Evaluate(TMoption); DalManager.InsertLog("EXEC:OPTION", "Option rule:" + rule.RuleName + " executed for stock:" + symbol.Symbol + "; strike price: " + DDSoption.StrikePrice.ToString() + " & expiration date:" + DDSoption.ExpirationDate.ToString() + "; on " + DateTime.Now.ToString()); } } } catch (Exception ex) { //handle exception here. log to db int x; } } DalManager.InsertLog("EXEC", "ExecuteOptionRules ended at:" + DateTime.Now.ToString()); } }
public void ExecuteStockRules() { List <TMRule> rules = new List <TMRule>(); rules = DalManager.GetRules("Stock"); if (rules != null && rules.Count > 0) { IStocksEnt ddsStock = null; List <TMStockInfo> stockSymbols = DalManager.GetStockSymbols(); DalManager.InsertLog("EXEC", "ExecuteStockRules started at:" + DateTime.Now.ToString()); foreach (TMStockInfo symbol in stockSymbols) { try { ddsStock = dds.GetStockBySymbol(symbol.Symbol); TMStockEnt tmStock = new TMStockEnt(symbol.Symbol, symbol.StockID, ddsStock); tmStock.PriceBar = YahooAPI.GetHistoricalData(symbol.Symbol, DateTime.Now.AddDays(-360)); //need to change with an interface or factory pattern tmStock.GenerateIndicators(); //creates all sma , bollinger, candles etc foreach (TMRule rule in rules) { tmStock.RuleName = rule.RuleName; tmStock.RuleID = rule.RuleID; //Evaluator<TMStockEnt> e = new Evaluator<TMStockEnt>(rule.RuleXml); //bool success = e.Evaluate(tmStock); DalManager.InsertLog("EXEC:STOCK", "Stock rule:" + rule.RuleName + " executed for stock:" + symbol.Symbol + " on " + DateTime.Now.ToString()); } } catch (Exception ex) { //handle exception here int x; } } DalManager.InsertLog("EXEC", "ExecuteStockRules ended at:" + DateTime.Now.ToString()); } }
static void Main(string[] args) { DalManager dalmanager = new DalManager(); List <TMStockInfo> optionSymbols = DalManager.GetStockSymbols();//get all symbols foreach (TMStockInfo symbol in optionSymbols) { TMStockEnt TMstock = new TMStockEnt(symbol.Symbol, symbol.StockID); TMstock.PriceBar = YahooAPI.GetHistoricalData(symbol.Symbol, DateTime.Now.AddDays(-250));//need to change with an interface or factory pattern Console.WriteLine(TMstock.Symbol); foreach (double close in TMstock.PriceBar.Close) { Console.WriteLine(close.ToString()); } Console.ReadKey(); TMstock.GenerateIndicators();//creates all sma , bollinger, candles etc } }