void CTraderApi::OnRspQryInvestorPosition(CUstpFtdcRspInvestorPositionField *pRspInvestorPosition, CUstpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) { if (!IsErrorRspInfo(pRspInfo, nRequestID, bIsLast)) { if (pRspInvestorPosition) { PositionField* pField = (PositionField*)m_msgQueue->new_block(sizeof(PositionField)); strcpy(pField->Symbol, pRspInvestorPosition->InstrumentID); strcpy(pField->InstrumentID, pRspInvestorPosition->InstrumentID); strcpy(pField->ExchangeID, pRspInvestorPosition->ExchangeID); pField->Side = TUstpFtdcDirectionType_2_PositionSide(pRspInvestorPosition->Direction); pField->HedgeFlag = TUstpFtdcHedgeFlagType_2_HedgeFlagType(pRspInvestorPosition->HedgeFlag); pField->Position = pRspInvestorPosition->Position; // 今仓与昨仓是什么关系,如何计算的? pField->TdPosition = pRspInvestorPosition->Position - pRspInvestorPosition->YdPosition; pField->YdPosition = pRspInvestorPosition->YdPosition; m_msgQueue->Input_NoCopy(ResponeType::OnRspQryInvestorPosition, m_msgQueue, m_pClass, bIsLast, 0, pField, sizeof(PositionField), nullptr, 0, nullptr, 0); } else { m_msgQueue->Input_NoCopy(ResponeType::OnRspQryInvestorPosition, m_msgQueue, m_pClass, bIsLast, 0, nullptr, 0, nullptr, 0, nullptr, 0); } } }
void CTraderApi::OnRspQryInvestorPosition(CUstpFtdcRspInvestorPositionField *pRspInvestorPosition, CUstpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) { if (!IsErrorRspInfo(pRspInfo, nRequestID, bIsLast)) { if (pRspInvestorPosition) { PositionField field = { 0 }; strcpy(field.Symbol, pRspInvestorPosition->InstrumentID); strcpy(field.InstrumentID, pRspInvestorPosition->InstrumentID); strcpy(field.ExchangeID, pRspInvestorPosition->ExchangeID); field.Side = TUstpFtdcDirectionType_2_PositionSide(pRspInvestorPosition->Direction); field.HedgeFlag = TUstpFtdcHedgeFlagType_2_HedgeFlagType(pRspInvestorPosition->HedgeFlag); field.Position = pRspInvestorPosition->Position; // 今仓与昨仓是什么关系,如何计算的? field.TdPosition = pRspInvestorPosition->Position - pRspInvestorPosition->YdPosition; field.YdPosition = pRspInvestorPosition->YdPosition; XRespone(ResponeType::OnRspQryInvestorPosition, m_msgQueue, this, bIsLast, 0, &field, sizeof(PositionField), nullptr, 0, nullptr, 0); } else { XRespone(ResponeType::OnRspQryInvestorPosition, m_msgQueue, this, bIsLast, 0, nullptr, 0, nullptr, 0, nullptr, 0); } } if (bIsLast) ReleaseRequestMapBuf(nRequestID); }