Module: Tushare::Stock::Billboard

Extended by:
Billboard, Util
Included in:
Billboard
Defined in:
lib/tushare/stock/billboard.rb

Overview

龙虎榜数据

Instance Method Summary collapse

Methods included from Util

_code_to_symbol, _write_console, _write_head, check_quarter, check_year, fetch_ftp_file, holiday?, trade_cal

Instance Method Details

#broker_tops(days = 5) ⇒ Object

获取营业部上榜统计数据Parameters


days:int

天数,统计n天以来上榜次数,默认为5天,其余是10、30、60

retry_count : int, 默认 3

如遇网络等问题重复执行的次数

pause : int, 默认 0

重复请求数据过程中暂停的秒数,防止请求间隔时间太短出现的问题

Return


broker:营业部名称count:上榜次数bamount:累积购买额(万) bcount:买入席位数samount:累积卖出额(万) scount:卖出席位数top3:买入前三股票



99
100
101
102
103
104
105
# File 'lib/tushare/stock/billboard.rb', line 99

def broker_tops(days = 5)
  _check_lhb_input(days)
  get_data(1, LHB_YYTJ_COLS, lambda do |p|
    format(LHB_SINA_URL, P_TYPE['http'], DOMAINS['vsf'], LHB_KINDS[1],
           PAGES['fd'], days, p)
  end)
end

#cap_tops(days = 5) ⇒ Object

获取个股上榜统计数据Parameters


days:int
          天数,统计n天以来上榜次数,默认为5天,其余是10、30、60
retry_count : int, 默认 3
             如遇网络等问题重复执行的次数
pause : int, 默认 0
            重复请求数据过程中暂停的秒数,防止请求间隔时间太短出现的问题

Return


DataFrame

code:代码
name:名称
count:上榜次数
bamount:累积购买额()
samount:累积卖出额()
net:净额()
bcount:买入席位数
scount:卖出席位数


73
74
75
76
77
78
79
# File 'lib/tushare/stock/billboard.rb', line 73

def cap_tops(days = 5)
  _check_lhb_input(days)
  get_data(1, LHB_GGTJ_COLS, lambda do |p|
    format(LHB_SINA_URL, P_TYPE['http'], DOMAINS['vsf'], LHB_KINDS[0],
           PAGES['fd'], days, p)
  end)
end

#inst_detailObject

Return


code:股票代码name:股票名称date:交易日期bamount:机构席位买入额(万) samount:机构席位卖出额(万) type:类型



157
158
159
160
161
162
163
164
165
# File 'lib/tushare/stock/billboard.rb', line 157

def inst_detail
  get_data(
    1,
    LHB_JGMX_COLS,
    lambda do |p|
      format(LHB_SINA_URL, P_TYPE['http'], DOMAINS['vsf'], LHB_KINDS[3],
             PAGES['fd'], '', p)
    end)
end

#inst_tops(days = 5) ⇒ Object

Return


code:代码name:名称bamount:累积买入额(万) bcount:买入次数samount:累积卖出额(万) scount:卖出次数net:净额(万)



126
127
128
129
130
131
132
133
134
135
136
137
138
139
# File 'lib/tushare/stock/billboard.rb', line 126

def inst_tops(days = 5)
  _check_lhb_input(days)
  get_data(
    1,
    LHB_JGZZ_COLS,
    lambda do |p|
      format(LHB_SINA_URL, P_TYPE['http'], DOMAINS['vsf'], LHB_KINDS[2],
             PAGES['fd'], days, p)
    end,
    lambda do |tds|
      tds = tds.to_a
      tds[0..1].concat tds[4..8]
    end)
end

#top_list(date = Time.now.strftime('%F')) ⇒ Object

Return


DataFrame

code:代码
name :名称
pchange:涨跌幅
amount:龙虎榜成交额()
buy:买入额()
bratio:占总成交比例
sell:卖出额()
sratio :占总成交比例
reason:上榜原因
date  :日期


29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/tushare/stock/billboard.rb', line 29

def top_list(date = Time.now.strftime('%F'))
  # TODO: 判断日期是否合法
  url = format(LHB_URL, P_TYPE['http'], DOMAINS['em'], date, date)
  resp = HTTParty.get(url)
  string = resp.body.encode('utf-8', 'gbk').split('_1=').last
  json = JSON.parse(string)
  result = []
  json['data'].each do |datum|
    object = {}
    LHB_COLS.each_with_index do |key, index|
      object[key] = datum[LHB_TMP_COLS[index]]
      if %w(buy sell amount Turnover).include? key
        object[key] = (object[key].to_f / 10000).round(2)
      end
    end
    object['bration'] = (object['buy'] / object['Turnover']).round(2)
    object['sratio'] = (object['sell'] /object['Turnover']).round(2)
    object['date'] = date
    object.delete('Turnover')
    result << object
  end
  result
end