Ejemplo n.º 1
0
        private List <String> readSeparatedLine(String separatedLine, char separator)
        {
            List <String> listOfStrings = new List <string>();

#if DEBUG
            try
#endif
            {
                String[] separatedArray = separatedLine.Split(separator);

                for (int arrayCnt = 0; arrayCnt < separatedArray.Length - 1; arrayCnt++)
                {
                    String x = separatedArray[arrayCnt].Replace("\"", "");

                    listOfStrings.Add(x); //separatedArray[arrayCnt].Trim());
                }
            }
#if DEBUG
            catch (Exception ex)
            {
                TSErrorCatch.errorCatchOut(Convert.ToString(this), ex);
            }
#endif

            return(listOfStrings);
        }
        public bool createCSVFile(String fileName)
        {
            try
            {
                this.fileName = fileName;
                //this.instrument = instrument;
                //this.studyName = studyName;

                //File.Exists(fullFile)

                //String fileNameFull = dir + fileName + ".csv";

                //                 if(File.Exists(fileNameFull))
                //                 {
                //                     File.Open(fileNameFull);
                //
                //                 }


                fileStream = new FileStream(System.IO.Path.Combine(dir, fileName),
                                            FileMode.Create, FileAccess.ReadWrite, FileShare.Read);
                streamWriter = new StreamWriter(fileStream);

                return(true);
            }
            catch (Exception ex)
            {
                TSErrorCatch.errorCatchOut(Convert.ToString(this), ex);
            }

            return(false);
        }
Ejemplo n.º 3
0
        // The cumulative normal distribution function
        public static double CND(double X)
        {
            try
            {
                double L, K, w;
                double a1 = 0.31938153,
                       a2 = -0.356563782,
                       a3 = 1.781477937,
                       a4 = -1.821255978,
                       a5 = 1.330274429;

                L = Math.Abs(X);
                K = 1.0 / (1.0 + 0.2316419 * L);
                w = 1.0 - 1.0 / Math.Sqrt(2.0 * Math.PI) * Math.Exp(-L * L / 2) * (a1 * K + a2 * K * K + a3
                                                                                   * Math.Pow(K, 3) + a4 * Math.Pow(K, 4) + a5 * Math.Pow(K, 5));

                if (X < 0.0)
                {
                    w = 1.0 - w;
                }
                return(w);
            }
            catch (Exception ex)
            {
                TSErrorCatch.errorCatchOut("OptionCalcs", ex);
            }

            return(0);
        }
