-
Notifications
You must be signed in to change notification settings - Fork 556
/
KData.py
64 lines (55 loc) · 2.15 KB
/
KData.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#!/usr/bin/python
# -*- coding: utf8 -*-
# gb18030
#===============================================================================
# 作者:fasiondog
# 历史:1)20130220, Added by fasiondog
#===============================================================================
import unittest
from test_init import *
from hikyuu.trade_sys import *
class KDataTest(unittest.TestCase):
def test_null_kdata(self):
k = KData()
self.assertEqual(k.size(), 0)
self.assertEqual(k.empty(), True)
self.assertEqual(k.startPos, 0)
self.assertEqual(k.endPos, 0)
self.assertEqual(k.lastPos, 0)
stock = k.getStock()
self.assertEqual(stock.isNull(), True)
def test_kdata(self):
stock = sm["Sh000001"]
q = KQuery(0, 10)
k = stock.getKData(q)
self.assertEqual(k.size(), 10)
self.assertEqual(k.empty(), False)
self.assertEqual(k.startPos, 0)
self.assertEqual(k.endPos, 10)
self.assertEqual(k.lastPos, 9)
self.assertEqual(k[0].datetime, Datetime(199012190000))
self.assert_(abs(k[0].openPrice - 96.05) < 0.0001)
self.assert_(abs(k[0].highPrice - 99.980) < 0.0001)
self.assert_(abs(k[0].lowPrice - 95.79) < 0.0001)
self.assert_(abs(k[0].closePrice - 99.98) < 0.0001)
self.assert_(abs(k[0].transAmount - 49.4) < 0.0001)
self.assert_(abs(k[0].transCount - 1260) < 0.0001)
self.assert_(abs(k[1].openPrice - 104.3) < 0.0001)
self.assert_(abs(k[9].openPrice - 127.61) < 0.0001)
def test_pickle(self):
if not constant.pickle_support:
return
import pickle as pl
filename = sm.tmpdir() + "/KData.plk"
fh = open(filename, 'wb')
kdata = sm['sh000001'].getKData(KQuery(10, 20))
pl.dump(kdata, fh)
fh.close()
fh = open(filename, 'rb')
b = pl.load(fh)
fh.close()
self.assertEqual(kdata.size(), b.size())
for i in range(len(kdata)):
self.assertEqual(kdata[i], b[i])
def suite():
return unittest.TestLoader().loadTestsFromTestCase(KDataTest)