public static void OnRspQryHolding(IntPtr pContex, bool bSuccess, IntPtr pHoldings, int nCount, int nOperationSeq, IntPtr pszErrorMsg) { //Console.WriteLine("OnRspQryHolding: " + Marshal.PtrToStringAnsi(pszErrorMsg)); Sys_log = Sys_log + "\n" + DateTime.Now.ToString() + ": 正在查询持仓:" + Marshal.PtrToStringAnsi(pszErrorMsg); tagSTRUCT_HOLDING_FIXED[] Holdings = new tagSTRUCT_HOLDING_FIXED[nCount]; for (int i = 0; i < nCount; i++) { IntPtr pholdings = (IntPtr)((UInt32)pHoldings + i * Marshal.SizeOf(typeof(tagSTRUCT_HOLDING_FIXED))); Holdings[i] = (tagSTRUCT_HOLDING_FIXED)Marshal.PtrToStructure(pholdings, typeof(tagSTRUCT_HOLDING_FIXED)); //Console.WriteLine((i + 1).ToString() + "\t" + Holdings[i].szExchangeID + "." + Holdings[i].szCode + "\t" + Holdings[i].szName + "\tTotal Vol: " + Holdings[i].nTotalVolume.ToString() + "\tFrozen Vol: " + Holdings[i].nSellFrozenVol.ToString() + "\tAvailable Vol: " + Holdings[i].nAvailableVolume.ToString()); } }
public static void OnRtnHolding(IntPtr pContex, bool bSuccess, IntPtr pHoldings, int nCount, int nOperationSeq, IntPtr pszErrorMsg) { //Console.WriteLine("OnRtnHolding: " + Marshal.PtrToStringAnsi(pszErrorMsg)); Sys_log = Sys_log + "\n" + DateTime.Now.ToString() + ": 正在查询所有持仓:" + Marshal.PtrToStringAnsi(pszErrorMsg); if (bSuccess && pHoldings != IntPtr.Zero && nCount > 0) { tagSTRUCT_HOLDING_FIXED[] Holdings = new tagSTRUCT_HOLDING_FIXED[nCount]; for (int i = 0; i < nCount; i++) { IntPtr pholdings = (IntPtr)((UInt32)pHoldings + i * Marshal.SizeOf(typeof(tagSTRUCT_HOLDING_FIXED))); Holdings[i] = (tagSTRUCT_HOLDING_FIXED)Marshal.PtrToStructure(pholdings, typeof(tagSTRUCT_HOLDING_FIXED)); //Console.WriteLine((i + 1).ToString() + "\t" + Holdings[i].szExchangeID + "\t" + Holdings[i].szCode + "\t" + Holdings[i].szName + "\t" + Holdings[i].nSecuType.ToString() + "\t" + ORDER_DIRECTION_NAME[(int)Holdings[i].ordDirection] + "\t" + //Holdings[i].nTotalVolume.ToString() + "\t" + Holdings[i].nAvailableVolume.ToString() + "\t" + Holdings[i].nBuyFrozenVol.ToString() + "\t" + Holdings[i].nSellFrozenVol.ToString() + "\t" + Holdings[i].dMarketValue.ToString() + "\t" + Holdings[i].dCurrentPrice.ToString() + "\t" + //sHoldings[i].dCostPrice.ToString() + "\t" + Holdings[i].dFloatingPL.ToString() + "\t" + Holdings[i].dReturn.ToString() + "\t" + Holdings[i].nBuyVolToday.ToString() + "\t" + Holdings[i].nSellVolToday.ToString()); } } }