12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- #!/usr/bin/env python
- # -*- coding:utf-8 -*-
- # @FileName :spot_trading.py
- # @Time :2024/12/3 19:29
- # @Author :David
- # @Company: shenyang JY
- import datetime
- def cdq(self, fhs):
- cdq = []
- # sun_up_time = datetime.datetime.strptime(self.opt.first_point['sun_up_time'], '%Y-%m-%d %H:%M:%S')
- for i, fh in fhs.iterrows():
- if i + 1 > 16:
- T = 'T16'
- else:
- T = 'T' + str(i + 1)
- coe_m = float(self.opt.coe[T]['m'])
- coe_n = float(self.opt.coe[T]['n'])
- dt = fh['C_TIME']
- dq = fh['C_FP_VALUE']
- dq_fix = fh['dq_fix']
- his_fix = fh['his_fix']
- new_dq = round(coe_n * his_fix + coe_m * dq_fix, 2) # 修改曲线为0问题
- for i, cal in enumerate(self.opt.spot_trading):
- if 'T' + str(cal['point']) == T:
- new_dq = new_dq * cal['coe'] + cal['abs']
- self.logger.info("现货交易:第{}个点,进行了乘系数加绝对值修改".format(cal['point']))
- for i, cal in enumerate(self.opt.calculate):
- interval = list(range(cal['extraMinRange'], cal['extraMaxRange'] + 1))
- if dt.hour in interval:
- new_dq = new_dq * cal['coe'] + cal['abs']
- self.logger.info(
- "第{}组,时段为:{}-{}点,时刻:{},进行了乘系数加绝对值修改".format(i + 1, cal['extraMinRange'],
- cal['extraMaxRange'],
- dt.strftime('%Y-%m-%d %H:%M:%S')))
- new_dq = new_dq if dq > 0 else 0
- new_dq = new_dq if new_dq > 0 else 0
- new_dq = self.opt.cap if new_dq > self.opt.cap else new_dq
- cdq.append({"C_TIME": dt.strftime('%Y-%m-%d %H:%M:%S'), "CDQ_VALUE": new_dq})
- return cdq
|