Here you can see that changes were made at each release.
- [NEW FEATURE] Introduces a plugin-based system for exchange drivers.
- [BREAKING] Requires a
plugins.pypresent in the project.
- [CHANGE] Adjustments in the candle store as was required by the live trade mode.
- Minor bug fixes
- [NEW FEATURE] Added new utility functions that are used in statistical analysis of the prices such as for writing statistical arbitrage strategies: z_score, are_cointegrated, prices_to_returns
- [IMPROVEMENT] Refactored how we execute routes in the live trade mode so the order of execution is the same as defined in the
routes.pyfile. This makes it possible to write strategies that depend on it such as statistical arbitrage.
- [IMPROVEMENT] Added support for M1 macs.
- [CHANGE] The
numbapackage has become an optional package which was a requirement for supporting M1 macs. Now
numbawon't be installed by default. This means, if you are an M1 user, you don’t have to install
numbaand you can install Jesse as before and it will work just fine. If you are NOT an M1 user, then you can still take advantage of
numbaby installing it through running
pip install numba.
- [IMPROVEMENT] Minor bug fixes
- [NEW FEATURE] Added
self.logmethod for easier logging from withing the strategy file.
- [NEW FEATURE] Added new properties to the Strategy API:
- [NEW FEATURE] Implemented the liquidation mechanism for the
isolatedmode in backtests, and both
crossin live mode.
- [NEW FEATURE] New indicators: Jurik Moving Average, Chande Kroll Stop, Choppiness Index, Pascals Weighted Moving Average, Symmetric Weighted Moving Average, Bandpass filter, Inverse Fisher Transform applied on RSI, KDJ
- [NEW FEATURE]
zscoreindicators now let you choose the
- [Improvement] Packages updated - Update matplotlib from 3.4.1 to 3.4.2, Update numpy from 1.20.2 to 1.20.3, Update ta-lib from 0.4.19 to 0.4.20, Update websocket-client from 0.59.0 to 1.0.1, Update click from 7.1.2 to 8.0.1
- [Improvement] Available
matypesused in some indicators extended.
- [Improvement] Improved handling of none string values in the logger
- [BREAKING CHANGE] For consistency
- [Improvement] Updated Docker images. By TheCrazyLex (opens new window).
- [Improvement] Packages updated - scipy from
1.6.3, arrow from
1.1.0, quantstats from
0.0.32, websocket-client from
0.59.0, quantstats from
0.0.34, pytest from
- [Improvement] Rounding for live or paper now uses the required precision from the exchange. Could have caused exceptions before for coins with exotic precision requirement.
size_to_qtynow round the qty down. As in some conditions the qty would otherwise exceed the
self.capitalleading to the InsufficientMargin exception.
risk_to_qtynow also accepts
- [Improvement] The full report (quantstats) now uses 365 trading days for the metrics which makes its calculations crypto friendly. By sbkhosh (opens new window) and mblum (opens new window).
- [Improvement] The ExampleStrategy imports ta and utils by default now.
- [FIX] Error in
ta.minmaxsolved. Namedtuple changed:
min -> is_minand
max -> is_max
- [FIX] Setting configs via environment variables now also works when spaces are involved. By julesGoullee (opens new window).
- [NEW FEATURE] New indicator: Polarized Fractal Efficiency (PFE)
- [NEW FEATURE] Added HTML reports with a more complete set of metrics and charts enabled by the
--full-reportsflag in your backtests. By nicolay-zlobin (opens new window).
- [NEW FEATURE] New indicators: Elder Ray Index (ERI), ttm_trend, kurtosis, mean_ad, median_ad, skewness
- [Improvement] Added a check for the right symbol format (with dash) for the import candle mode - preventing possible confusion and resulting errors.
- [Improvement] A @cached property has been added to improve performance and avoid unnecessary repeated calculations. It's applied where sensible in the Strategy class and available via import to be used on indicators inside a users Strategy as well. Some strategies might see a huge boost because of this.
- [Improvement] All indicators now use the helper functions same_length and slice_candles.
self.metricsis now only calculated if a trade happened leading to a performance boost.
- [Improvement] The old way of working with strings in python (format) has been replaced with much faster f-strings leading to a performance boost.
- [FIX] Incorrect InsufficientMargin exceptions that were caused by reduce_only orders.
- [FIX] An error with the json export of the backtest that occurred is now fixed.
- [FIX] Using futures mode you had to add all the used assets to the config.py file - although that should have only been needed for spot mode. This is not necessary anymore. Additionally the spot mode now gives clearer error if assets are missing in the config.
- Multiple preparations for the live trade plugin. Other modes are unaffected by them.
- New indicators: Fibonacci's Weighted Moving Average (FWMA), Sine Weighted Moving Average (SINWMA), Chande Forcast Oscillator (CFO), Kaufman Efficency indicator, High Pass Filter 2-Pole, Supersmoother 3-Pole, Kaufmanstop, Safezonestop, Devstop, RSMK, STC, RVI, VWAP,
- New timeframes:
- [Improvement] The indicators now use the configured warmup_candles
- [FIX] Spot should work no again thanks to a fix by discohead (opens new window)
- [FIX] Sometimes users faced a InsufficentMargin error - this was caused by a small bug in the handling leverage of market orders.
- [Improvement] Durations are now displayed without decimals. By maebert (opens new window)
- [Improvement] The crossed utility should be a little faster now, as we only use numpy there now.
metricsproperty to the Strategy API.
available_marginproperty to the Strategy API.
leverageproperty to the Strategy API.
- Updated the behavior of
capital. It now returns wallet balance.
- Added support for leverage (except for a liquidation mechanism)
- [BREAKING CHANGE] Change config values to work with the leverage support. Now instead of
marginyou need to enter
total_costto Position model.
roi(return on investment) property to the Position model. It is calculated while considering the leverage, the same way it is done on Binance Futures.
- Added Market Change metric.
tradesproperty to the Strategy API for getting previous executed trades by nicolay-zlobin (opens new window).
- Updated the docker image. Updated the docs to work with docker-compose. By julesGoullee (opens new window).
- Exported trades as json now include
considering_timeframesby julesGoullee (opens new window).
import-canldescommand to avoid confirmation on candle duplicates by Gabri (opens new window).
- [BREAKING CHANGE] Dropped support for Python
- [BREAKING CHANGE] Changed the syntax for symbols to use a
-in the middle to separate the base and quote assets. Instead of
BTCUSDyou now need to enter
- Added elitism to genetic/evolution algorithm by fjelic (opens new window)
- [BREAKING CHANGE] Pass the
orderobject as a parameter for event methods such as
- Fixed a bug for adding to open positions using
reduced_countproperties to the Strategy API.
- [BREAKING CHANGE] Removed
- Added the
after()method the to Strategy API
- [BREAKING CHANGE] Renamed
- Added a route validation
- Improved performance of loading candles for cases with multiple routes
routesproperty to the Strategy API
- Improvements in exception messages
has_active_entry_ordersproperty to the Strategy API
- Improved plotting of orders on the generated charts for backtest by (macd2)[https://github.com/macd2]
- Fixed handling open trade at the end of backtest
- Added support for Python 3.9
- Fixed calculations of formulas depending on Quantopian's empyrical package (like annual return, Sharpe Ratio, etc) using our own fork (opens new window) of it.
- Changed default value of
typefor all exchanges in
- Added damiani_volatmeter indicator
- Changed the color of printed logs in
--debugmode to white for more readability
- Fixed a bug where
should_cancel()was being executed in strategies with multiple entry orders
- Made caching configurable. You can now change the settings for your cache driver or completely disable it
- Fixed a bug where position stayed open with a close-to-zero size caused by rounding issues in Python
- Fixed for a bug in detecting executed orders with candles with gap
- Added support for reduce-only orders (take-profit and stop-loss orders)
- Added VossFilter indicator
- Added TrendFlex indicator
- Added ReFlex indicator
- Added High Pass Filter indicator
- Added Roofing indicator
- Added DV indicator
- Added support for balance handling for trading on spot markets
- Improved calculation and logging of fees (when
--debugflag is enabled)
- Improved calculation of daily balance change. It is now more accurate.
- Improved format in displaying of currencies. Instead of
10000, it now displays
- Made number of warmup candles configurable
- Fixed an issue with log folder being absent in newly created projects by jparklev (opens new window)
- Improved performance of the chande indicator
- Added the
--cpuoption for the optimize mode to specify the number of cpu cores to use when running the optimize mode.
- Improved monitoring dashboard of the optimization mode.
--dnaflag in "jesse routes" command
- Improved error detection in the optimize mode
- Fixed when few of DNA trials caused optimize session to fail entirely
- Optimize mode's traceback is now printed to a log file
- Improved optimize mode's monitoring dashboard
- Fixed an issue with newly created projects missing the log directory
.jsonfiles to gitignore of newly created projects
- Implemented the initial version of the optimize mode which uses the Genetic Algorithm to find the best parameters for your strategy.
- Suppression of the "FutureWarning: pandas.util.testing is deprecated" caused by empyrical
- Added KST indicator
- Added Coppock curve indicator
- Added vortex indicator
- Added EFI indicator
- Added Chandelier Exit indicator
- Update of scipy and matplotlib
- Fixed issue related to NegativeBalance
- Some fixes and additions related to pytest
- Refactored directories that generated output files are stored at (csv, json, tradingview, charts).
jsonlogs files are disabled by default. You now HAVE TO use the
jsonflag to enable it.
- Added CSV output for completed trades by h0ke (opens new window).
- Added exception for when trying to spend more than available exchange balance by fengkiej (opens new window)
- Added fee_rate property to Strategy API
fee_rateas optional parameter for risk_to_qty and size_to_qty utilities
- Added readable error for when strategy structure is incorrect
- numpy_candles_to_dataframe (opens new window) now uses Pandas datetime format for candle timestamps by lightyear15 (opens new window)
- Improved exception text for unsupported exchanges
- Added the __init__ method to the strategy API
- Added the terminate() method to the strategy API
- Added validation for
- Added additional parameters to srsi indicator by Gabri (opens new window)
- Fix issue #34 (opens new window)
- Made filter misusage exception more readable
- Added new ratios in metrics: Calmar, Sortino, Omega
- Improve TradingView output by Gabri (opens new window)
- Added supersmoother indicator
- Added gauss indicator
- Added itrend indicator
- Added faulty indicator
- Added beta indicator
- Added LINEARREG_ANGLE - Linear Regression Angle indicator
- Added LINEARREG - Linear Regression indicator
- Added AVGPRICE - Average Price indicator
- Added VWMACD - Volume Weighted Moving Average Convergence/Divergence indicator
- Added AD - Chaikin A/D Line indicator
- Added keltner indicator by jeremytregunna (opens new window)
- Fixed an issue (opens new window) with filters.
- Fixed an issue (opens new window) with CWD
- Added new indicators: Hull Moving Average, Zero-Lag Exponential Moving Average, Donchian Channels, Empirical Mode Decomposition, RSI Laguerre Filter, True strength index (TSI), Fractal Adaptive Moving Average (FRAMA), Awesome Oscillator, Alligator, SMMA (Smoothed Moving Average)