chinadata 0.4.0__py3-none-any.whl → 0.4.2__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
 
@@ -709,11 +742,26 @@ class pro_api:
709
742
 
710
743
  def kpl_concept_cons(self, api_name='kpl_concept_cons', **kwargs):
711
744
  return self.query(token=self.token, api_name=api_name, **kwargs)
712
- def request_with_retry(self,url, max_retries,):
745
+
746
+ def stk_auction_o(self, api_name='stk_auction_o', **kwargs):
747
+
748
+ return '此接口为单独权限,和积分没有关系,需要单独购买'
749
+
750
+ def stk_auction_c(self, api_name='stk_auction_c', **kwargs):
751
+ return '此接口为单独权限,和积分没有关系,需要单独购买'
752
+ def stk_auction(self, api_name='stk_auction', **kwargs):
753
+ return self.query(token=self.token, api_name=api_name, **kwargs)
754
+ def ft_limit(self, api_name='ft_limit', **kwargs):
755
+ return self.query(token=self.token, api_name=api_name, **kwargs)
756
+
757
+ def request_with_retry(self, url, max_retries, ):
713
758
  for attempt in range(max_retries):
714
759
  try:
715
760
  response = requests.get(url=url, timeout=100, )
716
761
  response.raise_for_status()
762
+ json_data = response.json()
763
+ if json_data == []:
764
+ raise ValueError("响应为空列表")
717
765
  return response
718
766
  except Exception as e:
719
767
  # print(f"尝试 {attempt + 1} 失败: {e}")
@@ -724,92 +772,64 @@ class pro_api:
724
772
  # print(f"请求失败,已重试 {max_retries} 次")
725
773
  return None
726
774
 
727
- def rt_min(self,ts_code,freq,max_retries=3):
775
+ def rt_min(self, ts_code, freq, max_retries=3):
728
776
  url = f"http://39.105.209.102:9002/csi/stock/min/rt_min/{ts_code}/{freq}/{self.token}"
729
- r=self.request_with_retry(url, max_retries=max_retries)
730
- df=pd.DataFrame(r.json())
731
- df['time'] = pd.to_datetime(df['time'])
732
- if freq == '60min':
733
- periods = {
734
- '09:15-10:30': ('09:15:00', '10:30:00'),
735
- '10:31-11:30': ('10:31:00', '11:30:00'),
736
- '13:01-14:00': ('13:01:00', '14:00:00'),
737
- '14:01-15:00': ('14:01:00', '15:00:00')
738
- }
739
- result = []
740
- for name, (start, end) in periods.items():
741
- mask = (df['time'].dt.strftime('%H:%M:%S') >= start) & \
742
- (df['time'].dt.strftime('%H:%M:%S') <= end)
743
- data = df[mask]
744
- if len(data) > 0:
745
- result.append({
746
- 'ts_code': df.iloc[0]['ts_code'],
747
- 'time': end,
748
- 'open': data.iloc[0]['open'],
749
- 'high': data['high'].max(),
750
- 'low': data['low'].min(),
751
- 'close': data.iloc[-1]['close'],
752
- 'vol': data['vol'].sum(),
753
- 'amount': data['amount'].sum()
754
- })
755
- df = pd.DataFrame(result)
756
-
777
+ r = self.request_with_retry(url, max_retries=max_retries)
778
+ try:
779
+ df = pd.DataFrame(r.json())
780
+ except Exception as e:
781
+ return pd.DataFrame()
782
+ if df.empty:
783
+ return df
757
784
  else:
