1
0
mirror of https://github.com/ranaroussi/qtpylib.git synced 2022-03-04 01:54:05 +03:00
Files
qtpylib-trading/CHANGELOG.rst
2019-11-10 18:55:26 +02:00

639 lines
15 KiB
ReStructuredText

Release Notes
=============
*November 10, 2019*
1.5.84
-----------
- Hot fix by @aspenforest - fixed pip installer
*February 13, 2019*
1.5.83
-----------
- Fix numpy transpose error in stoch indicator
- Fix reports' ``KeyError`` under Python 3.7+ when not using ``--nopass``
- Fix reports' static file error with incorrect path
*January 11, 2019*
1.5.82
-----------
- Set strategy's logging level to ``INFO``
- Suppress SQL messages when using ``--dbskip``
- Added option to set trailing stop offset type by specifiying ``trail_stop_type``. Options are: **amount** and **percent** (default)
- Defaults to single threaded mode unless otherwise specified
- Requires ezIBpy >= 1.12.66
- Lots of bugfixes, and code improvements
*September 17, 2018*
1.5.81
-----------
- Added official support for Python 3.7
- Removed Google and Yahoo data retrieval methods from ``Workflow``
- Added auto-resample option to ``Workflow.prepare_data``
- Fixed backtesting issues related to sometimes not logging positions
- Lots of bugfixes, and code improvements
*September 12, 2018*
1.5.80
-----------
- Fixed issues related to multi-instrument strategies
- Misc fixed typos, bugfixes, and code improvements
*September 7, 2018*
1.5.79
-----------
- Changed license to Apache License 2.0
- Trailing stop compared against 0 instead of None
- Fix prices to comply with contract's min-tick
- Fixed IB futures margin fetcher
- Fixed CME scraping and active contract parser
- Avoid sending empty tick/bars to algo
- Updated code to work with latest version of Pandas
- Fixed compatibility with the ezIBpy v1.12.62
- Misc fixed typos, bugfixes, and code improvements
*July 26, 2018*
1.5.78
-----------
- Fixed compatibility with the ezIBpy v1.12.58
- Pushed develop branch to master
*January 12, 2018*
1.5.77
-----------
- Check for ``dbskip`` on ``Blotter.mysql_connect()`` (issue 75)
- Changed numpy.std() estimator bias (ddof = 1)
- Fixed Heiken-Ashi bar calculation
- Added Zero-lag SMA/EMA/HMA
- Misc bugfixes and code improvements
*September 25, 2017*
1.5.76
-----------
- Fixed possible miscalculation of local machine's timezone (hotfix)
1.5.75
-----------
- Futures spec is now downloading from `qtpylib.io <http://qtpylib.io/resources/futures_spec.csv>`_ (updated daily)
- Technical indicators made faster
- Added ``tools.multi_shift`` method to for shifting multiple rows in Pandas DataFrames
- Misc bugfixes and code improvements
*July 26, 2017*
1.5.74
-----------
- Checks for ``Python >= 3.4`` before running
- Requires ``ezIBpy >= 1.12.56``
- Option to group contracts togther (groundwork for spreads / combo orders)
- Allows to add contracts/symbols to ``Algo`` *after* initialization via ``Broker.add_instruments(...)``
- ``Algo`` instruments now accepts IB Contracts as instruments
- Instrument's ``get_ticks()`` and ``get_bars()`` returns ``None`` when empty and reqested in ``dict`` format
- Added ``instrument.get_price()`` and ``instrument.price`` (returns current market price)
- Added ``instrument.pnl_in_range(min, max)`` method to the instrument object
- Added ``TotalPNL`` to the portfolio object (``unrealizedPNL + realizedPNL``)
- Added option to get timezone as delta in ``tools.get_timezone()``
- Better Heikin-Ashi candle formula (fixed first candle's open calculation)
- Improved Stochastic indicator
- Added Awesome Oscillator indicator
- Added TDI (Traders Dynamic Index) indicator
- Added ``crossed()`` indicator (returns ``True`` if first series crosses above or below second series)
- Crossing indicators/methods works with numbers as 2nd series (ie ``bars['close'].crossed_above(30)``)
- Misc bugfixes, code improvements, cleanup and abstraction
*May 7, 2017*
1.5.73
-----------
- Requires ezIBpy >= 1.12.51
1.5.72
-----------
- Better PEP8 compliance
- Checking for Python version >= 3.4
- Upgraded to Twilio version >= 6.0.0
- Improved Stochastic indicator
- Added Awesome Oscillator and TDI indicators
- Misc bugfixes, code improvements, cleanup and abstraction
*March 25, 2017*
1.5.71
-----------
- Fixed ``pip`` installer
1.5.7
-----------
- Fixed minor bug in machine timeozone detection
*February 26, 2017*
1.5.6
-----------
- Added 2 Indicators: PVT (Price Volume Trend) and Z-Score
- Fixed resample bug when using local timezones (merge pull request #55)
*February 6, 2017*
1.5.59
-----------
- Requires ezIBpy >= 1.12.45 (fixes a few open issues)
*December 31, 2016*
1.5.58
-----------
- Misc bugfixes, code improvements, cleanup and abstraction
*December 30, 2016*
1.5.57
-----------
- Bugfixes and code cleanup
1.5.56
-----------
- Max # of threads is set to 1 (single-threaded) by default and can be changed using the ``max_threads`` run-time parameter in ``Blotter()`` and ``Algo()``. **It's recommended that you set this parameter based on your strategy's needs and your machine's capabilities** (strategies trading a handful of symbols probably won't need to tweak this parameter).
*December 25, 2016*
1.5.55a
-----------
- Threading-related code improvements: ``tools.resample()`` syncs last timestamp of all symbols; ``add_stale_tick()`` checks for real tick with same index before triggering ``_tick_handler()``
- ``Instrument`` object not defaults to strategy's ``bar_window`` and ``tick_window`` if no window specified (to get full bar window, use ``instrument.get_bars()`` or simply ``instrument.bars``)
*December 22, 2016*
1.5.54a
-----------
- ``add_stale_tick()`` made thread-safer
1.5.53a
-----------
- ``Blotter`` market data handlers now using threaded, non-blocking architecture.
- Misc bugfixes, code improvements, cleanup and abstraction
*December 21, 2016*
1.5.52a
-----------
- All market data events are now asynchronous / non-blocking
- Misc bugfixes, code improvements, cleanup and abstraction
*December 20, 2016*
1.5.51a
-----------
- Minor bugfixes, code improvements, cleanup and abstraction
1.5.50a
-----------
- Minor bugfixes, code improvements, cleanup and abstraction
*December 19, 2016*
1.5.49a
-----------
- Fixed bugs that may occur on multi-instrument strategies
- Misc code improvements, cleanup and abstraction
*December 18, 2016*
1.5.48a
-----------
- Bugfixes
1.5.47a
-----------
- Introduced an **all new** ``Workflow`` module for downloading, cleaning, preparing and uploading market data to the database
- Backtesting can now be done using CSV files (converted into a QTPyLib-compatible format using the ``Workflow`` module)
- Misc bugfixes and code improvements, cleanup and abstraction
- Requires ezIBpy >= 1.12.44
*December 12, 2016*
1.5.46a
--------
- Bugfixes
*December 11, 2016*
1.5.45a
--------
- ``Blotter`` automatically backfills missing historical data for back-testing (based on the ``start`` and ``end`` parameters) and live-trading (based on the ``preload`` parameter)
- Better local timezone detection
- Requires ezIBpy >= 1.12.42
- Misc bugfixes and code improvements/cleanup
**Note regarding backfilling:**
Backfilling is currently supported for strategies with 1-minute or higher resolution.
Historical data availability is subject to `Interactive Brokers Historical Data Limitation <https://www.interactivebrokers.com/en/software/api/apiguide/tables/historical_data_limitations.htm>`_.
*December 7, 2016*
1.5.44a
--------
- Changed to lowercase ``utf-8`` encoding in file's header
*December 6, 2016*
1.5.43a
--------
- Fixed bug introduced in version ``1.5.42a``
1.5.42a
--------
- Forcing expiry in ``symbols.csv`` to be stored as ``int``
1.5.41a
--------
- Fixed bug in ``Blotter.log2db()`` (closing issue #36)
- Fixed multi-instrument strategy initialization (closing issues #37 + #38)
- Misc bugfixes and code improvements/cleanup
*December 4, 2016*
1.5.40a
--------
- Fixed bug that caused ``Blotter`` to store data in MySQL before timezone was set (possibly resulting in out-of-sequence time-series for historical data) by ignoring the captured first tick.
- ``Blotter`` now removes out-of-sequence ticks/bars from historical data (should fix ``issue #31``)
- Misc bugfixes and code improvements/cleanup
*December 1, 2016*
1.5.39a
--------
- Portfolio playing nice with multi-symbol portfolios
- Cleanup portfolio data before saving
- Implemented shorter delay and more elegant code in ``Blotter.drip()`` (used by the backtester)
- ``force_res`` is now always on for time-based bars
- Renamed ``Blotter.listen()`` to ``Blotter.stream()``
- Misc bugfixes and code improvements
*November 29, 2016*
1.5.38a
--------
- ``load_blotter_args()`` moved to ``Broker`` class file to be used by clients
- ``Broker.get_portfolio()`` now returns empty portfolio object as default when symbol is specified
- ``Reports`` uses unified logger and arg parsing
- Misc bugfixes and code improvements
- Requires ezIBpy >= 1.12.41
*November 22, 2016*
1.5.37a
--------
- Fixed ``Broker`` logging initilizer
- Requires ezIBpy >= 1.12.39 (solves misc issues with expired contracts)
1.5.36a
--------
- Blotter saves expiration dates for Futures and Options based on ezIBpy's ``contractDetails()`` data
1.5.35a
--------
- Misc bugfixes and code improvements
- Requires ezIBpy >= 1.12.38
*November 21, 2016*
1.5.34a
--------
- Fix parsing of contract expiration
*November 16, 2016*
1.5.33a
--------
- Fixed command line agrument parsing issues
- All params in ``Algo()`` and ``Blotter()`` are now explicit and are overridden in runtime using command line arguments
- Make sure expiry values aren't decimals
- Requires ezIBpy >= 1.12.36
- Renamed ``force_resolution`` to ``force_res`` in ``Algo()``
- Using unified logging from latest ``ezIBpy`` (use ``self.log.LEVEL(...)`` instead of ``loggig.LEVEL(...)`` in your strategies)
- Misc bugfixes and code improvements
*November 15, 2016*
1.5.32a
--------
- Set ``ticksize`` to ``0`` for stale ticks (for when using ``"force_resolution" = True``)
*November 13, 2016*
1.5.31a
--------
- Requires ezIBpy >= 1.12.32
- Added support for ``tif`` (time in force) parameter in order creation. Options are: ``DAY`` (default), ``GTC``, ``IOC`` and ``GTD``.
*November 12, 2016*
1.5.30a
--------
- Requires ezIBpy >= 1.12.31
- Added ``instrument.get_contract_details()`` and ``instrument.tickerId()`` methods (see API reference section in docs for more info)
- ``futures.get_contract_ticksize()`` marked as deprecated (``instrument.get_ticksize()`` or ``instrument.ticksize`` instead)
- Ignoring ``ticksize`` parameter in ``order()`` (ezIBpy's auto detects min. tick size based on contract spec.)
1.5.29a
--------
- Interval-based bars are now tread-safe and working correctly when ``"force_resolution" = True``
*November 11, 2016*
1.5.28a
--------
- Fixed a bug that prevented backtesting second-level resolution strategies
1.5.27a
--------
- Introduced ``force_resolution`` parameter in ``Algo`` to force a new bar on every ``resolution`` even if no new ticks received (default is False)
1.5.26a
--------
- Fixed parsing of flag params (related to issue #17)
*November 10, 2016*
1.5.25a
--------
- Fixed bar events in backtesting mode to fire every 250ms instead of 2.5s (closing issue #21)
- Fixed parsing of ``backtest`` param in ``Algo`` (closes issue #17)
1.5.24a
--------
- Fixed issue that caused errors when bar resolution was set to seconds (closing issue #18)
1.5.23a
--------
- Requires ezIBpy >= 1.12.29
- ``Blotter`` uses refactored logging in ezIBPy 1.12.29
*November 9, 2016*
1.5.22a
--------
- ``Blotter`` and ``Algo`` now accepts all command-line arguments as ``__init()__`` parameters (closing issue #17)
*November 8, 2016*
1.5.21a
--------
- Blotter logs warnings and errors sent by TWS/GW
1.5.2a
--------
- Upped version number due to malformed submission to PyPi (1.5.1)
1.5.1a
--------
- Wait 5ms before invoking ``on_fill()`` to allow portfolio to sync from TWS/GW
- Renamed Instrument object's ``margin_max_contarcts()`` to ``max_contracts_allowed()``
- Added ``get_bar()`` and ``get_tick()`` methods to Instrument object (as well as ``tick`` and ``bar`` properties)
- Misc bugfixes and code improvements
*November 6, 2016*
1.5.0a
--------
- Added ``move_stoploss()`` to instrument object. This method auto-discover **orderId** and **quantity** and invokes ``self.modify_order(...)``
- Fixed bug that prevented modification of stop orders using ``modify_order(...)``
- Fixed rederence to renamed and modified method (``active_order_id`` => ``active_order``)
1.4.99a
-------
- Using the new ``IbPy2``'s PyPi installer; no separate install of ``IbPy`` is required
- Using latest ``ezIBpy`` (now also using ``IbPy2``)
*November 2, 2016*
1.4.98a
-------
- Added support for Orderbook-based strategies via ``on_orderbook(...)`` (requires the ``--orderbook`` flag to be added to Blotter)
- Added bar(s), tick(s), quote and orderbook properties to the ``Instrument`` object
*October 25, 2016*
1.4.97a
-------
- Made changes to ``.travis.yml`` to help Travis-CI with its Pandas build issues
1.4.96a
-------
- Creating synthetic ticks for instruments that DOESN'T receive ``RTVOLUME`` events (issue #9)
- ``futures.make_tuple(...)`` auto selects most active contract when no expiry is provided (CME Group Futures only)
- Misc bugfixes and code improvements
*October 24, 2016*
1.4.95a
-------
- Removed debugging code
1.4.94a
-------
- Fixed bug caused by ``self.record`` (closing issue #12)
- Misc bugfixes and code improvements
*October 23, 2016*
1.4.93a
-------
- Bugfix: Updated backtesting mode to use correct variable names (closing issue #10)
*October 21, 2016*
1.4.92a
-------
- Full support for Options trading (greeks available upon quotes, ticks and bars)
- Improved asset class and symbol group parsing
- QTPyLib's version is now stored in MySQL for smooter upgrades
- ``pip`` Installer requires ezIBpy >= 1.12.23
- Misc bugfixes and code improvements
*October 18, 2016*
1.4.91a
-------
- Misc bugfixes
1.4.9a
-------
- Continuous Futures contract construction is now optional (defaults to ``True``)
- Added ``futures.make_tuple(...)`` for automatic tuple construction for Futures
*October 14, 2016*
1.4.8a
-------
- Using a **synthetic tick** for CASH contracts (cash markets do not get RTVOLUME)
*September 30, 2016*
1.4.7a
-------
- Fixed issue that prevented from blotter to assign ``asset_class`` to stocks
*September 29, 2016*
1.4.6a
-------
- Rounding numbers in SMS message template
*September 28, 2016*
1.4.5a
-------
- Fixed sms formatting by sending SMS before logging trade
*September 27, 2016*
1.4.4a
-------
- Added open trades + unrealized PNL to ``instrument.trades`` and ``instrument.get_trades()``
- Switched DataFrame length check to ``len(df.index)>0`` (faster than ``df.empty`` or ``len(df)>0`` in my checks)
- Fixed last price in recent orders
*September 26, 2016*
1.4.3a
-------
- Introduced ``instrument.trades`` / ``instrument.get_trades()`` as quick access to the instuments trade log
1.4.2a
-------
- Updated pip installer to use ezIBpy >= 1.12.19
*September 22, 2016*
1.4.1a
-------
- Added support for working with Volume based bars (by using ``nV`` in the ``resolution`` parameter)
*September 20, 2016*
1.4.0a
-------
- Fixed setup import to prevent built error
1.3.99a
-------
- Added option to send limit stop orders
1.3.98a
-------
- ``tools.round_to_fraction()`` now auto detects decimals based on resoution rounder
- Fixed Eurodollar's base url in ``futures.py``
- Fetching correct ticksize for futures (including those that aren't using decimal ticks, eg 1/32 for bonds)
*September 19, 2016*
1.3.97a
-------
- Strategies now have access to IB Account info via ``self.account``
- Added support for ``Fill-or-Kill`` and ``Iceberg`` orders (see API docs)
- Automatic re-reconnection to TWS/GW when connection lost