chinadata 0.3.9__py3-none-any.whl → 0.4.0__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://120.53.122.167:9002/tq"
44
+ url = "http://123.57.69.240:9002/tq"
45
45
 
46
46
  params = {
47
47
  'token': get_token(),
@@ -52,9 +52,9 @@ class pro_api:
52
52
 
53
53
 
54
54
 
55
-
56
55
  response = requests.post(url, json=params)
57
56
 
57
+
58
58
  if response.status_code == 200:
59
59
  try:
60
60
  data = response.json()
@@ -69,8 +69,6 @@ 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)
74
72
  raise ValueError("数据获取错误",response.status_code,response.text)
75
73
 
76
74
 
@@ -443,12 +441,13 @@ class pro_api:
443
441
 
444
442
  def index_global(self, api_name='index_global', **kwargs):
445
443
  return self.query(token=self.token, api_name=api_name, **kwargs)
446
-
447
444
  def idx_factor_pro(self, api_name='idx_factor_pro', **kwargs):
448
445
  return self.query(token=self.token, api_name=api_name, **kwargs)
449
446
  def fund_factor_pro(self, api_name='fund_factor_pro', **kwargs):
450
447
  return self.query(token=self.token, api_name=api_name, **kwargs)
451
448
 
449
+
450
+
452
451
  def ncov_global(self, api_name='ncov_global', **kwargs):
453
452
  return self.query(token=self.token, api_name=api_name, **kwargs)
454
453
 
@@ -532,36 +531,6 @@ class pro_api:
532
531
  def dc_member(self, api_name='dc_member', **kwargs):
533
532
  return self.query(token=self.token, api_name=api_name, **kwargs)
534
533
 
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
-
565
534
  def ths_member(self, api_name='ths_member', **kwargs):
566
535
  return self.query(token=self.token, api_name=api_name, **kwargs)
567
536
 
@@ -646,7 +615,6 @@ class pro_api:
646
615
  def ft_mins(self, api_name='ft_mins', **kwargs):
647
616
  return '此接口为单独权限,和积分没有关系,需要单独购买'
648
617
 
649
-
650
618
  def realtime_quote(self, api_name='realtime_quote', **kwargs):
651
619
  return self.query(token=self.token, api_name=api_name, **kwargs)
652
620
 
@@ -733,7 +701,6 @@ class pro_api:
733
701
 
734
702
  def moneyflow_dc(self, api_name='moneyflow_dc', **kwargs):
735
703
  return self.query(token=self.token, api_name=api_name, **kwargs)
736
-
737
704
  def moneyflow_cnt_ths(self, api_name='moneyflow_cnt_ths', **kwargs):
738
705
  return self.query(token=self.token, api_name=api_name, **kwargs)
739
706
 
@@ -742,6 +709,65 @@ class pro_api:
742
709
 
743
710
  def kpl_concept_cons(self, api_name='kpl_concept_cons', **kwargs):
744
711
  return self.query(token=self.token, api_name=api_name, **kwargs)
712
+ def request_with_retry(self,url, max_retries,):
713
+ for attempt in range(max_retries):
714
+ try:
715
+ response = requests.get(url=url, timeout=100, )
716
+ response.raise_for_status()
717
+ return response
718
+ except Exception as e:
719
+ # print(f"尝试 {attempt + 1} 失败: {e}")
720
+ if attempt < max_retries - 1:
721
+ wait_time = 1 * (2 ** attempt) # 指数退避
722
+ # print(f"等待 {wait_time} 秒后重试...")
723
+ time.sleep(wait_time)
724
+ # print(f"请求失败,已重试 {max_retries} 次")
725
+ return None
726
+
727
+ def rt_min(self,ts_code,freq,max_retries=3):
728
+ 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
+
757
+ 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
745
771
 
746
772
  def stk_auction_o(self, api_name='stk_auction_o', **kwargs):
747
773
 
@@ -749,18 +775,41 @@ class pro_api:
749
775
 
750
776
  def stk_auction_c(self, api_name='stk_auction_c', **kwargs):
751
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
+
752
798
  def stk_auction(self, api_name='stk_auction', **kwargs):
753
799
  return self.query(token=self.token, api_name=api_name, **kwargs)
800
+
754
801
  def ft_limit(self, api_name='ft_limit', **kwargs):
755
802
  return self.query(token=self.token, api_name=api_name, **kwargs)
803
+
756
804
  def irm_qa_sh(self, api_name='irm_qa_sh', **kwargs):