758
- # 设置为索引
759
- df.set_index('time', inplace=True)
760
- df = df.resample(freq, label='right', closed='right').agg({
761
- 'ts_code': 'first',
762
- 'open': 'first',
763
- 'high': 'max',
764
- 'low': 'min',
765
- 'close': 'last',
766
- 'vol': 'sum',
767
- 'amount': 'sum',
768
- }).dropna().reset_index()[[ 'ts_code','time','open','high','low','close','vol','amount']]
769
-
770
- return df
771
-
772
- def stk_auction_o(self, api_name='stk_auction_o', **kwargs):
773
-
774
- return '此接口为单独权限,和积分没有关系,需要单独购买'
775
-
776
- def stk_auction_c(self, api_name='stk_auction_c', **kwargs):
777
- return '此接口为单独权限,和积分没有关系,需要单独购买'
778
-
779
- def dc_daily(self, api_name='dc_daily', **kwargs):
780
- return self.query(token=self.token, api_name=api_name, **kwargs)
781
-
782
- def cb_factor_pro(self, api_name='cb_factor_pro', **kwargs):
783
- return self.query(token=self.token, api_name=api_name, **kwargs)
784
-
785
- def stk_ah_comparison(self, api_name='stk_ah_comparison', **kwargs):
786
- return self.query(token=self.token, api_name=api_name, **kwargs)
787
-
788
- def stock_hsgt(self, api_name='stock_hsgt', **kwargs):
789
- return self.query(token=self.token, api_name=api_name, **kwargs)
790
-
791
- def stock_st(self, api_name='stock_st', **kwargs):
792
- return self.query(token=self.token, api_name=api_name, **kwargs)
793
-
794
- def bse_mapping(self, api_name='bse_mapping', **kwargs):
795
- return self.query(token=self.token, api_name=api_name, **kwargs)
796
-
797
-
798
- def stk_auction(self, api_name='stk_auction', **kwargs):
799
- return self.query(token=self.token, api_name=api_name, **kwargs)
800
-
801
- def ft_limit(self, api_name='ft_limit', **kwargs):
802
- return self.query(token=self.token, api_name=api_name, **kwargs)
785
+ df['time'] = pd.to_datetime(df['time'])
786
+ if freq == '60min':
787
+ periods = {
788
+ '09:15-10:30': ('09:15:00', '10:30:00'),
789
+ '10:31-11:30': ('10:31:00', '11:30:00'),
790
+ '13:01-14:00': ('13:01:00', '14:00:00'),
791
+ '14:01-15:00': ('14:01:00', '15:00:00')
792
+ }
793
+ result = []
794
+ for name, (start, end) in periods.items():
795
+ mask = (df['time'].dt.strftime('%H:%M:%S') >= start) & \
796
+ (df['time'].dt.strftime('%H:%M:%S') <= end)
797
+ data = df[mask]
798
+ if len(data) > 0:
799
+ result.append({
800
+ 'ts_code': df.iloc[0]['ts_code'],
801
+ 'time': end,
802
+ 'open': data.iloc[0]['open'],
803
+ 'high': data['high'].max(),
804
+ 'low': data['low'].min(),
805
+ 'close': data.iloc[-1]['close'],
806
+ 'vol': data['vol'].sum(),
807
+ 'amount': data['amount'].sum()
808
+ })
809
+ df = pd.DataFrame(result)
803
810
 
811
+ else:
812
+ # 设置为索引
813
+ df.set_index('time', inplace=True)
814
+ df = df.resample(freq, label='right', closed='right').agg({
815
+ 'ts_code': 'first',
816
+ 'open': 'first',
817
+ 'high': 'max',
818
+ 'low': 'min',
819
+ 'close': 'last',
820
+ 'vol': 'sum',
821
+ 'amount': 'sum',
822
+ }).dropna().reset_index()[['ts_code', 'time', 'open', 'high', 'low', 'close', 'vol', 'amount']]
823
+
824
+ return df
804
825
  def irm_qa_sh(self, api_name='irm_qa_sh', **kwargs):
805
826
  return self.query(token=self.token, api_name=api_name, **kwargs)
806
-
807
827
  def irm_qa_sz(self, api_name='irm_qa_sz', **kwargs):
808
828
  return self.query(token=self.token, api_name=api_name, **kwargs)
