chinadata 0.3.7__py3-none-any.whl → 0.3.8__py3-none-any.whl

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.
chinadata/ca_data.py CHANGED
@@ -41,7 +41,7 @@ class pro_api:
41
41
  pd.DataFrame: A DataFrame containing the fetched stock data.
42
42
  """
43
43
  # url="http://127.0.0.1:9002/tq"
44
- url = "http://123.57.69.240:9002/tq"
44
+ url = "http://120.53.122.167:9002/tq"
45
45
 
46
46
  params = {
47
47
  'token': get_token(),
@@ -52,8 +52,8 @@ class pro_api:
52
52
 
53
53
 
54
54
 
55
- response = requests.post(url, json=params)
56
55
 
56
+ response = requests.post(url, json=params)
57
57
 
58
58
  if response.status_code == 200:
59
59
  try:
@@ -69,6 +69,8 @@ class pro_api:
69
69
  raise ValueError("数据获取错误",e)
70
70
 
71
71
  else:
72
+ # print(f"Failed to fetch data. Status code: {response.status_code}")
73
+ # print(response.text)
72
74
  raise ValueError("数据获取错误",response.status_code,response.text)
73
75
 
74
76
 
@@ -441,13 +443,12 @@ class pro_api:
441
443
 
442
444
  def index_global(self, api_name='index_global', **kwargs):
443
445
  return self.query(token=self.token, api_name=api_name, **kwargs)
446
+
444
447
  def idx_factor_pro(self, api_name='idx_factor_pro', **kwargs):
445
448
  return self.query(token=self.token, api_name=api_name, **kwargs)
446
449
  def fund_factor_pro(self, api_name='fund_factor_pro', **kwargs):
447
450
  return self.query(token=self.token, api_name=api_name, **kwargs)
448
451
 
449
-
450
-
451
452
  def ncov_global(self, api_name='ncov_global', **kwargs):
452
453
  return self.query(token=self.token, api_name=api_name, **kwargs)
453
454
 
@@ -531,6 +532,36 @@ class pro_api:
531
532
  def dc_member(self, api_name='dc_member', **kwargs):
532
533
  return self.query(token=self.token, api_name=api_name, **kwargs)
533
534
 
535
+
536
+
537
+ def dc_daily(self, api_name='dc_daily', **kwargs):
538
+ return self.query(token=self.token, api_name=api_name, **kwargs)
539
+
540
+ def cb_factor_pro(self, api_name='cb_factor_pro', **kwargs):
541
+ return self.query(token=self.token, api_name=api_name, **kwargs)
542
+
543
+ def stk_ah_comparison(self, api_name='stk_ah_comparison', **kwargs):
544
+ return self.query(token=self.token, api_name=api_name, **kwargs)
545
+
546
+ def stock_hsgt(self, api_name='stock_hsgt', **kwargs):
547
+ return self.query(token=self.token, api_name=api_name, **kwargs)
548
+
549
+ def stock_st(self, api_name='stock_st', **kwargs):
550
+ return self.query(token=self.token, api_name=api_name, **kwargs)
551
+
552
+ def bse_mapping(self, api_name='bse_mapping', **kwargs):
553
+ return self.query(token=self.token, api_name=api_name, **kwargs)
554
+ #6000
555
+ def tdx_index(self, api_name='tdx_index', **kwargs):
556
+ return self.query(token=self.token, api_name=api_name, **kwargs)
557
+ def tdx_member(self, api_name='tdx_member', **kwargs):
558
+ return self.query(token=self.token, api_name=api_name, **kwargs)
559
+ def tdx_daily(self, api_name='tdx_daily', **kwargs):
560
+ return self.query(token=self.token, api_name=api_name, **kwargs)
561
+
562
+
563
+
564
+
534
565
  def ths_member(self, api_name='ths_member', **kwargs):
535
566
  return self.query(token=self.token, api_name=api_name, **kwargs)
536
567
 
@@ -615,6 +646,7 @@ class pro_api:
615
646
  def ft_mins(self, api_name='ft_mins', **kwargs):
616
647
  return '此接口为单独权限,和积分没有关系,需要单独购买'
617
648
 
649
+
618
650
  def realtime_quote(self, api_name='realtime_quote', **kwargs):
619
651
  return self.query(token=self.token, api_name=api_name, **kwargs)
620
652
 
@@ -701,6 +733,7 @@ class pro_api:
701
733
 
702
734
  def moneyflow_dc(self, api_name='moneyflow_dc', **kwargs):
703
735
  return self.query(token=self.token, api_name=api_name, **kwargs)
736
+
704
737
  def moneyflow_cnt_ths(self, api_name='moneyflow_cnt_ths', **kwargs):
705
738
  return self.query(token=self.token, api_name=api_name, **kwargs)
706
739
 
@@ -716,41 +749,78 @@ class pro_api:
716
749
 
717
750
  def stk_auction_c(self, api_name='stk_auction_c', **kwargs):
718
751
  return '此接口为单独权限,和积分没有关系,需要单独购买'
719
-
720
- def dc_daily(self, api_name='dc_daily', **kwargs):
721
- return self.query(token=self.token, api_name=api_name, **kwargs)
722
-
723
- def cb_factor_pro(self, api_name='cb_factor_pro', **kwargs):
724
- return self.query(token=self.token, api_name=api_name, **kwargs)
725
-
726
- def stk_ah_comparison(self, api_name='stk_ah_comparison', **kwargs):
727
- return self.query(token=self.token, api_name=api_name, **kwargs)
728
-
729
- def stock_hsgt(self, api_name='stock_hsgt', **kwargs):
730
- return self.query(token=self.token, api_name=api_name, **kwargs)
731
-
732
- def stock_st(self, api_name='stock_st', **kwargs):
733
- return self.query(token=self.token, api_name=api_name, **kwargs)
734
-
735
- def bse_mapping(self, api_name='bse_mapping', **kwargs):
736
- return self.query(token=self.token, api_name=api_name, **kwargs)
737
-
738
-
739
752
  def stk_auction(self, api_name='stk_auction', **kwargs):
740
753
  return self.query(token=self.token, api_name=api_name, **kwargs)
741
-
742
754
  def ft_limit(self, api_name='ft_limit', **kwargs):
743
755
  return self.query(token=self.token, api_name=api_name, **kwargs)
744
756
 
757
+ def request_with_retry(self,url, max_retries,):
758
+ for attempt in range(max_retries):
759
+ try:
760
+ response = requests.get(url=url, timeout=100, )
761
+ response.raise_for_status()
762
+ return response
763
+ except Exception as e:
764
+ # print(f"尝试 {attempt + 1} 失败: {e}")
765
+ if attempt < max_retries - 1:
766
+ wait_time = 1 * (2 ** attempt) # 指数退避
767
+ # print(f"等待 {wait_time} 秒后重试...")
768
+ time.sleep(wait_time)
769
+ # print(f"请求失败,已重试 {max_retries} 次")
770
+ return None
771
+
772
+ def rt_min(self,ts_code,freq,max_retries=3):
773
+ url = f"http://39.105.209.102:9002/csi/stock/min/rt_min/{ts_code}/{freq}/{self.token}"
774
+ r=self.request_with_retry(url, max_retries=max_retries)
775
+ df=pd.DataFrame(r.json())
776
+ df['time'] = pd.to_datetime(df['time'])
777
+ if freq == '60min':
778
+ periods = {
779
+ '09:15-10:30': ('09:15:00', '10:30:00'),
780
+ '10:31-11:30': ('10:31:00', '11:30:00'),
781
+ '13:01-14:00': ('13:01:00', '14:00:00'),
782
+ '14:01-15:00': ('14:01:00', '15:00:00')
783
+ }
784
+ result = []
785
+ for name, (start, end) in periods.items():
786
+ mask = (df['time'].dt.strftime('%H:%M:%S') >= start) & \
787
+ (df['time'].dt.strftime('%H:%M:%S') <= end)
788
+ data = df[mask]
789
+ if len(data) > 0:
790
+ result.append({
791
+ 'ts_code': df.iloc[0]['ts_code'],
792
+ 'time': end,
793
+ 'open': data.iloc[0]['open'],
794
+ 'high': data['high'].max(),
795
+ 'low': data['low'].min(),
796
+ 'close': data.iloc[-1]['close'],
797
+ 'vol': data['vol'].sum(),
798
+ 'amount': data['amount'].sum()
799
+ })
800
+ df = pd.DataFrame(result)
801
+
802
+ else:
803
+ # 设置为索引
804
+ df.set_index('time', inplace=True)
805
+ df = df.resample(freq, label='right', closed='right').agg({
806
+ 'ts_code': 'first',
807
+ 'open': 'first',
808
+ 'high': 'max',
809
+ 'low': 'min',
810
+ 'close': 'last',
811
+ 'vol': 'sum',
812
+ 'amount': 'sum',
813
+ }).dropna().reset_index()[[ 'ts_code','time','open','high','low','close','vol','amount']]
814
+
815
+ return df
745
816
  def irm_qa_sh(self, api_name='irm_qa_sh', **kwargs):
746
817
  return self.query(token=self.token, api_name=api_name, **kwargs)
747
-
748
818
  def irm_qa_sz(self, api_name='irm_qa_sz', **kwargs):
749
819
  return self.query(token=self.token, api_name=api_name, **kwargs)
750
-
820
+ def stk_nineturn(self, api_name='stk_nineturn', **kwargs):
821
+ return self.query(token=self.token, api_name=api_name, **kwargs)
751
822
  def stk_week_month_adj(self, api_name='stk_week_month_adj', **kwargs):
752
823
  return self.query(token=self.token, api_name=api_name, **kwargs)
753
-
754
824
  def limit_list_ths(self, api_name='limit_list_ths', **kwargs):
755
825
  return self.query(token=self.token, api_name=api_name, **kwargs)
756
826
 
@@ -759,11 +829,20 @@ class pro_api:
759
829
 
760
830
  def limit_cpt_list(self, api_name='limit_cpt_list', **kwargs):
761
831
  return self.query(token=self.token, api_name=api_name, **kwargs)
832
+ def etf_basic(self, api_name='etf_basic', **kwargs):
833
+ return self.query(token=self.token, api_name=api_name, **kwargs)
834
+
835
+ def etf_index(self, api_name='etf_index', **kwargs):
836
+ return self.query(token=self.token, api_name=api_name, **kwargs)
837
+ def etf_share_size(self, api_name='etf_share_size', **kwargs):
838
+ return self.query(token=self.token, api_name=api_name, **kwargs)
839
+
762
840
 
763
841
  def ci_index_member(self, api_name='ci_index_member', **kwargs):
764
842
  return self.query(token=self.token, api_name=api_name, **kwargs)
765
843
 
766
844
 
845
+
767
846
  import pandas as pd
768
847
  import os
769
848
 
@@ -816,7 +895,7 @@ def pro_bar(ts_code='', api=None, start_date='', end_date='', freq='D', asset='E
816
895
 
817
896
  """
