예제 #1
0
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);
		}
	}
}
예제 #2
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);
}