Exemple #1
0
        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);
            }
        }
Exemple #2
0
        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;
            }
        }
Exemple #3
0
 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);
 }
Exemple #4
0
 public DTick(DerivativeSymbolQuote di, int tickNumber)
 {
     Di         = di;
     TickNumber = tickNumber;
 }
Exemple #5
0
        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);
        }