809
-
829
+ def stk_nineturn(self, api_name='stk_nineturn', **kwargs):
830
+ return self.query(token=self.token, api_name=api_name, **kwargs)
810
831
  def stk_week_month_adj(self, api_name='stk_week_month_adj', **kwargs):
811
832
  return self.query(token=self.token, api_name=api_name, **kwargs)
812
-
813
833
  def limit_list_ths(self, api_name='limit_list_ths', **kwargs):
814
834
  return self.query(token=self.token, api_name=api_name, **kwargs)
815
835
 
@@ -818,11 +838,20 @@ class pro_api:
818
838
 
819
839
  def limit_cpt_list(self, api_name='limit_cpt_list', **kwargs):
820
840
  return self.query(token=self.token, api_name=api_name, **kwargs)
841
+ def etf_basic(self, api_name='etf_basic', **kwargs):
842
+ return self.query(token=self.token, api_name=api_name, **kwargs)
843
+
844
+ def etf_index(self, api_name='etf_index', **kwargs):
845
+ return self.query(token=self.token, api_name=api_name, **kwargs)
846
+ def etf_share_size(self, api_name='etf_share_size', **kwargs):
847
+ return self.query(token=self.token, api_name=api_name, **kwargs)
848
+
821
849
 
822
850
  def ci_index_member(self, api_name='ci_index_member', **kwargs):
823
851
  return self.query(token=self.token, api_name=api_name, **kwargs)
824
852
 
825
853
 
854
+
826
855
  import pandas as pd
827
856
  import os
828
857
 
@@ -875,7 +904,7 @@ def pro_bar(ts_code='', api=None, start_date='', end_date='', freq='D', asset='E
875
904
 
876
905
  """
877
906
  # url = "http://127.0.0.1:9002/tp"
878
- url = "http://123.57.69.240:9002/tp"
907
+ url = "http://120.53.122.167:9002/tp"
879
908
 
880
909
  params = {
881
910
  '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,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: chinadata
3
- Version: 0.4.0
3
+ Version: 0.4.2
4
4
  Author: xc
5
5
  Author-email: utyu@gmail.com
6
6
  Platform: any
@@ -0,0 +1,7 @@
1
+ chinadata/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
+ chinadata/ca_data.py,sha256=3nMojEVaCfJDs368_IyLwDZo_Ys7XAfMSpWwVrC7Q0Y,40572
3
+ chinadata/example.py,sha256=eKj2Hl5KVq9EJGWVY2ZoRJOqZ-p4yiSoFI-xVzdf8LA,575
4
+ chinadata-0.4.2.dist-info/METADATA,sha256=_6yZk5wlbmB9qB90za50SK-WwI7UvJwzDHB2FLw5dzc,161
5
+ chinadata-0.4.2.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
6
+ chinadata-0.4.2.dist-info/top_level.txt,sha256=Ptxvu9uzRHP4kVGRf413KuwSvsY2mk_KgQJ6ssWwisU,10
7
+ chinadata-0.4.2.dist-info/RECORD,,
@@ -1,7 +0,0 @@
1
- chinadata/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- chinadata/ca_data.py,sha256=INTsbrcsyQjfp051erJE_gauQdmxeVyTY697auQwAZQ,39038
3
- chinadata/example.py,sha256=x2veHR97H3ym1ekSc7Kfi1v4RrH7M-d1mm2oqXWEM08,613
4
- chinadata-0.4.0.dist-info/METADATA,sha256=rjdTdZFEyYcoKk9ohLbDF_bPIXktXmeuUTzxcnybqnw,161
5
- chinadata-0.4.0.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
6
- chinadata-0.4.0.dist-info/top_level.txt,sha256=Ptxvu9uzRHP4kVGRf413KuwSvsY2mk_KgQJ6ssWwisU,10
7
- chinadata-0.4.0.dist-info/RECORD,,