gjdatac-api 0.2.8__tar.gz → 0.3.0__tar.gz

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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: gjdatac_api
3
- Version: 0.2.8
3
+ Version: 0.3.0
4
4
  Summary: 数据接口打包
5
5
  Author: yin
6
6
  Author-email: 2018209921@qq.com
@@ -10,7 +10,7 @@ import chinese_calendar as calendar
10
10
  import pandas as pd
11
11
  import dolphindb as ddb
12
12
 
13
- from dict_data import (get_price_frequency_dict, get_price_data_type_dict, get_instruments_type_dict,
13
+ from .dict_data import (get_price_frequency_dict, get_price_data_type_dict, get_instruments_type_dict,
14
14
  future_delivery_fee_return_fields, future_delivery_fee_return_fields_rename,
15
15
  future_margin_ratio_return_fields, future_margin_ratio_return_fields_rename,
16
16
  future_limit_position_return_fields, future_limit_position_return_fields_rename,
@@ -18,8 +18,8 @@ from dict_data import (get_price_frequency_dict, get_price_data_type_dict, get_i
18
18
  tick_main_contract_return_fields, tick_main_contract_return_fields_rename,
19
19
  gtja_mink_main_contract_return_fields, gtja_mink_main_contract_return_fields_rename
20
20
  )
21
- from dolphindb_info import *
22
- from instrument_class import Instrument
21
+ from .dolphindb_info import *
22
+ from .instrument_class import Instrument
23
23
 
24
24
 
25
25
  class GJDataC:
@@ -2004,13 +2004,8 @@ class GJDataC:
2004
2004
  # 先从数据库获取数据
2005
2005
  tick_data, db_session = self.connect_db(table_name, db_path)
2006
2006
 
2007
- # 使用 strftime 方法将 Timestamp 转换为所需格式
2008
- formatted_dates = [ts.strftime('%Y.%m.%d') for ts in data['trading_day'].tolist()]
2009
2007
 
2010
2008
  # 根据日期筛选数据
2011
- # 将日期转换成 DolphinDB 识别的日期格式,用于筛选数据
2012
- # start_dolphin_date = self.get_active_contract_datetime_to_dolphin_time(start_date)
2013
- # end_dolphin_date = self.get_active_contract_datetime_to_dolphin_time(end_date)
2014
2009
  start_dolphin_date = self.format_date(start_date)
2015
2010
  end_dolphin_date = self.format_date(end_date)
2016
2011
  date_data = tick_data.where(f"trading_day >= {start_dolphin_date} and trading_day <= {end_dolphin_date}")
@@ -2452,8 +2447,6 @@ class GJDataC:
2452
2447
  """
2453
2448
  校验参数类型是否为str
2454
2449
  :param commodity: str--必填,期货合约品种
2455
- :param start_date: str--必填,开始日期
2456
- :param end_date: str--必填,结束日期 (默认为策略当天日期的前一天)
2457
2450
  :return: None
2458
2451
  """
2459
2452
 
@@ -3862,10 +3855,13 @@ class GJDataC:
3862
3855
  # 向前查询
3863
3856
  filtered_dates = trading_dates[trading_dates['trading_day'] < trade_time]
3864
3857
  result = filtered_dates['trading_day'].sort_values(ascending=False).head(abs(date_count))
3865
- else:
3858
+ elif date_count > 0:
3866
3859
  # 向后查询
3867
3860
  filtered_dates = trading_dates[trading_dates['trading_day'] > trade_time]
3868
3861
  result = filtered_dates['trading_day'].sort_values().head(date_count)
3862
+ else:
3863
+ filtered_dates = trading_dates[trading_dates['trading_day'] == trade_time]
3864
+ result = filtered_dates['trading_day']
3869
3865
 
3870
3866
  # 将结果转换为指定格式的字符串列表
3871
3867
  fina_result = sorted(result.dt.strftime('%Y.%m.%d').tolist())
@@ -3893,6 +3889,19 @@ class GJDataC:
3893
3889
  time_points = pd.date_range(start=trade_time - datetime.timedelta(minutes=abs(date_count)),
3894
3890
  end=trade_time + datetime.timedelta(minutes=abs(date_count)),
3895
3891
  freq='min') # 'T' 表示分钟频率
3892
+ def _before_trading_day(_date):
3893
+ if _date in trading_dates['trading_day'].dt.date.values:
3894
+ return _date
3895
+ else:
3896
+ _previous_date = _date - datetime.timedelta(days=1)
3897
+ return _before_trading_day(_previous_date)
3898
+
3899
+ def _after_trading_day(_date):
3900
+ if _date in trading_dates['trading_day'].dt.date.values:
3901
+ return _date
3902
+ else:
3903
+ _previous_date = _date + datetime.timedelta(days=1)
3904
+ return _after_trading_day(_previous_date)
3896
3905
 
3897
3906
  # 将时间点转换为指定格式的字符串
3898
3907
  time_points_str = time_points.strftime('%Y.%m.%d %H:%M:%S')
@@ -3903,14 +3912,46 @@ class GJDataC:
3903
3912
  # 检查时间点是否在交易日历中
3904
3913
  if point.date() in trading_dates['trading_day'].dt.date.values:
3905
3914
  valid_time_points.append(point_str)
3915
+ else:
3916
+ if point.date() < trade_time.date():
3917
+ previous_date = point.date() - datetime.timedelta(days=1)
3918
+ trading_date = _before_trading_day(previous_date)
3919
+ elif point.date() > trade_time.date():
3920
+ previous_date = point.date() + datetime.timedelta(days=1)
3921
+ trading_date = _after_trading_day(previous_date)
3922
+ else:
3923
+ trading_date = point.date()
3924
+ datetime_obj = datetime.datetime.combine(trading_date, datetime.time.min)
3925
+
3926
+ # 获取当天的最后一秒(23:59:59)
3927
+ end_of_day = datetime.datetime.combine(datetime_obj.date(), datetime.time(23, 59, 59))
3928
+ if trading_date < trade_time.date():
3929
+ _time_points = \
3930
+ pd.date_range(start=end_of_day - datetime.timedelta(minutes=abs(date_count)),
3931
+ end=end_of_day,
3932
+ freq='min')
3933
+ elif trading_date > trade_time.date():
3934
+ _time_points = \
3935
+ pd.date_range(start=datetime_obj,
3936
+ end=datetime_obj + datetime.timedelta(minutes=abs(date_count)),
3937
+ freq='min')
3938
+ else:
3939
+ _time_points = \
3940
+ pd.date_range(start=datetime_obj,
3941
+ end=datetime_obj,
3942
+ freq='min')
3943
+ _time_points = _time_points.strftime('%Y.%m.%d %H:%M:%S')
3944
+ valid_time_points.extend(_time_points)
3906
3945
 
3907
3946
  # 根据 date_count 的正负决定查询方向
3908
3947
  if date_count < 0:
3909
3948
  # 向前查询
3910
3949
  result = [p for p in valid_time_points if pd.to_datetime(p) < trade_time][-abs(date_count):]
3911
- else:
3950
+ elif date_count > 0:
3912
3951
  # 向后查询
3913
3952
  result = [p for p in valid_time_points if pd.to_datetime(p) > trade_time][:date_count]
3953
+ else:
3954
+ result = [p for p in valid_time_points if pd.to_datetime(p) == trade_time]
3914
3955
 
3915
3956
  # return sorted(result) if len(result) > 1 else result[0]
3916
3957
  return sorted(result) if len(result) > 1 else result
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: gjdatac-api
3
- Version: 0.2.8
3
+ Version: 0.3.0
4
4
  Summary: 数据接口打包
5
5
  Author: yin
6
6
  Author-email: 2018209921@qq.com
@@ -5,7 +5,7 @@ with open('description_info.md', 'r', encoding='utf-8') as f:
5
5
 
6
6
  setup(
7
7
  name='gjdatac_api', # 你的包名
8
- version='0.2.8', # 版本号
8
+ version='0.3.0', # 版本号
9
9
  description='数据接口打包', # 包的简要描述
10
10
  long_description=long_description, # 包的详细描述
11
11
  long_description_content_type='text/markdown', # 描述文件的类型
File without changes