Skip to content

Commit b215989

Browse files
committed
时间修正
1 parent f67a318 commit b215989

File tree

4 files changed

+75
-4
lines changed

4 files changed

+75
-4
lines changed

QuantBox_CTP_Quote/MdUserApi.cpp

+5-1
Original file line numberDiff line numberDiff line change
@@ -499,7 +499,7 @@ void CMdUserApi::OnRtnDepthMarketData(CThostFtdcDepthMarketDataField *pDepthMark
499499

500500
sprintf(pField->Symbol, "%s.%s", pField->InstrumentID, pDepthMarketData->ExchangeID);
501501

502-
//m_TradingDay
502+
// 交易时间
503503
switch (pField->Exchange)
504504
{
505505
case ExchangeType::DCE:
@@ -510,6 +510,10 @@ void CMdUserApi::OnRtnDepthMarketData(CThostFtdcDepthMarketDataField *pDepthMark
510510
GetExchangeTime_CZCE(m_TradingDay, pDepthMarketData->TradingDay, pDepthMarketData->ActionDay, pDepthMarketData->UpdateTime
511511
, &pField->TradingDay, &pField->ActionDay, &pField->UpdateTime, &pField->UpdateMillisec);
512512
break;
513+
case ExchangeType::Undefined_:
514+
GetExchangeTime_Undefined(m_TradingDay, pDepthMarketData->TradingDay, pDepthMarketData->ActionDay, pDepthMarketData->UpdateTime
515+
, &pField->TradingDay, &pField->ActionDay, &pField->UpdateTime, &pField->UpdateMillisec);
516+
break;
513517
default:
514518
GetExchangeTime(pDepthMarketData->TradingDay, pDepthMarketData->ActionDay, pDepthMarketData->UpdateTime
515519
, &pField->TradingDay, &pField->ActionDay, &pField->UpdateTime, &pField->UpdateMillisec);

QuantBox_Kingstar_Quote/MdUserApi.cpp

+7-2
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
#include "../include/ApiStruct.h"
88

99
#include "../include/toolkit.h"
10+
#include "../QuantBox_Kingstar_Trade/TypeConvert.h"
1011

1112
#include "../QuantBox_Queue/MsgQueue.h"
1213

@@ -473,15 +474,19 @@ void CMdUserApi::OnRtnDepthMarketData(CThostFtdcDepthMarketDataField *pDepthMark
473474

474475
sprintf(pField->Symbol, "%s.%s", pField->InstrumentID, pDepthMarketData->ExchangeID);
475476

476-
//m_TradingDay
477+
// 交易时间
477478
switch (pField->Exchange)
478479
{
479480
case ExchangeType::DCE:
480481
GetExchangeTime_DCE(pDepthMarketData->TradingDay, pDepthMarketData->ActionDay, pDepthMarketData->UpdateTime
481482
, &pField->TradingDay, &pField->ActionDay, &pField->UpdateTime, &pField->UpdateMillisec);
482483
break;
483484
case ExchangeType::CZCE:
484-
GetExchangeTime_CZC(m_TradingDay, pDepthMarketData->TradingDay, pDepthMarketData->ActionDay, pDepthMarketData->UpdateTime
485+
GetExchangeTime_CZCE(m_TradingDay, pDepthMarketData->TradingDay, pDepthMarketData->ActionDay, pDepthMarketData->UpdateTime
486+
, &pField->TradingDay, &pField->ActionDay, &pField->UpdateTime, &pField->UpdateMillisec);
487+
break;
488+
case ExchangeType::Undefined_:
489+
GetExchangeTime_Undefined(m_TradingDay, pDepthMarketData->TradingDay, pDepthMarketData->ActionDay, pDepthMarketData->UpdateTime
485490
, &pField->TradingDay, &pField->ActionDay, &pField->UpdateTime, &pField->UpdateMillisec);
486491
break;
487492
default:

include/toolkit.cpp

+62-1
Original file line numberDiff line numberDiff line change
@@ -256,7 +256,7 @@ void GetExchangeTime_CZCE(int iTradingDay, char* TradingDay, char* ActionDay, ch
256256
// TradingDay处理
257257
if (_TradingDay)
258258
{
259-
if ((HH > 18 || HH < 4))
259+
if ((HH > 18 || HH < 6))
260260
{
261261
*_TradingDay = iTradingDay;
262262
}
@@ -306,6 +306,67 @@ void GetExchangeTime_CZCE(int iTradingDay, char* TradingDay, char* ActionDay, ch
306306
}
307307
}
308308

309+
void GetExchangeTime_Undefined(int iTradingDay, char* TradingDay, char* ActionDay, char* UpdateTime, int* _TradingDay, int* _ActionDay, int* _UpdateTime, int* UpdateMillisec)
310+
{
311+
// 由于CTP期货中行情没有提供交易所,所以一开始就无法按交易所来分类
312+
313+
// UpdateTime处理
314+
int HH = GetUpdateTime(UpdateTime, _UpdateTime, UpdateMillisec);
315+
316+
// TradingDay处理
317+
if (_TradingDay)
318+
{
319+
int tradingday = 0;
320+
if ((HH > 18 || HH < 6))
321+
{
322+
*_TradingDay = iTradingDay;
323+
}
324+
else
325+
{
326+
tradingday = atoi(TradingDay);
327+
}
328+
if (tradingday == 0)
329+
{
330+
time_t now = time(0);
331+
struct tm *ptmNow = localtime(&now);
332+
tradingday = (ptmNow->tm_year + 1900) * 10000 + (ptmNow->tm_mon + 1) * 100 + ptmNow->tm_mday;
333+
}
334+
*_TradingDay = tradingday;
335+
}
336+
337+
if (_ActionDay == nullptr)
338+
return;
339+
340+
// ActionDay处理
341+
if ((HH>6 && HH<18) && (ActionDay != nullptr) && (strlen(ActionDay) == 8))
342+
{
343+
*_ActionDay = atoi(ActionDay);
344+
}
345+
else
346+
{
347+
time_t now = time(0);
348+
struct tm *ptmNow = localtime(&now);
349+
if (HH >= 23)
350+
{
351+
if (ptmNow->tm_hour<1)
352+
{
353+
now -= 86400;
354+
ptmNow = localtime(&now);
355+
}
356+
}
357+
else if (HH<1)
358+
{
359+
if (ptmNow->tm_hour >= 23)
360+
{
361+
now += 86400;
362+
ptmNow = localtime(&now);
363+
}
364+
}
365+
366+
*_ActionDay = (1900 + ptmNow->tm_year) * 10000 + (1 + ptmNow->tm_mon) * 100 + ptmNow->tm_mday;
367+
}
368+
}
369+
309370
void GetExchangeTime(char* TradingDay, char* ActionDay, char* UpdateTime, int* _TradingDay, int* _ActionDay, int* _UpdateTime, int* UpdateMillisec)
310371
{
311372
// TradingDay处理

include/toolkit.h

+1
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ char* GetSetFromString(const char* szString, const char* seps, vector<char*>& vc
1818

1919
int GetUpdateTime(char* UpdateTime, int* _UpdateTime, int* UpdateMillisec);
2020
void GetExchangeTime_CZCE(int iTradingDay, char* TradingDay, char* ActionDay, char* UpdateTime, int* _TradingDay, int* _ActionDay, int* _UpdateTime, int* UpdateMillisec);
21+
void GetExchangeTime_Undefined(int iTradingDay, char* TradingDay, char* ActionDay, char* UpdateTime, int* _TradingDay, int* _ActionDay, int* _UpdateTime, int* UpdateMillisec);
2122
void GetExchangeTime_DCE(char* TradingDay, char* ActionDay, char* UpdateTime, int* _TradingDay, int* _ActionDay, int* _UpdateTime, int* UpdateMillisec);
2223
void GetExchangeTime(char* TradingDay, char* ActionDay, char* UpdateTime, int* _TradingDay, int* _ActionDay, int* _UpdateTime, int* UpdateMillisec);
2324
void GetExchangeTime(time_t Time, int* _TradingDay, int* _ActionDay, int* _UpdateTime);

0 commit comments

Comments
 (0)