818
897
  # url = "http://127.0.0.1:9002/tp"
819
- url = "http://123.57.69.240:9002/tp"
898
+ url = "http://120.53.122.167:9002/tp"
820
899
 
821
900
  params = {
822
901
  'token':get_token(),
chinadata/example.py CHANGED
@@ -4,30 +4,22 @@
4
4
  pip install chinadata
5
5
 
6
6
  """
7
-
8
-
9
7
  #2、
10
8
  import chinadata.ca_data as ts
11
9
 
12
10
 
13
- ts.set_token('3a9e334456c8405c00d013914953')
14
- pro=ts.pro_api('a9e334456c8405c00d013914953')
15
-
16
-
17
-
18
- # 你要测量的代码块
11
+ ts.set_token('5821074c7482c04e8d39da5c8313')
12
+ pro=ts.pro_api('d55821074c7482c04e8d39da5c8313')
19
13
 
20
14
  # #查询当前所有正常上市交易的股票列表
21
15
  data = pro.stock_basic(exchange='', list_status='L', fields='ts_code,symbol,name,area,industry,list_date')
22
16
  print(data)
23
-
17
+ #
24
18
  #
25
19
  df = ts.pro_bar(ts_code='000007.SZ', start_date='20240817', end_date='20241215')
26
20
  print(df)
27
21
 
28
-
29
22
  df = pro.daily(ts_code='000001.SZ', start_date='20000701', end_date='20180718')
30
23
  print(df)
31
24
 
32
25
 
33
-
@@ -1,9 +1,8 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: chinadata
3
- Version: 0.3.7
3
+ Version: 0.3.8
4
4
  Author: xc
5
5
  Author-email: utyu@gmail.com
6
6
  Platform: any
7
7
  Requires-Dist: requests
8
8
  Requires-Dist: pandas
9
-
@@ -0,0 +1,7 @@
1
+ chinadata/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
+ chinadata/ca_data.py,sha256=sFzL91lw0_AF8wnFozU_Iu7KPvCzkepK2JlPdBPtOqg,40118
3
+ chinadata/example.py,sha256=eKj2Hl5KVq9EJGWVY2ZoRJOqZ-p4yiSoFI-xVzdf8LA,575
4
+ chinadata-0.3.8.dist-info/METADATA,sha256=bKGFgc537irq0w9PH2N9AAUpOeRtwvZyAfTXzDEee6w,161
5
+ chinadata-0.3.8.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
6
+ chinadata-0.3.8.dist-info/top_level.txt,sha256=Ptxvu9uzRHP4kVGRf413KuwSvsY2mk_KgQJ6ssWwisU,10
7
+ chinadata-0.3.8.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: bdist_wheel (0.42.0)
2
+ Generator: setuptools (75.6.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -1,7 +0,0 @@
1
- chinadata/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- chinadata/ca_data.py,sha256=FFYnTvrUUnyqEVPqBclmYTyHA2OO_pT0b9IW7LZ-YV0,36436
3
- chinadata/example.py,sha256=x2veHR97H3ym1ekSc7Kfi1v4RrH7M-d1mm2oqXWEM08,613
4
- chinadata-0.3.7.dist-info/METADATA,sha256=ZwSFhh5XlXI8kZ4Ih-rV1iS5b9jmhmnrQ7xImDYxOPA,163
5
- chinadata-0.3.7.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
6
- chinadata-0.3.7.dist-info/top_level.txt,sha256=Ptxvu9uzRHP4kVGRf413KuwSvsY2mk_KgQJ6ssWwisU,10
7
- chinadata-0.3.7.dist-info/RECORD,,