757
805
  return self.query(token=self.token, api_name=api_name, **kwargs)
806
+
758
807
  def irm_qa_sz(self, api_name='irm_qa_sz', **kwargs):
759
808
  return self.query(token=self.token, api_name=api_name, **kwargs)
760
- def stk_nineturn(self, api_name='stk_nineturn', **kwargs):
761
- return self.query(token=self.token, api_name=api_name, **kwargs)
809
+
762
810
  def stk_week_month_adj(self, api_name='stk_week_month_adj', **kwargs):
763
811
  return self.query(token=self.token, api_name=api_name, **kwargs)
812
+
764
813
  def limit_list_ths(self, api_name='limit_list_ths', **kwargs):
765
814
  return self.query(token=self.token, api_name=api_name, **kwargs)
766
815
 
@@ -769,20 +818,11 @@ class pro_api:
769
818
 
770
819
  def limit_cpt_list(self, api_name='limit_cpt_list', **kwargs):
771
820
  return self.query(token=self.token, api_name=api_name, **kwargs)
772
- def etf_basic(self, api_name='etf_basic', **kwargs):
773
- return self.query(token=self.token, api_name=api_name, **kwargs)
774
-
775
- def etf_index(self, api_name='etf_index', **kwargs):
776
- return self.query(token=self.token, api_name=api_name, **kwargs)
777
- def etf_share_size(self, api_name='etf_share_size', **kwargs):
778
- return self.query(token=self.token, api_name=api_name, **kwargs)
779
-
780
821
 
781
822
  def ci_index_member(self, api_name='ci_index_member', **kwargs):
782
823
  return self.query(token=self.token, api_name=api_name, **kwargs)
783
824
 
784
825
 
785
-
786
826
  import pandas as pd
787
827
  import os
788
828
 
@@ -835,7 +875,7 @@ def pro_bar(ts_code='', api=None, start_date='', end_date='', freq='D', asset='E
835
875
 
836
876
  """
837
877
  # url = "http://127.0.0.1:9002/tp"
838
- url = "http://120.53.122.167:9002/tp"
878
+ url = "http://123.57.69.240:9002/tp"
839
879
 
840
880
  params = {
841
881
  'token':get_token(),
chinadata/example.py CHANGED
@@ -4,22 +4,30 @@
4
4
  pip install chinadata
5
5
 
6
6
  """
7
+
8
+
7
9
  #2、
8
10
  import chinadata.ca_data as ts
9
11
 
10
12
 
11
- ts.set_token('5821074c7482c04e8d39da5c8313')
12
- pro=ts.pro_api('d55821074c7482c04e8d39da5c8313')
13
+ ts.set_token('3a9e334456c8405c00d013914953')
14
+ pro=ts.pro_api('a9e334456c8405c00d013914953')
15
+
16
+
17
+
18
+ # 你要测量的代码块
13
19
 
14
20
  # #查询当前所有正常上市交易的股票列表
15
21
  data = pro.stock_basic(exchange='', list_status='L', fields='ts_code,symbol,name,area,industry,list_date')
16
22
  print(data)
17
- #
23
+
18
24
  #
19
25
  df = ts.pro_bar(ts_code='000007.SZ', start_date='20240817', end_date='20241215')
20
26
  print(df)
21
27
 
28
+
22
29
  df = pro.daily(ts_code='000001.SZ', start_date='20000701', end_date='20180718')
23
30
  print(df)
24
31
 
25
32
 
33
+
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: chinadata
3
- Version: 0.3.9
3
+ Version: 0.4.0
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=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,,
@@ -1,7 +0,0 @@
1
- chinadata/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- chinadata/ca_data.py,sha256=CfEWR1Awl7iJk_nfP5QtEMKsaLY9i6UYJhiNlZjUDaw,37514
3
- chinadata/example.py,sha256=eKj2Hl5KVq9EJGWVY2ZoRJOqZ-p4yiSoFI-xVzdf8LA,575
4
- chinadata-0.3.9.dist-info/METADATA,sha256=cMWEdKwVDUpmKugFrsZG-RyE52FvwB-G7GYeX4CGFF0,161
5
- chinadata-0.3.9.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
6
- chinadata-0.3.9.dist-info/top_level.txt,sha256=Ptxvu9uzRHP4kVGRf413KuwSvsY2mk_KgQJ6ssWwisU,10
7
- chinadata-0.3.9.dist-info/RECORD,,