|
1 | 1 | #!/usr/bin/env python
|
2 | 2 | # -*- coding: utf-8 -*-
|
| 3 | +import json |
3 | 4 | import os
|
4 | 5 | import random
|
5 | 6 | import unittest
|
| 7 | +from datetime import datetime |
6 | 8 | from tqsdk.test.api.helper import MockInsServer, MockServer
|
7 |
| -from tqsdk import TqApi |
| 9 | +from tqsdk import TqApi, TqBacktest |
8 | 10 |
|
9 | 11 |
|
10 | 12 | class TestMdBasic(unittest.TestCase):
|
@@ -72,9 +74,8 @@ def test_get_quote_normal(self):
|
72 | 74 | self.assertEqual(q.min_market_order_volume, 0)
|
73 | 75 | self.assertEqual(q.underlying_symbol, "")
|
74 | 76 | self.assertTrue(q.strike_price != q.strike_price) # 判定nan
|
75 |
| - self.assertTrue(q.change != q.change) |
76 |
| - self.assertTrue(q.change_percent != q.change_percent) |
77 | 77 | self.assertEqual(q.expired, False)
|
| 78 | + self.assertEqual(q.ins_class, "FUTURE") |
78 | 79 | self.assertEqual(q.margin, 16233.000000000002)
|
79 | 80 | self.assertEqual(q.commission, 11.594999999999999)
|
80 | 81 | self.assertEqual(repr(q.trading_time.day),
|
@@ -181,3 +182,28 @@ def test_get_tick_serial(self):
|
181 | 182 | self.assertRaises(KeyError, ticks.iloc[-1].__getitem__, "dur")
|
182 | 183 |
|
183 | 184 | api.close()
|
| 185 | + |
| 186 | + |
| 187 | +def test_get_quote_normal_backtest(): |
| 188 | + """ |
| 189 | + 回测获取行情报价 |
| 190 | +
|
| 191 | + """ |
| 192 | + # 获取行情 |
| 193 | + api = TqApi(backtest=TqBacktest(datetime(2019, 10, 15), datetime(2019, 10, 16)), |
| 194 | + _ins_url="https://openmd.shinnytech.com/t/md/symbols/2019-07-03.json") |
| 195 | + quote = api.get_quote("SHFE.cu2001") |
| 196 | + quote_data = {k: v for k, v in quote.items()} |
| 197 | + quote_data["trading_time"] = {k: v for k, v in quote_data["trading_time"].items()} |
| 198 | + |
| 199 | + assert json.dumps(quote_data, sort_keys=True) == \ |
| 200 | + '{"amount": NaN, "ask_price1": 47070.0, "ask_volume1": 1, "average": NaN, "bid_price1": 47050.0, "bid_volume1": 1, "close": NaN, "commission": 11.594999999999999, "datetime": "2019-10-14 23:59:59.999999", "delivery_month": 1, "delivery_year": 2020, "expire_datetime": 1579071600.0, "expired": false, "highest": NaN, "ins_class": "FUTURE", "last_price": 47060.0, "lower_limit": NaN, "lowest": NaN, "margin": 16233.000000000002, "max_limit_order_volume": 500, "max_market_order_volume": 0, "min_limit_order_volume": 0, "min_market_order_volume": 0, "open": NaN, "open_interest": 90714, "pre_close": NaN, "pre_open_interest": 0, "pre_settlement": NaN, "price_decs": 0, "price_tick": 10, "settlement": NaN, "strike_price": NaN, "trading_time": {"day": [["09:00:00", "10:15:00"], ["10:30:00", "11:30:00"], ["13:30:00", "15:00:00"]], "night": [["21:00:00", "25:00:00"]]}, "underlying_symbol": "", "upper_limit": NaN, "volume": 0, "volume_multiple": 5}' |
| 201 | + |
| 202 | + # 其他取值方式 |
| 203 | + assert quote["pre_close"] != quote.pre_close |
| 204 | + assert quote.get("pre_settlement") != quote.pre_settlement |
| 205 | + assert quote.get("highest") != quote.highest |
| 206 | + assert quote.get("lowest") != quote.lowest |
| 207 | + assert quote["open"] != quote.open |
| 208 | + assert quote["close"] != quote.close |
| 209 | + api.close() |
0 commit comments