spot_trading.py 1.8 KB

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