#!/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