public static int GetNearestOptionStrikePrice(DerivativeSymbolQuote di, bool isCall, bool isBuy) { var symbol = di.UnderlyingSymbol; //var isCall = StockUtils.IsCallOption(di.InstrumentType); if (symbol != "NIFTY" && symbol != "CNXBAN") { return(-1); } var price = (int)di.LastTradedPriceDouble; var mod = price % 100; if (isCall) { price = price - mod + 100; if (isBuy) { price += 100; } return(price); } else { price = price - mod; if (!isBuy) { price -= 100; } return(price - mod); } }
public void UpdateMinMax() { // Update Min Max DerivativeSymbolQuote maxDi = MaxTick.Di; DerivativeSymbolQuote minDi = MinTick.Di; PercChangeFromMax = 100 * ((StockUtils.GetPriceForAnalysis(CurrTick.Di) - StockUtils.GetPriceForAnalysis(maxDi)) / StockUtils.GetPriceForAnalysis(maxDi)); PercChangeFromMin = 100 * ((StockUtils.GetPriceForAnalysis(CurrTick.Di) - StockUtils.GetPriceForAnalysis(minDi)) / StockUtils.GetPriceForAnalysis(minDi)); if (PercChangeFromMax >= 0) { // New Max MaxTick = CurrTick; } else if (PercChangeFromMin <= 0) { // New Min MinTick = CurrTick; } // Get trend if (Math.Abs(CurrTick.Di.PercChangeFromPrevious) > 1.5) { DominantDirection = CurrTick.Di.PercChangeFromPrevious > 0 ? MarketDirection.UP : MarketDirection.DOWN; } }
public static double GetPriceForAnalysis(DerivativeSymbolQuote di) { //if (AlgoParams.UseProbableTradeValue) //{ // if (di.ProbableNextTradeValue != -1) // return di.ProbableNextTradeValue; //} if (di.LastTradedPriceDouble > 0) { return(di.LastTradedPriceDouble); } return(di.LastTradedPriceDouble); }
public DTick(DerivativeSymbolQuote di, int tickNumber) { Di = di; TickNumber = tickNumber; }
public static DerivativeSymbolQuote ParseTickString(string s, TickFormatType tickFormat) { if (string.IsNullOrEmpty(s)) { return(null); } DerivativeSymbolQuote dqi = null; try { if (tickFormat == TickFormatType.IEOD) { //ABB,20091007,09:55:07,786.10,786.10,786.10,786.10,0,0 string[] parts = s.Split(','); IFormatProvider culture = new CultureInfo("en-US", true); string dateString = parts[1] + ":" + parts[2]; DateTime dt = DateTime.ParseExact(dateString, "yyyyMMdd:HH:mm:ss", culture); //string tempStr = parts[1].Insert(4, "-").Insert(7, "-"); //DateTime lastTradeTime = DateTime.Parse(tempStr); //tempStr = parts[2]; //lastTradeTime += TimeSpan.Parse(tempStr); double ltp = double.Parse(parts[3]); //double bid = double.Parse(parts[4]); //double offer = double.Parse(parts[5]); // default 1000 offer and bid qty and volume traded as 0 //dqi = new DerivativeQuoteInformation(dt, LTP, bid, offer, 1000, 1000, 0); dqi = new DerivativeSymbolQuote(dt, ltp, ltp, ltp, 1000, 1000, 0); } else if (tickFormat == TickFormatType.Custom) { //20090910:10:40:59;273.4;273.3;273.45;2500;2500;0 string[] parts = s.Split(';'); IFormatProvider culture = new CultureInfo("en-US", true); DateTime dt = DateTime.ParseExact(parts[0], "yyyyMMdd:HH:mm:ss", culture); int volumeTraded = 0; if (parts.Length == 7) { volumeTraded = int.Parse(parts[6]); } dqi = new DerivativeSymbolQuote( dt, double.Parse(parts[1]), double.Parse(parts[2]), double.Parse(parts[3]), int.Parse(parts[4]), int.Parse(parts[5]), volumeTraded ); } else if (tickFormat == TickFormatType.EOD) { // Date,Open,High,Low,Close,Volume,Adj Close // 2011-04-13,675.00,694.30,665.75,687.75,743800,687.75 try { string[] parts = s.Split(','); IFormatProvider culture = new CultureInfo("en-US", true); DateTime dt = DateTime.ParseExact(parts[0], "yyyy-MM-dd", culture); double ltp = double.Parse(parts[1]); // Some close prices are incorrect in EOD data files, so consider open price double close = double.Parse(parts[4]); // close (adj close is highly variant and confusing) dqi = new DerivativeSymbolQuote( dt, ltp, ltp, close, 1000, 1000, 0 ); } catch { } } else if (tickFormat == TickFormatType.OnlyLTP) { // Date,LTP // 20090910:10:40:59,273.4 try { string[] parts = s.Split(','); IFormatProvider culture = new CultureInfo("en-US", true); DateTime dt = DateTime.ParseExact(parts[0], "yyyyMMdd:HH:mm:ss", culture); double ltp = double.Parse(parts[1]); dqi = new DerivativeSymbolQuote( dt, ltp, ltp, ltp, 1000, 1000, 0 ); } catch { } } } catch (Exception ex) { Logger.LogException(ex); } return(dqi); }