zvtvz / zvt

modular quant framework.
https://zvt.readthedocs.io/en/latest/
MIT License
3.09k stars 845 forks source link

TypeError: unsupported operand type(s) for *: 'NoneType' and 'float' In jqdata_runner #119

Closed ranglang closed 3 years ago

ranglang commented 3 years ago

2020-11-02 18:36:14,719  INFO  MainThread  entity_id:stock_sz_002319,evaluate_start_end_size_timestamps result:2020-11-02 00:00:00,None,1,None
2020-11-02 18:36:14,719  INFO  MainThread  sleeping 5 seconds
2020-11-02 18:36:20,286  INFO  MainThread  recomputing 002319 qfq kdata,factor is:0.9787535410764874
2020-11-02 18:36:20,541  ERROR  MainThread  recording data for entity_id:stock_sz_002319,<class 'zvt.domain.quotes.stock.stock_1d_kdata.Stock1dKdata'>,error:unsupported operand type(s) for *: 'NoneType' and 'float'
Traceback (most recent call last):
  File "/usr/local/lib/python3.7/site-packages/zvt-0.9.0-py3.7.egg/zvt/contract/recorder.py", line 400, in run
    timestamps=timestamps)
  File "/usr/local/lib/python3.7/site-packages/zvt-0.9.0-py3.7.egg/zvt/recorders/joinquant/quotes/jq_stock_kdata_recorder.py", line 123, in record
    self.recompute_qfq(entity, qfq_factor=qfq_factor, last_timestamp=last_timestamp)
  File "/usr/local/lib/python3.7/site-packages/zvt-0.9.0-py3.7.egg/zvt/recorders/joinquant/quotes/jq_stock_kdata_recorder.py", line 72, in recompute_qfq
    kdata.open = round(kdata.open * qfq_factor, 2)
TypeError: unsupported operand type(s) for *: 'NoneType' and 'float'
2020-11-02 18:36:20,573  ERROR  MainThread  joinquant record kdata:unsupported operand type(s) for *: 'NoneType' and 'float'
Traceback (most recent call last):
  File "examples/recorders/joinquant_data_runner1.py", line 41, in record_kdata
    Stock1dKdata.record_data(provider='joinquant', sleeping_time=5)
  File "/usr/local/lib/python3.7/site-packages/zvt-0.9.0-py3.7.egg/zvt/contract/schema.py", line 148, in record_data
    r.run()
  File "/usr/local/lib/python3.7/site-packages/zvt-0.9.0-py3.7.egg/zvt/contract/recorder.py", line 481, in run
    raise raising_exception
  File "/usr/local/lib/python3.7/site-packages/zvt-0.9.0-py3.7.egg/zvt/contract/recorder.py", line 400, in run
    timestamps=timestamps)
  File "/usr/local/lib/python3.7/site-packages/zvt-0.9.0-py3.7.egg/zvt/recorders/joinquant/quotes/jq_stock_kdata_recorder.py", line 123, in record
    self.recompute_qfq(entity, qfq_factor=qfq_factor, last_timestamp=last_timestamp)
  File "/usr/local/lib/python3.7/site-packages/zvt-0.9.0-py3.7.egg/zvt/recorders/joinquant/quotes/jq_stock_kdata_recorder.py", line 72, in recompute_qfq
    kdata.open = round(kdata.open * qfq_factor, 2)
TypeError: unsupported operand type(s) for *: 'NoneType' and 'float'
2020-11-02 18:37:21,783  INFO  MainThread  run to 1/4145
foolcage commented 3 years ago
In [27]: df=Stock1dKdata.query_data(codes=['002319'])
2428  stock_sz_002319_2020-10-14  stock_sz_002319 2020-10-14  joinquant  002319  *ST乐通    1d   8.67   8.67   8.67   8.67         0.0  0.000000e+00       None          None
2429  stock_sz_002319_2020-10-15  stock_sz_002319 2020-10-15  joinquant  002319  *ST乐通    1d   8.67   8.67   8.67   8.67         0.0  0.000000e+00       None          None
2430  stock_sz_002319_2020-10-16  stock_sz_002319 2020-10-16  joinquant  002319  *ST乐通    1d   8.67   8.67   8.67   8.67         0.0  0.000000e+00       None          None
2431  stock_sz_002319_2020-10-19  stock_sz_002319 2020-10-19  joinquant  002319  *ST乐通    1d   8.67   8.67   8.67   8.67         0.0  0.000000e+00       None          None
2432  stock_sz_002319_2020-10-20  stock_sz_002319 2020-10-20  joinquant  002319  *ST乐通    1d   8.67   8.67   8.67   8.67         0.0  0.000000e+00       None          None
2433  stock_sz_002319_2020-10-21  stock_sz_002319 2020-10-21  joinquant  002319  *ST乐通    1d   8.67   8.67   8.67   8.67         0.0  0.000000e+00       None          None
2434  stock_sz_002319_2020-10-22  stock_sz_002319 2020-10-22  joinquant  002319  *ST乐通    1d   0.00   0.00   0.00   0.00         0.0  0.000000e+00       None          None
2435  stock_sz_002319_2020-10-23  stock_sz_002319 2020-10-23  joinquant  002319  *ST乐通    1d   8.67   8.67   8.67   8.67         0.0  0.000000e+00       None          None
2436  stock_sz_002319_2020-10-26  stock_sz_002319 2020-10-26  joinquant  002319  *ST乐通    1d   8.99   8.24   8.99   8.24    926300.0  7.779054e+06       None          None
2437  stock_sz_002319_2020-10-27  stock_sz_002319 2020-10-27  joinquant  002319  *ST乐通    1d   7.84   7.99   8.08   7.83   2328904.0  1.831352e+07       None          None
2438  stock_sz_002319_2020-10-28  stock_sz_002319 2020-10-28  joinquant  002319  *ST乐通    1d   8.00   8.01   8.20   7.90   1025330.0  8.285311e+06       None          None
2439  stock_sz_002319_2020-10-29  stock_sz_002319 2020-10-29  joinquant  002319  *ST乐通    1d   8.01   7.61   8.01   7.61   1304617.0  9.999635e+06       None          None
2440  stock_sz_002319_2020-10-30  stock_sz_002319 2020-10-30  joinquant  002319  *ST乐通    1d   7.54   7.23   7.62   7.23    528500.0  3.837521e+06       None          None
2441  stock_sz_002319_2020-11-02  stock_sz_002319 2020-11-02  joinquant  002319  *ST乐通    1d   6.90   6.91   7.20   6.87   1190073.0  8.321126e+06       None          None
2442  stock_sz_002319_2020-11-03  stock_sz_002319 2020-11-03  joinquant  002319  *ST乐通    1d   0.00   0.00   0.00   0.00         0.0  0.000000e+00       None          None

看了下,是从聚宽获取到了一些脏数据,存储的时候需要过滤一下,下一个版本修复。

手动修复:

from zvt.domain import *
from zvt.contract.api import get_db_session
s=get_db_session(provider='joinquant',data_schema=Stock1dKdata)
s.execute('delete from stock_1d_kdata where open=0.0')
s.commit()