qtpylib icon indicating copy to clipboard operation
qtpylib copied to clipboard

Unable to run any strategies in tick resolution

Open jshridha opened this issue 6 years ago • 3 comments

I am unable to get any algos to run for longer than a few seconds. It crashes on df.append(data, sort=True)

I've tried downgrading pandas to many versions down to 0.19.0 and have not been able to resolve the issue.

Here is the examble algo:

class TestAlgo(Algo):
    pass

if __name__ == '__main__':
    strategy = TestAlgo(
        instruments=["AAPL", ],
        resolution="1K",
        timezone="US/Eastern",
        ibport=7497,
    )

    strategy.run()

And the traceback:

Exception in thread Thread-27:
Traceback (most recent call last):
  File "C:\Python36\Lib\threading.py", line 916, in _bootstrap_inner
    self.run()
  File "C:\Python36\Lib\threading.py", line 864, in run
    self._target(*self._args, **self._kwargs)
  File "C:\Users\jay.BDEVILS\Envs\exchangedata-ZDNy_R_-\lib\site-packages\qtpylib\asynctools.py", line 95, in _run_via_pool
    return callee(*args, **kwargs)
  File "C:\Users\jay.BDEVILS\Envs\exchangedata-ZDNy_R_-\lib\site-packages\qtpylib\algo.py", line 755, in _tick_handler
    self.ticks = self._update_window(self.ticks, tick)
  File "C:\Users\jay.BDEVILS\Envs\exchangedata-ZDNy_R_-\lib\site-packages\qtpylib\algo.py", line 869, in _update_window
    df = df.append(data, sort=True)
  File "C:\Users\jay.BDEVILS\Envs\exchangedata-ZDNy_R_-\lib\site-packages\pandas\core\frame.py", line 6201, in append
    sort=sort)
  File "C:\Users\jay.BDEVILS\Envs\exchangedata-ZDNy_R_-\lib\site-packages\pandas\core\reshape\concat.py", line 226, in concat
    return op.get_result()
  File "C:\Users\jay.BDEVILS\Envs\exchangedata-ZDNy_R_-\lib\site-packages\pandas\core\reshape\concat.py", line 423, in get_result
    copy=self.copy)
  File "C:\Users\jay.BDEVILS\Envs\exchangedata-ZDNy_R_-\lib\site-packages\pandas\core\internals.py", line 5421, in concatenate_block_managers
    concatenate_join_units(join_units, concat_axis, copy=copy),
  File "C:\Users\jay.BDEVILS\Envs\exchangedata-ZDNy_R_-\lib\site-packages\pandas\core\internals.py", line 5565, in concatenate_join_units
    for ju in join_units]
  File "C:\Users\jay.BDEVILS\Envs\exchangedata-ZDNy_R_-\lib\site-packages\pandas\core\internals.py", line 5565, in <listcomp>
    for ju in join_units]
  File "C:\Users\jay.BDEVILS\Envs\exchangedata-ZDNy_R_-\lib\site-packages\pandas\core\internals.py", line 5851, in get_reindexed_values
    if not self.block._can_consolidate:
AttributeError: 'NoneType' object has no attribute '_can_consolidate'

jshridha avatar Jan 08 '19 20:01 jshridha

Hi @jshridha, can you try a larger tick resolution?

"1K" refers to 1 tick. Perhaps you can try 1000 ticks? This would be:

    strategy = TestAlgo(
        instruments=["AAPL", ],
        resolution="1000K",
        timezone="US/Eastern",
        ibport=7497,
    )

lionelyoung avatar Jan 21 '19 15:01 lionelyoung

Increasing to 1000K or 2000K still results in the same issue.

jshridha avatar Feb 06 '19 19:02 jshridha

I got the same issue too:


Traceback (most recent call last):
  File "strategy_tick_demo.py", line 102, in <module>
    strategy.run()
  File "c:\users\summit\projects\summit\summitquant\env\src\qtpylib\qtpylib\algo.py", line 412, in run
    book_handler=self._book_handler
  File "c:\users\summit\projects\summit\summitquant\env\src\qtpylib\qtpylib\blotter.py", line 1084, in stream
    tick_handler(df)
  File "c:\users\summit\projects\summit\summitquant\env\src\qtpylib\qtpylib\asynctools.py", line 100, in async_method
    return callee(*args, **kwargs)
  File "c:\users\summit\projects\summit\summitquant\env\src\qtpylib\qtpylib\algo.py", line 758, in _tick_handler
    self.ticks = self._update_window(self.ticks, tick)
  File "c:\users\summit\projects\summit\summitquant\env\src\qtpylib\qtpylib\algo.py", line 872, in _update_window
    df = df.append(data, sort=True)
  File "C:\Users\summit\Projects\Summit\summitquant\env\lib\site-packages\pandas\core\frame.py", line 6211, in append
    sort=sort)
  File "C:\Users\summit\Projects\Summit\summitquant\env\lib\site-packages\pandas\core\reshape\concat.py", line 226, in concat
    return op.get_result()
  File "C:\Users\summit\Projects\Summit\summitquant\env\lib\site-packages\pandas\core\reshape\concat.py", line 423, in get_result
    copy=self.copy)
  File "C:\Users\summit\Projects\Summit\summitquant\env\lib\site-packages\pandas\core\internals.py", line 5421, in concatenate_block_managers
    concatenate_join_units(join_units, concat_axis, copy=copy),
  File "C:\Users\summit\Projects\Summit\summitquant\env\lib\site-packages\pandas\core\internals.py", line 5565, in concatenate_join_units
    for ju in join_units]
  File "C:\Users\summit\Projects\Summit\summitquant\env\lib\site-packages\pandas\core\internals.py", line 5565, in <listcomp>
    for ju in join_units]
  File "C:\Users\summit\Projects\Summit\summitquant\env\lib\site-packages\pandas\core\internals.py", line 5851, in get_reindexed_values
    if not self.block._can_consolidate:
AttributeError: 'NoneType' object has no attribute '_can_consolidate'

lionelyoung avatar Apr 03 '19 14:04 lionelyoung