tushare 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile.lock +21 -20
- data/bin/console +0 -0
- data/bin/setup +0 -0
- data/lib/tushare/stock/news_event.rb +16 -8
- data/lib/tushare/stock/trading.rb +106 -2
- data/lib/tushare/util.rb +125 -4
- data/lib/tushare/version.rb +1 -1
- metadata +3 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ad6e7db73711b81c0a5a8c8d9296736b203c479c
|
4
|
+
data.tar.gz: 0d668c56550f11d26a80bfeac88dc3e6b93d8931
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e352a8566d8ec7c147b0c1842c9582770e595009753c1f925264e46710b24d8475a89e837dc7c5438415c7a7b7a069add2bf338a8459bf83a62f0a0cd5747327
|
7
|
+
data.tar.gz: ceb521ee6f0b53e6dfb21d5031e27a3bc91b1e3853ec25bce9d7af989bf791402e86f8bbf6e97913a461708b12b80c8d1c0bff80344df4bba1d9dc669466a80c
|
data/Gemfile.lock
CHANGED
@@ -1,29 +1,27 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
tushare (0.
|
5
|
-
awesome_print (~> 1.
|
6
|
-
httparty (~> 0.
|
7
|
-
nokogiri (~> 1.
|
8
|
-
roo (~> 2.
|
9
|
-
roo-xls (~> 1.0
|
10
|
-
table_print (~> 1.5
|
4
|
+
tushare (0.2.0)
|
5
|
+
awesome_print (~> 1.7)
|
6
|
+
httparty (~> 0.14)
|
7
|
+
nokogiri (~> 1.7)
|
8
|
+
roo (~> 2.7)
|
9
|
+
roo-xls (~> 1.0)
|
10
|
+
table_print (~> 1.5)
|
11
11
|
|
12
12
|
GEM
|
13
13
|
remote: https://rubygems.org/
|
14
14
|
specs:
|
15
|
-
awesome_print (1.
|
15
|
+
awesome_print (1.7.0)
|
16
16
|
diff-lcs (1.2.5)
|
17
|
-
httparty (0.
|
18
|
-
json (~> 1.8)
|
17
|
+
httparty (0.14.0)
|
19
18
|
multi_xml (>= 0.5.2)
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
mini_portile2 (~> 2.0.0.rc2)
|
19
|
+
mini_portile2 (2.1.0)
|
20
|
+
multi_xml (0.6.0)
|
21
|
+
nokogiri (1.7.1)
|
22
|
+
mini_portile2 (~> 2.1.0)
|
25
23
|
rake (10.4.2)
|
26
|
-
roo (2.
|
24
|
+
roo (2.7.1)
|
27
25
|
nokogiri (~> 1)
|
28
26
|
rubyzip (~> 1.1, < 2.0.0)
|
29
27
|
roo-xls (1.0.0)
|
@@ -43,11 +41,11 @@ GEM
|
|
43
41
|
diff-lcs (>= 1.2.0, < 2.0)
|
44
42
|
rspec-support (~> 3.4.0)
|
45
43
|
rspec-support (3.4.1)
|
46
|
-
ruby-ole (1.2.
|
47
|
-
rubyzip (1.1
|
48
|
-
spreadsheet (1.
|
44
|
+
ruby-ole (1.2.12.1)
|
45
|
+
rubyzip (1.2.1)
|
46
|
+
spreadsheet (1.1.4)
|
49
47
|
ruby-ole (>= 1.0)
|
50
|
-
table_print (1.5.
|
48
|
+
table_print (1.5.6)
|
51
49
|
|
52
50
|
PLATFORMS
|
53
51
|
ruby
|
@@ -57,3 +55,6 @@ DEPENDENCIES
|
|
57
55
|
rake (~> 10.0)
|
58
56
|
rspec (~> 3.4)
|
59
57
|
tushare!
|
58
|
+
|
59
|
+
BUNDLED WITH
|
60
|
+
1.15.4
|
data/bin/console
CHANGED
File without changes
|
data/bin/setup
CHANGED
File without changes
|
@@ -100,6 +100,12 @@ module Tushare
|
|
100
100
|
# content, 消息内容(show_content=True的情况下)
|
101
101
|
# ptime, 发布时间
|
102
102
|
# rcounts,阅读次数
|
103
|
+
#
|
104
|
+
#
|
105
|
+
#20170504bug修复
|
106
|
+
#修复获取股吧数据的时候的报错问题
|
107
|
+
# 1. 获取最新消息链接的时候,heads中的链接由于连接到直播间,无法进行内容读取
|
108
|
+
# 2. 获取的res最新文章数据中的li有可能出现空标签的问题,在代码中加入判断去除空链接bug
|
103
109
|
def guba_sina(show_content = false)
|
104
110
|
url = format(GUBA_SINA_URL, P_TYPE['http'], DOMAINS['sina'])
|
105
111
|
doc = Nokogiri::HTML(open(url), nil, 'gbk')
|
@@ -111,18 +117,20 @@ module Tushare
|
|
111
117
|
link = head.css('a').first
|
112
118
|
object[:title] = link.content
|
113
119
|
object[:url] = link.attr('href')
|
114
|
-
object.merge!(_guba_content(object[:url]))
|
120
|
+
#object.merge!(_guba_content(object[:url]))
|
115
121
|
object.delete(:content) unless show_content
|
116
122
|
result << object
|
117
123
|
end
|
118
124
|
res.each do |row|
|
119
125
|
object = {}
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
+
unless row.css('a').length<2
|
127
|
+
link = row.css('a')[1]
|
128
|
+
object[:title] = link.text
|
129
|
+
object[:url] = link.attr('href')
|
130
|
+
object.merge!(_guba_content(object[:url]))
|
131
|
+
object.delete(:content) unless show_content
|
132
|
+
result << object
|
133
|
+
end
|
126
134
|
end
|
127
135
|
|
128
136
|
result
|
@@ -134,7 +142,7 @@ module Tushare
|
|
134
142
|
doc = Nokogiri::HTML(open(url), nil, 'gbk')
|
135
143
|
content = doc.css('div.ilt_p p').text
|
136
144
|
ptime = doc.css('div.fl_left.iltp_time span').text
|
137
|
-
rcounts_text = doc.css('div.fl_right.iltp_span span')
|
145
|
+
rcounts_text = doc.css('div.fl_right.iltp_span span').text
|
138
146
|
rcounts = rcounts_text.gsub(/\D/, '')
|
139
147
|
{ content: content, ptime: ptime, rcounts: rcounts }
|
140
148
|
end
|
@@ -405,8 +405,106 @@ module Tushare
|
|
405
405
|
end
|
406
406
|
end
|
407
407
|
|
408
|
+
# 获取k线数据
|
409
|
+
# ---------
|
410
|
+
# Parameters:
|
411
|
+
# code:string
|
412
|
+
# 股票代码 e.g. 600848
|
413
|
+
# start_date:string
|
414
|
+
# 开始日期 format:YYYY-MM-DD 为空时取上市首日
|
415
|
+
# end_date:string
|
416
|
+
# 结束日期 format:YYYY-MM-DD 为空时取最近一个交易日
|
417
|
+
# autype:string
|
418
|
+
# 复权类型,qfq-前复权 hfq-后复权 None-不复权,默认为qfq
|
419
|
+
# ktype:string
|
420
|
+
# 数据类型,D=日k线 W=周 M=月 5=5分钟 15=15分钟 30=30分钟 60=60分钟,默认为D
|
421
|
+
# retry_count : int, 默认 3
|
422
|
+
# 如遇网络等问题重复执行的次数
|
423
|
+
# pause : int, 默认 0
|
424
|
+
# 重复请求数据过程中暂停的秒数,防止请求间隔时间太短出现的问题
|
425
|
+
# return
|
426
|
+
# -------
|
427
|
+
# DataFrame
|
428
|
+
# date 交易日期 (index)
|
429
|
+
# open 开盘价
|
430
|
+
# high 最高价
|
431
|
+
# close 收盘价
|
432
|
+
# low 最低价
|
433
|
+
# volume 成交量
|
434
|
+
# amount 成交额
|
435
|
+
# turnoverratio 换手率
|
436
|
+
# code 股票代码
|
437
|
+
def get_k_data(code = nil, start_date = '', end_date = '', ktype = 'D', autype = 'qfq', index = false)
|
438
|
+
symbol = index ? INDEX_SYMBOL[code] : _code_to_symbol(code)
|
439
|
+
dataflag = ''
|
440
|
+
autype = autype.nil? ? '' : autype
|
441
|
+
if !start_date.nil? && start_date != ''
|
442
|
+
end_date = end_date.nil? || end_date == '' ? Date.today.strftime('%Y-%m-%d') : end_date
|
443
|
+
end
|
444
|
+
if K_LABELS.include?(ktype.upcase)
|
445
|
+
fq = !autype.nil? ? autype : ''
|
446
|
+
fq = '' if %w(1 5).include?(code[0]) || index
|
447
|
+
kline = autype.nil? ? '' : 'fq'
|
448
|
+
if (start_date.nil? || start_date == '') && (end_date.nil? || end_date == '')
|
449
|
+
urls = [format(KLINE_TT_URL, P_TYPE['http'], DOMAINS['tt'], kline, fq, symbol, TT_K_TYPE[ktype.upcase], start_date, end_date, fq, _random(17))]
|
450
|
+
else
|
451
|
+
years = tt_dates(start_date, end_date)
|
452
|
+
urls = []
|
453
|
+
years.each do |year|
|
454
|
+
urls.push(format(KLINE_TT_URL, P_TYPE['http'], DOMAINS['tt'], kline, "#{fq}#{year}", symbol, TT_K_TYPE[ktype.upcase], "#{year}-01-01", "#{year + 1}-12-31", fq, _random(17)))
|
455
|
+
end
|
456
|
+
end
|
457
|
+
dataflag = format('%s%s', fq, TT_K_TYPE[ktype.upcase])
|
458
|
+
elsif K_MIN_LABELS.include?(ktype)
|
459
|
+
urls = [format(KLINE_TT_MIN_URL, P_TYPE['http'], DOMAINS['tt'], symbol, ktype, ktype, _random(16))]
|
460
|
+
dataflag = format('m%s', ktype)
|
461
|
+
else
|
462
|
+
throw TypeError.new('ktype input error.')
|
463
|
+
end
|
464
|
+
data = []
|
465
|
+
urls.each do |url|
|
466
|
+
data = data.concat(_get_k_data(url, dataflag, symbol, code, index, ktype))
|
467
|
+
end
|
468
|
+
if !K_MIN_LABELS.include?(ktype) && (!start_date.nil? && start_date != '') && (!end_date.nil? && end_date != '') && !data.empty?
|
469
|
+
start_date = Date.strptime(start_date, '%Y-%m-%d')
|
470
|
+
end_date = Date.strptime(end_date, '%Y-%m-%d')
|
471
|
+
data.select! do |datum|
|
472
|
+
date = Date.strptime(datum['date'], '%Y-%m-%d')
|
473
|
+
start_date <= date && date <= end_date
|
474
|
+
end
|
475
|
+
end
|
476
|
+
data
|
477
|
+
end
|
478
|
+
|
408
479
|
protected
|
409
480
|
|
481
|
+
def _get_k_data(url, dataflag = '', symbol = '', code = '', index = false, ktype = '')
|
482
|
+
response = HTTParty.get(url)
|
483
|
+
return [] if response.length < 100
|
484
|
+
response = response.split('=')[1]
|
485
|
+
response.gsub!(/,{"nd.*?}/, '')
|
486
|
+
js = JSON.parse(response)
|
487
|
+
dataflag = js['data'][symbol].keys.include?(dataflag) ? dataflag : TT_K_TYPE[ktype.upcase]
|
488
|
+
return [] if js['data'][symbol][dataflag].length == 0
|
489
|
+
data = []
|
490
|
+
cols = KLINE_TT_COLS
|
491
|
+
if (js['data'][symbol][dataflag][0].length) == 6
|
492
|
+
cols = KLINE_TT_COLS_MINS
|
493
|
+
end
|
494
|
+
js['data'][symbol][dataflag].each do |datum|
|
495
|
+
object = { 'code' => index ? symbol : code }
|
496
|
+
datum.each_with_index do |v, i|
|
497
|
+
if (cols[i] != 'date')
|
498
|
+
object[cols[i]] = v.to_f
|
499
|
+
else
|
500
|
+
object[cols[i]] = v
|
501
|
+
end
|
502
|
+
end
|
503
|
+
data.push(object)
|
504
|
+
end
|
505
|
+
data
|
506
|
+
end
|
507
|
+
|
410
508
|
def _parse_fq_factor(code, start_date, end_date)
|
411
509
|
symbol = _code_to_symbol(code)
|
412
510
|
url = format(HIST_FQ_FACTOR_URL, P_TYPE['http'], DOMAINS['vsf'],
|
@@ -502,12 +600,18 @@ module Tushare
|
|
502
600
|
rand(start_int..end_int).to_s
|
503
601
|
end
|
504
602
|
|
603
|
+
def tt_dates(start_date = '', end_date = '')
|
604
|
+
start_year = start_date[0...4].to_i
|
605
|
+
end_year = end_date[0...4].to_i
|
606
|
+
(start_year..(end_year + 1)).step(2).to_a
|
607
|
+
end
|
608
|
+
|
505
609
|
module_function :get_hist_data, :get_tick_data, :get_sina_dd,
|
506
610
|
:get_today_ticks, :get_today_all, :_today_ticks,
|
507
611
|
:_parsing_dayprice_json, :get_realtime_quotes,
|
508
612
|
:_random, :code_to_symbol, :get_h_data, :_parse_fq_factor,
|
509
|
-
:_get_index_url, :_parse_fq_data, :get_index, :get_hists
|
613
|
+
:_get_index_url, :_parse_fq_data, :get_index, :get_hists,
|
614
|
+
:get_k_data, :_get_k_data, :tt_dates
|
510
615
|
end
|
511
616
|
end
|
512
|
-
|
513
617
|
end
|
data/lib/tushare/util.rb
CHANGED
@@ -33,10 +33,13 @@ module Tushare
|
|
33
33
|
'sseq' => 'query.sse.com.cn',
|
34
34
|
'sse' => 'www.sse.com.cn',
|
35
35
|
'szse' => 'www.szse.cn',
|
36
|
-
'oss' => '
|
36
|
+
'oss' => 'file.tushare.org',
|
37
37
|
'idxip' => '115.29.204.48',
|
38
38
|
'shibor' => 'www.shibor.org',
|
39
|
-
'mbox' => 'www.cbooo.cn'
|
39
|
+
'mbox' => 'www.cbooo.cn',
|
40
|
+
'tt' => 'gtimg.cn',
|
41
|
+
'gw' => 'gw.com.cn',
|
42
|
+
'v500' => 'value500.com'
|
40
43
|
}.freeze
|
41
44
|
PAGES = {
|
42
45
|
'fd' => 'index.phtml',
|
@@ -229,8 +232,124 @@ module Tushare
|
|
229
232
|
MONEY_SUPPLY_COLS = %w(month m2 m2_yoy m1 m1_yoy m0 m0_yoy cd cd_yoy qm
|
230
233
|
qm_yoy ftd ftd_yoy sd sd_yoy rests rests_yoy).freeze
|
231
234
|
MONEY_SUPPLY_BLA_COLS = %w(year m2 m1 m0 cd qm ftd sd rests).freeze
|
232
|
-
ALL_CAL_FILE = format('%s%s/
|
233
|
-
|
235
|
+
ALL_CAL_FILE = format('%s%s/tsdata/calAll.csv', P_TYPE['http'], DOMAINS['oss']).freeze
|
236
|
+
INDEX_SYMBOL = {'399990' => 'sz399990', '000006' => 'sh000006', '399998' => 'sz399998',
|
237
|
+
'399436' => 'sz399436', '399678' => 'sz399678', '399804' => 'sz399804',
|
238
|
+
'000104' => 'sh000104', '000070' => 'sh000070', '399613' => 'sz399613',
|
239
|
+
'399690' => 'sz399690', '399928' => 'sz399928', '000928' => 'sh000928',
|
240
|
+
'000986' => 'sh000986', '399806' => 'sz399806', '000032' => 'sh000032',
|
241
|
+
'000005' => 'sh000005', '399381' => 'sz399381', '399908' => 'sz399908',
|
242
|
+
'000908' => 'sh000908', '399691' => 'sz399691', '000139' => 'sh000139',
|
243
|
+
'399427' => 'sz399427', '399248' => 'sz399248', '000832' => 'sh000832',
|
244
|
+
'399901' => 'sz399901', '399413' => 'sz399413', '000901' => 'sh000901',
|
245
|
+
'000078' => 'sh000078', '000944' => 'sh000944', '000025' => 'sh000025',
|
246
|
+
'399944' => 'sz399944', '399307' => 'sz399307', '000052' => 'sh000052',
|
247
|
+
'399680' => 'sz399680', '399232' => 'sz399232', '399993' => 'sz399993',
|
248
|
+
'000102' => 'sh000102', '000950' => 'sh000950', '399950' => 'sz399950',
|
249
|
+
'399244' => 'sz399244', '399925' => 'sz399925', '000925' => 'sh000925',
|
250
|
+
'000003' => 'sh000003', '000805' => 'sh000805', '000133' => 'sh000133',
|
251
|
+
'399677' => 'sz399677', '399319' => 'sz399319', '399397' => 'sz399397',
|
252
|
+
'399983' => 'sz399983', '399654' => 'sz399654', '399440' => 'sz399440',
|
253
|
+
'000043' => 'sh000043', '000012' => 'sh000012', '000833' => 'sh000833',
|
254
|
+
'000145' => 'sh000145', '000053' => 'sh000053', '000013' => 'sh000013',
|
255
|
+
'000022' => 'sh000022', '000094' => 'sh000094', '399299' => 'sz399299',
|
256
|
+
'000101' => 'sh000101', '399817' => 'sz399817', '399481' => 'sz399481',
|
257
|
+
'399434' => 'sz399434', '399301' => 'sz399301', '000029' => 'sh000029',
|
258
|
+
'399812' => 'sz399812', '399441' => 'sz399441', '000098' => 'sh000098',
|
259
|
+
'399557' => 'sz399557', '000068' => 'sh000068', '399298' => 'sz399298',
|
260
|
+
'399302' => 'sz399302', '000961' => 'sh000961', '000959' => 'sh000959',
|
261
|
+
'399961' => 'sz399961', '000126' => 'sh000126', '000036' => 'sh000036',
|
262
|
+
'399305' => 'sz399305', '000116' => 'sh000116', '399359' => 'sz399359',
|
263
|
+
'399810' => 'sz399810', '000062' => 'sh000062', '399618' => 'sz399618',
|
264
|
+
'399435' => 'sz399435', '000149' => 'sh000149', '000819' => 'sh000819',
|
265
|
+
'000020' => 'sh000020', '000061' => 'sh000061', '000016' => 'sh000016',
|
266
|
+
'000028' => 'sh000028', '399809' => 'sz399809', '000999' => 'sh000999',
|
267
|
+
'399238' => 'sz399238', '000100' => 'sh000100', '399979' => 'sz399979',
|
268
|
+
'000979' => 'sh000979', '399685' => 'sz399685', '000152' => 'sh000152',
|
269
|
+
'000153' => 'sh000153', '399318' => 'sz399318', '000853' => 'sh000853',
|
270
|
+
'000040' => 'sh000040', '399693' => 'sz399693', '000076' => 'sh000076',
|
271
|
+
'000017' => 'sh000017', '000134' => 'sh000134', '399989' => 'sz399989',
|
272
|
+
'000042' => 'sh000042', '000066' => 'sh000066', '000008' => 'sh000008',
|
273
|
+
'000002' => 'sh000002', '000001' => 'sh000001', '000011' => 'sh000011',
|
274
|
+
'000031' => 'sh000031', '399403' => 'sz399403', '000951' => 'sh000951',
|
275
|
+
'399951' => 'sz399951', '000092' => 'sh000092', '399234' => 'sz399234',
|
276
|
+
'000823' => 'sh000823', '399986' => 'sz399986', '399647' => 'sz399647',
|
277
|
+
'000050' => 'sh000050', '000073' => 'sh000073', '399357' => 'sz399357',
|
278
|
+
'000940' => 'sh000940', '000107' => 'sh000107', '000048' => 'sh000048',
|
279
|
+
'399411' => 'sz399411', '399366' => 'sz399366', '399373' => 'sz399373',
|
280
|
+
'000015' => 'sh000015', '000021' => 'sh000021', '000151' => 'sh000151',
|
281
|
+
'000851' => 'sh000851', '000058' => 'sh000058', '399404' => 'sz399404',
|
282
|
+
'399102' => 'sz399102', '399431' => 'sz399431', '399971' => 'sz399971',
|
283
|
+
'000125' => 'sh000125', '000069' => 'sh000069', '000063' => 'sh000063',
|
284
|
+
'399395' => 'sz399395', '000038' => 'sh000038', '399240' => 'sz399240',
|
285
|
+
'399903' => 'sz399903', '000989' => 'sh000989', '399321' => 'sz399321',
|
286
|
+
'399675' => 'sz399675', '399235' => 'sz399235', '000057' => 'sh000057',
|
287
|
+
'000056' => 'sh000056', '000903' => 'sh000903', '399310' => 'sz399310',
|
288
|
+
'000004' => 'sh000004', '000019' => 'sh000019', '399919' => 'sz399919',
|
289
|
+
'000974' => 'sh000974', '000919' => 'sh000919', '399635' => 'sz399635',
|
290
|
+
'399663' => 'sz399663', '399106' => 'sz399106', '399107' => 'sz399107',
|
291
|
+
'399555' => 'sz399555', '000090' => 'sh000090', '000155' => 'sh000155',
|
292
|
+
'000060' => 'sh000060', '399636' => 'sz399636', '000816' => 'sh000816',
|
293
|
+
'000010' => 'sh000010', '399671' => 'sz399671', '000035' => 'sh000035',
|
294
|
+
'399352' => 'sz399352', '399683' => 'sz399683', '399554' => 'sz399554',
|
295
|
+
'399409' => 'sz399409', '000018' => 'sh000018', '399101' => 'sz399101',
|
296
|
+
'000992' => 'sh000992', '399416' => 'sz399416', '399918' => 'sz399918',
|
297
|
+
'399379' => 'sz399379', '399674' => 'sz399674', '399239' => 'sz399239',
|
298
|
+
'399384' => 'sz399384', '399367' => 'sz399367', '000918' => 'sh000918',
|
299
|
+
'000914' => 'sh000914', '399914' => 'sz399914', '000054' => 'sh000054',
|
300
|
+
'000806' => 'sh000806', '399619' => 'sz399619', '399015' => 'sz399015',
|
301
|
+
'399393' => 'sz399393', '399313' => 'sz399313', '399231' => 'sz399231',
|
302
|
+
'000846' => 'sh000846', '000854' => 'sh000854', '399010' => 'sz399010',
|
303
|
+
'399666' => 'sz399666', '399387' => 'sz399387', '399399' => 'sz399399',
|
304
|
+
'000026' => 'sh000026', '399934' => 'sz399934', '000150' => 'sh000150',
|
305
|
+
'000934' => 'sh000934', '399317' => 'sz399317', '000138' => 'sh000138',
|
306
|
+
'399371' => 'sz399371', '399394' => 'sz399394', '399659' => 'sz399659',
|
307
|
+
'399665' => 'sz399665', '399931' => 'sz399931', '000161' => 'sh000161',
|
308
|
+
'399380' => 'sz399380', '000931' => 'sh000931', '399704' => 'sz399704',
|
309
|
+
'399616' => 'sz399616', '000817' => 'sh000817', '399303' => 'sz399303',
|
310
|
+
'399629' => 'sz399629', '399624' => 'sz399624', '399009' => 'sz399009',
|
311
|
+
'399233' => 'sz399233', '399103' => 'sz399103', '399242' => 'sz399242',
|
312
|
+
'399627' => 'sz399627', '000971' => 'sh000971', '399679' => 'sz399679',
|
313
|
+
'399912' => 'sz399912', '000982' => 'sh000982', '399668' => 'sz399668',
|
314
|
+
'000096' => 'sh000096', '399982' => 'sz399982', '000849' => 'sh000849',
|
315
|
+
'000148' => 'sh000148', '399364' => 'sz399364', '000912' => 'sh000912',
|
316
|
+
'000129' => 'sh000129', '000055' => 'sh000055', '000047' => 'sh000047', '399355' => 'sz399355', '399622' => 'sz399622', '000033' => 'sh000033', '399640' => 'sz399640', '000852' => 'sh000852', '399966' => 'sz399966', '399615' => 'sz399615', '399802' => 'sz399802', '399602' => 'sz399602', '000105' => 'sh000105', '399660' => 'sz399660', '399672' => 'sz399672',
|
317
|
+
'399913' => 'sz399913', '399420' => 'sz399420', '000159' => 'sh000159', '399314' => 'sz399314', '399652' => 'sz399652',
|
318
|
+
'399369' => 'sz399369', '000913' => 'sh000913', '000065' => 'sh000065',
|
319
|
+
'000808' => 'sh000808', '399386' => 'sz399386', '399100' => 'sz399100',
|
320
|
+
'000997' => 'sh000997', '000990' => 'sh000990', '000093' => 'sh000093', '399637' => 'sz399637', '399439' => 'sz399439', '399306' => 'sz399306', '000855' => 'sh000855', '000123' => 'sh000123', '399623' => 'sz399623',
|
321
|
+
'399312' => 'sz399312', '399249' => 'sz399249', '399311' => 'sz399311', '399975' => 'sz399975', '399356' => 'sz399356',
|
322
|
+
'399400' => 'sz399400', '399676' => 'sz399676', '000136' => 'sh000136', '399361' => 'sz399361', '399974' => 'sz399974', '399995' => 'sz399995', '399316' => 'sz399316', '399701' => 'sz399701', '000300' => 'sh000300', '000030' => 'sh000030', '000976' => 'sh000976', '399686' => 'sz399686', '399108' => 'sz399108', '399374' => 'sz399374',
|
323
|
+
'000906' => 'sh000906', '399707' => 'sz399707', '000064' => 'sh000064', '399633' => 'sz399633', '399300' => 'sz399300', '399628' => 'sz399628', '399398' => 'sz399398', '000034' => 'sh000034',
|
324
|
+
'399644' => 'sz399644', '399905' => 'sz399905', '399626' => 'sz399626',
|
325
|
+
'399625' => 'sz399625', '000978' => 'sh000978', '399664' => 'sz399664', '399682' => 'sz399682', '399322' => 'sz399322', '000158' => 'sh000158', '000842' => 'sh000842', '399550' => 'sz399550', '399423' => 'sz399423', '399978' => 'sz399978', '399996' => 'sz399996', '000905' => 'sh000905',
|
326
|
+
'000007' => 'sh000007', '000827' => 'sh000827', '399655' => 'sz399655', '399401' => 'sz399401', '399650' => 'sz399650', '000963' => 'sh000963', '399661' => 'sz399661', '399922' => 'sz399922', '000091' => 'sh000091', '399375' => 'sz399375', '000922' => 'sh000922', '399702' => 'sz399702', '399963' => 'sz399963', '399011' => 'sz399011', '399012' => 'sz399012',
|
327
|
+
'399383' => 'sz399383', '399657' => 'sz399657', '399910' => 'sz399910', '399351' => 'sz399351', '000910' => 'sh000910', '000051' => 'sh000051', '399376' => 'sz399376', '399639' => 'sz399639', '000821' => 'sh000821', '399360' => 'sz399360', '399604' => 'sz399604', '399315' => 'sz399315', '399658' => 'sz399658', '000135' => 'sh000135',
|
328
|
+
'000059' => 'sh000059', '399006' => 'sz399006',
|
329
|
+
'399320' => 'sz399320', '000991' => 'sh000991', '399606' => 'sz399606',
|
330
|
+
'399428' => 'sz399428', '399406' => 'sz399406', '399630' => 'sz399630', '000802' => 'sh000802', '399803' => 'sz399803', '000071' => 'sh000071', '399358' => 'sz399358',
|
331
|
+
'399013' => 'sz399013', '399385' => 'sz399385', '399008' => 'sz399008', '399649' => 'sz399649',
|
332
|
+
'399673' => 'sz399673', '399418' => 'sz399418', '399370' => 'sz399370', '000814' => 'sh000814',
|
333
|
+
'399002' => 'sz399002', '399814' => 'sz399814', '399641' => 'sz399641', '399001' => 'sz399001',
|
334
|
+
'399662' => 'sz399662', '399706' => 'sz399706', '399932' => 'sz399932', '000095' => 'sh000095', '000932' => 'sh000932', '399965' => 'sz399965', '399363' => 'sz399363', '399354' => 'sz399354', '399638' => 'sz399638', '399648' => 'sz399648', '399608' => 'sz399608', '000939' => 'sh000939', '399939' => 'sz399939', '399365' => 'sz399365', '399382' => 'sz399382', '399631' => 'sz399631', '399612' => 'sz399612', '399611' => 'sz399611', '399645' => 'sz399645',
|
335
|
+
'399324' => 'sz399324', '399552' => 'sz399552', '000858' => 'sh000858', '000045' => 'sh000045',
|
336
|
+
'000121' => 'sh000121', '399703' => 'sz399703', '399003' => 'sz399003',
|
337
|
+
'399348' => 'sz399348', '399389' => 'sz399389', '399007' => 'sz399007', '399391' => 'sz399391', '000973' => 'sh000973',
|
338
|
+
'000984' => 'sh000984', '000969' => 'sh000969', '000952' => 'sh000952', '399332' => 'sz399332', '399952' => 'sz399952', '399553' => 'sz399553', '000856' => 'sh000856',
|
339
|
+
'399969' => 'sz399969', '399643' => 'sz399643', '399402' => 'sz399402', '399372' => 'sz399372', '399632' => 'sz399632', '399344' => 'sz399344', '399808' => 'sz399808', '399620' => 'sz399620', '000103' => 'sh000103', '399911' => 'sz399911', '000993' => 'sh000993', '000983' => 'sh000983', '399687' => 'sz399687', '399933' => 'sz399933', '000933' => 'sh000933', '399437' => 'sz399437', '399433' => 'sz399433', '000046' => 'sh000046', '000911' => 'sh000911', '000114' => 'sh000114', '000049' => 'sh000049', '399392' => 'sz399392', '399653' => 'sz399653', '000975' => 'sh000975', '000044' => 'sh000044', '399378' => 'sz399378', '000828' => 'sh000828', '399634' => 'sz399634',
|
340
|
+
'399005' => 'sz399005', '000162' => 'sh000162', '399333' => 'sz399333', '000122' => 'sh000122', '399646' => 'sz399646', '000077' => 'sh000077', '000074' => 'sh000074', '399656' => 'sz399656', '399396' => 'sz399396', '399415' => 'sz399415', '399408' => 'sz399408', '000115' => 'sh000115', '000987' => 'sh000987', '399362' => 'sz399362', '000841' => 'sh000841', '000141' => 'sh000141', '000120' => 'sh000120', '399992' => 'sz399992', '000807' => 'sh000807', '399350' => 'sz399350', '000009' => 'sh000009', '000998' => 'sh000998', '399390' => 'sz399390', '399405' => 'sz399405', '000099' => 'sh000099', '399337' => 'sz399337', '000142' => 'sh000142', '399419' => 'sz399419', '399407' => 'sz399407', '000909' => 'sh000909', '000119' => 'sh000119', '399909' => 'sz399909', '399805' => 'sz399805', '000996' => 'sh000996', '000847' => 'sh000847', '000130' => 'sh000130', '399377' => 'sz399377', '399388' => 'sz399388', '399610' => 'sz399610', '000958' => 'sh000958',
|
341
|
+
'399958' => 'sz399958', '000075' => 'sh000075', '399346' => 'sz399346', '000147' => 'sh000147', '000132' => 'sh000132', '000108' => 'sh000108', '399642' => 'sz399642', '000977' => 'sh000977', '399689' => 'sz399689', '399335' => 'sz399335', '399977' => 'sz399977', '399972' => 'sz399972', '399970' => 'sz399970', '399004' => 'sz399004', '399341' => 'sz399341', '399330' => 'sz399330', '399917' => 'sz399917', '000160' => 'sh000160', '399432' => 'sz399432', '399429' => 'sz399429', '000917' => 'sh000917',
|
342
|
+
'000128' => 'sh000128', '000067' => 'sh000067', '000079' => 'sh000079', '399236' => 'sz399236', '399994' => 'sz399994', '399237' => 'sz399237', '000966' => 'sh000966', '000957' => 'sh000957', '399328' => 'sz399328',
|
343
|
+
'399353' => 'sz399353', '399957' => 'sz399957', '399412' => 'sz399412', '000904' => 'sh000904', '399904' => 'sz399904', '399410' => 'sz399410', '000027' => 'sh000027', '399667' => 'sz399667', '000857' => 'sh000857',
|
344
|
+
'000131' => 'sh000131', '000964' => 'sh000964', '399339' => 'sz399339', '399964' => 'sz399964', '399991' => 'sz399991', '399417' => 'sz399417', '000146' => 'sh000146', '399551' => 'sz399551', '000137' => 'sh000137', '000118' => 'sh000118', '399976' => 'sz399976', '000109' => 'sh000109', '399681' => 'sz399681', '399438' => 'sz399438', '000117' => 'sh000117', '399614' => 'sz399614', '399669' => 'sz399669', '000111' => 'sh000111', '399670' => 'sz399670', '000097' => 'sh000097', '000106' => 'sh000106', '000039' => 'sh000039', '399935' => 'sz399935', '000935' => 'sh000935', '399813' => 'sz399813', '000037' => 'sh000037', '399811' => 'sz399811', '399705' => 'sz399705', '399556' => 'sz399556', '000113' => 'sh000113', '000072' => 'sh000072', '399651' => 'sz399651', '399617' => 'sz399617', '399684' => 'sz399684', '000041' => 'sh000041', '399807' => 'sz399807', '399959' => 'sz399959', '399967' => 'sz399967', '399326' => 'sz399326', '399688' => 'sz399688', '399368' => 'sz399368', '399241' => 'sz399241', '399696' => 'sz399696', '000850' => 'sh000850', '000110' => 'sh000110', '399621' => 'sz399621', '399243' => 'sz399243',
|
345
|
+
'399973' => 'sz399973', '399987' => 'sz399987', '000112' => 'sh000112', '399997' => 'sz399997',
|
346
|
+
'000915' => 'sh000915', '000916' => 'sh000916',
|
347
|
+
'hkHSI' => 'hkHSI' }.freeze
|
348
|
+
KLINE_TT_URL = '%sweb.ifzq.%s/appstock/app/%skline/get?_var=kline_day%s¶m=%s,%s,%s,%s,640,%s&r=0.%s'.freeze
|
349
|
+
TT_K_TYPE = { 'D' => 'day', 'W' => 'week', 'M' => 'month' }.freeze
|
350
|
+
KLINE_TT_MIN_URL = '%sifzq.%s/appstock/app/kline/mkline?param=%s,m%s,,640&_var=m%s_today&r=0.%s'.freeze
|
351
|
+
KLINE_TT_COLS_MINS = ['date', 'open', 'close', 'high', 'low', 'volume']
|
352
|
+
KLINE_TT_COLS = ['date', 'open', 'close', 'high', 'low', 'volume', 'amount', 'turnoverratio']
|
234
353
|
|
235
354
|
module Util
|
236
355
|
# 生成symbol代码标志
|
@@ -289,5 +408,7 @@ module Tushare
|
|
289
408
|
[6, 7].include?(date.cwday) ||
|
290
409
|
holidays.include?(date.strftime('%F'))
|
291
410
|
end
|
411
|
+
|
412
|
+
module_function :trade_cal, :holiday?
|
292
413
|
end
|
293
414
|
end
|
data/lib/tushare/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tushare
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Robot Jiang
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: exe
|
11
11
|
cert_chain: []
|
12
|
-
date: 2017-
|
12
|
+
date: 2017-08-20 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: httparty
|
@@ -203,9 +203,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
203
203
|
version: '0'
|
204
204
|
requirements: []
|
205
205
|
rubyforge_project:
|
206
|
-
rubygems_version: 2.
|
206
|
+
rubygems_version: 2.6.11
|
207
207
|
signing_key:
|
208
208
|
specification_version: 4
|
209
209
|
summary: Tushare-Ruby is ruby version of [tushare](https://github.com/waditu/tushare)
|
210
210
|
test_files: []
|
211
|
-
has_rdoc:
|