public static bool LoadFileFormatForMetaStock(string stockName, string stockSymbol, string strFilePath, ref StockInfo stockInfo) { MSFL.MSFLSecurityInfo[] msflSecurityInfoArray = null; if (GlobalSetting.TryLoadMsflSecurityInfo(strFilePath, out msflSecurityInfoArray) == false) { return(false); } int iErr = (int)MSFL.MSFL_ERR.MSFL_NO_ERR; StringBuilder dateString = new StringBuilder(MSFL.MSFL_MAX_NAME_LENGTH + 1); for (int iIndex = 0; iIndex < msflSecurityInfoArray.Length; iIndex++) { MSFL.MSFLSecurityInfo msflSecurityInfo = msflSecurityInfoArray[iIndex]; if (msflSecurityInfo.szName == stockName && msflSecurityInfo.szSymbol == stockSymbol) { stockInfo.m_StockCode = GlobalSetting.GetStockCode(msflSecurityInfo.szName, msflSecurityInfo.szSymbol); stockInfo.m_StockName = msflSecurityInfo.szName; stockInfo.m_StockSymbol = msflSecurityInfo.szSymbol; stockInfo.m_Periodicity = msflSecurityInfo.cPeriodicity; iErr = MSFL.MSFL1_FormatDate(dateString, (ushort)dateString.Capacity, msflSecurityInfo.lFirstDate); stockInfo.m_FirstDate = DateTime.Parse(dateString.ToString()); iErr = MSFL.MSFL1_FormatDate(dateString, (ushort)dateString.Capacity, msflSecurityInfo.lLastDate); stockInfo.m_LastDate = DateTime.Parse(dateString.ToString()); iErr = MSFL.MSFL1_FormatTime(dateString, (ushort)dateString.Capacity, msflSecurityInfo.lFirstTime, true); string strFirstTime = dateString.ToString(); strFirstTime = strFirstTime.Substring(0, strFirstTime.Length - 1); stockInfo.m_FirstTime = DateTime.Parse(strFirstTime); iErr = MSFL.MSFL1_FormatTime(dateString, (ushort)dateString.Capacity, msflSecurityInfo.lLastTime, true); string strLastTime = dateString.ToString(); strLastTime = strLastTime.Substring(0, strLastTime.Length - 1); stockInfo.m_LastTime = DateTime.Parse(strLastTime); iErr = MSFL.MSFL1_FormatTime(dateString, (ushort)dateString.Capacity, msflSecurityInfo.lStartTime, false); stockInfo.m_StartTime = DateTime.Parse(dateString.ToString()); iErr = MSFL.MSFL1_FormatTime(dateString, (ushort)dateString.Capacity, msflSecurityInfo.lEndTime, false); stockInfo.m_EndTime = DateTime.Parse(dateString.ToString()); iErr = MSFL.MSFL1_FormatDate(dateString, (ushort)dateString.Capacity, msflSecurityInfo.lCollectionDate); stockInfo.m_CollectionDate = DateTime.Parse(dateString.ToString()); MSFL.MSFLPriceRecord[] msflPriceInfoArray = null; if (GlobalSetting.TryLoadMsflPriceInfo(stockName, stockSymbol, strFilePath, out msflPriceInfoArray) == false) { return(true); } // numbers for summing price info float fOpenSum = 0.0f, fHighSum = 0.0f, fLowSum = 0.0f, fCloseSum = 0.0f, fVolumeSum = 0.0f, fOpenIntSum = 0.0f; StringBuilder szBuf = new StringBuilder(MSFL.MSFL_MAX_NAME_LENGTH + 1); for (int iIndex2 = 0; iIndex2 < msflPriceInfoArray.Length; iIndex2++) { MSFL.MSFLPriceRecord msflPriceRecord = msflPriceInfoArray[iIndex2]; StockData stockData = new StockData(); if ((msflPriceRecord.wDataAvailable & MSFL.MSFL_DATA_DATE) == MSFL.MSFL_DATA_DATE) { iErr = MSFL.MSFL1_FormatDate(szBuf, (ushort)szBuf.Capacity, msflPriceRecord.lDate); stockData.TradingDate = DateTime.Parse(szBuf.ToString()); } if ((msflPriceRecord.wDataAvailable & MSFL.MSFL_DATA_TIME) == MSFL.MSFL_DATA_TIME) { iErr = MSFL.MSFL1_FormatTime(szBuf, (ushort)szBuf.Capacity, msflPriceRecord.lTime, true); string strTradingTime = szBuf.ToString(); strTradingTime = strLastTime.Substring(0, strTradingTime.Length - 1); stockData.TradingTime = DateTime.Parse(strTradingTime); } stockData.TradingDateTime = stockData.TradingDate + stockData.TradingTime.TimeOfDay; //Debug.WriteLine( stockData.TradingDateTime.ToString() ); if ((msflPriceRecord.wDataAvailable & MSFL.MSFL_DATA_OPEN) == MSFL.MSFL_DATA_OPEN) { fOpenSum += msflPriceRecord.fOpen; stockData.OpenPrice = msflPriceRecord.fOpen; } if ((msflPriceRecord.wDataAvailable & MSFL.MSFL_DATA_HIGH) == MSFL.MSFL_DATA_HIGH) { fHighSum += msflPriceRecord.fHigh; stockData.HighestPrice = msflPriceRecord.fHigh; } if ((msflPriceRecord.wDataAvailable & MSFL.MSFL_DATA_LOW) == MSFL.MSFL_DATA_LOW) { fLowSum += msflPriceRecord.fLow; stockData.MinimumPrice = msflPriceRecord.fLow; } if ((msflPriceRecord.wDataAvailable & MSFL.MSFL_DATA_CLOSE) == MSFL.MSFL_DATA_CLOSE) { fCloseSum += msflPriceRecord.fClose; stockData.ClosePrice = msflPriceRecord.fClose; } if ((msflPriceRecord.wDataAvailable & MSFL.MSFL_DATA_VOLUME) == MSFL.MSFL_DATA_VOLUME) { fVolumeSum += msflPriceRecord.fVolume; stockData.TradingVolume = msflPriceRecord.fVolume; } if ((msflPriceRecord.wDataAvailable & MSFL.MSFL_DATA_OPENINT) == MSFL.MSFL_DATA_OPENINT) { fOpenIntSum += msflPriceRecord.fOpenInt; stockData.OpenInterest = msflPriceRecord.fOpenInt; } stockInfo.AddStockData(stockData); } return(true); } } return(false); }