Ejemplo n.º 4
0
        // The Black and Scholes (1973) Stock option formula
        public static double blackScholes(char CallPutFlag, double S, double X, double T, double r, double v)
        {
            try
            {
                if (T == 0)
                {
                    T = 0.0001;
                }

                double d1, d2;

                d1 = (Math.Log(S / X) + (r + v * v / 2) * T) / (v * Math.Sqrt(T));
                d2 = d1 - v * Math.Sqrt(T);

                if (CallPutFlag == 'c' || CallPutFlag == 'C')
                {
                    return(S * CND(d1) - X * Math.Exp(-r * T) * CND(d2));
                }
                else
                {
                    return(X * Math.Exp(-r * T) * CND(-d2) - S * CND(-d1));
                }
            }
            catch (Exception ex)
            {
                TSErrorCatch.errorCatchOut("OptionCalcs", ex);
            }

            return(0);
        }
 public void writeLnToEnd(DateTime dateTimeOut, double arrayValue)//DateTime arrayDateTime, double arrayValues)
 {
     try
     {
         streamWriter.BaseStream.Seek(0, SeekOrigin.End);
         writeLnToFile(dateTimeOut, arrayValue);
     }
     catch (Exception ex)
     {
         TSErrorCatch.errorCatchOut(Convert.ToString(this), ex);
     }
 }
 public void closeAndSaveFile()
 {
     try
     {
         streamWriter.Close();
         fileStream.Close();
     }
     catch (Exception ex)
     {
         TSErrorCatch.errorCatchOut(Convert.ToString(this), ex);
     }
 }
        public Dictionary <string, string> readInstrumentAccount(string cfgAcctFileName)
        {
            Dictionary <string, string> instrumentAcctHashSet = new Dictionary <string, string>();

            try
            {
                //String fullFile = System.IO.Path.Combine(Directory.GetCurrentDirectory(),
                //    TradingSystemConstants.INITIALIZE_CONFIG_DIRECTORY,
                //    TradingSystemConstants.INSTRUMENT_ACCT_CSV);

                String fullFile = System.IO.Path.Combine(Directory.GetCurrentDirectory(),
                                                         TradingSystemConstants.INITIALIZE_CONFIG_DIRECTORY,
                                                         cfgAcctFileName);

                if (File.Exists(fullFile))
                {
                    FileStream fileStream = new FileStream(fullFile,
                                                           FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
                    StreamReader streamReader = new StreamReader(fileStream);

                    while (!streamReader.EndOfStream)
                    {
                        String line = streamReader.ReadLine();
                        if (line.Length > 0)
                        {
                            string[] instrumentAcctArray = line.Split(',');

                            instrumentAcctHashSet.Add(instrumentAcctArray[0], instrumentAcctArray[1]);

                            //int locationOfEqual = line.IndexOf("=");
                            //String token = line.Substring(0, locationOfEqual);
                            //String value = line.Substring(locationOfEqual + 1);

                            //if (token.CompareTo("DAYLIGHTSAVINGS") == 0)
                            //{
                            //    return Convert.ToBoolean(value);
                            //}
                            //Debug.WriteLine("$$$"+ token +"$$$");
                            //Debug.WriteLine("$$$"+ value +"$$$");
                        }
                    }

                    fileStream.Close();
                    streamReader.Close();
                }
            }
            catch (Exception ex)
            {
                TSErrorCatch.errorCatchOut(Convert.ToString(this), ex);
            }

            return(instrumentAcctHashSet);
        }
Ejemplo n.º 8
0
        public static double ND(double X)
        {
            try
            {
                return(Math.Exp(-X * X / 2) / Math.Sqrt(2 * Math.PI));
            }
            catch (Exception ex)
            {
                TSErrorCatch.errorCatchOut("OptionCalcs", ex);
            }

            return(0);
        }
Ejemplo n.º 9
0
        public static String convertToTickMovesString(double barVal, double tickIncrement, double tickDisplay)
        {
            try
            {
                return(Convert.ToString(convertToTickMovesDouble(barVal, tickIncrement, tickDisplay)));
            }
            catch (Exception ex)
            {
                TSErrorCatch.errorCatchOut("ConversionAndFormatting", ex);

                return(Convert.ToString(barVal));
            }
        }
Ejemplo n.º 10
0
        public void closeDB()
        {
            try
            {
                //conn.Close();

                //conn.Dispose();
            }
            catch (System.Exception ex)
            {
                TSErrorCatch.errorCatchOut(Convert.ToString(this), ex);
            }
        }
        public void createFile(String fileName)
        {
            try
            {
                this.fileName = fileName;

                fileStream = new FileStream(dir + fileName,
                                            FileMode.Create, FileAccess.ReadWrite, FileShare.Read);
                streamWriter = new StreamWriter(fileStream);
            }
            catch (Exception ex)
            {
                TSErrorCatch.errorCatchOut(Convert.ToString(this), ex);
            }
        }
        public String readStoredADMStrategyInfoList_1Line()
        {
            try
            {
                if (streamReader != null && !streamReader.EndOfStream)
                {
                    return(streamReader.ReadLine());
                }
            }
            catch (Exception ex)
            {
                TSErrorCatch.errorCatchOut(Convert.ToString(this), ex);
            }

            return(null);
        }
Ejemplo n.º 13
0
        private double getDoubleOutOfStringList(List <String> stringList, ADM_DETAIL_FIELDS summaryField)
        {
#if DEBUG
            try
#endif
            {
                return(Convert.ToDouble(stringList[(int)summaryField]));
            }
#if DEBUG
            catch (Exception ex)
            {
                TSErrorCatch.errorCatchOut(Convert.ToString(this), ex);
            }
#endif
            return(0);
        }
Ejemplo n.º 14
0
        private int getIntOutOfStringList(List <String> stringList, ADM_SUMMARY_FIELDS summaryField)
        {
#if DEBUG
            try
#endif
            {
                return(Convert.ToInt32(stringList[(int)summaryField]));
            }
#if DEBUG
            catch (Exception ex)
            {
                TSErrorCatch.errorCatchOut(Convert.ToString(this), ex);
            }
#endif
            return(0);
        }
Ejemplo n.º 15
0
        public DateTime getFileDateTimeOfADMPositionsWeb(String nameOfStoredFile)
        {
            try
            {
                if (File.Exists(nameOfStoredFile))
                {
                    return(File.GetLastWriteTime(nameOfStoredFile));
                }
            }
            catch (Exception ex)
            {
                TSErrorCatch.errorCatchOut(Convert.ToString(this), ex);
            }

            return(new DateTime(1900, 1, 1));
        }
        public SaveOutputFile(String groupFolder, String currentDate)
        {
            try
            {
                dir = System.IO.Path.Combine(Directory.GetCurrentDirectory(), groupFolder, currentDate);

                if (!Directory.Exists(dir))
                {
                    Directory.CreateDirectory(dir);
                }
            }
            catch (Exception ex)
            {
                TSErrorCatch.errorCatchOut(Convert.ToString(this), ex);
            }
        }
Ejemplo n.º 17
0
        //public MySqlConnection conn;

        //connection to database here
        public void connectDB(String dbServerName)
        {
            try
            {
                String connString =
                    String.Format("server={0};user id={1}; password={2}; database={3}; pooling=false ", dbServerName,
                                  TradingSystemConstants.DB_USERNAME, TradingSystemConstants.DB_PASSWORD, TradingSystemConstants.DB_DATABASENAME);

                //conn = new MySqlConnection(connString);
                //conn.Open();
            }
            catch (System.Exception ex)
            {
                TSErrorCatch.errorCatchOut(Convert.ToString(this), ex);
            }
        }
        public SaveOutputFile(String fullOutputDirectory, bool setFullOutputDirectory)
        {
            try
            {
                dir = fullOutputDirectory;

                if (!Directory.Exists(dir))
                {
                    Directory.CreateDirectory(dir);
                }
            }
            catch (Exception ex)
            {
                TSErrorCatch.errorCatchOut(Convert.ToString(this), ex);
            }
        }
Ejemplo n.º 19
0
        // The generalized Black and Scholes formula
        //
        // S - stock price
        // X - strike price of option
        // r - risk-free interest rate
        // T - time to expiration in years
        // v - volatility of the relative price change of the underlying stock price
        // b - cost-of-carry
        //     b = r        --> Black-Scholes stock option model
        //     b = 0        --> Black futures option model
        //     b = r-q      --> Merton stock option model with continuous dividend yield q
        //     b = r - r(f) --> Garman-Kohlhagen currency option model, where r(f) is the risk-free rate of the foreign currency
        //
        // Examples:
        // a) currency option
        //    T = 0.5, 6 month to expiry
        //    S = 1.56, USD/DEM exchange rate is 1.56
        //    X = 1.6,  strike is 1.60
        //    r = 0.06, domestic interest rate in Germany is 6% per annum
        //    r(f) = 0.08, foreign risk-free interest rate in the U.S. is 8% per annum
        //    v = 0.12, volatility is 12% per annum
        //    c = 0.0291

        public static double calculateOptionVolatility(char callPutFlag, double S, double X, double T, double r, double currentOptionPrice)
        {
            double tempV = 0.5;

            try
            {
                if (T == 0)
                {
                    T = 0.0001;
                }

                int i = 0;
                //double tempV = 0.1;
                double volInc = 0.5;
                double priceTest;
                //double diffBtwnTempPriceAndTruePrice = 999999;
                int maxIter = 100;

                while (i < maxIter)
                {
                    priceTest = blackScholes(callPutFlag, S, X, T, r, tempV);

                    if (Math.Abs(currentOptionPrice - priceTest) < 0.01)
                    {
                        return(tempV);
                    }
                    else if (priceTest - currentOptionPrice > 0)
                    {
                        volInc /= 2;
                        tempV  -= volInc;
                    }
                    else
                    {
                        volInc /= 2;
                        tempV  += volInc;
                    }

                    i++;
                }
            }
            catch (Exception ex)
            {
                TSErrorCatch.errorCatchOut("OptionCalcs", ex);
            }

            return(tempV);
        }
        public void createConfigFile(String fileName)
        {
            try
            {
                this.fileName = fileName;
                //this.instrument = instrument;
                //this.studyOut = studyOut;

                fileStream = new FileStream(System.IO.Path.Combine(dir, fileName),
                                            FileMode.Create, FileAccess.ReadWrite, FileShare.Read);
                streamWriter = new StreamWriter(fileStream);
            }
            catch (Exception ex)
            {
                TSErrorCatch.errorCatchOut(Convert.ToString(this), ex);
            }
        }
        public void writeLnToFile(DateTime dateTimeOut, double arrayValue)
        {
            try
            {
                String dateLine    = dateTimeOut.ToString("MM/dd/yy", DateTimeFormatInfo.InvariantInfo);
                String timeLine    = dateTimeOut.ToString("HH:mm", DateTimeFormatInfo.InvariantInfo);
                String lineOfArray = dateLine.PadRight(padBuffer, ' ') + "\t"
                                     + timeLine.PadRight(padBuffer, ' ')
                                     + "\t" + arrayValue.ToString().PadRight(padBuffer, ' ');
                streamWriter.WriteLine(lineOfArray);

                streamWriter.Flush();
            }
            catch (Exception ex)
            {
                TSErrorCatch.errorCatchOut(Convert.ToString(this), ex);
            }
        }
        public void writeTextLineFile(String text)
        {
            try
            {
                String lineOut;

                lineOut = text + "\r\n";

                streamWriter.BaseStream.Seek(0, SeekOrigin.End);
                streamWriter.Write(lineOut);

                streamWriter.Flush();
            }
            catch (Exception ex)
            {
                TSErrorCatch.errorCatchOut(Convert.ToString(this), ex);
            }
        }
        public void writeConfigLineFile(String label, String value)
        {
            try
            {
                String lineOut;

                lineOut = label + "=" + value + "\r\n";

                streamWriter.BaseStream.Seek(0, SeekOrigin.End);
                streamWriter.Write(lineOut);

                streamWriter.Flush();
            }
            catch (Exception ex)
            {
                TSErrorCatch.errorCatchOut(Convert.ToString(this), ex);
            }
        }
Ejemplo n.º 24
0
        // Vega for the generalized Black and Scholes formula
        public static double gVega(double S, double X, double T, double r, double b, double v)
        {
            try
            {
                if (T == 0)
                {
                    T = 0.0001;
                }

                double d1 = (Math.Log(S / X) + (b + Math.Pow(v, 2) / 2) * T) / (v * Math.Sqrt(T));
                return(S * Math.Exp((b - r) * T) * ND(d1) * Math.Sqrt(T));
            }
            catch (Exception ex)
            {
                TSErrorCatch.errorCatchOut("OptionCalcs", ex);
            }

            return(0);
        }
        public bool createFile(String fileName, String instrument, String studyName)
        {
            try
            {
                this.fileName = fileName;
                //this.instrument = instrument;

                fileStream = new FileStream(dir + fileName + ".txt",
                                            FileMode.Create, FileAccess.ReadWrite, FileShare.Read);
                streamWriter = new StreamWriter(fileStream);

                return(true);
            }
            catch (Exception ex)
            {
                TSErrorCatch.errorCatchOut(Convert.ToString(this), ex);
            }

            return(false);
        }
Ejemplo n.º 26
0
 //connection to database here
 public void setupSqlConnectionString()
 {
     try
     {
         connString1Builder                          = new SqlConnectionStringBuilder();
         connString1Builder.DataSource               = "tcp:h9ggwlagd1.database.windows.net,1433";
         connString1Builder.InitialCatalog           = "TMLDB";
         connString1Builder.Encrypt                  = true;
         connString1Builder.TrustServerCertificate   = false;
         connString1Builder.UserID                   = "realtimeuser@h9ggwlagd1";
         connString1Builder.Password                 = "******";
         connString1Builder.MultipleActiveResultSets = true;
         connString1Builder.Pooling                  = true;
         connString1Builder.MaxPoolSize              = 50;
         connString1Builder.ConnectTimeout           = 30;
     }
     catch (System.Exception ex)
     {
         TSErrorCatch.errorCatchOut(Convert.ToString(this), ex);
     }
 }
        public void ModifyFile(DateTime dateTimeOut, double arrayValue, int lineNum)
        {
            try
            {
                int offset = (padBuffer * 3 + 4) * lineNum;


                fileStream.Seek(offset, SeekOrigin.Begin);


                modifyLnInFile(dateTimeOut, arrayValue);

                fileStream.SetLength(offset);

                streamWriter.BaseStream.Seek(0, SeekOrigin.End);
            }
            catch (Exception ex)
            {
                TSErrorCatch.errorCatchOut(Convert.ToString(this), ex);
            }
        }
Ejemplo n.º 28
0
        /**
         * double fuzzyZero = tickIncrement / 1000;
         *          double positiveFuzzyZero = tickIncrement / 1000;
         *
         *          if (barVal < 0)
         *              fuzzyZero = -tickIncrement / 1000;
         *
         *          int nTicksInUnit = (int)(1 / tickIncrement + positiveFuzzyZero);
         *
         *          if (nTicksInUnit == 0)
         *              return barVal / tickIncrement * tickDisplay;
         *
         *          //nTicksInUnit = 1;
         *
         *          int intPart = (int)(barVal + fuzzyZero);
         *          int nTicks = (int)((barVal + fuzzyZero) / tickIncrement + fuzzyZero);
         *          //Debug.WriteLine(barVal + "  " + tickIncrement + "  " + fuzzyZero + "  " + nTicks + "  ");
         *
         *          int decPart = (int)((nTicks % nTicksInUnit) * tickDisplay + fuzzyZero);
         *          double fractPart = 0;
         *
         *          // a hack for Eurodollar
         *          if (tickDisplay < 1)
         *              fractPart = (nTicks % nTicksInUnit) * tickDisplay - decPart;
         *
         *          int decimalBase = 1;
         *
         *          //if (tickDisplay/tickIncrement > 1)
         *          //    decimalBase = (int)tickDisplay;
         *          //else
         *
         *
         *
         *          while (((nTicksInUnit - 1) * tickDisplay / decimalBase) >= 1)
         *              decimalBase *= 10;
         *
         *
         *          //if (decimalBase == 1 && tickDisplay > 0 && tickIncrement > 0 && tickDisplay > tickIncrement)
         *          //{
         *          //    decimalBase = (int)(tickDisplay / tickIncrement);
         *          //}
         *
         *
         *          return intPart * decimalBase + decPart + fractPart;
         *
         *
         *
         *
         *
         *
         *
         *
         *
         *
         * double fuzzyZero = tickIncrement / 1000;
         *          double positiveFuzzyZero = tickIncrement / 1000;
         *
         *          int nTicksInUnit = (int)(1 / tickIncrement + positiveFuzzyZero);
         *
         *          double maxFractUnits = 0;
         *
         *          if (tickIncrement == 1 && tickDisplay > 0)
         *          {
         *              maxFractUnits = nTicksInUnit * tickDisplay;
         *          }
         *          else
         *          {
         *              maxFractUnits = (nTicksInUnit - 1) * tickDisplay;
         *          }
         *
         *
         *          int decimalBase = 1;
         *          while ((maxFractUnits + positiveFuzzyZero) / decimalBase >= 1)
         *              decimalBase *= 10;
         *
         *          double displayVal = Convert.ToDouble(barVal);
         *
         *          if (displayVal < 0)
         *              fuzzyZero = -tickIncrement / 1000;
         *
         *          int intPart = (int)((displayVal + fuzzyZero) / decimalBase + fuzzyZero);
         *          double decPart = (displayVal - intPart * decimalBase) / tickDisplay * tickIncrement;
         *
         *          double incrementFixTest = (displayVal - intPart * decimalBase) % (tickIncrement * decimalBase);
         *
         *          double incrementFix = 0;
         *
         *          if (incrementFixTest != 0)
         *              incrementFix = ((tickIncrement * decimalBase) - incrementFixTest) / decimalBase;
         *
         *
         *          return intPart + decPart + incrementFix;
         */

        public static double convertToTickMovesDouble(String barVal, double tickIncrement, double tickDisplay)
        {
            if (tickDisplay == 0)
            {
                return(Convert.ToDouble(barVal));
            }
            try
            {
                double fuzzyZero         = tickIncrement / 1000; //0.000000000001;
                double positiveFuzzyZero = tickIncrement / 1000; //0.000000000001;

                int    nTicksInUnit  = (int)(1 / tickIncrement + positiveFuzzyZero);
                double maxFractUnits = (nTicksInUnit - 1) * tickDisplay;

                if (tickIncrement == 1)
                {
                    maxFractUnits = tickDisplay;
                }

                int decimalBase = 1;
                while ((maxFractUnits + positiveFuzzyZero) / decimalBase >= 1)
                {
                    decimalBase *= 10;
                }

                double displayVal = Convert.ToDouble(barVal);

                if (displayVal < 0)
                {
                    fuzzyZero = -tickIncrement / 1000;
                }

                int    intPart = (int)((displayVal + fuzzyZero) / decimalBase + fuzzyZero);
                double decPart = (displayVal - intPart * decimalBase) / tickDisplay * tickIncrement;

                double fractPart = 0;

                // a hack for Eurodollar
                //if ( tickDisplay < 1 )
                //	fractPart = (nTicks % nTicksInUnit) * tickDisplay - decPart;

                double res = intPart + decPart + fractPart;

                double incrMultiple = Math.Floor(res / tickIncrement + positiveFuzzyZero) * tickIncrement;

                if (res < incrMultiple + positiveFuzzyZero && res > incrMultiple - positiveFuzzyZero)
                {
                    return(res);
                }
                else
                {
                    return(incrMultiple + tickIncrement);
                }


                // make sure return value is an integral multiple of the tick increment
                //return Math.Ceiling((intPart + decPart) / tickIncrement - positiveFuzzyZero)
                //    * tickIncrement;

                //return intPart + decPart + fractPart;
            }
            catch (Exception ex)
            {
                TSErrorCatch.errorCatchOut("ConversionAndFormatting", ex);

                return(Convert.ToDouble(barVal));
            }
        }
Ejemplo n.º 29
0
        public static double convertToTickMovesDouble(double barVal, double tickIncrement, double tickDisplay)
        {
            if (tickDisplay == 0)
            {
                return(barVal);
            }
            else
            {
                try
                {
                    double fuzzyZero         = tickIncrement / 1000;
                    double positiveFuzzyZero = tickIncrement / 1000;

                    if (barVal < 0)
                    {
                        fuzzyZero = -tickIncrement / 1000;
                    }

                    int nTicksInUnit = (int)(1 / tickIncrement + positiveFuzzyZero);

                    if (nTicksInUnit == 0)
                    {
                        return(barVal / tickIncrement * tickDisplay);
                    }

                    //nTicksInUnit = 1;

                    int intPart = (int)(barVal + fuzzyZero);
                    int nTicks  = (int)((barVal + fuzzyZero) / tickIncrement + fuzzyZero);
                    //Debug.WriteLine(barVal + "  " + tickIncrement + "  " + fuzzyZero + "  " + nTicks + "  ");

                    int    decPart   = (int)((nTicks % nTicksInUnit) * tickDisplay + fuzzyZero);
                    double fractPart = 0;

                    // a hack for Eurodollar
                    if (tickDisplay < 1)
                    {
                        fractPart = (nTicks % nTicksInUnit) * tickDisplay - decPart;
                    }

                    int decimalBase = 1;

                    //if (tickDisplay/tickIncrement > 1)
                    //    decimalBase = (int)tickDisplay;
                    //else



                    while (((nTicksInUnit - 1) * tickDisplay / decimalBase) >= 1)
                    {
                        decimalBase *= 10;
                    }


                    //if (decimalBase == 1 && tickDisplay > 0 && tickIncrement > 0 && tickDisplay > tickIncrement)
                    //{
                    //    decimalBase = (int)(tickDisplay / tickIncrement);
                    //}


                    return(intPart * decimalBase + decPart + fractPart);
                }
                catch (Exception ex)
                {
                    TSErrorCatch.errorCatchOut("ConversionAndFormatting", ex);

                    return((int)barVal);
                }
            }
        }
        public List <OptionStrategy> readSupplementContracts(string fullFile, OptionArrayTypes optionArrayTypes,
                                                             int portfolioId,
                                                             QueryFutureIdContractDelegate queryFutureIdContractDelegate, object queryObject)
        {
            List <OptionStrategy> optionStrategies = new List <OptionStrategy>();

            try
            {
                if (File.Exists(fullFile))
                {
                    FileStream fileStream = new FileStream(fullFile,
                                                           FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
                    StreamReader streamReader = new StreamReader(fileStream);

                    int optionStrategyCount = 1;

                    while (!streamReader.EndOfStream)
                    {
                        String line = streamReader.ReadLine();

                        if (line.Length > 0)
                        {
                            string[] supplementContractStrategy = line.Split(',');

                            if (supplementContractStrategy.Length >= 3)
                            {
                                string idcontract = queryFutureIdContractDelegate(queryObject,
                                                                                  Convert.ToInt32(supplementContractStrategy[0].Trim()),
                                                                                  Convert.ToInt32(supplementContractStrategy[1].Trim()),
                                                                                  Convert.ToInt32(supplementContractStrategy[2].Trim()));

                                OptionStrategy optionStrategy = new OptionStrategy();

                                optionStrategy.optionStrategyParameters = new OptionStrategyParameter[
                                    optionArrayTypes.tblStrategyStateFieldTypesArray.GetLength(0)];

                                for (int i = 0; i < optionArrayTypes.tblStrategyStateFieldTypesArray.GetLength(0); i++)
                                {
                                    optionStrategy.optionStrategyParameters[i] = new OptionStrategyParameter();
                                }

                                optionStrategies.Add(optionStrategy);

                                optionStrategy.supplementContract = true;

                                optionStrategy.idPortfoliogroup = portfolioId;

                                optionStrategy.idInstrument = Convert.ToInt32(supplementContractStrategy[0]);

                                optionStrategy.idStrategy = optionStrategyCount;

                                optionStrategyCount++;

                                optionStrategy.optionStrategyParameters[(int)TBL_STRATEGY_STATE_FIELDS.numberOfLegs].strategyStateFieldType
                                    = TBL_STRATEGY_STATE_FIELDS.numberOfLegs;
                                optionStrategy.optionStrategyParameters[(int)TBL_STRATEGY_STATE_FIELDS.numberOfLegs].parseParameter = TBL_DB_PARSE_PARAMETER.DONOT_PARSE_PARAMETER;
                                optionStrategy.optionStrategyParameters[(int)TBL_STRATEGY_STATE_FIELDS.numberOfLegs].stateValue     = 1;

                                optionStrategy.optionStrategyParameters[(int)TBL_STRATEGY_STATE_FIELDS.spreadStructure].strategyStateFieldType    = TBL_STRATEGY_STATE_FIELDS.spreadStructure;
                                optionStrategy.optionStrategyParameters[(int)TBL_STRATEGY_STATE_FIELDS.spreadStructure].parseParameter            = TBL_DB_PARSE_PARAMETER.PARSE_PARAMETER;
                                optionStrategy.optionStrategyParameters[(int)TBL_STRATEGY_STATE_FIELDS.spreadStructure].stateValueStringNotParsed = "2";

                                optionStrategy.optionStrategyParameters[(int)TBL_STRATEGY_STATE_FIELDS.activeContractIndexes].strategyStateFieldType    = TBL_STRATEGY_STATE_FIELDS.activeContractIndexes;
                                optionStrategy.optionStrategyParameters[(int)TBL_STRATEGY_STATE_FIELDS.activeContractIndexes].parseParameter            = TBL_DB_PARSE_PARAMETER.PARSE_PARAMETER;
                                optionStrategy.optionStrategyParameters[(int)TBL_STRATEGY_STATE_FIELDS.activeContractIndexes].stateValueStringNotParsed = idcontract;

                                optionStrategy.optionStrategyParameters[(int)TBL_STRATEGY_STATE_FIELDS.rollIntoContractIndexes].strategyStateFieldType    = TBL_STRATEGY_STATE_FIELDS.rollIntoContractIndexes;
                                optionStrategy.optionStrategyParameters[(int)TBL_STRATEGY_STATE_FIELDS.rollIntoContractIndexes].parseParameter            = TBL_DB_PARSE_PARAMETER.PARSE_ROLL_PARAMETER_SCRIPT;
                                optionStrategy.optionStrategyParameters[(int)TBL_STRATEGY_STATE_FIELDS.rollIntoContractIndexes].stateValueStringNotParsed = "";

                                optionStrategy.optionStrategyParameters[(int)TBL_STRATEGY_STATE_FIELDS.cfgContracts].strategyStateFieldType    = TBL_STRATEGY_STATE_FIELDS.cfgContracts;
                                optionStrategy.optionStrategyParameters[(int)TBL_STRATEGY_STATE_FIELDS.cfgContracts].parseParameter            = TBL_DB_PARSE_PARAMETER.PARSE_PARAMETER;
                                optionStrategy.optionStrategyParameters[(int)TBL_STRATEGY_STATE_FIELDS.cfgContracts].stateValueStringNotParsed = "";

                                optionStrategy.optionStrategyParameters[(int)TBL_STRATEGY_STATE_FIELDS.currentPosition].strategyStateFieldType    = TBL_STRATEGY_STATE_FIELDS.currentPosition;
                                optionStrategy.optionStrategyParameters[(int)TBL_STRATEGY_STATE_FIELDS.currentPosition].parseParameter            = TBL_DB_PARSE_PARAMETER.PARSE_PARAMETER;
                                optionStrategy.optionStrategyParameters[(int)TBL_STRATEGY_STATE_FIELDS.currentPosition].stateValueStringNotParsed = "";

                                optionStrategy.optionStrategyParameters[(int)TBL_STRATEGY_STATE_FIELDS.entryRule].strategyStateFieldType    = TBL_STRATEGY_STATE_FIELDS.entryRule;
                                optionStrategy.optionStrategyParameters[(int)TBL_STRATEGY_STATE_FIELDS.entryRule].parseParameter            = TBL_DB_PARSE_PARAMETER.PARSE_ENTRY_SCRIPT;
                                optionStrategy.optionStrategyParameters[(int)TBL_STRATEGY_STATE_FIELDS.entryRule].stateValueStringNotParsed = "";

                                optionStrategy.optionStrategyParameters[(int)TBL_STRATEGY_STATE_FIELDS.entryLots].strategyStateFieldType    = TBL_STRATEGY_STATE_FIELDS.entryLots;
                                optionStrategy.optionStrategyParameters[(int)TBL_STRATEGY_STATE_FIELDS.entryLots].parseParameter            = TBL_DB_PARSE_PARAMETER.PARSE_PARAMETER;
                                optionStrategy.optionStrategyParameters[(int)TBL_STRATEGY_STATE_FIELDS.entryLots].stateValueStringNotParsed = "";

                                optionStrategy.optionStrategyParameters[(int)TBL_STRATEGY_STATE_FIELDS.exitRule].strategyStateFieldType    = TBL_STRATEGY_STATE_FIELDS.exitRule;
                                optionStrategy.optionStrategyParameters[(int)TBL_STRATEGY_STATE_FIELDS.exitRule].parseParameter            = TBL_DB_PARSE_PARAMETER.PARSE_EXIT_SCRIPT;
                                optionStrategy.optionStrategyParameters[(int)TBL_STRATEGY_STATE_FIELDS.exitRule].stateValueStringNotParsed = "";

                                optionStrategy.optionStrategyParameters[(int)TBL_STRATEGY_STATE_FIELDS.exitLots].strategyStateFieldType    = TBL_STRATEGY_STATE_FIELDS.exitLots;
                                optionStrategy.optionStrategyParameters[(int)TBL_STRATEGY_STATE_FIELDS.exitLots].parseParameter            = TBL_DB_PARSE_PARAMETER.PARSE_PARAMETER;
                                optionStrategy.optionStrategyParameters[(int)TBL_STRATEGY_STATE_FIELDS.exitLots].stateValueStringNotParsed = "";


                                optionStrategy.optionStrategyParameters[(int)TBL_STRATEGY_STATE_FIELDS.marginRequirement].strategyStateFieldType = TBL_STRATEGY_STATE_FIELDS.marginRequirement;
                                optionStrategy.optionStrategyParameters[(int)TBL_STRATEGY_STATE_FIELDS.marginRequirement].parseParameter         = TBL_DB_PARSE_PARAMETER.DONOT_PARSE_PARAMETER;
                                optionStrategy.optionStrategyParameters[(int)TBL_STRATEGY_STATE_FIELDS.marginRequirement].stateValue             = 0;

                                optionStrategy.optionStrategyParameters[(int)TBL_STRATEGY_STATE_FIELDS.rRisk].strategyStateFieldType = TBL_STRATEGY_STATE_FIELDS.rRisk;
                                optionStrategy.optionStrategyParameters[(int)TBL_STRATEGY_STATE_FIELDS.rRisk].parseParameter         = TBL_DB_PARSE_PARAMETER.DONOT_PARSE_PARAMETER;
                                optionStrategy.optionStrategyParameters[(int)TBL_STRATEGY_STATE_FIELDS.rRisk].stateValue             = 0;

                                optionStrategy.optionStrategyParameters[(int)TBL_STRATEGY_STATE_FIELDS.rRisk_R].strategyStateFieldType = TBL_STRATEGY_STATE_FIELDS.rRisk_R;
                                optionStrategy.optionStrategyParameters[(int)TBL_STRATEGY_STATE_FIELDS.rRisk_R].parseParameter         = TBL_DB_PARSE_PARAMETER.DONOT_PARSE_PARAMETER;
                                optionStrategy.optionStrategyParameters[(int)TBL_STRATEGY_STATE_FIELDS.rRisk_R].stateValue             = 0;

                                optionStrategy.optionStrategyParameters[(int)TBL_STRATEGY_STATE_FIELDS.oneR].strategyStateFieldType = TBL_STRATEGY_STATE_FIELDS.oneR;
                                optionStrategy.optionStrategyParameters[(int)TBL_STRATEGY_STATE_FIELDS.oneR].parseParameter         = TBL_DB_PARSE_PARAMETER.DONOT_PARSE_PARAMETER;
                                optionStrategy.optionStrategyParameters[(int)TBL_STRATEGY_STATE_FIELDS.oneR].stateValue             = 0;

                                optionStrategy.optionStrategyParameters[(int)TBL_STRATEGY_STATE_FIELDS.rStatus].strategyStateFieldType = TBL_STRATEGY_STATE_FIELDS.rStatus;
                                optionStrategy.optionStrategyParameters[(int)TBL_STRATEGY_STATE_FIELDS.rStatus].parseParameter         = TBL_DB_PARSE_PARAMETER.DONOT_PARSE_PARAMETER;
                                optionStrategy.optionStrategyParameters[(int)TBL_STRATEGY_STATE_FIELDS.rStatus].stateValue             = 0;

                                optionStrategy.optionStrategyParameters[(int)TBL_STRATEGY_STATE_FIELDS.rStatus_R].strategyStateFieldType = TBL_STRATEGY_STATE_FIELDS.rStatus_R;
                                optionStrategy.optionStrategyParameters[(int)TBL_STRATEGY_STATE_FIELDS.rStatus_R].parseParameter         = TBL_DB_PARSE_PARAMETER.DONOT_PARSE_PARAMETER;
                                optionStrategy.optionStrategyParameters[(int)TBL_STRATEGY_STATE_FIELDS.rStatus_R].stateValue             = 0;

                                optionStrategy.optionStrategyParameters[(int)TBL_STRATEGY_STATE_FIELDS.idRiskType].strategyStateFieldType = TBL_STRATEGY_STATE_FIELDS.idRiskType;
                                optionStrategy.optionStrategyParameters[(int)TBL_STRATEGY_STATE_FIELDS.idRiskType].parseParameter         = TBL_DB_PARSE_PARAMETER.DONOT_PARSE_PARAMETER;
                                optionStrategy.optionStrategyParameters[(int)TBL_STRATEGY_STATE_FIELDS.idRiskType].stateValue             = 0;

                                optionStrategy.optionStrategyParameters[(int)TBL_STRATEGY_STATE_FIELDS.idSignalType].strategyStateFieldType = TBL_STRATEGY_STATE_FIELDS.idSignalType;
                                optionStrategy.optionStrategyParameters[(int)TBL_STRATEGY_STATE_FIELDS.idSignalType].parseParameter         = TBL_DB_PARSE_PARAMETER.DONOT_PARSE_PARAMETER;
                                optionStrategy.optionStrategyParameters[(int)TBL_STRATEGY_STATE_FIELDS.idSignalType].stateValue             = 0;


                                optionStrategy.lockedIn_R = 0;
                            }
                        }
                    }

                    fileStream.Close();
                    streamReader.Close();
                }
            }
            catch (Exception ex)
            {
                TSErrorCatch.errorCatchOut(Convert.ToString(this), ex);
            }

            return(optionStrategies);
        }