예제 #1
0
        private static void Test_QuerySecurityPositionInfo(RushQuantTradeClient client)
        {
            Console.WriteLine("******* QuerySecurityPositionInfo BEGIN *********\n");

            QuerySecurityPositionInfoInput input = new QuerySecurityPositionInfoInput()
            {
            };
            QuerySecurityPositionInfoOutput output = client.QuerySecurityPositionInfo(input);

            Console.WriteLine($"{"交易所名称",-20}\t{"合约代码",-20}\t{"合约名称",-20}\t{"数量",-20}\t{"可卖数量",-20}\t{"股东代码",-20}");

            for (int i = 0; i < output.Count; i++)
            {
                QuerySecurityPositionInfoOutputItem item = output.Items[i];
                Console.WriteLine($"{item.ExchangeId,-22}\t{item.InstrumentCode,-26}\t{item.InstrumentName,-26}\t{item.Volume,-26}\t{item.AvailableVolume,-26}\t{item.StockholderCode,-26}");
            }
            Console.WriteLine("******* QuerySecurityPositionInfo END *********\n");
            Console.WriteLine();
        }
        public unsafe QuerySecurityPositionInfoOutput QuerySecurityPositionInfo(QuerySecurityPositionInfoInput input)
        {
            if (input == null)
            {
                throw new ArgumentNullException(nameof(input));
            }

            byte *pInput  = stackalloc byte[QuerySecurityPositionInfoInput.GetSize()];
            byte *pOutput = null;

            input.WriteTo(pInput);
            int result = UnsafeNativeMethods.rushquant_trade_QuerySecurityPositionInfo(this._accountId, pInput, ref pOutput);
            QuerySecurityPositionInfoOutput output = new QuerySecurityPositionInfoOutput();

            output.ReadFrom(pOutput);
            UnsafeNativeMethods.rushquant_free(pOutput);
            if (result != ErrorCode.Success)
            {
                throw new RushQuantClientException(result, output.ErrorMessage);
            }

            return(output);
        }