public int Close() { return(Msfl.MSFL1_GetMSFLState() == (int)(Msfl.MsflErr.MsflErrAlreadyInitialized) ? Msfl.MSFL1_Shutdown() : Msfl.MSFL1_GetMSFLState()); }
public int Fill() { Daily = new List <MsflPriceRecord>(); Weekly = new List <MsflPriceRecord>(); Yearly = new List <MsflPriceRecord>(); var returnValue = 0; var dirNumber = new byte(); var priceRecordStore = new MsflPriceRecord(); try { using (var conn = new DatabaseConnection(Environment.UserName.ToString(), "MetastockWrapper")) { var lHSecurity = new IntPtr(); var lSSecurityId = new Msfl.MsflSecurityIdentifierStruct(); var lSSecurityInfo = new Msfl.MsflSecurityInfoStruct(); var lSPriceRecord = new Msfl.MsflPriceRecordStruct(); returnValue = Msfl.MSFL1_OpenDirectory(Path, ref dirNumber, Msfl.MsflDirAllowMultiOpen); if (returnValue == (int)Msfl.MsflErr.MsflErrDirAlreadyOpen) { returnValue = Msfl.MSFL1_GetDirectoryNumber(Path, ref dirNumber); } if (returnValue == (int)(Msfl.MsflErr.MsflNoErr)) { lSSecurityId = default(Msfl.MsflSecurityIdentifierStruct); lSSecurityId.cDirNumber = dirNumber; lSSecurityId.szSymbol = Ticker; lSSecurityId.cPeriodicity = 68; lSSecurityId.dwTotalSize = (uint)(Marshal.SizeOf(lSSecurityId)); returnValue = Msfl.MSFL1_GetSecurityHandle(ref lSSecurityId, ref lHSecurity); returnValue = Msfl.MSFL1_GetSecurityInfo(lHSecurity, ref lSSecurityInfo); returnValue = Msfl.MSFL1_LockSecurity(lHSecurity, Msfl.MsflLockPrevWriteLock); while (returnValue == (int)(Msfl.MsflErr.MsflNoErr)) { returnValue = Msfl.MSFL1_ReadDataRec(lHSecurity, ref lSPriceRecord); if (returnValue == (int)(Msfl.MsflErr.MsflNoErr)) { var dateString = Convert.ToString(lSPriceRecord.lDate); var provider = CultureInfo.InvariantCulture; var dateConverted = DateTime.ParseExact(dateString, "yyyyMMdd", provider); lSPriceRecord.fOpen *= 100f; lSPriceRecord.fHigh *= 100f; lSPriceRecord.fLow *= 100f; lSPriceRecord.fClose *= 100f; var dailyRecord = new MsflPriceRecord { Date = dateConverted, Open = lSPriceRecord.fOpen, High = lSPriceRecord.fHigh, Low = lSPriceRecord.fLow, Close = lSPriceRecord.fClose, Volume = lSPriceRecord.fVolume, OpenInt = lSPriceRecord.fOpenInt, DataAvailable = lSPriceRecord.wDataAvailable }; Daily.Add(dailyRecord); if (dateConverted.DayOfWeek < priceRecordStore.Date.DayOfWeek) { Weekly.Add(new MsflPriceRecord { Date = priceRecordStore.Date, Open = priceRecordStore.Open, High = priceRecordStore.High, Low = priceRecordStore.Low, Close = priceRecordStore.Close, Volume = priceRecordStore.Volume, OpenInt = priceRecordStore.OpenInt, DataAvailable = priceRecordStore.DataAvailable }); } } } } } } catch (Exception) { // TODO Display Error } finally { Msfl.MSFL1_CloseDirectory(dirNumber); } return(returnValue); }
public int Open() { return(Msfl.MSFL1_GetMSFLState() != (int)(Msfl.MsflErr.MsflErrAlreadyInitialized) ? Msfl.MSFL1_Initialize(ApplicationName, UserName, Msfl.MsflDllInterfaceVersion) : Msfl.MSFL1_GetMSFLState()); }