feat: complete strategy and market data improvements
This commit is contained in:
@@ -53,6 +53,14 @@ class FixedMarketDatetime(datetime):
|
||||
return cls.fixed_now
|
||||
|
||||
|
||||
class FixedPreopenDatetime(datetime):
|
||||
fixed_now = datetime.now().astimezone().replace(hour=8, minute=45, second=0, microsecond=0)
|
||||
|
||||
@classmethod
|
||||
def now(cls, tz=None):
|
||||
return cls.fixed_now
|
||||
|
||||
|
||||
class StockDetailRealtimeTests(unittest.TestCase):
|
||||
def setUp(self):
|
||||
self.service = DashboardService.__new__(DashboardService)
|
||||
@@ -110,7 +118,48 @@ class StockDetailRealtimeTests(unittest.TestCase):
|
||||
result = self.service._prepare_stock_detail(payload, "002141", historical)
|
||||
|
||||
self.assertEqual(result["stock"]["change"], 1.2)
|
||||
self.assertNotIn("realtime", result["meta"])
|
||||
self.assertFalse(result["meta"].get("realtime", False))
|
||||
self.assertEqual(RealtimeClientStub.quote_calls, 0)
|
||||
|
||||
def test_today_detail_keeps_last_traded_bar_before_market_open(self):
|
||||
today = FixedPreopenDatetime.fixed_now.strftime("%Y%m%d")
|
||||
today_display = FixedPreopenDatetime.fixed_now.strftime("%Y-%m-%d")
|
||||
yesterday = (FixedPreopenDatetime.fixed_now - timedelta(days=1)).strftime("%Y-%m-%d")
|
||||
payload = {
|
||||
"meta": {"trade_date": yesterday, "source": "tushare"},
|
||||
"stock": {"code": "002141", "price": 10, "change": 0},
|
||||
"prices": [
|
||||
{
|
||||
"trade_date": yesterday,
|
||||
"open": 9.8,
|
||||
"high": 10.1,
|
||||
"low": 9.7,
|
||||
"close": 10,
|
||||
"change": 1.2,
|
||||
"volume": 100,
|
||||
},
|
||||
{
|
||||
"trade_date": today_display,
|
||||
"open": 10,
|
||||
"high": 10,
|
||||
"low": 10,
|
||||
"close": 10,
|
||||
"change": 0,
|
||||
"volume": 0,
|
||||
"amount_billion": 0,
|
||||
"realtime": True,
|
||||
},
|
||||
],
|
||||
}
|
||||
with patch("server.datetime", FixedPreopenDatetime), patch(
|
||||
"server.TushareClient", RealtimeClientStub
|
||||
):
|
||||
result = self.service._prepare_stock_detail(payload, "002141", today)
|
||||
|
||||
self.assertEqual(result["meta"]["trade_date"], yesterday)
|
||||
self.assertFalse(result["meta"].get("realtime", False))
|
||||
self.assertEqual(result["prices"][-1]["trade_date"], yesterday)
|
||||
self.assertEqual(result["stock"]["change"], 1.2)
|
||||
self.assertEqual(RealtimeClientStub.quote_calls, 0)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user