Freqtrade is a free and open source crypto trading bot written in Python

Overview

Freqtrade

Freqtrade CI Coverage Status Documentation Maintainability

Freqtrade is a free and open source crypto trading bot written in Python. It is designed to support all major exchanges and be controlled via Telegram. It contains backtesting, plotting and money management tools as well as strategy optimization by machine learning.

freqtrade

Disclaimer

This software is for educational purposes only. Do not risk money which you are afraid to lose. USE THE SOFTWARE AT YOUR OWN RISK. THE AUTHORS AND ALL AFFILIATES ASSUME NO RESPONSIBILITY FOR YOUR TRADING RESULTS.

Always start by running a trading bot in Dry-run and do not engage money before you understand how it works and what profit/loss you should expect.

We strongly recommend you to have coding and Python knowledge. Do not hesitate to read the source code and understand the mechanism of this bot.

Exchange marketplaces supported

Documentation

We invite you to read the bot documentation to ensure you understand how the bot is working.

Please find the complete documentation on our website.

Features

  • Based on Python 3.7+: For botting on any operating system - Windows, macOS and Linux.
  • Persistence: Persistence is achieved through sqlite.
  • Dry-run: Run the bot without paying money.
  • Backtesting: Run a simulation of your buy/sell strategy.
  • Strategy Optimization by machine learning: Use machine learning to optimize your buy/sell strategy parameters with real exchange data.
  • Edge position sizing Calculate your win rate, risk reward ratio, the best stoploss and adjust your position size before taking a position for each specific market. Learn more.
  • Whitelist crypto-currencies: Select which crypto-currency you want to trade or use dynamic whitelists.
  • Blacklist crypto-currencies: Select which crypto-currency you want to avoid.
  • Manageable via Telegram: Manage the bot with Telegram.
  • Display profit/loss in fiat: Display your profit/loss in 33 fiat.
  • Daily summary of profit/loss: Provide a daily summary of your profit/loss.
  • Performance status report: Provide a performance status of your current trades.

Quick start

Freqtrade provides a Linux/macOS script to install all dependencies and help you to configure the bot.

git clone -b develop https://github.com/freqtrade/freqtrade.git 
cd freqtrade
./setup.sh --install

For any other type of installation please refer to Installation doc.

Basic Usage

Bot commands

usage: freqtrade [-h] [-V]
                 {trade,create-userdir,new-config,new-hyperopt,new-strategy,download-data,convert-data,convert-trade-data,backtesting,edge,hyperopt,hyperopt-list,hyperopt-show,list-exchanges,list-hyperopts,list-markets,list-pairs,list-strategies,list-timeframes,show-trades,test-pairlist,plot-dataframe,plot-profit}
                 ...

Free, open source crypto trading bot

positional arguments:
  {trade,create-userdir,new-config,new-hyperopt,new-strategy,download-data,convert-data,convert-trade-data,backtesting,edge,hyperopt,hyperopt-list,hyperopt-show,list-exchanges,list-hyperopts,list-markets,list-pairs,list-strategies,list-timeframes,show-trades,test-pairlist,plot-dataframe,plot-profit}
    trade               Trade module.
    create-userdir      Create user-data directory.
    new-config          Create new config
    new-hyperopt        Create new hyperopt
    new-strategy        Create new strategy
    download-data       Download backtesting data.
    convert-data        Convert candle (OHLCV) data from one format to
                        another.
    convert-trade-data  Convert trade data from one format to another.
    backtesting         Backtesting module.
    edge                Edge module.
    hyperopt            Hyperopt module.
    hyperopt-list       List Hyperopt results
    hyperopt-show       Show details of Hyperopt results
    list-exchanges      Print available exchanges.
    list-hyperopts      Print available hyperopt classes.
    list-markets        Print markets on exchange.
    list-pairs          Print pairs on exchange.
    list-strategies     Print available strategies.
    list-timeframes     Print available timeframes for the exchange.
    show-trades         Show trades.
    test-pairlist       Test your pairlist configuration.
    plot-dataframe      Plot candles with indicators.
    plot-profit         Generate plot showing profits.

optional arguments:
  -h, --help            show this help message and exit
  -V, --version         show program's version number and exit

Telegram RPC commands

Telegram is not mandatory. However, this is a great way to control your bot. More details and the full command list on our documentation

  • /start: Starts the trader.
  • /stop: Stops the trader.
  • /stopbuy: Stop entering new trades.
  • /status |[table]: Lists all or specific open trades.
  • /profit: Lists cumulative profit from all finished trades
  • /forcesell |all: Instantly sells the given trade (Ignoring minimum_roi).
  • /performance: Show performance of each finished trade grouped by pair
  • /balance: Show account balance per currency.
  • /daily : Shows profit or loss per day, over the last n days.
  • /help: Show help message.
  • /version: Show version.

Development branches

The project is currently setup in two main branches:

  • develop - This branch has often new features, but might also contain breaking changes. We try hard to keep this branch as stable as possible.
  • stable - This branch contains the latest stable release. This branch is generally well tested.
  • feat/* - These are feature branches, which are being worked on heavily. Please don't use these unless you want to test a specific feature.

Support

Help / Discord / Slack

For any questions not covered by the documentation or for further information about the bot, or to simply engage with like-minded individuals, we encourage you to join our slack channel.

Please check out our discord server.

You can also join our Slack channel.

Bugs / Issues

If you discover a bug in the bot, please search our issue tracker first. If it hasn't been reported, please create a new issue and ensure you follow the template guide so that our team can assist you as quickly as possible.

Feature Requests

Have you a great idea to improve the bot you want to share? Please, first search if this feature was not already discussed. If it hasn't been requested, please create a new request and ensure you follow the template guide so that it does not get lost in the bug reports.

Pull Requests

Feel like our bot is missing a feature? We welcome your pull requests!

Please read our Contributing document to understand the requirements before sending your pull-requests.

Coding is not a necessity to contribute - maybe start with improving our documentation? Issues labeled good first issue can be good first contributions, and will help get you familiar with the codebase.

Note before starting any major new feature work, please open an issue describing what you are planning to do or talk to us on discord or Slack. This will ensure that interested parties can give valuable feedback on the feature, and let others know that you are working on it.

Important: Always create your PR against the develop branch, not stable.

Requirements

Up-to-date clock

The clock must be accurate, synchronized to a NTP server very frequently to avoid problems with communication to the exchanges.

Min hardware required

To run this bot we recommend you a cloud instance with a minimum of:

  • Minimal (advised) system requirements: 2GB RAM, 1GB disk space, 2vCPU

Software requirements

Comments
  • Bot couldn't sell because of insufficient fund

    Bot couldn't sell because of insufficient fund

    I was synced to HEAD yesterday (but I had the same issue some time ago).

    I had an order that the bot couldn't sell because of insufficient fund. I think it's because either the bot did wrong calculation of the amount or the exchange is doing some funny stuff.

    Logs when the order was fulfilled:

    2018-11-29 03:05:08,831 - freqtrade.freqtradebot - INFO - Found open order for Trade(id=xx, pair=BCHSV/USDT, amount=xxx, open_rate=99.10000000, open_since=just now)
    2018-11-29 03:05:09,740 - freqtrade.freqtradebot - WARNING - amount xxx does not match amount xxx
    2018-11-29 03:05:09,740 - freqtrade.freqtradebot - WARNING - could not update trade amount: Half bought? Amounts don't match
    2018-11-29 03:05:09,740 - freqtrade.persistence - INFO - Updating trade (id=xx) ...
    2018-11-29 03:05:09,741 - freqtrade.persistence - INFO - LIMIT_BUY has been fulfilled for Trade(id=xx, pair=BCHSV/USDT, amount=xxx, open_rate=99.10000000, open_since=just now).
    

    Logs when the bot was trying to sell:

    2018-11-29 03:09:29,427 - freqtrade.freqtradebot - INFO - checking sell
    2018-11-29 03:09:29,910 - freqtrade.freqtradebot - WARNING - Unable to sell trade: Insufficient funds to create limit sell order on market BCHSV/USDT.Tried to sell amount xx at rate 100.02 (total xx).Message: binance {"code":-2010,"msg":"Account has insufficient balance for requested action."}
    

    The code that is throwing the error, any reason that instead of using the latest amount getting from exchange, we still choose to use the one saved when buying? https://github.com/freqtrade/freqtrade/blob/200484ab8ba85308e6e759bbec613dcba0e83d37/freqtrade/freqtradebot.py#L603

    Bug CCXT 
    opened by pan-long 64
  • Edge Positioning

    Edge Positioning

    Summary

    Currently FT analyzes pairs in whitelist randomly (or by order in config.json) and takes a position as soon as it finds a buy signal with a fixed stake_amount. a better approach would be:

    • Calculating the chance of winning for each pair and sorting whitelist accordingly.
    • Adjusting the position size according to risk/reward.

    This PR addresses the above issues by adding a package called "Edge". Edge will run a process every X minutes (default 30 min) using the mainloop to go through all pairs in order to:

    • Calculate WinRate and Expected Risk Reward ratio for a range of stoplosses.
    • Finding the best WinRate/Expected Risk Reward ratio for a pair. finding the best stoploss value.
    • Forcing the stoploss value (calculated above) into the strategy.

    The process uses the backtesting download script to fetch historical data. and cache a matrix of [pair, stoploss, win_rate, expected_risk_reward, required_risk_reward]. an example of the cached matrix:

    | pair | stoploss | winrate | risk_reward_ratio | required_risk_reward | |-----|----------|---------|------------------|---------------------- | | NEO/BTC | -0.04 |0.666667 | 3.071181 | 0.500000 | |STEEM/BTC | -0.02 | 0.500000 | 2.399500 | 1.000000 | |DASH/BTC | -0.01 | 0.625000 | 1.181620 | 0.600000 | | BNB/BTC | -0.08 | 0.625000 | 1.128478 | 0.600000| | CMT/BTC | -0.05 | 0.583333 | 0.952720 | 0.714286| | XEM/BTC | -0.03 | 0.500000 | 1.194416 | 1.000000 |

    WinRate is the number of winning trades divided by number of trades (e.x. if 4 trades out of 10 are profitable then the winrate is 40%).

    Risk Reward Ratio is the ratio between your loss and your take profit. as an example lets say you take a position with an entry price of 100$. you put your stoploss at 90$ (i.e. 10%) and your take profit (sell point) is 120$. your risk reward would be 2 (your profit would be two times your loss).

    While going through historical data we are only interested in finding two and only two things:

    • Amount/Number of losses if the stoploss hit.
    • Amount/Number of profits if sell signal is triggered.

    TODO list before merging the PR:

    • [X] Fixing .travis script which breaks tests currently.
    • [X] Fixing already broken tests.
    • [X] Finding an alternative for py_find_1st, otherwise try to make its installation clean.
    • [X] Finding a proper way to sort the matrix according to WinRate and RRR.
    • [X] Make backslap function more readable
    • [X] Writing tests
    • [X] Writing documentation

    Will replace #1147 and #1114

    Enhancement 
    opened by mishaker 58
  • Avoid look-ahead in backtesting

    Avoid look-ahead in backtesting

    Use buy/sell signal from previous candle, not current to avoid seeing to the future. Quick improvement to one issue mentioned in https://github.com/freqtrade/freqtrade/issues/746

    I will update/fix tests only if we decide to go with this change.

    opened by vertti 50
  • (sqlite3.OperationalError) database is locked

    (sqlite3.OperationalError) database is locked

    I was fiddling with the web ui (only viewing: reloading at the order tab: no actual trading or changes) and the 'regular' software crashed at that moment while it was trying to order something (it went through at the exchange but not at the database).

    freqtrade/freqtradebot.py", line 625, in execute_buy
        Trade.session.flush()
      File "<string>", line 2, in flush
    sqlalchemy/orm/session.py", line 3233, in flush
        self._flush(objects)
    sqlalchemy/orm/session.py", line 3373, in _flush
        transaction.rollback(_capture_exception=True)
    sqlalchemy/util/langhelpers.py", line 70, in __exit__
        compat.raise_(
    sqlalchemy/util/compat.py", line 198, in raise_
        raise exception
    sqlalchemy/orm/session.py", line 3369, in _flush
        transaction.commit()
    sqlalchemy/orm/session.py", line 836, in commit
        trans.commit()
    sqlalchemy/engine/base.py", line 2257, in commit
        self._do_commit()
    sqlalchemy/engine/base.py", line 2421, in _do_commit
        self._connection_commit_impl()
    sqlalchemy/engine/base.py", line 2392, in _connection_commit_impl
        self.connection._commit_impl()
    sqlalchemy/engine/base.py", line 930, in _commit_impl
        self._handle_dbapi_exception(e, None, None, None, None)
    sqlalchemy/engine/base.py", line 1929, in _handle_dbapi_exception
        util.raise_(
    sqlalchemy/util/compat.py", line 198, in raise_
        raise exception
    sqlalchemy/engine/base.py", line 928, in _commit_impl
        self.engine.dialect.do_commit(self.connection)
    sqlalchemy/engine/default.py", line 634, in do_commit
        dbapi_connection.commit()
    sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) database is locked
    (Background on this error at: http://sqlalche.me/e/14/e3q8)
    freqtrade.commands.trade_commands - INFO - worker found ... calling exit
    
    Triage Needed 
    opened by epigramx 47
  • ModuleNotFoundError: No module named 'freqtrade'

    ModuleNotFoundError: No module named 'freqtrade'

    hi sorry the bot gives me an error Error : Traceback (most recent call last): File "./freqtrade/main.py", line 11, in from freqtrade import OperationalException ModuleNotFoundError: No module named 'freqtrade'

    Question 
    opened by enea1982 47
  • No option to short, Limits bot to 50% potential, increased risk during bear as counter trend trading

    No option to short, Limits bot to 50% potential, increased risk during bear as counter trend trading

    Crypto markets experience both bull and bear periods mid / long term and up/down price movement intraday.

    A lack of capability to trade short during bear periods limits strategies to trading against the trend which is hard work and carries in increased risk.

    To be able to flip a position from long to short when day trading doubles to entry points opportunities.

    By way of examples:

    1. Longterm low risk trade: A simple long term trend trade on hr4 would make 150% on 1 short/bear flip from Feb to April, and 60% on the following bull.
    2. Day trading example: Indicators flip to short at 7600, but no means to short BTC on the drop.
    screen shot 2018-06-10 at 9 08 06 am 2) screen shot 2018-06-10 at 9 10 36 am Enhancement 
    opened by creslinux 47
  • Hyperopts

    Hyperopts

    An error warning comes up when trying

    python3 freqtrade -c config.json hyperopt --customhyperopt HyperOpts -e 5000 --print-all

    /Users/nsm/.env/lib/python3.7/site-packages/sklearn/externals/joblib/__init__.py:15: DeprecationWarning: sklearn.externals.joblib is deprecated in 0.21 and will be removed in 0.23. Please import this functionality directly from joblib, which can be installed with: pip install joblib. If this warning is raised when loading pickled models, you may need to re-serialize those models with scikit-learn 0.21+.
      warnings.warn(msg, category=DeprecationWarning)
    Traceback (most recent call last):
      File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/runpy.py", line 193, in _run_module_as_main
        "__main__", mod_spec)
      File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/runpy.py", line 85, in _run_code
        exec(code, run_globals)
      File "freqtrade/__main__.py", line 15, in <module>
        main.main(sys.argv[1:])
      File "/Users/nsm/freqtrade/freqtrade/main.py", line 34, in main
        args.func(args)
      File "/Users/nsm/freqtrade/freqtrade/optimize/hyperopt.py", line 362, in start
        config = setup_configuration(args)
      File "/Users/nsm/freqtrade/freqtrade/optimize/hyperopt.py", line 338, in setup_configuration
        config = configuration.load_config()
      File "/Users/nsm/freqtrade/freqtrade/configuration.py", line 78, in load_config
        config = deep_merge_dicts(self._load_config_file(path), config)
      File "/Users/nsm/freqtrade/freqtrade/configuration.py", line 117, in _load_config_file
        conf = json.load(file)
      File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/json/__init__.py", line 296, in load
        parse_constant=parse_constant, object_pairs_hook=object_pairs_hook, **kw)
      File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/json/__init__.py", line 348, in loads
        return _default_decoder.decode(s)
      File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/json/decoder.py", line 337, in decode
        obj, end = self.raw_decode(s, idx=_w(s, 0).end())
      File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/json/decoder.py", line 353, in raw_decode
        obj, end = self.scan_once(s, idx)
    json.decoder.JSONDecodeError: Expecting ',' delimiter: line 175 column 13 (char 4125)
    
    
    Question Hyperopt 
    opened by gitgitgat-zz 45
  • Web Ui Not available

    Web Ui Not available

    Describe your environment

    • Operating system: windows
    • Python Version: 3.9-3.10 (python -V)
    • CCXT version: _____ (pip freeze | grep ccxt)
    • Freqtrade Version: freqtrade 2022.3(freqtrade -V or docker-compose run --rm freqtrade -V for Freqtrade running in docker)

    Your question

    So every time I start the bot nothing shows up in the web UI and yes it is enabled

    Question Docker 
    opened by Dumnersm580 44
  • Buy Signal not meet criteria after updating to 2021.1 release due to pandas upgrade

    Buy Signal not meet criteria after updating to 2021.1 release due to pandas upgrade

    Hi,

    After updating bot to 2021.1 version, a strategy that worked well before , right now is not working properly, throwing buy signals that doesn't meet criteria.

    After install bot began to buy pairs and this was not the normal behaviour of this strategy.

    Buy signal is using qtpylib and Bollinger bands and seems that is not calculating this indicator properly.

    Has been an update of this library in last release?

    Thanks for your support.

    Question Dependencies 
    opened by jirbizz 41
  • position mgmt (Position stacking / pyramiding)

    position mgmt (Position stacking / pyramiding)

    buy or sell in several steps according to the signal.

    For example as bb band strategy,

    1. buy signal: cross up low band, buy 50% position
    2. buy signal again: cross up middle band, buy another 50% position.
    3. sell signal: cross down high band, sell 50% 4, sell signal again: cross down middle band, sell 50% position.

    FT supports these use cases?

    Enhancement 
    opened by yaotian 39
  • Missed or badly triggered computed Actions: BUY and SELL. Significant Difference Between Backtest and LIVE.

    Missed or badly triggered computed Actions: BUY and SELL. Significant Difference Between Backtest and LIVE.

    ## Step 2: Describe your environment

    • Python Version: Python 3.6.4
    • Branch: Develop
    • Last Commit ID: b0536db (git log --format="%H" -n 1)

    ## Step 3: Describe the problem: Hi everyone, I decided to finaly create an issue because i'm struggling with a problem since a few weeks: There is an important difference between the signal that are computed on Backtest and the reality of actions in Live. After a few observation I can tell that this is not related to a normal lag due to the network. The behavior seems to occur when a trigger is slightly triggered. Exemple: Sell When "Close Under Open Of Previous Candle" dataframe['close'] < dataframe['open'].shift() Theoricaly Failing case 0.00005155 < 0.00005156 (Those values are too close, the condition is not fullfilled) Theoricaly Working case 0.00005155 < 0.00005160 (the gap between the two value is large enought, the condition is fullfilled)

    Steps to reproduce:

    1. Use 1 minute Time frame
    2. launch freqtrade on live with a strategy that use directly price or averages to trigger BUY or SELL actions
    3. Wait for a price movement that "slightly" correspond to the signal (BUY or SELL)
    4. The signal is not triggered or is badly triggered .
    5. When a few moment later there is a bigger price move that trigger the signal more Frankly, the signal is triggered.

    Observed Results:

    • What happened? The signal is not triggered sometimes, when there is a small gap between compared values that are used to take the descision
    • What did you expect to happen? The signal should be triggered in live more or less at the same moment that is computed on the backtest (less than 1min drift tolerated on live)

    Relevant code exceptions or logs:

    orders-missed-issue orders-missed-issue-computed-on-backtest-poa Note: On plot-dataframe I modified the code to display only the SELLs that are consecutive to BUYs, to have more clarity.

    Suspected cause

    Loss of prescision due to python floating point: the problem with that theory is that I don't understand why the backtest is working as expected. The problem should be also present in that case...

    What I tried to fix that issue

    1- Convert all collumns related to triggers to Decimal 2- Rise Ta-lib prescision (https://github.com/mrjbq7/ta-lib/issues/151)

    The issue is still present.

    Thank you for your help. Regards, Axel

    Bug Enhancement Good first issue Backtest 
    opened by Axel-CH 39
  • Hyperopt for time parameters

    Hyperopt for time parameters

    Describe your environment

    • Operating system: Ubuntu 22.04 / Linux5.15
    • Python Version: 3.10.6
    • CCXT version: CCXT 1.92.20
    • Freqtrade Version: 2022.8.dev-686b72a82

    Your question

    How do I run hyperopt on time parameters? this is the code ive come up with thus far, but it doesnt seem to be working.

    
        # Strategy parameters
        buy_open_hour = IntParameter(0, 23, default=23, space="buy")
        buy_open_minute = IntParameter(0, 59, default=58, space="buy")
    
        sell_open_hour = IntParameter(0, 23, default=23, space="sell")
        sell_open_minute = IntParameter(0, 59, default=58, space="sell")
    
        # Run "populate_indicators()" only for new candle.
        process_only_new_candles = False
    
        # Number of candles the strategy requires before producing valid signals
        startup_candle_count: int = 0
    
        # Optional order type mapping.
        order_types = {
            'entry': 'market',
            'exit': 'limit',
            'stoploss': 'limit',
            'stoploss_on_exchange': False
        }
    
        # Optional order time in force.
        order_time_in_force = {
            'entry': 'gtc',
            'exit': 'gtc'
        }
    
        def leverage (self, pair: str, current_time: datetime, current_rate: float, proposed_leverage: float, max_leverage: float, entry_tag: Optional[str], side: str, **kwargs) -> float:
            """
            Customize leverage for each new trade. This method is only called in futures mode.
    
            :param pair: Pair that's currently analyzed
            :param current_time: datetime object, containing the current datetime
            :param current_rate: Rate, calculated based on pricing settings in exit_pricing.
            :param proposed_leverage: A leverage proposed by the bot.
            :param max_leverage: Max leverage allowed on this pair
            :param entry_tag: Optional entry_tag (buy_tag) if provided with the buy signal.
            :param side: 'long' or 'short' - indicating the direction of the proposed trade
            :return: A leverage amount, which is between 1.0 and max_leverage.
            """
            return 20.0
    
        def populate_indicators(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
            """
            Adds several different TA indicators to the given DataFrame
    
            Performance Note: For the best performance be frugal on the number of indicators
            you are using. Let uncomment only the indicator you are using in your strategies
            or your hyperopt configuration, otherwise you will waste your memory and CPU usage.
            :param dataframe: Dataframe with data from the exchange
            :param metadata: Additional information, like the currently traded pair
            :return: a Dataframe with all mandatory indicators for the strategies
            """
    
            """Generate all indicators used by the strategy"""
    
            current_hour = dataframe['date'].dt.hour
            current_minute = dataframe['date'].dt.minute
    
            # Calculate all hour values
            for val in self.buy_open_hour.range:
                dataframe[f'hour_{val}'] = dataframe['date'].dt.hour
    
            # Calculate all minute values
            for val in self.buy_open_minute.range:
                dataframe[f'minute_{val}'] = dataframe['date'].dt.minute
    
            return dataframe
    
        def populate_entry_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
            conditions = []
            conditions.append(dataframe[f'hour_{self.buy_open_hour.value}'])
            conditions.append(dataframe[f'minute_{self.buy_open_minute.value}'])
            conditions.append(dataframe['volume'] > 0)
    
            if conditions:
                dataframe.loc[
                    reduce(lambda x, y: x & y, conditions),
                    'enter_long'] = 1
            return dataframe
    
    Question 
    opened by Nayefuk 0
  • Hyperopt for time parameters

    Hyperopt for time parameters

    Describe your environment

    • Operating system: Ubuntu 22.04 / Linux5.15
    • Python Version: 3.10.6
    • CCXT version: CCXT 1.92.20
    • Freqtrade Version: 2022.8.dev-686b72a82

    Your question

    How do I run hyperopt on time parameters? this is the code ive come up with thus far, but it doesnt seem to be working.

    ``

    # Strategy parameters
    buy_open_hour = IntParameter(0, 23, default=23, space="buy")
    buy_open_minute = IntParameter(0, 59, default=58, space="buy")
    
    sell_open_hour = IntParameter(0, 23, default=23, space="sell")
    sell_open_minute = IntParameter(0, 59, default=58, space="sell")
    
    # Run "populate_indicators()" only for new candle.
    process_only_new_candles = False
    
    # Number of candles the strategy requires before producing valid signals
    startup_candle_count: int = 0
    
    # Optional order type mapping.
    order_types = {
        'entry': 'market',
        'exit': 'limit',
        'stoploss': 'limit',
        'stoploss_on_exchange': False
    }
    
    # Optional order time in force.
    order_time_in_force = {
        'entry': 'gtc',
        'exit': 'gtc'
    }
    
    def leverage (self, pair: str, current_time: datetime, current_rate: float, proposed_leverage: float, max_leverage: float, entry_tag: Optional[str], side: str, **kwargs) -> float:
        """
        Customize leverage for each new trade. This method is only called in futures mode.
    
        :param pair: Pair that's currently analyzed
        :param current_time: datetime object, containing the current datetime
        :param current_rate: Rate, calculated based on pricing settings in exit_pricing.
        :param proposed_leverage: A leverage proposed by the bot.
        :param max_leverage: Max leverage allowed on this pair
        :param entry_tag: Optional entry_tag (buy_tag) if provided with the buy signal.
        :param side: 'long' or 'short' - indicating the direction of the proposed trade
        :return: A leverage amount, which is between 1.0 and max_leverage.
        """
        return 20.0
    
    def populate_indicators(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
        """
        Adds several different TA indicators to the given DataFrame
    
        Performance Note: For the best performance be frugal on the number of indicators
        you are using. Let uncomment only the indicator you are using in your strategies
        or your hyperopt configuration, otherwise you will waste your memory and CPU usage.
        :param dataframe: Dataframe with data from the exchange
        :param metadata: Additional information, like the currently traded pair
        :return: a Dataframe with all mandatory indicators for the strategies
        """
    
        """Generate all indicators used by the strategy"""
    
        current_hour = dataframe['date'].dt.hour
        current_minute = dataframe['date'].dt.minute
    
        # Calculate all hour values
        for val in self.buy_open_hour.range:
            dataframe[f'hour_{val}'] = dataframe['date'].dt.hour
    
        # Calculate all minute values
        for val in self.buy_open_minute.range:
            dataframe[f'minute_{val}'] = dataframe['date'].dt.minute
    
        return dataframe
    
    def populate_entry_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
        conditions = []
        conditions.append(dataframe[f'hour_{self.buy_open_hour.value}'])
        conditions.append(dataframe[f'minute_{self.buy_open_minute.value}'])
        conditions.append(dataframe['volume'] > 0)
    
        if conditions:
            dataframe.loc[
                reduce(lambda x, y: x & y, conditions),
                'enter_long'] = 1
        return dataframe
    
    Question 
    opened by Nayefuk 0
  • Bump ccxt from 2.4.60 to 2.5.11

    Bump ccxt from 2.4.60 to 2.5.11

    Bumps ccxt from 2.4.60 to 2.5.11.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    Dependencies Python 
    opened by dependabot[bot] 1
  • Bump python-telegram-bot from 13.15 to 20.0

    Bump python-telegram-bot from 13.15 to 20.0

    Bumps python-telegram-bot from 13.15 to 20.0.

    Release notes

    Sourced from python-telegram-bot's releases.

    v20.0

    Version 20.0

    Released 2023-01-01

    This is the technical changelog for version 20.0. More elaborate release notes can be found in the news channel @​pythontelegrambotchannel.

    Major Changes

    • Full Support For Bot API 6.4 (#3449)

    Minor Changes, Documentation Improvements and CI

    • Documentation Improvements (#3428, #3423, #3429, #3441, #3404, #3443)
    • Allow Sequence Input for Bot Methods (#3412)
    • Update Link-Check CI and Replace a Dead Link (#3456)
    • Freeze Classes Without Arguments (#3453)
    • Add New Constants (#3444)
    • Override Bot.__deepcopy__ to Raise TypeError (#3446)
    • Add Log Decorator to Bot.get_webhook_info (#3442)
    • Add Documentation On Verifying Releases (#3436)
    • Drop Undocumented Job.__lt__ (#3432)

    Dependencies

    • Downgrade sphinx to 5.3.0 to Fix Search (#3457)
    • Bump sphinx from 5.3.0 to 6.0.0 (#3450)

    v20.0b0

    Version 20.0b0

    Released 2022-12-15

    This is the technical changelog for version 20.0b0. More elaborate release notes can be found in the news channel @​pythontelegrambotchannel.

    Major Changes

    • Make TelegramObject Immutable (#3249)

    Minor Changes, Documentation Improvements and CI

    • Reduce Code Duplication in Testing Defaults (#3419)
    • Add Notes and Warnings About Optional Dependencies (#3393)
    • Simplify Internals of Bot Methods (#3396)

    ... (truncated)

    Changelog

    Sourced from python-telegram-bot's changelog.

    Version 20.0

    Released 2023-01-01

    This is the technical changelog for version 20.0. More elaborate release notes can be found in the news channel @pythontelegrambotchannel <https://t.me/pythontelegrambotchannel>_.

    Major Changes

    • Full Support For Bot API 6.4 ([#3449](https://github.com/python-telegram-bot/python-telegram-bot/issues/3449)_)

    Minor Changes, Documentation Improvements and CI

    • Documentation Improvements ([#3428](https://github.com/python-telegram-bot/python-telegram-bot/issues/3428), [#3423](https://github.com/python-telegram-bot/python-telegram-bot/issues/3423), [#3429](https://github.com/python-telegram-bot/python-telegram-bot/issues/3429), [#3441](https://github.com/python-telegram-bot/python-telegram-bot/issues/3441), [#3404](https://github.com/python-telegram-bot/python-telegram-bot/issues/3404), [#3443](https://github.com/python-telegram-bot/python-telegram-bot/issues/3443))
    • Allow Sequence Input for Bot Methods ([#3412](https://github.com/python-telegram-bot/python-telegram-bot/issues/3412)_)
    • Update Link-Check CI and Replace a Dead Link ([#3456](https://github.com/python-telegram-bot/python-telegram-bot/issues/3456)_)
    • Freeze Classes Without Arguments ([#3453](https://github.com/python-telegram-bot/python-telegram-bot/issues/3453)_)
    • Add New Constants ([#3444](https://github.com/python-telegram-bot/python-telegram-bot/issues/3444)_)
    • Override Bot.__deepcopy__ to Raise TypeError ([#3446](https://github.com/python-telegram-bot/python-telegram-bot/issues/3446)_)
    • Add Log Decorator to Bot.get_webhook_info ([#3442](https://github.com/python-telegram-bot/python-telegram-bot/issues/3442)_)
    • Add Documentation On Verifying Releases ([#3436](https://github.com/python-telegram-bot/python-telegram-bot/issues/3436)_)
    • Drop Undocumented Job.__lt__ ([#3432](https://github.com/python-telegram-bot/python-telegram-bot/issues/3432)_)

    Dependencies

    • Downgrade sphinx to 5.3.0 to Fix Search ([#3457](https://github.com/python-telegram-bot/python-telegram-bot/issues/3457)_)
    • Bump sphinx from 5.3.0 to 6.0.0 ([#3450](https://github.com/python-telegram-bot/python-telegram-bot/issues/3450)_)

    .. _[#3449](https://github.com/python-telegram-bot/python-telegram-bot/issues/3449): python-telegram-bot/python-telegram-bot#3449 .. _[#3428](https://github.com/python-telegram-bot/python-telegram-bot/issues/3428): python-telegram-bot/python-telegram-bot#3428 .. _[#3423](https://github.com/python-telegram-bot/python-telegram-bot/issues/3423): python-telegram-bot/python-telegram-bot#3423 .. _[#3429](https://github.com/python-telegram-bot/python-telegram-bot/issues/3429): python-telegram-bot/python-telegram-bot#3429 .. _[#3441](https://github.com/python-telegram-bot/python-telegram-bot/issues/3441): python-telegram-bot/python-telegram-bot#3441 .. _[#3404](https://github.com/python-telegram-bot/python-telegram-bot/issues/3404): python-telegram-bot/python-telegram-bot#3404 .. _[#3443](https://github.com/python-telegram-bot/python-telegram-bot/issues/3443): python-telegram-bot/python-telegram-bot#3443 .. _[#3412](https://github.com/python-telegram-bot/python-telegram-bot/issues/3412): python-telegram-bot/python-telegram-bot#3412 .. _[#3456](https://github.com/python-telegram-bot/python-telegram-bot/issues/3456): python-telegram-bot/python-telegram-bot#3456 .. _[#3453](https://github.com/python-telegram-bot/python-telegram-bot/issues/3453): python-telegram-bot/python-telegram-bot#3453 .. _[#3444](https://github.com/python-telegram-bot/python-telegram-bot/issues/3444): python-telegram-bot/python-telegram-bot#3444 .. _[#3446](https://github.com/python-telegram-bot/python-telegram-bot/issues/3446): python-telegram-bot/python-telegram-bot#3446 .. _[#3442](https://github.com/python-telegram-bot/python-telegram-bot/issues/3442): python-telegram-bot/python-telegram-bot#3442 .. _[#3436](https://github.com/python-telegram-bot/python-telegram-bot/issues/3436): python-telegram-bot/python-telegram-bot#3436 .. _[#3432](https://github.com/python-telegram-bot/python-telegram-bot/issues/3432): python-telegram-bot/python-telegram-bot#3432 .. _[#3457](https://github.com/python-telegram-bot/python-telegram-bot/issues/3457): python-telegram-bot/python-telegram-bot#3457 .. _[#3450](https://github.com/python-telegram-bot/python-telegram-bot/issues/3450): python-telegram-bot/python-telegram-bot#3450

    Version 20.0b0

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    Dependencies Python 
    opened by dependabot[bot] 0
  • Price data randomization

    Price data randomization

    Describe your environment

    (if applicable)

    • Operating system: ____
    • Python Version: _____ (python -V)
    • CCXT version: _____ (pip freeze | grep ccxt)
    • Freqtrade Version: ____ (freqtrade -V or docker compose run --rm freqtrade -V for Freqtrade running in docker)

    Describe the enhancement

    I know there's an open issue about implementing a robust Montecarlo simulation feature, but I was thinking if there could be an easy way to quickly test the strategy by applying a certain degree of randomization on the candles. For instance, I was thinking of applying this transformation to the dataset.

     rand_arr = np.random.uniform(low=0.95, high=1.05, size=(len(df),))
     for col in ['close', 'high', 'low']:
         df[col] *= rand_arr
     df.loc[1:len(df), 'open'] = df.close.shift()
    

    I've tried a rough implementation putting that code within the populate_indicators function but trades don't get executed correctly for some reason.

    I was thinking that this could be the first step to having a more robust backtesting/hyperopting process. What do you think?

    Question 
    opened by italodamato 1
Releases(2022.12)
  • 2022.12(Dec 29, 2022)

    Highlighted changes

    • Enhanced Producer logic, reducing memory usage while improving performance (:warning: this is a breaking change - producer and consumer must be updated together).
    • --timeframe-detail now properly simulates all candles at detail timeframe, significantly increasing backtesting accuracy.
    • New pairlist RemotePairList - allowing a pairlist to be loaded from file or from an API.
    • Removal of deprecated trade.enter_side (use trade.entry_side instead).
    • FreqUI
      • Auto-refresh chart.
      • Order action notifications (fill / cancel).
      • Backtesting support for freqAI strategies.
    • FreqAI enhancements:
      • Reinforcement learning.
      • Improvements to Tensorboard logging.
    • JOSS paper has been accepted. Great job @robcaulk and everyone else involved in making this happen!

    How to update

    As always, you can update your bot using one of the following commands:

    docker-compose

    docker-compose pull
    docker-compose up -d
    

    Installation via setup script

    # Deactivate venv and run 
    ./setup.sh --update
    

    Plain native installation

    git pull
    pip install -U -r requirements.txt
    
    Expand full changelog
    8e8f71ade Version bump 2022.12
    5cb8fe1a5 Add JOSS badge to freqtrade docs and readme.md
    c52910f28 Improve resiliance against invalid data
    4d112def1 Remove binance AD from docs page
    cd4faa9c5 keep max_stake_amount through backtests
    62c4675e2 Remove some deprecated fields from the API
    cb66663fd show max_stake_amount in API
    55001bf32 Keep max_stake_amount (only relevant for DCA orders).
    6f2c3e252 Split migration and persistence tests
    20901c833 Improve `purge_old_models` explanation
    882e68c68 Rename backtest-result from new to "not new".
    6a15a9b41 Update backtest-result_new
    1cef40a13 Bump numpy from 1.23.5 to 1.24.1
    63f114395 is_short should be a boolean
    aaeeb8662 Bump ccxt from 2.4.27 to 2.4.60
    c5b246af8 Bump isort from 5.11.3 to 5.11.4
    00112d81d Bump types-requests pre-commit
    9a556d263 Remove all mac conflicts
    18709406c use link overwrite
    9ea8792d3 Attempt brew fix
    3993bd7c1 Bump types-requests from 2.28.11.5 to 2.28.11.7
    e0f60e175 Bump pre-commit from 2.20.0 to 2.21.0
    b1bf6d8dc Bump nbconvert from 7.2.6 to 7.2.7
    ce13ce4b1 Update binance stoploss order types
    524da3c7a Don't actually load models to avoid random failures
    ad0d7c9a9 Don't allow DCA trades to go beyond max order size
    2a7369b56 fix macos CI
    73792fd6c Don't attempt to convert None to dict
    70531224e Allow setting identifier via UI
    07606a9e2 Simplify APi backtest config merging
    6d9f1fafb allow backtest_cache to be provided via backtest API
    256fac2a2 Add test for freqaimodels endpoint
    5dbd5c235 Add endpoint for freqAI models
    a119fbd89 Small error-message finetuning
    ebf60d85d self._init_done placed wrong. fixed
    43f5a1600 parse exception handling, remove info, cache change
    4bad2b5c0 Apply suggestions from code review
    5b9e3af27 improve wording
    5405d8fa6 add discussion and tips for Base3ActionRLEnvironment
    a276ef4b0 ensure long only RL is tested
    86b30d2d6 Improve emc test resiliancy
    0c8d657d9 update types-dateutil precommit
    fa87e0807 Bump ccxt from 2.2.92 to 2.4.27
    7216d140d Bump torch from 1.13.0 to 1.13.1
    06225b950 Bump types-python-dateutil from 2.8.19.4 to 2.8.19.5
    d86885c7f Bump blosc from 1.10.6 to 1.11.1
    b61fc161b Bump isort from 5.10.1 to 5.11.3
    6380c3d46 reduce duplicate code, fix cache check
    bb33b96ba init cache on first iteration, init checks, limit length and charmap to info replace if invalid, move filter logic
    1f4cc145c Move trade docs to advanced section
    eda72ef26 Add documentation for Order object
    a439488b7 Add initial trade_object documentation
    bad6fe77d Remove deprecated trade property
    329a0a3f4 Update docs/freqai.md
    c293401b2 Add can_short to freqai base model
    e60404715 Enable RL tests on arm mac
    a8c9aa01f Add 3ac test
    7727f3150 Add 3 Action RL env
    dde363343 Add can_short param to base env
    e4284f4e7 add citation to freqai doc. Update credits
    36948e2a7 fix base4 env done condition
    935275010 Remove some unused fixtures
    32d57f624 delisted bibox following ccxt PR https://github.com/ccxt/ccxt/pull/16067
    6fa3db3a1 Fix failing tests
    cd1b8b9ce single space removed for the unit test to pass..
    1d5c66da3 + Unit Tests
    581a5296c fix docstrings to reflect new env_info changes
    7b4abd5ef use a dictionary to make code more readable
    7a0eadbdf Don't recalc profit on closed trades
    33dce5cf1 Clarify partial exit calculation messaging
    ca2a878b8 Update test naming
    3af2251ce Fix add_state_info backtesting bug
    2018da076 Add env_info dict to base environment
    fa260e656 Move "replace or append" decision to dataprovider
    dac1c8ab8 fix isort
    2285ca7d2 add dp to multiproc
    de19d1cfb fix doc minimal_roi
    97fee3707 Improve emc test
    7f3524949 - print
    d52c1c755 Add unit tests
    1d92db780 Change CI to actually run one 2 randomized point.
    fed46d330 Revert "Bump scikit-learn from 1.1.3 to 1.2.0"
    c042d0146 Don't run gc_setup during tests
    0dd3836cc fix rpc method docstring
    1c0c4fd42 Improve test
    a693495a6 Improve external_candle aggregation
    96edd3145 Test add_external_candle
    414c0ce05 change unused var
    6717dff19 update overlapping candle handling, move append to misc
    0602479f7 minor changes, update candle appending to support overlaps
    f1ebaf473 fix tests
    49f6f4066 remove comment
    0d5b2eed9 fix same candle handling
    d376bf405 fix indefinite reconnecting
    ccd1aa70a change log calls to debug, handle already received candle
    c050eb8b8 add candle difference calculation to dataprovider
    89338fa67 allow specifying channel send throttle
    d2c8487ec update add_external_candle, fix breaking on ping error, handle empty dataframes
    fce1e9d6d update analyzed df request to allow specifying a single pair
    36a00e8de update add_external_candle returns
    4cbb3341d change how missing candles will be handled
    9660e445b use new channel apis in emc, extend analyzed df to include list of dates for candles
    abc3badfb Improve shutdown behavior
    5c984bf5c Temporarily downgrade blosc for arm64
    6f92c58e3 add docs, add bearer token.
    f940280d5 Fix tensorboard_log incrementing note
    f9b7d3590 add increment param for tensorboard_log
    f6b90595f remove html. change var names.
    de9784267 Bump filelock from 3.8.0 to 3.8.2
    915e0ac62 Bump ccxt from 2.2.67 to 2.2.92
    bc2b9981d Bump python-telegram-bot from 13.14 to 13.15
    2647c35f4 Bump pypa/gh-action-pypi-publish from 1.6.1 to 1.6.4
    034420337 Bump sqlalchemy from 1.4.44 to 1.4.45
    5a7b493d3 Bump xgboost from 1.7.1 to 1.7.2
    562564801 Bump pytest-asyncio from 0.20.2 to 0.20.3
    a35111e55 Bump nbconvert from 7.2.5 to 7.2.6
    63d3a9ced Bump prompt-toolkit from 3.0.33 to 3.0.36
    434eec733 Bump blosc from 1.10.6 to 1.11.0
    78c40f053 Bump scikit-learn from 1.1.3 to 1.2.0
    0fd8e214e add documentation for tensorboard_log, change how users interact with tensorboard_log
    cb8fc3c8c custom info to tensorboard_metrics
    8c7ec0795 ensure predict_proba follows suit. Remove all lib specific params from example config
    85f22b5c3 fix bug in MultiOutput* with conv_width = 1
    6b9f3f279 Fix test validation
    980a5a9b5 Fix docs typo
    1da8ad69d improve more tests by freezing time
    bbedc4b63 Stop clock to avoid random failures on slow CI runs
    3d3a7033e Improve Docker documentation wording
    74e623fe5 Improve kraken test resiliance
    66412bfa5 Remove unnecessary loop
    7efcbbb45 Local File Loading
    da2747d48 Add Local .json file Loading
    7b3406914 flip add_state_info
    9b4364ddc ensure that add_state_info is deactivated during backtesting
    b144a6357 Remove Duplicate
    547a75d9c Fix Info
    607d5b2f8 Split to fetch_pairlist function, Info Message
    48160f3fe Flake 8 fix, Json Fetching
    199fd2d07 +Remote Pairlist
    58604c747 cleanup tensorboard callback
    227cdb093 Change dict update order
    26a61afa1 Move base tf logic to config validation
    bc48099e4 Revert changes
    62c69bf2b fix custom_info
    72472587d Increase test range for api version test
    7c27eedda Bump API version
    24edc276e Simplify new_candle message
    d30a872ed Move message-silencing list next to enum
    687eefa06 Improve emit_df testcase
    5e533b550 Emit a simple "new candle" message to allow UI's to refresh charts
    189fa6405 Add more dynamic to directory change
    730fba956 Ensure base tf included in include_timeframes
    e734b3992 Make model_training_parameters optional
    102ab91fa Bump orjson from 3.8.2 to 3.8.3
    179adea0e Bump ccxt from 2.2.36 to 2.2.67
    82d4dca18 Bump mkdocs-material from 8.5.10 to 8.5.11
    2eb8f9f02 Bump pypa/gh-action-pypi-publish from 1.5.1 to 1.6.1
    66bb2c525 Bump fastapi from 0.87.0 to 0.88.0
    caae4441e Bump jsonschema from 4.17.1 to 4.17.3
    441069f36 Bump pandas from 1.5.1 to 1.5.2
    16bad8dca Bump pymdown-extensions from 9.8 to 9.9
    133a081a3 Bump pytest-random-order from 1.0.4 to 1.1.0
    d8565261e ignore initializer type
    24766928b reorganize/generalize tensorboard callback
    f7b4fc5bb Update freqai-reinforcement-learning.md
    38d3b4cab add details to doc plot_feature_importance doc
    b2edc5808 fix flake8
    d6f45a12a add multiproc fix flake8
    469aa0d43 add state/action info to callbacks
    075c8c23c add state/action info to callbacks
    7ddf7ec0a Update freqai-parameter-table.md
    05424045b Temporarily disable since binance blocks US
    77dc2c92a performance improvevemnts - backtest freqai from saved predictions
    2b3e166dc fix fees RL
    eb81ccced add download-data command change directory fix relative config path
    396e666e9 Keep old behavior of model loading
    4a9982f86 Fix sb3_contrib loading issue
    95651fcd5 Improve/simplify telegram exception handling
    59c7ce02f binance restricted locations and server location
    79821ebb3 fix flake8 errors
    e7f72d52b bring back market side setting in get_state_info
    17cf3c7e8 bug fixes and removed fillna from fit_live_predictions
    10a45474e Update data-analysis.md
    4571aedb3 consolidate and clean code
    3c322bf7d Improve forceenter validation messages
    8ea58ab35 change BT prediction files to feather format
    b87545cd1 Bump torch from 1.12.1 to 1.13.0
    5500c10f7 Improve CI file layout
    2c75b5e02 Extract "live" test from regular tests
    8efa8bc78 Update stable-baselines3 to 1.6.2
    e891c4176 Fix typo in ipynb, too.
    9cbfa1201 Directly set model_type in base RL model
    05a7fca24 Fix utils docs for backtesting-analysis
    9880e9ab6 Fix typo in strategy_analysis_example.md
    dc03317cc Bump jsonschema from 4.17.0 to 4.17.1
    d73fd4276 Fix flake8 error introduced with 6.0 update
    9c28cc810 Bump cryptography from 38.0.1 to 38.0.4
    348731598 Bump ccxt from 2.1.96 to 2.2.36
    a46b09d40 Bump prompt-toolkit from 3.0.32 to 3.0.33
    924bbad19 Bump pyarrow from 10.0.0 to 10.0.1
    5aec51a16 Bump urllib3 from 1.26.12 to 1.26.13
    7e75bc8fc Bump sb3-contrib from 1.6.1 to 1.6.2
    49e41925b Bump flake8 from 5.0.4 to 6.0.0
    f21dbbd8b Update imports of custom model
    56518def4 isort
    7fd6bc526 add randomize_starting_position to the rl_config
    25e041b98 sneak in small change to FreqaiExampleHybridStrategy docstring and startup count
    64d4a52a5 Improve the RL learning process
    67d946927 small wording fix
    a02da0806 Fix typo
    320535a22 improve tests doc wording
    a85602eb9 add "how to run tests"
    5b5859238 Fix typo
    fe00a6516 FIx custom reward link
    cf000a4c0 Bump develop version to 2022.12-dev
    e4a3efc7d Don't use strategy.stoploss too often
    1a3f88c7b Replace separate start/end date option with usual timerange option
    51d21b413 Fix 4ac update_total_profit
    4790aaaae Implement cli options for backtesting-analysis date filtering
    a26b3a9ca change sleep call back to 0.01
    b52f05923 fix list to array in constants.py
    be890b52f remove np import
    aaaa5a5f6 add documentation for net_arch, other small changes
    fcf13580f Revert "offload initial df computation to thread"
    7b0a76fb7 Improve typehint
    7ebc8ee16 Fix missing Optional typehint
    8660ac9aa Fix import in docs
    cf2f12b47 Headers between Tables -> Tables can be jumped to directly
    bdfedb5fc Improve typehints / reduce warnings from mypy
    81fd2e588 ensure typing, remove unsued code
    8dbfd2cac improve docstring clarity about how to inherit from ReinforcementLearner, demonstrate inherittance with ReinforcementLearner_multiproc
    9f13d99b9 improve parameter table, add better documentation for custom calculate_reward, add various helpful notes in docstrings etc
    bd95392ee fix formatted string in warning message :)
    4aa4c6f49 change sleep in channel send to 0
    f268187e9 offload initial df computation to thread
    afc00bc30 log warning if channel too far behind, add docstrings to message stream
    391817243 Tidy up complex functions
    fc59b0225 prevent ws endpoint from running without valid token
    101dec461 close ws channel if can't accept
    2e82e6784 move data_provider cleanup to shutdown()
    73c458d47 use importlib instead of __import___
    00d2a01bf isort
    3a07749fc fix docstring
    8855e36f5 reduce freqai testing time by reducing retrain frequency and number of features
    44b042ba5 remove unused function
    8f1a8c752 Add freqairl docker build process
    e5fc21f57 Fix broken table rendering
    3d26659d5 Fix some doc typos
    48242ca02 update catch block in cancel channel tasks
    d09157efb update code to use one prediction file / pair
    a5442772f ensure only broadcasting to subscribed topics
    c01f25ddc update code to freqai_backtest_live_models only from historic predictions
    d9d7df70b fix tests, log unknown errors
    d2870d48e change typing to async iterator
    48a1f2418 update typing, remove unneeded try block, readd sleep
    60a167bde add dynamic send timeout
    fdc82af88 fix tests - update code to backtest with historic_predictions
    3714d7074 smaller throttle in channel send
    c1a73a551 move sleep call in send, minor cleanup
    80d070e9e update code to use historic_predictions for freqai_backtest_live_models
    d02da279f document the simplifications of the training environment
    0cb6f71c0 better error handling, true async sending, more readable api
    61a859ba4 remove tensorboard req from rl reqs
    60fcd8dce fix skipped mac test, fix RL bug in add_state_info, fix use of __import__, revise doc
    3903b04d3 save_live_data_backtest - added docs and tests
    99bff9cbf backtesting_from_live_saved_files - code refactoring
    913749c81 backtesting_from_live_saved_files - code refactoring
    b01e4e3db change default value - save_live_data_backtest as false
    442467e8a remove old comments and code
    d713af045 remove main queue completely
    659c8c237 initial revision
    bf4d5b432 ensure model_type is defined
    6394ef455 fix docstrings
    c8d3e5771 add note that these environments are designed for short-long bots only.
    c76afc255 explain how to choose environments, and how to customize them
    96fafb7f5 remove limit_ram_use
    b421521be help default ReinforcementLearner users by assigning the model_type automatically
    90f168d1f remove more user references. cleanup dataprovider
    f8f553ec1 remove references to "the user"
    388ca2120 update docs, fix bug in environment
    3c249ba99 add doc for data_kitchen_thread_count`
    af9e40056 add test coverage, fix bug in base environment. Ensure proper fee is used.
    81f800a79 switch to using FT calc_profi_pct, reverse entry/exit fees
    259f87bd4 fix rl test;
    e71a8b8ac add ability to integrate state info or not, and prevent state info integration during backtesting
    27fa9f1f4 backtest saved dataframe from live
    7adca9735 Improve python GC behavior
    9c6b97c67 ensure normalization acceleration methods are employed in RL
    6746868ea store dataprovider to self instead of strategy
    6ff0e66dd ensure strat tests are updated
    4f0f3e5b6 removed unnecessary code
    8ee95db92 refactoring backtesting_fit_live_predictions function
    3e57c18ac add fix_live_predictions function to backtesting
    8d9988a94 enforce date column in backtesting freqai predictions files
    9c5ba0732 save predictions with date and merge by date
    2c1330a4e Update docs to new behavior
    ded57fb30 Remove no longer valid test part
    d089fdae3 Fix current-time_det calculation
    5bd3e54b1 Add test for detail backtesting
    0888b53b5 Udpate current_time handling for detail loop
    29ba263c3 Update some test parameters
    a11d579bc Verify order fills on "detail" timeframe
    a2843165e fix leftovers from merge
    51b410ac1 Update utils.md
    8c39b3722 Update bug_report.md
    35cc6aa96 Update data-analysis.md
    67850d92a Update question.md
    fe3d99b56 Update feature_request.md
    11d6d0be9 Update sql_cheatsheet.md
    abcbe7a42 Update updating.md
    d42722690 Update docker_quickstart.md
    8d7adfabe clean RL tests to avoid dir pollution and increase speed
    3e258e000 Don't set use_db without resetting it
    b9f1872d5 Install RL dependencies as dev dependency
    e5204101d add tensorboard back to reqs to keep default integration working (and for docker)
    488739424 fix reward inconsistency in template
    017e476f4 add extras to setup.py for RL
    cf10a76a2 bring back Trades.use_db = True
    17fb7f7a3 gym needs 0.21 to match stable_baselines3
    ab4705efd provide background and goals for RL in doc
    b5dd92f85 remove RL reqs from general FAI reqs
    936ca2448 separate RL install from general FAI install, update docs
    8c7f47872 Update requirements-freqai.txt
    292d72d59 automatically handle model_save_type for user
    cf882fa84 fix tests
    ab9d781b0 add reinforcement learning page to docs
    6e74d4666 Ensure 1 thread available
    7ef56e302 Ensure at least 1 thread is available
    555cc4263 Ensure 1 thread is available (for testing purposes)
    dcf6ebe27 Update BaseReinforcementLearningModel.py
    83343dc2f control number of threads, update doc
    099137ada remove hasattr calls
    9e36b0d2e fix formatting
    caa47a2f4 close subproc env on shutdown
    647200e8a isort
    77c360b26 improve typing, improve docstrings, ensure global tests pass
    9c361f442 increase test coverage for RL and FreqAI
    95121550e Remove unnecessary models, add model arg
    f7dd3045f Parameterize backtesting test
    f5cd8f62c Remove unused code from BaseEnv
    1c56fa034 add test_models folder
    7295ba0fb add test for Base4ActionEnv
    f6e9753c9 show advanced users how they can customize agent indepth`
    eeebb78a5 skip darwin in RL tests, remove example scripts, improve doc
    7b1d409c9 fix mypy/flake8
    d056d766e make tests pass
    025b98dec bring back doc sentence
    3b97b3d5c fix mypy error for strategy
    8aac64400 add tests. add guardrails.
    48140bff9 fix bug in 4ActRLEnv
    27dce20b2 fix bug in Base4ActionRLEnv, improve example strats
    240b52953 fix tensorboard path so that users can track all historical models
    2493e0c8a Unnecessary lines in Base4, and changes for box space, to fit better for our needs (#7324)
    1a8e1362a There was an error in the docs around continual learning and thread count (#7314)
    67cddae75 fix tensorboard image
    af8f30858 start the reinforcement learning doc
    7766350c1 refactor environment inheritence tree to accommodate flexible action types/counts. fix bug in train profit handling
    8c313b431 remove whitespace from Dockerfile
    baa4f8e3d remove Base3ActionEnv in favor of Base4Action
    cdc550da9 Revert the docker changes to be inline with the original freqtrade image
    d31926efd Added Base4Action
    3199eb453 reduce code for base use-case, ensure multiproc inherits custom env, add ability to limit ram use.
    05ccebf9a automate eval freq in multiproc
    94cfc8e63 fix multiproc callback, add continual learning to multiproc, fix totalprofit bug in env, set eval_freq automatically, improve default reward
    d1bee29b1 improve default reward, fix bugs in environment
    a61821e1c remove monitor log
    bd870e233 fix monitor bug, set default values in case user doesnt set params
    c0cee5df0 add continual retraining feature, handly mypy typing reqs, improve docstrings
    b708134c1 switch multiproc thread count to rl_config definition
    b26ed7dea fix generic reward, add time duration to reward
    280a1dc3f add live rate, add trade duration
    f9a49744e add strategy to the freqai object
    a2a4bc05d Fix the state profit calculation logic
    29f0e01c4 expose environment reward parameters to the user config
    d88a0dbf8 add sb3_contrib models to the available agents. include sb3_contrib in requirements.
    8b3a8234a fix env bug, allow example strat to short
    8cd4daad0 Feat/freqai rl dev (#7)
    3eb897c2f reuse callback, allow user to acces all stable_baselines3 agents via config
    4b9499e32 improve nomenclature and fix short exit bug
    4baa36bdc fix persist a single training environment for PPO
    f95602f6b persist a single training environment.
    5d4e5e69f reinforce training with state info, reinforce prediction with state info, restructure config to accommodate all parameters from any user imported model type. Set 5Act to default env on TDQN. Clean example config.
    7962a1439 remove keep low profit
    81b5aa66e make env keep current position when low profit
    45218faeb fix coding convention
    d55092ff1 Docker building update, and TDQN repair with the newer release of SB+
    74e4fd063 ensure config example can work with backtesting RL
    b90da46b1 improve price df handling to enable backtesting
    2080ff86e 5ac base fixes in logic
    16cec7dfb fix save/reload functionality for stablebaselines
    0475b7cb1 remove unuse code and fix coding conventions
    d60a166fb multiproc TDQN with xtra callbacks
    dd382dd37 add monitor to eval env so that multiproc can save best_model
    69d542d3e match config and strats to upstream freqai
    e5df39e89 ensuring best_model is placed in ram and saved to disk and loaded from disk
    bf7ceba95 set cpu threads in config
    57c488a6f learning_rate + multicpu changes
    48bb51b45 example config added
    b1fc5a06c example config added
    6d8e838a8 update tensorboard dependency
    acf3484e8 add multiprocessing variant of ReinforcementLearningPPO
    cf0731095 type fix
    1c81ec601 3ac and 5ac example strategies
    13cd18dc9 PPO policy change + verbose=1
    926023935 make base 3ac and base 5ac environments. TDQN defaults to 3AC.
    096533bcb 3ac to 5ac
    718c9d044 action fix
    9c78e6c26 base PPO model only customizes reward for 3AC
    6048f60f1 get TDQN working with 5 action environment
    d4db5c328 ensure TDQN class is properly named
    91683e1dc restructure RL so that user can customize environment
    ecd1f55ab add rl module
    70b25461f add rl dependency
    9b895500b initial commit - new dev branch
    cd3fe4442 callback function and TDQN model added
    01232e9a1 callback function and TDQN model added
    8eeaab274 add reward function
    ec813434f ReinforcementLearningModel
    2f4d73eb0 Revert "ReinforcementLearningModel"
    c1e7db313 ReinforcementLearningModel
    05ed1b544 Working base for reinforcement learning model
    
    
    Source code(tar.gz)
    Source code(zip)
  • 2022.11(Nov 27, 2022)

    Highlighted changes

    • FreqUI will now show you all adjustment orders.
    • ShuffleFilter shuffle behavior can now be configured (once per candle (default), once per iteration).
    • Dropped support for 32bit Python under Windows.
    • OKX - bigger timeframes now in UTC (6h+). Please redownload your data for these timeframes! (this impacts mark and ohlcv candles, but not funding rates). :warning:
    • Fix a memory leak in producer/consumer mode caused by pandas.
    • Temporary fix for Kraken data-downloads, which broke mid-November due to an API update.
    • Fix freqAI native installation on M1 Macs.
    • freqAI
      • up to 10x performance boost with indicator caching, vectorized normalization, and optional single precision (reduce_df_footprint = true)
      • FreqaiMultiOutputClassifier allowing as many classifier targets as desired (CatboostClassifierMultiTarget, LightGBMClassifierMultiTarget)
      • Backtest directly on models collected during live/dry run (--freqai-backtest-live-models)

    How to update

    As always, you can update your bot using one of the following commands:

    docker-compose

    docker-compose pull
    docker-compose up -d
    

    Installation via setup script

    # Deactivate venv and run 
    ./setup.sh --update
    

    Plain native installation

    git pull
    pip install -U -r requirements.txt
    
    Expand full changelog
    5c571f565 Version bump 2022.11
    21d740629 Temporary fix for kraken download
    dba30393f ensure extra_returns_per_train are set properly on first hist_preds build
    9af62ad11 Add note to dev docs about freqUI release
    ce213b55a Bybit fix candle limit
    756921b16 Update fthypt file
    79c041b62 Update tests for new export format
    8c014bd36 Export trade-counts to csv
    8ee8b6e94 Improve hyperopt list output
    0f97ef0d7 Reset stoploss_order_id when order is canceled
    1b3e62bcb Lock execute_entry to prevent timing hickups
    c593cdc43 Improve type hints
    5e6cda11e Update method name for trade fee updating
    048119ad3 Improve doc wording around informative pair candle types
    b8d1862ca Update cached binance leverage tiers
    c963fd720 Slightly change test setup for dry_run_order_fill
    335de760e Enable --use-pep517 flag for freqai
    bd05f85c2 Simplify ssl documentation
    fff745fd8 add map to nginx config
    5a489ce71 Fix docs typo
    86ff71152 update docs on reverse proxy
    8cb2b4666 Improve proxy docs
    0fa521704 Improve protection setup
    7c00ef8a7 Bump pre-commit requests version
    adc1174d2 Bump types-requests from 2.28.11.4 to 2.28.11.5
    2df0d613d Bump types-dateutil for precommit
    beec9e2d1 Bump mypy from 0.990 to 0.991
    f09fb2374 Bump orjson from 3.8.1 to 3.8.2
    8d1ee67ed Bump httpx from 0.23.0 to 0.23.1
    844334a7e Bump uvicorn from 0.19.0 to 0.20.0
    ec15ef039 Bump nbconvert from 7.2.4 to 7.2.5
    3f9dacc9b Bump ccxt from 2.1.75 to 2.1.96
    5cce8f4f2 Bump types-python-dateutil from 2.8.19.3 to 2.8.19.4
    0cb08024f Bump numpy from 1.23.4 to 1.23.5
    edb817e2e add tutorial for ssl in docs
    106ac2ab4 fix tests, change to get call
    12b471c64 Prevent 2 parallel open orders through forceentry
    b6a8e421f remove redundant timestamp conversion in ws serializer
    12cd83453 Add warning when queue websocket queue becomes too full
    4c7bb79c8 Restore prior data transfer format
    436b314c8 add safe_remaining
    1975e942d Add test for no remaining
    48e5a4585 rpc_test: dont replicate whole response,
    ce43fa5f4 small fix to websocketchannel and relay
    875e9ab44 change df serialization to avoid mem leak
    9432bcd06 Fix telegram error on force_enter exception
    a993cb512 change to get call in ws_client
    0a7f4fd3c fix httpx test warning
    afcb86f42 Improve migration types
    93addbe5c Improve typechecking
    097af973d improve RPC testcase to cover open orders
    1380ddd06 update ws client
    019577f73 Temporarily Downgrade cryptography until piwheels has the new wheel available
    86e094e39 update docs
    6a1655c04 support ssl connections in emc
    0a702cdd2 Ensure more methods are typechecked
    f27be7ada Configure mypy to old behavior
    a951b4954 Use Generator when sending initial dataframes
    30b467906 Delist FTX, following ccxt's delisting.
    c72ffad69 Add starlette test dependency
    c12dcd9b9 update pre-commit dateutil
    4cece8720 Bump mypy from 0.982 to 0.990
    721998521 Bump types-python-dateutil from 2.8.19.2 to 2.8.19.3
    60449d9be Bump cryptography from 38.0.1 to 38.0.3
    cf5cda4df Bump sqlalchemy from 1.4.43 to 1.4.44
    7275d4851 Bump ccxt from 2.1.54 to 2.1.75
    60de797dc Bump psutil from 5.9.3 to 5.9.4
    b2de07046 bump types-requests
    9843fb208 Bump mkdocs-material from 8.5.8 to 8.5.10
    bbfcaca9e Bump pymdown-extensions from 9.7 to 9.8
    48c4d8d2d Bump types-requests from 2.28.11.2 to 2.28.11.4
    ce269b798 Bump fastapi from 0.85.1 to 0.87.0
    9d8d18d76 Bump pytest-asyncio from 0.20.1 to 0.20.2
    001602e03 Bump nbconvert from 7.2.3 to 7.2.4
    3e6834e3f Bump tensorboard from 2.10.1 to 2.11.0
    42b29cd30 Fix constants type
    1e9e7887a fix constants.py, fix freqai test
    a59d61472 Add test for dataframe footprint reduction
    942840da2 Improve setting wording to keep future possibilities open
    c6013e581 Fix doc typo
    535c365b4 Disable ftx ccxt_compat tests
    fed3bc673 Simplify Websocket Init
    914bdbdd8 Remove FTX from list of supported exchanges
    954da4fec Add "forcebuy error" exception log
    ee0e59157 Update join relationship of orders table to selectin
    8c092d457 Update README.md
    214c62247 move dataframe converter to converter.py
    e46a57bbd move mem logs to debug
    66514e84e add LightGBMClassifierMultiTarget. add test
    054133955 fix loading of metric tracker from disk
    4664d5e1d Split installation to onCreateCommand
    0f9c5f8d4 Simplify timerange handling
    57313dd96 Update some usages of timerange to new, simplified method
    3e676dbaa Add properties to simplify timerange handling
    7147f52e0 FreqAI also requires plotting dependencies
    be83e7341 add pip install
    88ad3fe43 Remove typo from main page
    22c419d5c Add warning about FTX
    9e17eabd0 Improve Bybit configuration
    ec6ee7ead remove empty space
    795328051 remove github.copilot extension
    037363f9e support git and local changes in dev containers #7723
    d3006f7f3 Bump ccxt to 2.1.54
    f43f96704 Improve handling of unfilled stoploss orders in edge-cases
    ea489133a Bump catboost from 1.1 to 1.1.1
    884014a4b Fix some minor typos
    5ba012c59 Disable "tick" in test_update_funding_fees_schedule
    850b04357 Bump mkdocs-material from 8.5.7 to 8.5.8
    d978ff6bf Bump orjson from 3.8.0 to 3.8.1
    0bb57f738 Bump pytest from 7.1.3 to 7.2.0
    37e066bd7 Bump prompt-toolkit from 3.0.31 to 3.0.32
    224507dfa Bump progressbar2 from 4.1.1 to 4.2.0
    f174b41fd Bump sqlalchemy from 1.4.42 to 1.4.43
    01a31a6e0 Bump mkdocs from 1.4.1 to 1.4.2
    1814f2560 Bump xgboost from 1.6.2 to 1.7.1
    3cbbfde6b Bump jsonschema from 4.16.0 to 4.17.0
    29585b5ec Improve worker iteration logic
    2068a44fd Add test for new behavior
    d48a9ae96 Add leverage to backtest results
    1d2b89bc1 Improve handling of get_fee to not allow impossible combinations
    3af177d8a bump ccxt to 2.1.33
    43bdd3496 Optimize reduce_dataframe_footprint function
    25b8d34fe Update backtesting test
    53df60706 avoid duplicating features with okx/gateio, ensure inference timer gets logged
    6e09d552a Properly handle and test ohlcv min_max with empty files
    257c83383 add doc for single precision, dont allow half precision, add test
    d4cfcbda2 move write_metrics_to_disk to proper place in param table
    3ccc120f9 add option to force single precision
    8bdc99a3d fix self-imposed bug
    19d90b813 improve readibility in start_backtesting()
    a7acfb7ab fix dict key error
    90c5bfb4b add default conv_width
    05b309caf ensure colon replaced for cached attach
    6938ed658 change default conv_width to 1
    db942321a fix bug with lightgbm and colons
    d721b5023 flake8
    3ba1e221e fix typo
    6c4bdb8f6 remove special characters from feature names
    356d79b38 verify mean and std exists in model metadata
    ff619edeb Improve explanation comment as to why we're waiting ourselfs
    b749f3edd add latency measure from ping in emc and ws_client
    a0965606a update ws_client more verbosity, better readable time delta
    000b0c219 prevent memory leaks from error in _broadcast_queue_data
    cbede2e27 refactor channel.send to avoid queue.put
    2dc55e89e better error handling channel send
    55bf195bf remove debugging log calls
    c2bdaea84 change exception handling in channel send
    d848c2728 add task done to broadcast queue method
    b3b756ec1 ensure test pass
    e25dea7e0 update channel disconnecting
    ce9273113 ensure backwards compatitibility
    23b6915dd fix issue with different backtesting prediction size
    1a38c10fc remove old code
    255eb7127 start tracking the current candle in FreqAI, add robustness to corr_df caching and inference timer, add test for cache corr_df
    63458a613 isort
    2afa185dc add integrated tests for PCA and DBSCAN
    d9f41e557 Update pyarrow prebuilt wheel
    162056a36 fix flake8
    97df232ac add a warning to __init__ for get_corr_dataframes
    7b880a969 change elect to decide
    fbc281e69 fix grammar, remove hyperlink
    c3c6733b2 add statement of need to FreqAI docs
    0f2e540a6 Update windows documentation about 32bit Windows
    b3f612ecf Bump ccxt to 2.0.96
    aa3d6dc29 Bump uvicorn from 0.18.3 to 0.19.0
    be67eb958 Bump psutil from 5.9.2 to 5.9.3
    39f145e7b Bump websockets from 10.3 to 10.4
    ac86d1945 Bump ccxt from 2.0.58 to 2.0.90
    7e12d0322 Bump colorama from 0.4.5 to 0.4.6
    a5824f5cf Bump pyarrow from 9.0.0 to 10.0.0
    7348a8074 Bump nbconvert from 7.2.1 to 7.2.3
    30f0a4dba Bump pycoingecko from 3.0.0 to 3.1.0
    eb01bed33 Bump scikit-learn from 1.1.2 to 1.1.3
    41c2dc2c6 Bump plotly from 5.10.0 to 5.11.0
    a49edfbae add tests for CatboostClassifier
    d59a7fa2f remove analysis_lock and realign example hybrid strat
    707b224af Update generic CI's to ubuntu 22.04
    391c3f56f Add typehint to corr_pairlist
    bd051cb20 Remove pandas workaround for pi image
    7053f81fa simplified predict and predict_proba using super(). Added duplicate class label check.
    fc53054d4 leverage list length knowledge, f-string change
    f98c7a242 Remove loop of normalization from metadata
    5c14aeddc Add "--log-file" alias for "--logfile"
    501335114 Rename "shuffle" parameter to "shuffle_freq"
    a323acf34 Improve ShufflePairlist to shuffle only once per candle
    c26fda282 fix missing f-string from PR #7611
    650bb8b7d ensure full pair string is used for caching dataframes. If not, revert to old behavior. Update docs.
    352adaf12 Improve readability of is_time_to_refresh function
    b7d2c14f2 Improve trading limits docs to mention upper limits
    c23a9475e Move exchange utilities into separate module
    777af5517 Version bump develop version to 2022.11-dev
    6ef82dd8b minor change to return
    1c9864012 Delete MultiTargetClassifierTestStrategy.py
    a9a3ceadf Delete config_test.json
    255f38537 Simplify stoploss behavior by combining more commonalities
    6e0ca058f Update function-head for _get_stop_params
    cf6b75a3f Use combined stoploss_adjust where possible
    b9bf9edb0 update rapidjson opts
    217add70b add strat and config for testing on PR
    47056eded multi target classifier working but not for parallel
    51be45547 remove np object, make default str
    4d2b7a74f move record params to utils, use rapidjson
    bb0674522 fix tests
    07e813dfa change param record to only get certain params
    c4a2ee05e fix freqai test
    4464e9125 use self.identifier in full path
    5ee3b8cbb update config recording to use all configs, fix tests
    6606a0113 refactoring - remove unnecessary config file
    a9db66808 avoid redundant indicator population for corr_pair list
    4e1bf7923 backtest live models - documentation
    6919f3aa7 Backtest live models - fix utc date convert issue
    01e3507e4 fix freqai backtest live models
    6845a5c6e backtest_live_models - refactoring after PR review
    55ebbeec1 backtest_live models tests refactoring
    0be115de9 backtest_live_models - added new tests and refactoring
    72aa47fc5 backtest_live_models - fix issue with timerange BT and 2 trainings within same candle (no data)
    14b96aaa3 backtesting live models - fix ci issues
    290afd969 backtest_live_models - fix typo
    0318ca9f1 backtest_live_models - fix typo
    22bef71d5 backtest_live_models - add function comments and tests
    ec947ad65 remove commented code - backtest_live_models
    5880f7a63 backtest_live_models - params validation and get timerange from live models in BT
    0ed7b2bfc change start_backtesting to handle backtest_live_models
    7f116db95 added generic function to get timerange from existent models
    3ee7eb63f starting backtest live models
    
    
    Source code(tar.gz)
    Source code(zip)
  • 2022.10(Oct 29, 2022)

    Highlighted changes

    • ProducerPairList - use pairs from a producer in your consumer.
    • Breaking change partial exit values will now be assumed to be stake_amount without leverage.
    • Breaking change custom_stoploss will be called with the candle's high (and corresponding profit) - to better mirror trailing_stop behavior.
    • Support for partially filled exit order cancellations (will be handled as partial exits - unless the remaining value would become unsellable).
    • send_msg() support for websockets and discord.
    • New subcommand list-freqaimodels to visualize available Model classes.
    • Improved iteration throttling, making sure data is available as soon as a new candle is available.
    • FreqAI enhancements
      • tensorboard integration for catboost.
      • new XGBoost freqAI models in XGBoostRFRegressor and XGBoostRFClassifier.

    How to update

    As always, you can update your bot using one of the following commands:

    docker-compose

    docker-compose pull
    docker-compose up -d
    

    Installation via setup script

    # Deactivate venv and run 
    ./setup.sh --update
    

    Plain native installation

    git pull
    pip install -U -r requirements.txt
    
    Expand full changelog
    ec7d66349 Version bump 2022.10
    9e0b39cdd Properly invert sign
    d831d7d31 Rename Freqai hybrid example
    fd5f31368 fix indent in initial df send
    604f966c8 Enhance documentation with full space override sample
    d94c0039e Add missing import to hyperopt docs
    3fa50077c Don't use pydantic to type-verify outgoing messages
    1ef38f137 Fix XGBoost regressor "used before assignment"
    f12d40bd6 Update freqai-running.md
    283dab667 Fix pydantic version pin
    f70c00dd4 Improve variance around worker timing test
    32600a113 fix broadcast
    f93b6eec6 Improve timing for worker throttling
    5bbd86151 Update binance sample config with better blacklist
    6669714a7 Update mal-formatted docstrings
    ba82cd9ba bump types-python-dateutil for pre-commit
    b9bc91a88 Bump correct pandas version
    afe0a29fb Bump pandas from 1.5.0 to 1.5.1
    af89c83fa Bump pymdown-extensions from 9.6 to 9.7
    06311b6a1 Bump pyjwt from 2.5.0 to 2.6.0
    0328cd502 Bump scipy from 1.9.2 to 1.9.3
    bde4fbbc5 Bump types-python-dateutil from 2.8.19.1 to 2.8.19.2
    e516190b6 Bump mkdocs-material from 8.5.6 to 8.5.7
    3480549f4 Bump python-rapidjson from 1.8 to 1.9
    54d029da7 Bump ccxt from 2.0.25 to 2.0.58
    96f4de442 Bump progressbar2 from 4.0.0 to 4.1.1
    c29f96a64 Bump pytest-asyncio from 0.19.0 to 0.20.1
    94b65a007 fix message typing in channel manager, minor improvements
    49ff51f11 Change storage loc and fix test fail
    10090a36d simplify throttle
    d0571464d Improve test for worker throttle
    c36141594 Simplify "refresh" condition
    9cffa3ca2 add comment in channel
    3d7a311ca removed sleep calls, better channel sending
    2b6d00dde initial channel api change
    abcc6dadf use pre-built pyarrow for pi image
    47e93dd2b Update documentation
    3a9853db1 use high/low for custom stoploss evaluation in backtesting
    84a194bca Simplify stoploss logic by removing redundant condition
    547fd2881 Price-jump detection should only run once
    0ff7a0771 Move price_jump_warn to dataloading
    b715d9c52 Improve fee handling
    d1591883a add missing datetime conversion in fromJson
    212b511bb Remove explicit rateLimit setting for freqAI config
    bd424a877 Add Trade from_json method
    0aa840792 Move persistence tests to package
    f4814a7d5 Improve test resiliance to small roundings
    107845afa Keep version number in docker versioning
    60cb11a44 Add price jump warning
    589944055 fix typos - live predictions candles
    073ce1659 remove un-used f-string
    295ba2138 Make extra_returns_per_train values available during backtest
    7192ed7be Fix bug with dataframe not being 0 indexed
    6e95b6667 Modify test ensuring we always have a 0 index
    033c5bd44 Make check constant pred labels agnostic
    c3d4fb9f1 Simplify backtest calling interface
    c7fff1213 Rate-limit EMC startup to avoid overwelming the queue
    441032be2 Fix sys.stdout bug for CatboostRegressorMultiTarget
    b166c04cb Bring back asyncio.sleep to avoid overwelming the a consumer queue
    c8e103e4a Adjust typehints to match return value
    c2914feb1 Don't fail contract size repopulation if pair is no longer available
    caf907e20 Update date-util precommit types
    943f5f21f Improve get_pair_dataframe doc wording
    abe4d32ea Update wording in get_analyzed_dataframe docs
    6cb14148a Fix random test failure due to catboost bug
    6252ae466 Convert position_stacking to attribute of backtest
    8534dfb0d Extract backtest 1 candle from main function
    0e8cf366f Keep trade state in LocalTrade
    5aeea5b14 Bump ccxt from 1.95.30 to 2.0.25
    7ec1e3b94 Bump fastapi from 0.85.0 to 0.85.1
    600b88624 Bump lightgbm from 3.3.2 to 3.3.3
    a9bb7db06 Bump sqlalchemy from 1.4.41 to 1.4.42
    2ddfc7bbb Bump mkdocs from 1.4.0 to 1.4.1
    8550eb513 Bump numpy from 1.23.3 to 1.23.4
    dd3f62ac1 Bump types-python-dateutil from 2.8.19 to 2.8.19.1
    e82baf5f6 Use helper-method to modify trades_open
    82d75d891 Fix tests that failed due to new strategy.
    b7dce8d24 Update stoploss.md
    de9f5660f Fix counting available trade slots in backtesting.
    b6c096d3b Simplify backtest condition
    20fc52177 Fix constant PCA
    99dbba6ca avoid reading from disk to instantiate large objects
    d81eef0b7 add timestamps to each metric, use rapidjson
    05ca725e4 Remove no longer needed local state
    c8e6dad9c use exit_reason to determine left open trades
    498289728 Fix catboost tests polluting CWD
    93ad3810f Add test for list-freqaimodels
    4bfe58706 Generalize "path" variables for resolvers
    2ef315e8c Add documentation for list-freqaimodels
    fda3a2827 add list-freqAI models command
    4a8cb3359 Fix broken tests
    9d4ba767c Update usages of search_all_objects
    1d8d360a1 update _search_all_objects functioning
    7f05b4437 Add eval set to CatboostClassifier
    f01947105 Don't round prices if no custom prices have been used
    7672586de Fix unreliable hyperopt test
    c71c0e8da Fix some typos
    28be784c2 Fix kucoin live test failure
    204578081 Reinstate default of 1000% for roi
    f8331e032 Add model libs info
    75f1a123e Move "tickers_needed" check to pairlistmanager to cover all pairlists
    39c27cfc3 Don't fail if fetchTickers is not availlable
    96e6c1b19 Docs: add `ignore_buying_expired_candle_after` and `order pricing` to summary
    a6f6a1739 Type fetch_ticker
    52e952836 Improve ticker type
    35f3f988d Improve price handling in priceFilter
    afaca2167 use Type Alias for Ticker result to improve keyerror resiliancy
    1e31be562 remove whitespace
    dba1b573b remove tensorboard dir from other pred models
    88b8f1863 add test for metric tracker
    5b5bb8aab catboost tensorboard bugfix
    30a45bb59 add XGBoostRF models to freqai test interface
    16c0fef72 update timestamp calculation to correct int, remove internal ping interval
    eb8c89fe3 move send delay to relay
    5ada5eb54 fix error message, update exception import
    c9eee2eba revert syntax
    724be0afe add tensorboard asset to fai doc
    5ffa3cb9b Update docs to mention `freqaimodels` directory
    ee0d90d1a Automatically create freqai models directory
    002a46c5a Fix typo in docstring
    2ad086dd7 add XGBoost random forest predictors to freqai
    eaae9c9e0 Update docstring format
    60de192d4 Update Classifier docstrings
    d3b2b2972 Update pairlist docstring to be less missleading
    6be9b81f4 Fix workflow syntax error
    d0b163764 Run coveralls only when needed
    f120c6698 types-requests - update pre-commit
    5218fb1df Bump types-requests from 2.28.11 to 2.28.11.2
    13529fabb types-tabulate in pre-commit
    3fcba2fb8 Remove hard-pin on python version in ci
    c1dfa837b Bump mypy from 0.981 to 0.982
    935adc99a Bump types-tabulate from 0.8.11 to 0.9.0.0
    9d2f281ca Bump pytest-mock from 3.9.0 to 3.10.0
    8bb7b94f8 Bump ccxt from 1.95.2 to 1.95.30
    dab2759c2 Bump scipy from 1.9.1 to 1.9.2
    40afa079b Bump tabulate from 0.8.10 to 0.9.0
    337ea04ba Bump nbconvert from 7.0.0 to 7.2.1
    db8cf6c95 disable ping interval in client
    71bbffd10 update ws channel send to add data to queue
    2c76dd9e3 change wait timeout to 30 seconds to better support reverse proxies
    2f64a0862 set channel queue maxsize to 32
    3e8d8fd1b refactor broadcasting to a queue per client
    a4aa1b972 isolate and standardize location of tensorboard files, add doc, ensure backtesting functionality
    76b33359a add an optional metric tracker to collect train timings, inference timings, and cpu load data
    a10b2d003 Add freqai timeframe validation (incl. test)
    4623c3ec1 Improve test resiliance
    4f967fed9 Improve ccxt tests
    db1132beb ensure required_candle_call_count is always set
    8e3a4eca4 Remove unused type:ignore
    4daf0000c Move check and add log warning
    9454fb8f7 Fix discord message sending
    df5ae6625 Refactor webhook method
    1aedf08ba Update tests
    ed12cddf3 Update docs with new wording for webhook settings
    fb2f2d9a3 Allow webhook message setting directly
    e337d4b78 Reset dataframe index after slice
    0460f362f typo in handle func name
    8fcb80df6 Add support for dp.send_msg() to webhooks
    ec7af83c8 add tensorboard to freqai reqs
    d42fb1560 Improve generic exception handler
    a5bf34587 Improve fiat-convert behavior in case of coingecko outage
    fab6b2f10 Align datetime import in fiat_convert
    1595e5fd8 small fix in protocol
    b92b98af2 fix formatting
    3e08c6e54 testing/debugging ws client script
    6e179c769 Only store tick refresh time if we cache
    a9d5e04a4 Remove constant labels from prediction
    86c781798 Add сatboost train_dir for tensorboard
    7c702dd10 Add cache eviction
    92a1d58df Evict cache if we didn't get new candles for X hours
    f475c6c30 Add Specific, time-sensitive test-case for new behavior
    638515bce Test advanced caching
    678272e2e Improve test formatting
    cea017e79 Age out old candles
    b7f26e4f9 Update some formatting issues
    02e238a94 Combine ohlcv data in exchange class for live mode
    edb942f66 Add typing import to sampleStrategy
    9b1fb02df Refactor generic data generation to conftest
    7dbb78da9 Losely pin pydantic to avoid dependency problems
    0d67afe15 allow less precision, ensure regex is catching the right chars
    4edb30bfa isort
    0e0bda8f1 improve freqai tests
    ca913fb29 Add leveraged test-case for order-adjustment
    4df533feb Add missing comma
    5019300d5 Fix for #7534 in bot
    3264d7b89 Fix for #7534 in backtesting
    c1d8ade2f Improve supported exchange check by supporting exchange aliases
    68db0bc64 move check_exchange to exchange package
    a6296be2f Update market_change datatype
    eb8eebe49 Reset open_order_id after trade cancel
    016e43846 Calculate market-change in hyperopt
    bc6729f72 Improve readability of "now_is_time_to_refresh"
    7f308c518 Remove last occurance of timerange index
    7f475e37d refactor refresh_latest_ohlcv
    ca22d857b Improve handling of trades that fail to cancel as they are closed
    3585742b4 remove trailing whitespace
    265795824 make default type for close_price and date_pred np.nan
    c2d0eca9d Remove backticks around FreqAI
    6ecd92de4 Allow updating without changing identifier
    a78d6a05a Bump mypy from 0.971 to 0.981
    3c789bca6 Bump pymdown-extensions from 9.5 to 9.6
    4cf4642a6 Parametrize EMC test
    f3d4c56b3 Bump pytest-cov from 3.0.0 to 4.0.0
    6defa6229 Bump mkdocs-material from 8.5.3 to 8.5.6
    373132e13 Bump ccxt from 1.93.98 to 1.95.2
    70d6c27e3 Bump pytest-mock from 3.8.2 to 3.9.0
    0a7e4d6da Bump mkdocs from 1.3.1 to 1.4.0
    f722104f7 Bump catboost from 1.0.6 to 1.1
    6f7b75d4b Bump time-machine from 2.8.1 to 2.8.2
    b70f18f4c add close price and date to historic_predictions
    1727f99b5 Fix missing mock
    21440eaec Fix typos and correct/improve descriptions
    d0b8c8b1a improve invalid canceled order response handling
    e686faf1b Remove faulty test cleanup
    9bb061073 Improve tests
    308fa4300 Don't use magicmock as trade object
    564318415 Improve test resiliance
    2c94ed2e5 Decrease message throughput
    f4c6b99d6 remove commented lines
    cd514cf15 fix inlier metric in backtesting
    f2b875483 ensure raw features match when PCA is employed
    6702a1b21 Update test to verify webhook won't log-spam on new messagetypes
    8f8b5cc28 Disable log spam from analyze_df in webhook/discord
    201bbbcee Okx formatting
    a96aa568b Add binance futures mode checks
    545d65235 Update okx exception wording
    fad902693 Update updating docs
    cdc01a078 Fix feature list match for pca
    47ef99f58 Simplify interface to notify_exit_cancel
    819488c90 Improve exit message wording
    c946d3059 Add partial cancel message
    649879192 Implement partial sell
    d462f4029 Simple test improvements
    bd664580f Don't unnecessarily reset order_id
    cc06c60fd Fix pandas deprecation warnings from freqAI
    0d8dfc1a9 Force joblib update via setup.py
    f6a0d677d Remove pointless notification assignment
    7dd984e25 Simplify cancel_entry
    561600e98 Remove false test statements
    2d2ff2fff remove unnecessary assignments and comments
    34951f59d Update failing tests
    be4813118 make shuffle false in constants
    38aca8e90 fix failing svm test
    b4fb28e4e Update tests for new dataload strategy
    00965d8c0 Default to assume stored data only contains complete candles
    772abfc6f Add default value for shuffle in docs
    683b08432 Set train-test-split shuffle=False as default and remove stratification
    255c748ca Update docs for new trade_position behavior
    30a5bb08d partial exits should account for leverage
    8eda3a45a Test backest detail with leverage
    af59572cb prior pairlists should go first
    bd106b4b8 Add tests for Producerpairlist
    1bb45a265 Fix crash due to insufficient check
    30d51b693 Move "pairlist" logging to manager
    1c089dcd5 Add docs for Producer/consumer pairlist
    527fd3613 num_assets should be optional
    4940fa7be Add Producer Pairlist
    0c810868d Add Dataprovider to pairlist
    
    
    Source code(tar.gz)
    Source code(zip)
  • 2022.9.1(Oct 2, 2022)

    2022.9.1

    • Fix memory-leak in cases with many pairs.
    • Fix verbose logging.
    • Fix FreqAI bug with PCA enabled.

    Highlighted changes

    • merge_informative_pair now has an optional parameter in suffix - allowing for more control in column naming.
    • Producer/consumer mode - Create a cluster of freqtrade bots.
    • New, fast dataformats with feather and parquet.
    • FreqAI
      • New available Models XGBoost models (XGBoostRegressor, XGBoostClassifier, XGBoostRegressorMultiTarget)
      • FreqAI can now start training new models from the final state of the most recently trained model (continual learning).
      • FreqAI now supports hyperopt.
      • informative_pair() implementation no longer necessary.
      • Builtin feature performance plots.
      • Innovative inlier_metric - quantify how different a prediction data point is from the most recent historic data points.
      • Improved freqAI Documentation structure.

    How to update

    As always, you can update your bot using one of the following commands:

    docker-compose

    docker-compose pull
    docker-compose up -d
    

    Installation via setup script

    # Deactivate venv and run 
    ./setup.sh --update
    

    Plain native installation

    git pull
    pip install -U -r requirements.txt
    
    Expand full changelog
    851d1e9da Version bump 2022.9.1
    59cfde376 Fix pandas deprecation warnings from freqAI
    c53ff94b8 Force joblib update via setup.py
    03256fc77 Merge pull request #7508 from aemr3/fix-pca-errors
    19b3669d9 Decrease message throughput
    6841bdaa8 Update test to verify webhook won't log-spam on new messagetypes
    8e101a9f1 Disable log spam from analyze_df in webhook/discord
    d0456b698 Version bump 2022.9
    80d0e66b4 Update log level in test
    388a572cb Version bump develop version
    ac229b7a4 Reduce message consumer verbosity
    4e920e9c5 Reduce verbosity of sending-message
    fb3d40833 Respect max_open_trades when forceentering
    e9abe3cb6 Ease end of line rules
    7e124618d Move "success" notification to last pipeline step
    7c84edbc2 Avoid online call when asking for `/status`.
    a06372c7b Improve jupyter container install
    42cecb83f Disable base64 loading via API
    e668bf713 Test case to disable base64 strategies via API
    6c491ee02 Update missed changes to plot_feature_importance
    895b15abb Fix rpi CI
    24c1d8498 Fix lineending
    9d462af04 Temporary workaround for PI image
    8c2e473ee Fix  test warning
    43e847ff2 Update to pandas 1.5.0 syntax, avoiding warnings
    bc007ce03 Update binance leverage tiers
    ba8c71469 Require kwargs on ohlcv_load
    eb36105de Fix some random typos
    9f32e02bb Update missing testcase
    4faa6a0bd :bug: updated test case from StaticPairlist to StaticPairList
    32930a269 Bump pandas from 1.4.4 to 1.5.0
    8e0811d9d Call cleanup explicitly
    ed2c960a9 Update types-requests for pre-commit
    a1a62681b add fixes for random test failures
    041258a54 Fix arm test failure
    8ef3a41a0 Bump ccxt from 1.93.66 to 1.93.98
    c4784c669 :pencil2: fixed typo from StaticPairlist to StaticPairList
    5faaa25fa Bump aiohttp from 3.8.1 to 3.8.3
    95a2d43e1 Bump types-requests from 2.28.10 to 2.28.11
    a38f47e1a Bump mkdocs-material from 8.5.2 to 8.5.3
    e54ed5b10 fix runtime error: dict changed size during iteration
    f5535e780 change wording, switch FreqAI word format
    48e89e68b fix typos
    e53f0ce89 Update wheels to build with crypto fix
    adb5b98a3 Fix pre-commit lineending
    677c5719b improve inlier-metric figure
    02dba5304 Revise FreqAI multipage docs structure
    873d2a506 no model save backtest, plot features backtest, ensure inlier plays nice, doc
    873eb5f2c Improve EMC config validations
    1bd742f7e Properly setup pre-commit job
    e63f9e1c1 Use pre-commit in Ci to check for all things
    8d77ba118 Fix line endings
    50dfde704 Remove unnecessary typing import
    53c8e0923 Improve typing in message_consumer
    166ae8e3a Remove missleading comment
    98ba57ffa Better test for contract calculation change
    4efe2e9bc use FtPrecise to convert to contracts and back
    00b192b4d Add test to verify #7449
    2cc00a1a2 Allow use of --strategy-list with freqai, with warning (#7455)
    e429aa16f Add note about enter_tag handling
    6643d90e6 simplify freqAI start_backtesting
    af974443c add test
    6b5d71049 add sleep
    4c7cef570 typo in exception
    b8e1d29a1 catch connectionclosederror
    255ff000a typo in configuration.md
    2fffe7c5d Fix missing comma
    7c093388e Add pyarrow dependency
    4576d291a Update data command outputs
    7e1e388b9 Add feather/parquet docs
    48352b8a3 Update hdf5 handler to reset index on load
    0bbb6faeb Add generic datahandler test
    a4eaff4da Add training elapsed time
    5fb56b09f Test Feather/parquet datahandler init
    983a16d93 Rudimentary "not implemented" test
    044891f54 Add conditional formats depending on mode
    dc2b93228 Add ParquetDataHandler
    3c0d2c446 Add Feather datahandler (no trade mode yet)
    7b4af8542 Remove double-init in test
    f62f2bb1c Improve datahandler tests
    2a5bc58df Split datahandler and history tests
    b7c60e810 improve class diagram
    06a5cfa40 Update "branding" to producer/follower mode
    1626eb7f9 Update dataprovider function name to `get_producer_df`
    e6c5c22ea Update websocket/follower docs
    71e6c54ea Normalise distances before Weibull fit (#7432)
    b1dbc3a65 remove function remove_training_from_backtesting and ensure BT period is correct with startup_candle_count
    6a6ae809f fix jwt auth
    77ed71323 add catch for invalid message error
    128b117af support list of tokens in ws_token
    0811bca8b revise docs, update dp method docstring
    91dc5e7aa Be sure to provide an amount in entry notifications
    08e183fb5 Add note about okx trading mode
    366c6c24d Add docs for External Signals API
    923182680 Explicitly define notification defaults
    f7b8c5a76 Reorder telegram noise sample
    02f2096fc Reverse and fix rangestability conditions
    8f41f943b Fix 0.0 amount message wording
    ff3643168 Adjust tests for new messageType handling
    3b0874eb3 Update exit message handling to gracefully handle kucoins "empty" responses
    0c01b23cb Capture exceptions in send_msg calls
    0bd6ad55a Always show freqtrade version
    8a91c8e22 Sort and dedup pairs before data conversion
    6c18fa084 Update proxy docs
    3274bb075 Remove msgpack for now
    b5fd11f91 protect against unforeseen issues in scanning thread
    32d46e8a6 Improve fixture naming
    703bcc099 Fix list-pair regex to also support 1INCH/USDT
    eb9ac9cbd add --exchange to convert-trade-data
    42c75b4a7 combine log messages
    9b66297cc Fix append
    995396c77 Add useful log info
    ad652817e Ensure train ordering after restart
    ea58c29de Add plot_feature_importance to schema definition
    4a0a0c307 Use json_load to load leverage tiers
    d93093100 Bring back sleep - it'll ensure we give up control over the thread.
    b5f51b5ec Bump fastapi from 0.83.0 to 0.85.0
    15c9b6bf4 Bump mkdocs-material from 8.4.3 to 8.5.2
    cbdb0ce3e Bump pyjwt from 2.4.0 to 2.5.0
    f51271794 Bump ccxt from 1.93.35 to 1.93.66
    4cdc89706 Bump joblib from 1.1.0 to 1.2.0
    8116ca847 move trades_get_pairs to parent class
    a06eee300 move ohlcv_get_pairs to parent class
    584b2381d Fix Imports
    470d5d840 ensure full new pairlist is in the queue
    eaa43337d improve train queue system, ensure crash resilience in train queue.
    edbe9137d Add Common pitfalls
    95457d23c escape freqai-specific characters from file naming
    994c1c5ea use Config typing in more places
    667853c50 Use Alias to type config objects
    188f75d8e set model in models dict
    9f2358815 strategy template - remove pointless noqa's
    7a73adb95 Improve default strategy template
    faf84295a Separate strategy subtemplates for better overview
    ab78fb373 Improve freqAI strategy formatting and readability
    463493626 additional support for --data-dir
    fa3d4b58a Revert unnecessary formatting
    1ef875901 maintian user privacy by keeping plotly offline
    68f7a3150 ensure continued operation despite not being able to plot
    2c23effbf allow plot to plot multitargets, add test
    1c92734f3 simplify plot_feature_importance call
    c210d6614 Reorganise multipage doc
    92a32ab31 Add documentation for stop-market on binance futures
    063511826 Update stoploss on exchange logic
    9f266cbcb Allow safe_price for market stop orders
    ca6dec3d4 Binance spot also allows market orders
    8639c1f23 Reduce complexity in binance stoploss handling
    38b28fc4d Update duplicated test
    4182a7891 Allow leverage tier cache to be 4 weeks old.
    6682ae35b Update cached binance_leverage_tiers
    10ec681b3 Clean up no longer needed informative sample code
    d62cef01b Add test for __informative_pairs_freqai
    0aada271c Move informative_pairs for freqAI to backend
    4422ac7f4 constrain port in config, catch value error
    86aa875bc plot features as html instead of png
    b707a6da3 Add ability to plot feature importance
    e5368f5a1 backtesting confirm_trade_entry should pass correct amount, not stake-amount
    b0b575ead change json serialize to split orient
    1ad25095c change test server from localhost to 127.0.0.1
    7d1645ac2 fix tests and warning message
    8e75852ff fix constants, update config example, add emc config validation
    6126925db message size limit in mb, default to 8mb
    711849abd Use Wheels for win builds
    91bc3d116 Update docs aroudn use_exit_signal
    49800e4cc pin ci python to 3.10.6 for now
    aed19ff6c fix The future belongs to a different loop error
    37dd22c89 Fixed a bug that prevents clearing old models
    06350a13c support specifying message size in emc config
    d75d5a7da debug ping error message
    7a98775f0 Version bump apiVersion
    46a425d1b fix OOM on emc test
    7b6e465d5 Remove gate live test skip
    877d24bcd Fix external dependency of test
    d2abc9417 Simplify ws imports
    79c70bd52 use WebSocketState from fastapi
    aeaca7894 change port in send_msg test
    07aa206f7 real fix for reconnecting
    6d0dfd4dc continue trying connect on ping error
    75ce9067d fix dp test
    bf2e5dee7 add running false on shutdown, fix dp typing
    12a3e90f7 fix tests
    0697041f1 remove copy statement where not needed
    c19a5fbe0 copy data being transferred, remove debug messages in emc
    b6434040d Remove plain json serializer implementation
    867d59b93 Improve type specifitivity
    0052e5891 emc: Fix potential startup timing issue
    a477b3c24 remove log line, fix tests to not connect to actual ip
    10852555e change verbosity of testing log
    457075b82 one more line
    d6205e6cf test logging lines
    f45824acf Bump precommit types/requests
    7ee92db7a Bump aiofiles from 0.8.0 to 22.1.0
    00db473f1 Bump cryptography from 37.0.4 to 38.0.1
    4ac804f79 Bump numpy from 1.23.2 to 1.23.3
    09cdce864 Bump ta-lib from 0.4.24 to 0.4.25
    715a71465 Fix auth bug when no token is set
    c149c47af Bump ccxt from 1.93.3 to 1.93.35
    6968fc333 Bump jsonschema from 4.15.0 to 4.16.0
    a4b7e0a71 Bump fastapi from 0.82.0 to 0.83.0
    1ef334411 Bump types-requests from 2.28.9 to 2.28.10
    6bfe99606 Bump mkdocs-material from 8.4.2 to 8.4.3
    6777d43ae Bump sqlalchemy from 1.4.40 to 1.4.41
    5483cf21f remove default secret_ws_token, set timeout min to 0
    982c0315f Rename variable
    816c1f760 add test for per epoch hyperopt
    72d197a99 Run first epoch in non-parallel mode
    ede282392 add a developers guide
    68a900a9b reorganize freqai docs for easier reading, add detailed file structure description
    78cd46ecd hyperopt Remove unnecessary arguments
    32e13d65c Refactor hyperopt to extract evaluate_result
    a48923c0e Extract widget colorization to separate function
    9c8c7a03a Improve typehint
    ccc70a21f Update pairs_file cli argument description
    4476b5a7f add user_data arg to test-pairlist
    d598f4334 add search share button to website
    0a8b7686d reworked emc tests
    ed4ba8801 more emc tests
    9a1a4dfb5 more ws endpoint tests
    0bc18ea33 call websocket close in channel close
    2afd5c202 update message parsing, tests
    5a0cfee27 allow user to multithread jobs (advanced users only)
    c5d031733 remove old param in test fixture
    a7baccdb7 update log messages in emc, more tests
    866a56495 update emc start/shutdown, initial emc tests
    b3fc1cfde Parametrize classifier tests
    88892ba66 Parametrize regressor tests
    f97f1dc5c Test CatboostRegressorMultiTarget, simplify test setup via parametrization
    d8cdd9214 wrap background cleanup in finally, add tests
    311ae8bf1 freqai backtesting - add startup_candle_count at function description
    60eb02bb6 Add XGBoostClassifier
    10b6aebc5 enable continual learning and evaluation sets on multioutput models.
    daf352e6a Test online candle fetching in futures, too
    79985fda0 fix backtesting freqai startup candles bug
    4250174de Fix ws exception when no token is provided
    b344f78d0 Improve logic for token validation
    170bec043 Fix failing XGBoost tests
    2f6a61521 add more tests
    05581db4e ensure columns are only dropped in training
    939fb7acb Fix enum imports
    97be3318f Use Datetime_format from constants
    37fcbeba5 Update backtesting output wording to Entries
    826eb8525 update confige example
    c13bec26d add freqaimodel to hyperopt command
    6cbc03a96 support jwt token in place of ws token
    a826c0eb8 ensure signatures match, reduce verbosity
    acb410a0d Remove verbosity params
    df6e43d2c Add XGBoostRegressorMultiTarget class
    1b6410d7d Add XGBoostRegressor for freqAI, fix mypy errors
    09679cc79 fix dependency
    d38cc0613 Fix freqai backtesting time range issue
    ad9659769 wording
    445ab1bee update docs
    426f8f37e change var names
    e256ebd72 Add ws_token to auto-generated config
    92d71ebdb Bump python from 3.10.6-slim-bullseye to 3.10.7-slim-bullseye
    46cd0ce99 fix sentence in docs
    1466d2d26 initial message ws docs
    75cf8dbfe missed await
    c5d918075 isort
    bc7295579 improve docs, make example strat hyperoptable
    c9d4f666c minor apiserver test change
    2b9c8550b moved ws_schemas, first ws tests
    b9e7af1ce fix ws token auth
    fac662645 update default timeouts
    b3b0c918d cleanup old code
    379b1cbc9 remove unnecessary returns
    df3c12614 fix mypy error
    9b752475d re-add fix to freqtradebot test
    4fac12544 fix apiserver cleanup issues in tests
    83770d20f fix existing freqtradebot tests
    08726a264 Update FAQ to point out multiple parallel positions per trade
    5e42defaf Update telegram docs to disable partial exit notifications
    9ef0ffe27 Update tests for funding-Fee exceptions
    791f61c08 Add test case for funding fee update failure
    39b6cadd1 Test keyerror case for funding_Fee calculation
    4e15611b0 Don't crash in case of funding fee fetch error
    045c3f0f3 Reduce diff by avoiding unnecessary changes
    f3417a869 Revert condition sequence to simplify conditions
    a50923f79 add producers attribute to dataprovider
    f4f2884a6 Fix freqai backtesting time range issue
    1ef1fc269 docstring and tests
    5934495dd add websocket request/message schemas
    bf3ee5116 validate freqai hyperopt with freqai enabled param
    f8e7ed5d7 Reduce shutdown verbosity of exchange
    a9fd12b81 Allow more dynamic timeframes by disabling "choice"
    e51d35277 ensure pca is handling same DF as inlier
    4c9ac6b7c add kwargs, reduce duplicated code
    5d338e697 change window to timeperiod in hybrid
    48cadbf93 remove duplicate line, change window to timeperiod
    ea7bdac9e ensure inlier metric can be combined with other cleaning methods
    322f00e3e Fix empty entry message if order doesn't fill immediately
    cdc72bf8c Correct indexing
    047ded1ba Check for constant columns
    2c9b76595 add suffix parameter
    972b69910 hyperopt - freqai - change validation to config_validation
    3454a52b9 Explicitly test amount_to_contract_precision
    4d69df08d trunc to amount precision before checking valid partial exits
    83d9f3aeb Add test showing #7365
    95a33ab2e Add amount_to_contract helper in the exchange
    5aba5de20 fix link - hyperopt spaces
    8d16dd804 hyperopt - freqai - docs and refactoring
    b1c026744 mypy fixes
    97077ba18 add continual learning to catboost and friends
    dc4a4bdf0 Wrap cleanup in try/finally handler
    3535aa772 add last_analyzed to emitted dataframe
    d44296783 isort datakitchen
    90ec336c7 Update+correct descriptions and figure (#7323)
    e83c9b276 fix whitespace
    f2f811a2f Fix telegram bug with open partial exit orders
    4b28d0495 fix timestamping, move imports, add words to doc
    8597b52e3 Slightly update docs to link to full sample
    38f14349e move bytes decoding to serializer
    d526dfb17 Revert some more changes in rpc_manager
    4dec19de9 Add comment to explain why we use the non-trimmed DF
    a0d774fdc change default initial candle limit to 1500
    b949ea301 fix failed apiserver tests
    2c8e5b191 fix hyperopt - freqai
    5b826150d fix hyperopt - freqai
    1ea703d52 remove download-data command
    8f261d8ed change from bytes to text in websocket, remove old logs
    9fb3517ad Fix non-resolvable freqai test
    689b19324 improve clarity on data download requirements
    36e5c18fa Don't raise exception when a message is not implemented in telegram
    4628bfa58 Bump jsonschema from 4.14.0 to 4.15.0
    949f618d4 Bump python-telegram-bot from 13.13 to 13.14
    9f5642fd9 fix hyperopt df preprocessing
    48dc1f2d8 Bump pycoingecko from 2.2.0 to 3.0.0
    f5500350f Bump pandas from 1.4.3 to 1.4.4
    6f6afca02 Bump fastapi from 0.81.0 to 0.82.0
    90fbb7947 Bump prompt-toolkit from 3.0.30 to 3.0.31
    3d0385684 Bump ccxt from 1.92.84 to 1.93.3
    af7e4d7bf Bump pytest from 7.1.2 to 7.1.3
    7cc8ac0a3 Bump psutil from 5.9.1 to 5.9.2
    a035a69a6 Bump arrow from 1.2.2 to 1.2.3
    c8a9ac900 fix broken CI
    78d01810e reduce code redundancy, ensure live always gets the latest data
    d43ed186f fix issue with freqai backtesting at slice dataframe
    8a08f8ff8 revert rpc manager
    07f806a31 minor improvements, fixes, old config+constant removal
    160186885 dataprovider fix, updated config example
    ec76214d0 backup historical predictions pickle and load the backup in case of corruption
    3b5e5fc57 fix method name in dummy class
    dae3b3d86 support shutting down freqai
    16573b19e Fix migration syntax error
    5cfb4154e revert all changes in normalize_data()
    c21808ff9 remove metadata redundancy, fix pca bug
    fa8d5b983 add documentation for noise_standard_deviation`
    c9be66b5b increase test coverage for dk, improve function naming, extra cleaning
    ed4cc18cd Migration to check order funding fee
    b95b3d839 Update test to actually test funding fee appliance
    0f483ee31 Use "since last order" approach for live as well.
    0c6a02687 Don't calculate funding fees if we're not going to use them.
    df50b1928 Fix funding fee calculation for backtesting
    80b5f035a Remove typo in log message
    599c1c79f reorganized backtest utilities, test new functionality, improve/update doc
    be192fae9 Test should use proper Order objects
    966de1961 Improve test resiliance by properly setting Order object
    af5460ceb Add option to keep models only in memory for backtest
    05cbcf834 minor logging changes
    cf917ad2f initial candle request limit, better error reporting, split up _handle_producer_connection
    b26126cb5 Don't use ticker['symbol'] but use "pair" instead
    a948e5138 Update futures docs to define pair namings
    5b0b802f3 hybrid json ws serializer
    eb4cd6ba8 split initial data into separate requests
    dccde88c8 fix dataframe serializing
    b53791fef Futures volumepairlist to account for contract size
    00f35f487 remove old constant, add initial_data requesting, minor changes
    11b2bc269 Added missing s
    3f8400df1 Normalise PCA space
    11fbfd340 Remove unnecessary assignment
    61d5fc0e0 Make the recommendation for Binance/Kucoin blacklisting more accurate.
    d6e115178 refactoring freqai backtesting - remove duplicate code
    f3c73189d Remove pointless default on wallet_balance argument
    ba2eb7cf0 Fix BNB fee bug when selling
    57e907872 update example config
    7bed0450d pr review - refactoring backtesting freqai
    c72a2c26c remove external pairlist
    6e8abf867 add producer name to required fields in config
    865b34cd6 add producer names
    510cf4f30 remove data waiting, remove explicit analyzing of external df
    df51da22e refactoring freqai backtesting
    57ff6f8ac Init timerange object properly
    13ccd940d Remove startup_candle_count from freqai sample config to avoid confusion
    7ba4fda5d Implement PR feedback
    4aec2db14 Remove isClose from tests in favor of pytest.approx
    115a90177 minor fix for conditional in handle func
    ddc45ce2e message handling fix, data waiting fix
    346e73dd7 client implementation, minor fixes
    10e0d5386 Simplify 2 more tests
    c9aa09ec8 Simplify base fee handling
    7e8e29e42 use continuous value for inlier_metric
    0b8482360 add documentation for inlier metric
    418bd26a8 minor fixes, rework consumer request, update requirements.txt
    7f52908e8 ensure the lost points are prepended for FreqUI
    a58dd0bbf add noise feature, improve docstrings
    b11742a4c integrate inlier metric function
    d3cb21128 Add inlier metric computation
    50e280866 Fix bug in DI (#7321)
    47f7c384f consumer subscriptions, fix serializer bug
    71846ecbf Partially revert prior commit, use correct exchange class
    7952e0df2 initial rework separating server and client impl
    eee2071e3 Fix non-testing liquidation test
    efc3b39fb Improve config overwriting wording
    62c0a174c allow users to properly reverse train-test data ordering
    27a9f98d5 Simplify liquidation price structure, improve test cov
    226fa5d93 Simplify liquidation price calling structure
    56cd80926 Bump fastapi from 0.79.1 to 0.81.0
    40c00d2d8 Version bump dev version to 2022.9
    d7189847a Bump ccxt from 1.92.52 to 1.92.84
    d734f7612 Bump orjson from 3.7.12 to 3.8.0
    3a7441a27 Bump uvicorn from 0.18.2 to 0.18.3
    49dd1c1d4 Bump scipy from 1.9.0 to 1.9.1
    e9f46f476 Bump nbconvert from 6.5.3 to 7.0.0
    0af4bd294 Bump urllib3 from 1.26.11 to 1.26.12
    e9e872ca2 Bump mkdocs-material from 8.4.1 to 8.4.2
    8c4e68b8e updated example configs
    ff3a4995c remove unnecessary code
    005594c29 simplify hybrid template
    c61b986c3 FTX - support time_in_force (and PO ordertype)
    104a73025 Uppercase TimeInForce (align with ccxt)
    05ca67388 Catch status code errors
    fcceb744c Add janus to requirements.txt
    2b5f06787 Refactoring, minor improvements, data provider improvements
    a998d6d77 fix tests
    bb3523f38 download data homogeneously across timeframes
    e7261cf51 add freqai utils.py file
    65b552e31 make docs reflect reality, move download_all_data to new utils.py file, automatic startup_candle detection
    4b7e640f3 reduce code duplication, optimize auto data download per tf
    3e786a9b8 added example configs
    d474111a6 Renamed to external signals, controller class refactored
    592373f09 Remove pairlist waiting, add .db files to .gitignore
    ac42c0153 deprecate indicator_max_period_candles, automatically compute startup candles for FreqAI backtesting.
    4fa01548f Remove old var from strategy interface
    6f5478cc0 DataFrame transmission, strategy follower logic
    6189aa817 Fix HybridExample formatting
    64b083443 add credit in docstring
    90c03178b provide user directions, clean up strategy, remove unnecessary code.
    739b68f8f ExternalPairList plugin
    b44bd0171 Example Classifier strat
    6834db11f minor improvements and pairlist data transmission
    9f6bba40a initial concept for replicate, basic leader and follower logic
    88dd9920e sort imports for isort
    5155afb4e clean up code remnants
    0c34104e4 extract download-data from freqai to prepare for future async changes
    
    
    Source code(tar.gz)
    Source code(zip)
  • 2022.9(Sep 29, 2022)

    Highlighted changes

    • merge_informative_pair now has an optional parameter in suffix - allowing for more control in column naming.
    • Producer/consumer mode - Create a cluster of freqtrade bots.
    • New, fast dataformats with feather and parquet.
    • FreqAI
      • New available Models XGBoost models (XGBoostRegressor, XGBoostClassifier, XGBoostRegressorMultiTarget)
      • FreqAI can now start training new models from the final state of the most recently trained model (continual learning).
      • FreqAI now supports hyperopt.
      • informative_pair() implementation no longer necessary.
      • Builtin feature performance plots.
      • Innovative inlier_metric - quantify how different a prediction data point is from the most recent historic data points.
      • Improved freqAI Documentation structure.

    How to update

    As always, you can update your bot using one of the following commands:

    docker-compose

    docker-compose pull
    docker-compose up -d
    

    Installation via setup script

    # Deactivate venv and run 
    ./setup.sh --update
    

    Plain native installation

    git pull
    pip install -U -r requirements.txt
    
    Expand full changelog
    665fd5d80 Version bump 2022.9
    ac229b7a4 Reduce message consumer verbosity
    4e920e9c5 Reduce verbosity of sending-message
    fb3d40833 Respect max_open_trades when forceentering
    e9abe3cb6 Ease end of line rules
    7e124618d Move "success" notification to last pipeline step
    7c84edbc2 Avoid online call when asking for `/status`.
    a06372c7b Improve jupyter container install
    42cecb83f Disable base64 loading via API
    e668bf713 Test case to disable base64 strategies via API
    6c491ee02 Update missed changes to plot_feature_importance
    895b15abb Fix rpi CI
    24c1d8498 Fix lineending
    9d462af04 Temporary workaround for PI image
    8c2e473ee Fix  test warning
    43e847ff2 Update to pandas 1.5.0 syntax, avoiding warnings
    bc007ce03 Update binance leverage tiers
    ba8c71469 Require kwargs on ohlcv_load
    eb36105de Fix some random typos
    9f32e02bb Update missing testcase
    4faa6a0bd :bug: updated test case from StaticPairlist to StaticPairList
    32930a269 Bump pandas from 1.4.4 to 1.5.0
    8e0811d9d Call cleanup explicitly
    ed2c960a9 Update types-requests for pre-commit
    a1a62681b add fixes for random test failures
    041258a54 Fix arm test failure
    8ef3a41a0 Bump ccxt from 1.93.66 to 1.93.98
    c4784c669 :pencil2: fixed typo from StaticPairlist to StaticPairList
    5faaa25fa Bump aiohttp from 3.8.1 to 3.8.3
    95a2d43e1 Bump types-requests from 2.28.10 to 2.28.11
    a38f47e1a Bump mkdocs-material from 8.5.2 to 8.5.3
    e54ed5b10 fix runtime error: dict changed size during iteration
    f5535e780 change wording, switch FreqAI word format
    48e89e68b fix typos
    e53f0ce89 Update wheels to build with crypto fix
    adb5b98a3 Fix pre-commit lineending
    677c5719b improve inlier-metric figure
    02dba5304 Revise FreqAI multipage docs structure
    873d2a506 no model save backtest, plot features backtest, ensure inlier plays nice, doc
    873eb5f2c Improve EMC config validations
    1bd742f7e Properly setup pre-commit job
    e63f9e1c1 Use pre-commit in Ci to check for all things
    8d77ba118 Fix line endings
    50dfde704 Remove unnecessary typing import
    53c8e0923 Improve typing in message_consumer
    166ae8e3a Remove missleading comment
    98ba57ffa Better test for contract calculation change
    4efe2e9bc use FtPrecise to convert to contracts and back
    00b192b4d Add test to verify #7449
    2cc00a1a2 Allow use of --strategy-list with freqai, with warning (#7455)
    e429aa16f Add note about enter_tag handling
    6643d90e6 simplify freqAI start_backtesting
    af974443c add test
    6b5d71049 add sleep
    4c7cef570 typo in exception
    b8e1d29a1 catch connectionclosederror
    255ff000a typo in configuration.md
    2fffe7c5d Fix missing comma
    7c093388e Add pyarrow dependency
    4576d291a Update data command outputs
    7e1e388b9 Add feather/parquet docs
    48352b8a3 Update hdf5 handler to reset index on load
    0bbb6faeb Add generic datahandler test
    a4eaff4da Add training elapsed time
    5fb56b09f Test Feather/parquet datahandler init
    983a16d93 Rudimentary "not implemented" test
    044891f54 Add conditional formats depending on mode
    dc2b93228 Add ParquetDataHandler
    3c0d2c446 Add Feather datahandler (no trade mode yet)
    7b4af8542 Remove double-init in test
    f62f2bb1c Improve datahandler tests
    2a5bc58df Split datahandler and history tests
    b7c60e810 improve class diagram
    06a5cfa40 Update "branding" to producer/follower mode
    1626eb7f9 Update dataprovider function name to `get_producer_df`
    e6c5c22ea Update websocket/follower docs
    71e6c54ea Normalise distances before Weibull fit (#7432)
    b1dbc3a65 remove function remove_training_from_backtesting and ensure BT period is correct with startup_candle_count
    6a6ae809f fix jwt auth
    77ed71323 add catch for invalid message error
    128b117af support list of tokens in ws_token
    0811bca8b revise docs, update dp method docstring
    91dc5e7aa Be sure to provide an amount in entry notifications
    08e183fb5 Add note about okx trading mode
    366c6c24d Add docs for External Signals API
    923182680 Explicitly define notification defaults
    f7b8c5a76 Reorder telegram noise sample
    02f2096fc Reverse and fix rangestability conditions
    8f41f943b Fix 0.0 amount message wording
    ff3643168 Adjust tests for new messageType handling
    3b0874eb3 Update exit message handling to gracefully handle kucoins "empty" responses
    0c01b23cb Capture exceptions in send_msg calls
    0bd6ad55a Always show freqtrade version
    8a91c8e22 Sort and dedup pairs before data conversion
    6c18fa084 Update proxy docs
    3274bb075 Remove msgpack for now
    b5fd11f91 protect against unforeseen issues in scanning thread
    32d46e8a6 Improve fixture naming
    703bcc099 Fix list-pair regex to also support 1INCH/USDT
    eb9ac9cbd add --exchange to convert-trade-data
    42c75b4a7 combine log messages
    9b66297cc Fix append
    995396c77 Add useful log info
    ad652817e Ensure train ordering after restart
    ea58c29de Add plot_feature_importance to schema definition
    4a0a0c307 Use json_load to load leverage tiers
    d93093100 Bring back sleep - it'll ensure we give up control over the thread.
    b5f51b5ec Bump fastapi from 0.83.0 to 0.85.0
    15c9b6bf4 Bump mkdocs-material from 8.4.3 to 8.5.2
    cbdb0ce3e Bump pyjwt from 2.4.0 to 2.5.0
    f51271794 Bump ccxt from 1.93.35 to 1.93.66
    4cdc89706 Bump joblib from 1.1.0 to 1.2.0
    8116ca847 move trades_get_pairs to parent class
    a06eee300 move ohlcv_get_pairs to parent class
    584b2381d Fix Imports
    470d5d840 ensure full new pairlist is in the queue
    eaa43337d improve train queue system, ensure crash resilience in train queue.
    edbe9137d Add Common pitfalls
    95457d23c escape freqai-specific characters from file naming
    994c1c5ea use Config typing in more places
    667853c50 Use Alias to type config objects
    188f75d8e set model in models dict
    9f2358815 strategy template - remove pointless noqa's
    7a73adb95 Improve default strategy template
    faf84295a Separate strategy subtemplates for better overview
    ab78fb373 Improve freqAI strategy formatting and readability
    463493626 additional support for --data-dir
    fa3d4b58a Revert unnecessary formatting
    1ef875901 maintian user privacy by keeping plotly offline
    68f7a3150 ensure continued operation despite not being able to plot
    2c23effbf allow plot to plot multitargets, add test
    1c92734f3 simplify plot_feature_importance call
    c210d6614 Reorganise multipage doc
    92a32ab31 Add documentation for stop-market on binance futures
    063511826 Update stoploss on exchange logic
    9f266cbcb Allow safe_price for market stop orders
    ca6dec3d4 Binance spot also allows market orders
    8639c1f23 Reduce complexity in binance stoploss handling
    38b28fc4d Update duplicated test
    4182a7891 Allow leverage tier cache to be 4 weeks old.
    6682ae35b Update cached binance_leverage_tiers
    10ec681b3 Clean up no longer needed informative sample code
    d62cef01b Add test for __informative_pairs_freqai
    0aada271c Move informative_pairs for freqAI to backend
    4422ac7f4 constrain port in config, catch value error
    86aa875bc plot features as html instead of png
    b707a6da3 Add ability to plot feature importance
    e5368f5a1 backtesting confirm_trade_entry should pass correct amount, not stake-amount
    b0b575ead change json serialize to split orient
    1ad25095c change test server from localhost to 127.0.0.1
    7d1645ac2 fix tests and warning message
    8e75852ff fix constants, update config example, add emc config validation
    6126925db message size limit in mb, default to 8mb
    711849abd Use Wheels for win builds
    91bc3d116 Update docs aroudn use_exit_signal
    49800e4cc pin ci python to 3.10.6 for now
    aed19ff6c fix The future belongs to a different loop error
    37dd22c89 Fixed a bug that prevents clearing old models
    06350a13c support specifying message size in emc config
    d75d5a7da debug ping error message
    7a98775f0 Version bump apiVersion
    46a425d1b fix OOM on emc test
    7b6e465d5 Remove gate live test skip
    877d24bcd Fix external dependency of test
    d2abc9417 Simplify ws imports
    79c70bd52 use WebSocketState from fastapi
    aeaca7894 change port in send_msg test
    07aa206f7 real fix for reconnecting
    6d0dfd4dc continue trying connect on ping error
    75ce9067d fix dp test
    bf2e5dee7 add running false on shutdown, fix dp typing
    12a3e90f7 fix tests
    0697041f1 remove copy statement where not needed
    c19a5fbe0 copy data being transferred, remove debug messages in emc
    b6434040d Remove plain json serializer implementation
    867d59b93 Improve type specifitivity
    0052e5891 emc: Fix potential startup timing issue
    a477b3c24 remove log line, fix tests to not connect to actual ip
    10852555e change verbosity of testing log
    457075b82 one more line
    d6205e6cf test logging lines
    f45824acf Bump precommit types/requests
    7ee92db7a Bump aiofiles from 0.8.0 to 22.1.0
    00db473f1 Bump cryptography from 37.0.4 to 38.0.1
    4ac804f79 Bump numpy from 1.23.2 to 1.23.3
    09cdce864 Bump ta-lib from 0.4.24 to 0.4.25
    715a71465 Fix auth bug when no token is set
    c149c47af Bump ccxt from 1.93.3 to 1.93.35
    6968fc333 Bump jsonschema from 4.15.0 to 4.16.0
    a4b7e0a71 Bump fastapi from 0.82.0 to 0.83.0
    1ef334411 Bump types-requests from 2.28.9 to 2.28.10
    6bfe99606 Bump mkdocs-material from 8.4.2 to 8.4.3
    6777d43ae Bump sqlalchemy from 1.4.40 to 1.4.41
    5483cf21f remove default secret_ws_token, set timeout min to 0
    982c0315f Rename variable
    816c1f760 add test for per epoch hyperopt
    72d197a99 Run first epoch in non-parallel mode
    ede282392 add a developers guide
    68a900a9b reorganize freqai docs for easier reading, add detailed file structure description
    78cd46ecd hyperopt Remove unnecessary arguments
    32e13d65c Refactor hyperopt to extract evaluate_result
    a48923c0e Extract widget colorization to separate function
    9c8c7a03a Improve typehint
    ccc70a21f Update pairs_file cli argument description
    4476b5a7f add user_data arg to test-pairlist
    d598f4334 add search share button to website
    0a8b7686d reworked emc tests
    ed4ba8801 more emc tests
    9a1a4dfb5 more ws endpoint tests
    0bc18ea33 call websocket close in channel close
    2afd5c202 update message parsing, tests
    5a0cfee27 allow user to multithread jobs (advanced users only)
    c5d031733 remove old param in test fixture
    a7baccdb7 update log messages in emc, more tests
    866a56495 update emc start/shutdown, initial emc tests
    b3fc1cfde Parametrize classifier tests
    88892ba66 Parametrize regressor tests
    f97f1dc5c Test CatboostRegressorMultiTarget, simplify test setup via parametrization
    d8cdd9214 wrap background cleanup in finally, add tests
    311ae8bf1 freqai backtesting - add startup_candle_count at function description
    60eb02bb6 Add XGBoostClassifier
    10b6aebc5 enable continual learning and evaluation sets on multioutput models.
    daf352e6a Test online candle fetching in futures, too
    79985fda0 fix backtesting freqai startup candles bug
    4250174de Fix ws exception when no token is provided
    b344f78d0 Improve logic for token validation
    170bec043 Fix failing XGBoost tests
    2f6a61521 add more tests
    05581db4e ensure columns are only dropped in training
    939fb7acb Fix enum imports
    97be3318f Use Datetime_format from constants
    37fcbeba5 Update backtesting output wording to Entries
    826eb8525 update confige example
    c13bec26d add freqaimodel to hyperopt command
    6cbc03a96 support jwt token in place of ws token
    a826c0eb8 ensure signatures match, reduce verbosity
    acb410a0d Remove verbosity params
    df6e43d2c Add XGBoostRegressorMultiTarget class
    1b6410d7d Add XGBoostRegressor for freqAI, fix mypy errors
    09679cc79 fix dependency
    d38cc0613 Fix freqai backtesting time range issue
    ad9659769 wording
    445ab1bee update docs
    426f8f37e change var names
    e256ebd72 Add ws_token to auto-generated config
    92d71ebdb Bump python from 3.10.6-slim-bullseye to 3.10.7-slim-bullseye
    46cd0ce99 fix sentence in docs
    1466d2d26 initial message ws docs
    75cf8dbfe missed await
    c5d918075 isort
    bc7295579 improve docs, make example strat hyperoptable
    c9d4f666c minor apiserver test change
    2b9c8550b moved ws_schemas, first ws tests
    b9e7af1ce fix ws token auth
    fac662645 update default timeouts
    b3b0c918d cleanup old code
    379b1cbc9 remove unnecessary returns
    df3c12614 fix mypy error
    9b752475d re-add fix to freqtradebot test
    4fac12544 fix apiserver cleanup issues in tests
    83770d20f fix existing freqtradebot tests
    08726a264 Update FAQ to point out multiple parallel positions per trade
    5e42defaf Update telegram docs to disable partial exit notifications
    9ef0ffe27 Update tests for funding-Fee exceptions
    791f61c08 Add test case for funding fee update failure
    39b6cadd1 Test keyerror case for funding_Fee calculation
    4e15611b0 Don't crash in case of funding fee fetch error
    045c3f0f3 Reduce diff by avoiding unnecessary changes
    f3417a869 Revert condition sequence to simplify conditions
    a50923f79 add producers attribute to dataprovider
    f4f2884a6 Fix freqai backtesting time range issue
    1ef1fc269 docstring and tests
    5934495dd add websocket request/message schemas
    bf3ee5116 validate freqai hyperopt with freqai enabled param
    f8e7ed5d7 Reduce shutdown verbosity of exchange
    a9fd12b81 Allow more dynamic timeframes by disabling "choice"
    e51d35277 ensure pca is handling same DF as inlier
    4c9ac6b7c add kwargs, reduce duplicated code
    5d338e697 change window to timeperiod in hybrid
    48cadbf93 remove duplicate line, change window to timeperiod
    ea7bdac9e ensure inlier metric can be combined with other cleaning methods
    322f00e3e Fix empty entry message if order doesn't fill immediately
    cdc72bf8c Correct indexing
    047ded1ba Check for constant columns
    2c9b76595 add suffix parameter
    972b69910 hyperopt - freqai - change validation to config_validation
    3454a52b9 Explicitly test amount_to_contract_precision
    4d69df08d trunc to amount precision before checking valid partial exits
    83d9f3aeb Add test showing #7365
    95a33ab2e Add amount_to_contract helper in the exchange
    5aba5de20 fix link - hyperopt spaces
    8d16dd804 hyperopt - freqai - docs and refactoring
    b1c026744 mypy fixes
    97077ba18 add continual learning to catboost and friends
    dc4a4bdf0 Wrap cleanup in try/finally handler
    3535aa772 add last_analyzed to emitted dataframe
    d44296783 isort datakitchen
    90ec336c7 Update+correct descriptions and figure (#7323)
    e83c9b276 fix whitespace
    f2f811a2f Fix telegram bug with open partial exit orders
    4b28d0495 fix timestamping, move imports, add words to doc
    8597b52e3 Slightly update docs to link to full sample
    38f14349e move bytes decoding to serializer
    d526dfb17 Revert some more changes in rpc_manager
    4dec19de9 Add comment to explain why we use the non-trimmed DF
    a0d774fdc change default initial candle limit to 1500
    b949ea301 fix failed apiserver tests
    2c8e5b191 fix hyperopt - freqai
    5b826150d fix hyperopt - freqai
    1ea703d52 remove download-data command
    8f261d8ed change from bytes to text in websocket, remove old logs
    9fb3517ad Fix non-resolvable freqai test
    689b19324 improve clarity on data download requirements
    36e5c18fa Don't raise exception when a message is not implemented in telegram
    4628bfa58 Bump jsonschema from 4.14.0 to 4.15.0
    949f618d4 Bump python-telegram-bot from 13.13 to 13.14
    9f5642fd9 fix hyperopt df preprocessing
    48dc1f2d8 Bump pycoingecko from 2.2.0 to 3.0.0
    f5500350f Bump pandas from 1.4.3 to 1.4.4
    6f6afca02 Bump fastapi from 0.81.0 to 0.82.0
    90fbb7947 Bump prompt-toolkit from 3.0.30 to 3.0.31
    3d0385684 Bump ccxt from 1.92.84 to 1.93.3
    af7e4d7bf Bump pytest from 7.1.2 to 7.1.3
    7cc8ac0a3 Bump psutil from 5.9.1 to 5.9.2
    a035a69a6 Bump arrow from 1.2.2 to 1.2.3
    c8a9ac900 fix broken CI
    78d01810e reduce code redundancy, ensure live always gets the latest data
    d43ed186f fix issue with freqai backtesting at slice dataframe
    8a08f8ff8 revert rpc manager
    07f806a31 minor improvements, fixes, old config+constant removal
    160186885 dataprovider fix, updated config example
    ec76214d0 backup historical predictions pickle and load the backup in case of corruption
    3b5e5fc57 fix method name in dummy class
    dae3b3d86 support shutting down freqai
    16573b19e Fix migration syntax error
    5cfb4154e revert all changes in normalize_data()
    c21808ff9 remove metadata redundancy, fix pca bug
    fa8d5b983 add documentation for noise_standard_deviation`
    c9be66b5b increase test coverage for dk, improve function naming, extra cleaning
    ed4cc18cd Migration to check order funding fee
    b95b3d839 Update test to actually test funding fee appliance
    0f483ee31 Use "since last order" approach for live as well.
    0c6a02687 Don't calculate funding fees if we're not going to use them.
    df50b1928 Fix funding fee calculation for backtesting
    80b5f035a Remove typo in log message
    599c1c79f reorganized backtest utilities, test new functionality, improve/update doc
    be192fae9 Test should use proper Order objects
    966de1961 Improve test resiliance by properly setting Order object
    af5460ceb Add option to keep models only in memory for backtest
    05cbcf834 minor logging changes
    cf917ad2f initial candle request limit, better error reporting, split up _handle_producer_connection
    b26126cb5 Don't use ticker['symbol'] but use "pair" instead
    a948e5138 Update futures docs to define pair namings
    5b0b802f3 hybrid json ws serializer
    eb4cd6ba8 split initial data into separate requests
    dccde88c8 fix dataframe serializing
    b53791fef Futures volumepairlist to account for contract size
    00f35f487 remove old constant, add initial_data requesting, minor changes
    11b2bc269 Added missing s
    3f8400df1 Normalise PCA space
    11fbfd340 Remove unnecessary assignment
    61d5fc0e0 Make the recommendation for Binance/Kucoin blacklisting more accurate.
    d6e115178 refactoring freqai backtesting - remove duplicate code
    f3c73189d Remove pointless default on wallet_balance argument
    ba2eb7cf0 Fix BNB fee bug when selling
    57e907872 update example config
    7bed0450d pr review - refactoring backtesting freqai
    c72a2c26c remove external pairlist
    6e8abf867 add producer name to required fields in config
    865b34cd6 add producer names
    510cf4f30 remove data waiting, remove explicit analyzing of external df
    df51da22e refactoring freqai backtesting
    57ff6f8ac Init timerange object properly
    13ccd940d Remove startup_candle_count from freqai sample config to avoid confusion
    7ba4fda5d Implement PR feedback
    4aec2db14 Remove isClose from tests in favor of pytest.approx
    115a90177 minor fix for conditional in handle func
    ddc45ce2e message handling fix, data waiting fix
    346e73dd7 client implementation, minor fixes
    10e0d5386 Simplify 2 more tests
    c9aa09ec8 Simplify base fee handling
    7e8e29e42 use continuous value for inlier_metric
    0b8482360 add documentation for inlier metric
    418bd26a8 minor fixes, rework consumer request, update requirements.txt
    7f52908e8 ensure the lost points are prepended for FreqUI
    a58dd0bbf add noise feature, improve docstrings
    b11742a4c integrate inlier metric function
    d3cb21128 Add inlier metric computation
    50e280866 Fix bug in DI (#7321)
    47f7c384f consumer subscriptions, fix serializer bug
    71846ecbf Partially revert prior commit, use correct exchange class
    7952e0df2 initial rework separating server and client impl
    eee2071e3 Fix non-testing liquidation test
    efc3b39fb Improve config overwriting wording
    62c0a174c allow users to properly reverse train-test data ordering
    27a9f98d5 Simplify liquidation price structure, improve test cov
    226fa5d93 Simplify liquidation price calling structure
    56cd80926 Bump fastapi from 0.79.1 to 0.81.0
    40c00d2d8 Version bump dev version to 2022.9
    d7189847a Bump ccxt from 1.92.52 to 1.92.84
    d734f7612 Bump orjson from 3.7.12 to 3.8.0
    3a7441a27 Bump uvicorn from 0.18.2 to 0.18.3
    49dd1c1d4 Bump scipy from 1.9.0 to 1.9.1
    e9f46f476 Bump nbconvert from 6.5.3 to 7.0.0
    0af4bd294 Bump urllib3 from 1.26.11 to 1.26.12
    e9e872ca2 Bump mkdocs-material from 8.4.1 to 8.4.2
    8c4e68b8e updated example configs
    ff3a4995c remove unnecessary code
    005594c29 simplify hybrid template
    c61b986c3 FTX - support time_in_force (and PO ordertype)
    104a73025 Uppercase TimeInForce (align with ccxt)
    05ca67388 Catch status code errors
    fcceb744c Add janus to requirements.txt
    2b5f06787 Refactoring, minor improvements, data provider improvements
    a998d6d77 fix tests
    bb3523f38 download data homogeneously across timeframes
    e7261cf51 add freqai utils.py file
    65b552e31 make docs reflect reality, move download_all_data to new utils.py file, automatic startup_candle detection
    4b7e640f3 reduce code duplication, optimize auto data download per tf
    3e786a9b8 added example configs
    d474111a6 Renamed to external signals, controller class refactored
    592373f09 Remove pairlist waiting, add .db files to .gitignore
    ac42c0153 deprecate indicator_max_period_candles, automatically compute startup candles for FreqAI backtesting.
    4fa01548f Remove old var from strategy interface
    6f5478cc0 DataFrame transmission, strategy follower logic
    6189aa817 Fix HybridExample formatting
    64b083443 add credit in docstring
    90c03178b provide user directions, clean up strategy, remove unnecessary code.
    739b68f8f ExternalPairList plugin
    b44bd0171 Example Classifier strat
    6834db11f minor improvements and pairlist data transmission
    9f6bba40a initial concept for replicate, basic leader and follower logic
    88dd9920e sort imports for isort
    5155afb4e clean up code remnants
    0c34104e4 extract download-data from freqai to prepare for future async changes
    
    
    Source code(tar.gz)
    Source code(zip)
  • 2022.8(Aug 31, 2022)

    Highlighted changes

    • FreqAI: an interface enabling users to train, backtest, and deploy custom predictive models.
    • Strategies can now send notifications via self.dp.send_msg().
    • Slightly modified liquidation price handling, allowing liquidation prices to change as needed.
    • Support for partial exits through adjust_trade_position(). Make sure to read the documentation to understand how calculations for this will work.
    • Partial exits through FreqUI.
    • /whitelist telegram commands now support optional arguments "sorted" and "nobase".
    • Add --show-timerange to the list-data subcommand to show available timerange.
    • Okx leverage tier caching (Speeds up startup).
    • Improved backtesting results by applying exchange precision limits.

    How to update

    As always, you can update your bot using one of the following commands:

    docker-compose

    docker-compose pull
    docker-compose up -d
    

    Installation via setup script

    # Deactivate venv and run 
    ./setup.sh --update
    

    Plain native installation

    git pull
    pip install -U -r requirements.txt
    
    Expand full changelog
    2403a03fc Version bump 2022.8
    8b0cfe123 Reduce image sizes in freqai doc (#7304)
    a44a235b5 isort imports in tests/freqai
    6634229cc appease the flake8 gods
    fcb5d1cb5 remove debugging flag
    dd628eb52 add tests for outlier detection and removal functions
    1e41c773a fix outlier protection
    22b42e91f add new parameter to freqai doc
    b9f35cadb add /stopentry alias for /stopbuy
    59a723aec Add /health to rest client
    71f7d6878 Fixed mypy error
    c3e74e6e8 Improve doc wording
    2b70c3d0c support price callback for partial exits in bt
    9204f0131 Don't lock pairs on partial exit
    86c5ac44e Add outlier percentage check
    2ef4534fe Fix ccxt / longrun tests
    efe4fd3e2 Add libgomp1 to dockerfile
    01126c43f Fix liquidation price tier calculation
    753d1b2aa Update leverage tier terminology to be clear and aligned with ccxt
    b2d664c63 Change MinPts calculation
    53d46a038 align `max_entry_position_adjustment` behavior of backtesting to live
    1fd223c81 Update --prepend help string
    f2a356a80 Fix some imports
    6636f17e0 Simplify usage of amount_to_contract precision
    9e48e6a40 Update docs about precision limits in backtesting
    205ab26e9 Remove TODO in test
    70df03769 Improve test precision
    32faad933 Fix backtest calculation problem with DCA
    a6d78a861 initialize Since parameter properly
    fe7108ae7 Convert amount to contracts before comparing for close
    78b161e14 add contract_size to database
    6036018f3 Extract contracts_to_amount and amount_to_contracts to standalone functions
    1b0f37a93 Fix documentation typo
    5f38a574c Add okx broker id
    5ce1c6980 Improve DBSCAN epsilon identification (#7269)
    96d8882f1 Plug mem leak, add training timer
    f55d5ffd8 Don't fail when `--strategy-path` is not a valid directory.
    015be770c ccxt now defaults to base volume for all markets
    93d2f7fc8 types-requests bump pre-commit
    ff9ed1aba Bump ccxt from 1.92.20 to 1.92.52
    354d3c0cd Bump time-machine from 2.7.1 to 2.8.1
    eeb177110 Bump jsonschema from 4.9.1 to 4.14.0
    70848a258 Bump types-requests from 2.28.8 to 2.28.9
    3958e53aa Bump mkdocs-material from 8.4.0 to 8.4.1
    dfa7d1fc2 Bump fastapi from 0.79.0 to 0.79.1
    2dc34779d Fix line length
    f6d832c6d Add get_option to expose ft_has via method
    87a311507 Add get_open_trade_count() to simplify getting open trade count.
    085f81ec9 Fix header indent on stake-size-management
    0ec38e0cf Fix typo in docs
    1fb2e9558 Disable caching of leverage tiers in ccxt compat methods
    5b3f03159 Use hyperopt safe amount precision method
    4511634f3 improve test coverage
    738e95b87 Add tests for leverage tiers caching
    b6e8b9df3 Use cached leverage tiers
    52ec0d104 Update binance Leverage tiers
    7563050f1 Realign tests to precision backtesting
    0da060083 Have backtesting respect tradable size
    54ddc1a4c Add --tradingmode alias
    aa3da092a Dont' use classProperty - that's not supported on 3.8
    665cf4431 Add explicit test cov. for .range behavior
    692c6bf1f Added and updated figs and fig descriptions
    88d6a7fbf additional edits
    9c6b745f0 Restructure and improve doc, add fiq
    b9d48c327 use numbers in HyperoptState properly ...
    1389c8f5b Update documentation with show-timerange option
    733f71681 Update documentation
    bc359675a Add --analyze-per-epoch - moving populate_analysis to the epoch process
    09f890454 Extract analysis to separate method
    08ef5ad2d Add HyperoptState enum and container class
    1c6f96657 Hyperopt: simplify parameter "can_optimize" handling
    16af10a5b Update notebook sample with simplified datadir configuration
    b7553d20d Get min/max data in list-data command
    7d84ef2e2 Remove unused imports
    521381ebf undo example strategy newline
    cfa5b3f12 add new line
    277245c69 remove line
    b420614d6 Reduce code duplication in datahandlers
    975bf8fe8 Update Docstring to match actual return values
    47b314353 Simplify and fix some tests
    42eb50851 Attempt fix of #7184
    76a3e97e0 Add migrations end message
    70a77ba3d Check for "last" availability in PrecisionFilter
    1fada53dd remove newline
    85b43ec1a Remove double-check for "isolated margin"
    fde469a25 Remove unnecessary check
    075e9b852 Log Exchange responses for set_leverage
    46e8d9a5e Reduce verbosity when whitelist is empty
    18fab8643 Add dock segment about webserver mode for docker
    0461a8934 Fix test failures
    f70b0bab8 remove line
    66910bfe6 Don't fail if mark candles are missing
    9c38c27ee ignore sample itself distance for avg_mean_dist computation
    72c34291e newline
    398336822 gateio futures is showing base currency in volume!
    c615e1bc6 Avoid loop error during ccxt tests
    b9667f50c Fix random test failure
    e7902bffa Remove checks for dataprovider existance - it's available in all modes.
    e0883a4ea Improve doc wording
    819bc7194 Update docs for freqai docker container
    463cf6688 Fix bad image name
    c8d7c2caa Update CI to build and push freqAI images
    8d182768f stoploss should also use trimmed prices
    0b0e7eaf9 Mutex TTL Cache accesses which can be accessed by multiple threads
    24690c191 Don't convert open_rate to precision
    3b44dc52e Minor corrections
    ea6bc47d7 gateio default configs should specify unknown_fee_rate
    5dde011b3 Add unknown_fee_rate to full sample config
    a1e4fbf31 Run price_to_precision for dry-run orders
    1ac81aa31 Show message if fee update failed due to missing
    4c0fda400 fix input shape warning for LGBMClassifier, add sample_weights/eval_weights
    fa89368c0 Add test for precision backpopulation
    96d2f6181 Properly round timestamps to avoid constant log messages
    b8c1cf010 Fix test leakage if config is available
    15a1c59a9 Backtesting should cache precisionMode
    a73e4f8e4 Truncate amount before comparing for closure
    2fb7a3091 Improve backfill of precisions
    a5b438e41 Run price_to_precision for dry-run orders
    1dd56e35d Ensure comparisions align when closing a trade
    e4b7bcaea Fix some tests
    e81879742 Minor fix in amount_to_precision logic
    c0bdb7181 Update docstring
    f2b6ff910 Accept wrong pair in get_precision_amount
    e6af9a690 Allow empty precisionMode on conversions
    c3f159bd5 Add precision fields to database
    22241c55d Add methods to get precision_amount from markets
    15e85797c Simplify to_precision tests and imports
    6c3233174 Move precision calculations to standalone functions
    c7e171921 Fix interface import sorting
    398b2946b Update test formatting
    dba7d7fd6 Bump ccxt from 1.91.93 to 1.92.20
    6fb5fbdd3 Bump orjson from 3.7.11 to 3.7.12
    bc79027cf Bump mkdocs-material from 8.3.9 to 8.4.0
    2581acd75 Bump filelock from 3.7.1 to 3.8.0
    baa0af68b Bump plotly from 5.9.0 to 5.10.0
    025ff27dd Bump numpy from 1.23.1 to 1.23.2
    96c279f86 Bump nbconvert from 6.5.0 to 6.5.3
    4b708caa6 Bump sqlalchemy from 1.4.39 to 1.4.40
    3f6d42708 add a check for number of training features in tests
    006b11e5d fix leftover bug in indicator population
    8961b8d56 merge in inference timer and historic predictions handling improvements.
    ad846cdb7 fix lock bug, update docstring
    464d99808 Update doc table formatting
    d442383a1 Fix ta-lib install script
    a29402ddd Rename and move analysis_lock to data_kitchen
    3a9ec76c9 Move "freqai.lock" to backend to simplify user interface
    a5e96881f slightly update doc wording
    e7513c96b install py-find-1st from conda forge
    24f1dc4ec Update patched ta-lib install for conda
    044cf8bb2 Allow new whitelist combination in "button" commands
    c9c128f78 finalize logo, improve doc, improve algo overview, fix base tensorflowmodel for mypy
    8d9284a52 Fix docs edit button
    7a2b4dbb9 Fix docs edit button
    58de20af0 make BaseClassifierModel. Add predict_proba to lightgbm
    31be707cc clean up code, add docstrings
    3e38c1b0b take dynamic sized tail off historic_predictions as return dataframe to strategy.
    7d448fd4a allow fit_live_predictions access to current pair
    1f192be43 avoid denormalizing labels twice
    b1b76a2db debug classifier with predict proba
    23cc21ce5 add predict_proba to base classifier, improve historic predictions handling
    61acbf21d Fix broken telegram tests
    7075b00e2 Remove odd dry run stoploss behavior
    7c18ec405 Add missing key to "full" config sample
    e09fbe9e5 Improve test resiliance
    d36da9594 Fix bad import
    82ac8cb41 Add freqai backtesting_load test
    0b92c30ab Fix typo in test file
    5aaab75d1 Add test for dynamic_pairlist_expand
    1ac6ec144 Fix failing test...
    b682fc446 Graciously fail if strategy has freqAI code, but freqAI is not enabled.
    c190d57f1 Test populate_any_indicator interface
    3918f4abb Simplify strategy interface by removing explicit self.freqai_info assignment
    3b827ee60 Add "freqai.enabled" flag to disable freqAI via config flag
    49989012a Bump catboost requirement to latest
    f6545ebdb Disallow backtesting with --strategy-list for now.
    e3a5b97b4 Update recalc_from_trades to use FtPrecise
    9513c39a1 Fix migration rounding test
    3bcb47d75 Remove usage of Decimal
    902afc2f0 Use FtPrecise in interest calculation
    da253f12f Bump CCXT to required version
    0e61c2d05 Replace Decimal with FtPrecise in trade_model
    2312b86a6 Update telegram-usage.md
    ccc0ad6f6 fix - reload whitelist
    923f73a51 nobase -> baseonly
    fb4b73ce8 ensure dates are saved
    b427c7ff1 Use diff. close time to avoid buggy behavior
    d93bb8219 Add more Commits to failing test
    aa1bf2adb Try fix windows testfailure
    cc885e25a Improve NAN Handling in RPC
    de690b0a6 Use PEP440 compatible versioning
    dd4e44931 Improve NAN handling in RPC module
    f7502bcc9 slightly update dca_short test
    2cae3c42e remove trade database analyzer, clean up a bit
    ace962648 Update tests for sorted and nobase
    c0d60c63a Optional /whitelist args - sorted, nobase
    ed004236c Add float initializer to FtPrecise
    e7cb1b737 Wrap Precise into  FtPecise
    91d0c9128 improve docs
    adc8ee88e Move periodicCache to Utils package
    573964b19 Dry Market orders should update "remaining"
    ce2c9bf26 Slight renaming of variable
    736884c5a Orders should be allowed to have empty fill/remaining values
    b5c5a95b6 FTX: Use conditionalOrders endpoint to get proper stop-market order id
    4289c5c68 update freqai logo
    5a16d5a51 Deactivate database analyzer if user does not use sqlite
    e7de81294 Allow user to user pair_dict for persistent storage of custom data
    aef086b02 Improved dict typing, timeframe parser, collect dates associated with training data points
    02646a4a0 Update scikit-learn in freqai deps
    77b3b8a13 Use main exchange instead of creating a separate instance.
    20b413478 Properly exclude catboost in ARM
    0c7d862aa types-requests bump pre-commit
    71c88244f Bump ccxt from 1.91.55 to 1.91.93
    97c077171 Bump types-requests from 2.28.6 to 2.28.8
    a45a35f38 Bump jsonschema from 4.9.0 to 4.9.1
    7fd3f98ae Bump scikit-learn from 1.1.1 to 1.1.2
    11a2eb6cc Bump flake8 from 5.0.1 to 5.0.4
    ea64f43e5 bring back auto DF resizing for okx
    67c722c9c fix asyncio bug
    e48e82232 Force response API to js to fix faulty system configs
    0b2104fc7 Properly increment the api version
    5182f755f Add debug setup documentation
    6ded2d5b7 Improve forceexit API test
    d3780b931 Add test passing  leverage to execute_entry
    d1998f7ed Fix forceexit calling
    eff8cd7ec Add leverage to force_entry
    daf015d00 extract nested force_exit function to private instance function
    82aecc81f Accept parameters to forceexit
    aaa534900 Add script for patching conda libta-lib
    78e129034 Update docs to specify trading limit behaviour
    eb8bde37c Add lightgbm classifier, add classifier check test, fix classifier bug.
    bfa859e61 Remove unnecessary method (simplify)
    5250189f7 Add Rollback function to Trade
    47a30047e Fix typo
    b16f57cb0 Minor stylistic fixes
    c172ce101 improve flexibility of user defined prediction dataframe
    45d68222a Reduce verbosity of Fiat Converter
    fdc82f830 add doc section for classifier
    f8f1ade16 Reduce function complexity by extracting message sending
    268763394 Test iterative sending of /status
    b12dd15f4 Send multiple messages in /status  if required
    07763d0d4 add classifier, improve model naming scheme
    ce8fbbf74 ensure loading historical df matches frequi indices
    60d782e5c remove unnecessary function
    a42a060ab fix DB once and for all. Make DBSCAN more efficient and robust.
    a3799c4d5 start frequi with historical data if available
    29b7b014e fix bug in DB path initialization
    db1d36794 fix bug associated to fit_live_predictions_candles
    26de992d2 ensure user sets startup candles in backtesting mode
    05ec5c5e5 generalize database url path for any db type
    954540245 Improve defaults for config builder
    29e41cc81 Update docs to reflect correct result
    7675187c3 Use telegram message length to avoid constants
    cffc76954 Fix /profit endpoint calculations for partial sells
    c6e121ffb Update tests with correct usdt mock trades
    a8541d86f Edit index of `custom_stake_amount`
    debc73b65 Edit Typo Custom-stake-amount
    df4a5a757 Bump python from 3.10.5-slim-bullseye to 3.10.6-slim-bullseye
    51a6b4289 improve DBSCAN performance for subsequent trainings
    fe1b8515a fix bug in DBSCAN, update doc
    febd80911 Fix typo
    29225e4ba add DBSCAN outlier detection feature, add supporting documentation
    778833f90 Modify comment in new test-strategies to point out their purpose
    95327750d Final abs. profit should not be doubled in rpc messages
    eae82d022 fix bug with database url during backtesting. comment out example trade db analysis.
    95d3009a9 give user ability to analyze live trade dataframe inside custom prediction model. Add documentation to explain new functionality
    ae0d6f63f Version bump ccxt to 1.91.55
    895ebbfd1 Exclude aarch64 from catboost requirements
    d75e0a982 Fix Flake8 errors after flake update
    707a4e7c9 types-requests bump pre-commit
    f3154a431 Bump jsonschema from 4.7.2 to 4.9.0
    3013282db remove non-catboost stuff from schema
    97064a9ce Bump pypa/gh-action-pypi-publish from 1.5.0 to 1.5.1
    79b650258 Bump urllib3 from 1.26.10 to 1.26.11
    ed230dd75 Bump orjson from 3.7.8 to 3.7.11
    372be5425 Bump types-requests from 2.28.3 to 2.28.6
    b4ded59c6 Bump flake8 from 4.0.1 to 5.0.1
    a75fa26ca Bump scipy from 1.8.1 to 1.9.0
    7a696f58f Bump ccxt from 1.91.29 to 1.91.52
    946d4c7cf fix trailing whitespace for flake8
    4e68626bc ensure convolutional window is prepended for frequi consistency
    d83010560 *BREAKING CHANGE* remove unnecessary arguments from populate_any_indicators(), accommodate tests
    153336d42 move corr_pairlist expansion to after expand_pairlist()
    659870312 Use JSON Schema validation for freaAI schema validation
    cbb05354a Add install variant for freqai
    a4bada3eb Partial exit using average price (#6545)
    61693f6c8 fix tests after changing config_example file
    e6ebc0443 make single generalized config for freqai. update docs to reflect that.
    09e5fb2f5 Removed description header
    c2eaa3d2c add image of algorithmic overview to doc
    bad15f077 Simplify fetch_positions by using already existing method
    dc82675f0 Add Test for liquidation in stop-loss-reached
    d046f0cc5 Improve method wording for liquidation price setter
    dba7a7257 Use stop_or_liquidation instead of stop_loss
    845cecd38 Add stoploss or liquidation property
    4da96bc51 Update docs
    15752ce3c Rename set_stoploss method to be fully private
    ff4cc5d31 Revamp liquidation test to actually make sense
    9852733ef Improve tests to align with modified logic
    f57ecb186 Simplify adjust_stop test
    8711b7d99 Liquidations cannot be rejected.
    995be90f9 Liquidation should be a separate exit type
    dd8288c09 expose full parameter set for SVM outlier detection. Set default shuffle to false to improve reproducibility
    f22b14078 fix backtesting bug, undo move of label stat calc, fix example strat exit logic
    08d3ac7ef add keras and conv_width to schema and documentation
    59624181b isort BaseRegressionModel imports
    c84d54b35 Fix typing issue, avoid using .get() when unnecessary, convert to fstrings
    efbd83c56 Small type and typo fixes in freqai_interface
    a2a0d35a2 Update missing typehints
    f31106dc6 Minor comment fixes
    31ddec834 Add missing test to confirm backtesting won't send messages
    0adfa4d9e Add tests for dataprovider send-message methods
    7bac05466 Add documentation and clarity for send_msg
    229e8864b Add send_msg capability to dataprovider
    bc760b7eb Simplify small segment in datadrawer
    324e54c01 fix possible memory leak associated with Catboost Pool object
    3f149c406 fix return type in BaseTensorFlowModel
    ad25a4cb5 reduce number of pair_dict lookups, remove coin_first
    fb4e8430c isort auto import sorting
    e213d0ad5 isolate data_drawer functions from data_kitchen, accommodate tests, add new test
    56b17e6f3 allow user to pass test_size = 0 and avoid using eval sets in prediction models
    55cf378ec remove leftover breakpoint from test file
    897f18a8c ensure proper integer type casting for timestamps. Add check test for backtesting subdaily time periods
    7b105532d fix mypy error and add test for principal component analysis
    4abc26b58 add test for follow_mode
    c9d46a523 finish bringing follow_mode up to date
    ab587747f first fix for follower path bug
    520ee3f7a Convert freqAI into packages
    1885deb63 More docstring changes
    70b7a254a Update some areas to use default docstring formatting
    88e10f730 add exception for not passing timerange. Remove hard coded arguments for CatboostPredictionModels. Update docs
    fff39eff9 fix multitarget bug
    95f5218ce Reenable Catboost test (#7118)
    f3d46613e move prediction denormalization into datakitchen. remove duplicate associated code. avoid normalization/denormalization for string dtypes.
    81c1aa3c1 Update imports in freqAI sample strategies
    8a3cffcd1 Remove remaining CustomModel references
    62f7606d2 Update tests to new variant
    8fa6e8b4b Remove freqAI model bridge in favor of `self.freqai`
    c91e23dc5 let user avoid normalizing labels
    50d630a15 remove unnecessary comments from data_drawer.py
    a1cff377e add record of contribution to data_kitchen.py
    c2d6a0e89 add record of contribution to doc and source
    3acc86957 improve the dataframe key description, update outdated parts of doc
    36dc9be7a Update some docs wording
    5559e605b small PR conversation resolutions
    40f00196e use cloudpickle in place of pickle. define Paths once in data_drawer.
    accc629e3 set separate table sections in doc
    98c8a447b add LightGBMPredictionMultiModel
    afcb0bec0 clean up obsolete comments, move remove_features_from_df to datakitchen
    0b21750e7 Reorder advanced topics
    ac0f48491 add freqai logo to top of doc
    3205788bc extend doc to include descriptions of the return values from FreqAI to the strategy
    8033e0bf2 add counter to backtesting log so users know how many more pairs and how many more models will need to be trained
    183dec866 remove ability to backtest open ended timeranges (safer)
    e694ea1cf make sure backtesting gets the populated indicators with slimmed down user strat
    ca4dd5864 remove superceded function from datakitchen
    8f86b0dea *breaking change* simplify user strat by consolidating feature loops into backend
    e7337728b add separator in folder name just incase an asset ends in an integer
    c9a6dc88a add parameter list/discriptions to doc
    6c5e48dd4 dev-dependencies should include freqAI
    a99c12626 help windows builds pass freqai tests. Add freqai to README.md
    4e5d60fdc match scikit-learn version to hyperopt required version
    921a7ef21 add requirements-freqai.txt to builds
    286bd0c40 follow string for adding a strat to tests/strategy/strats
    c43935e82 create dedicated minimal freqai test strat
    88d769d80 comment out problematic catboost test
    d43c14667 add more tests for datakitchen functionalities, add regression tests for freqai_interface train/backtest
    ac2e8d760 Added description heading to README.md
    9c051958a Feat/freqai (#7105)
    714d9534b start adding tests
    ed0f8b118 Improve FreqAI documentation (#7072)
    921f3899f revert pickle reading for historic predictions
    41eeb9917 load pickle file for writing
    9d184586f fix bug in historic prediction saving
    ca2029a46 fix issue when bot restarts with same identifier, does not load prediction history
    4141d165f add BaseTensorFlowModel class
    ef409dd34 Add ground work for TensorFlow models, add protections from common mistakes
    fea63fba1 Fix saving/loading historic predictions
    8ce6b1831 start collecting indefinite history of predictions. Allow user to generate statistics on these predictions. Direct FreqAI to save these to disk and reload them if available.
    3fc92b1b2 Create BaseRegression model - designed to reduce code duplication across currently available models.
    607455919 Change config parameter names to improve clarity and consistency throughout the code (!!breaking change, please check discord support channel for migration instructions or review templates/FreqaiExampleStrategy.py config_examples/config_freqai_futures.example.json file changes!!)
    819cc9c0e Fully align LightGBM with Catboost
    58b18770e Fix LightGBM missing argument in predict method
    2e1061af6 Fix faulty LightGBM model
    d9acdc976 remove excess, increase no model warning clarity
    4cac67fd6 Catch infrequent issue associated with grabbing first candle
    eda9464d3 Fix docs test
    bd3a6ba2f update backtesting to handle new output framework
    8ac8d53c3 All LGBMRegressor model parameters are now set in config
    4ff0ef735 fix bug returning multiple targets for training
    ffb39a502 black formatting on freqai files
    106131ff0 Rehaul organization of return values
    93e1410ed first step toward cleaning output and enabling multimodel training per pair
    6c7d02cb1 expose nu in the SVM outlier detection via svm_nu in config
    7dfbd432d fix config saving bug, assign priorities to pairs in scanning, sleep the scanning loop to reduce CPU usage
    68bafa951 archive config to the model folder, filter out features before returning dataframe to strategy (to alleviate frequi issues)`
    051b99791 reduce unnecessary verbosity, fix error on first training sweep, add LightGBMPredictionModel
    852706cd6 Fix default behavior for expiration_hours
    b35c64b6c fix bug in backtest, typo in example strat
    3599d18ff fix bug in follow_mode, thanks @blood4rc
    6da7a9885 add docstrings to new functions, remove superceded code
    f631ae911 add model expiration feature, fix bug in DI return values
    61040c9f8 Fix freqAI dockerfile not running freqai code ...
    0b0688a91 ensure scanning purges models
    121edc3e4 Add freqAI docker file
    c5de0c49e first functional scanning commit
    4d472a0ea merging datarehaul into scanning branch
    c981ad460 Fix missing space
    75a248cf4 Fstring freqAI sample strategy, remove duplicate features
    d9b79d94e increase candle update flexibility to allow long sequential trainings that may last more than one candle
    66800c7a4 ensure newest candles are always appended
    f8f25e36e update example config/strat
    15d049cff detect if upper tf candles are new or not, append if so. Correct the epoch for candle update check
    cab8f517b add lock to datadrawer
    4b26b6aae add lock to any historic data access
    3c2e314ee Fix bugs
    e6c5e737a Fix other bugs
    bf19055e5 Update function spelling
    2451ed8c8 Quick bug fix
    d6b8801f4 fix follower bug
    e8c0dcf9f add debug message to timerange
    f2762e3b4 fix bug in return_values()
    16b4a5b71 rehaul of backend data management - increasing performance by holding history in memory, reducing load on the ratelimit by only pinging exchange once per candle. Improve code readability.
    15a971346 catch infinity values when filtering
    7d41542f9 process_only_new_candles in examplestrat should be True, thanks @Bloodhunter4rc
    fea39254d fix custom_exit (thanks @paranoidandy)
    b37c31cc2 fix ta-lib issue with simultaneous method access
    4ac6ef297 make defining period intervals more user friendly and flexible
    ace951bf7 another queue bug fix for fresh starts
    833d25bda Save data after queue reorg
    0b0dd8dd8 Force high priority pair to be trained before anything else.
    7523ed825 automatically detect maximum required data based on user fed indicators (to avoid NaNs in dataset for rolling indicators), add new config parameter for backtesting to let users increase their startup_candles to accommodate high timeframe indicators, add docs to explain all. Add new feature for automatic indicator duplication according to user defined intervals (exhibited in example strat and configs now).
    9b3b08a2b let follower purge old model files
    bac4ced38 Ensure follower predictions are persistent and uniquely stored
    70adf5564 Automatically detect and change follower data_path to accommodate remote systems
    0306f5ca1 Add autopurge feature so that FreqAI cleans up after itself when it no longer needs old models on disk
    45f4f0f60 ensure follower sends back null arrays in case leader hasnt created a model file yet
    29d2f59f1 fix PCA bug
    606f18e5c Add follow_mode feature so that secondary bots can be launched with the same identifier and load models trained by the leader
    5b4c649d4 detect variable sized dataframes coming from strat, adjust our stored/returned data accordingly
    e22990238 fix bug in previous commit
    a20651efd Increase performance by only predicting on most recent candle instead of full strat provided dataframe. Collect predictions and store them so that we can feed true predictions back to strategy (so that frequi isnt updating historic predictions based on newly trained models).
    2f1a2c1cd allow users to store data in custom formats, update spot config to reflect better target horizon to training period ratio
    d59eac332 revert a79032b
    a79032bf7 fixing bug in training queue
    3f7226327 allow pairs deeper in the queue to get trained if the higher priority pairs dont need training
    cc6cae47e allow pairs deeper in the queue to get trained if the higher priority pairs dont need training
    4eb4753e2 allow subdaily retraining for backtesting
    0aa716205 ensure the prediction is reset in the pair_dict after any trade exit, not just custom_exit
    fe36b08fc fix key error in example strat
    ce365eb9e improve example strat so that it has dynamic buy and sell logic according to original prediction
    4eb29c881 Dont reset pair priority if it doesnt successfully train
    83dd45372 catch errors occuring on background thread, and make sure to keep the ball rolling. Improve pair retraining queue.
    e54614fa2 remove remnants of single threaded version, ensure pair queue priority is checked before retraining
    2a4d1e2d6 fix bug in setting new timerange for retraining
    7870a86e9 fix live retraining bug
    0bf915054 handle key check correctly
    c5a16e91f throw user error if user tries to load models but feeds the wrong features (while using PCA)
    b8f9c3557 dirty dirty, dont look here (hacking a flag to avoid reloading leverage_tiers in dry/live)
    891fb8771 give load_cached_data_for_updating the right flags to avoid redownloading data in dry/live
    65fdebab7 let load_pairs_histories load futures candles in live
    c080571b7 help futures go dry/live with auto download feature
    8a501831d fix the error logic on previous commit
    23c30dbc1 add error for user trying to backtest with backtest_period<1
    619320501 fix bug for target_mean/std array merging in backtesting
    ff531c416 reduce `complexity` inside start_download_data() in an effort to appease flake8
    d79983c79 try to pass flake8
    7593339c1 small cleanup
    b79d4e887 Allow user to go live and start from pretrained models (after a completed backtest) by simply reusing the `identifier` config parameter while dry/live.
    7486d9d9e proper validation of freqai config parameters
    7ff325860 remove assertions, log error if user has not assigned freqai in config, fix stratify bug
    35bed842c cleanup, add clarity to comments and docstrings
    58b5abbaa improve multithreaded training queue system
    31ae2b306 alleviate FutureWarning in sklearn about ensuring svm model features are passed with identical order
    255d35976 add priority metadata to pairs to avoid a sync of train time + train period
    059c28542 paying closer attention to managing live retraining on separate thread without affecting prediction of other coins on master thread
    b0d2d13eb improve data persistence/mapping for live/dry. This accommodates quick reloads after crash and handles multi-pair cleanly
    e1c068ca6 add config asserts, use .get method with default values for optional functionality, move data_cleaning_* to freqai_interface (away from user custom pred model) since it is controlled by config params.
    dede12864 set process_only_new_candles to true in example strat
    ee3cdd0ff more cleanup
    3587bd82e cleanup superceded code
    af0cc21af Enable hourly/minute retraining in live/dry. Suppress catboost folder output. Update config + constants + docs to reflect updates.
    42d95af82 Aggregated commit. Adding support vector machine for outlier detection, improve user interface to dry/live, better standardization, fix various other bugs
    c5ecf9417 move live retraining to separate thread.
    1fae6c9ef keep model accessible in memory to avoid loading objects from disk during live/dry
    67eb94c69 download-data will now check if freqai is active in config, and if so will also download data for corr_pairlist
    89eacf2f4 Retrain model if FreqAI found a pretrained model but user strategy is not passing the expected features (user has changed the features in the strategy but has passed a the same config[freqai][identifier]). Logger warning output to user.
    c708dd318 doc update thanks matthias
    c81b96079 Fix some typos
    db66b82f6 accept open-ended timeranges from user
    d1d451c27 auto populate features based on a prepended % in the strategy (remove feature assignment from config). Update doc/constants/example strategy to reflect change
    8664e8f9a create a prediction_models folder where basic prediction models can live (similar to optimize/hyperopt-loss. Update resolver/docs/and gitignore to accommodate change
    80dcd88ab allow user to run config from anywhere on their system
    9e94d2886 add timerange to backtest commnad
    e5759d950 fix typo
    f4296173e use bash visual in doc
    717df891b use bash visual in doc
    a8022c104 give beta testers more information in the doc
    a7029e35b ensure informative pairs includes any combination of whitelist - corr_pairlist
    9b3e5faeb create more flexible whitelist, avoid duplicating whitelist features into corr_pairlist, update docs
    22bd5556e add self-retraining functionality for live/dry
    178c2014b appease mypy
    a4f5811a5 fix flake8 issue in arguments.py
    aae233bd6 try passing the check tests
    f653ace24 another attempt at fixing datalength bug
    b08c0888b add USERPATH_FREQAIMODELS, remove return values from @abstract methods
    b03c7b514 optional style for interfacing freqai with backtesting
    e9a7b68bc revert constants.py and add changes
    302021809 fix bug on backtest timerange
    00ff0c9b9 ensure user defined timerange truncates final backtest so that we arent mismatching data lengths upon return to strategy. Rename DataHandler class to FreqaiDataKitchen
    66715c5ba update doc
    def71a0af auto build full_timerange and self manage training_timerange
    764f9449b fix logger, debug some flake8 appeasements
    29c2d1d18 use logger in favor of print
    99f7e44c3 flake8 passing, use pathlib in lieu of os.path to accommodate windows/mac OS
    2600ba4e7 remove unused remnants
    630d20154 remove trained_stake
    b40f8f88a cleaning and bug fixing
    fc837c4da add freqao backend machinery, user interface, documentation
    
    
    
    Source code(tar.gz)
    Source code(zip)
  • 2022.7(Jul 30, 2022)

    Highlighted changes

    • Add "leverage" as argument to custom_stake_amount() call.
    • Show candle values (ohlc) in telegram notifications (off by default!).
    • Fix hyperopt for derived/inherited strategies.
    • Improved dry-run fee handling, using maker/taker fees where appropriate.
    • Hyperopt now supports --timeframe-detail (be very careful with memory usage!).
    • New parameter required_profit in StoplossGuard.

    How to update

    As always, you can update your bot using one of the following commands:

    docker-compose

    docker-compose pull
    docker-compose up -d
    

    Installation via setup script

    # Deactivate venv and run 
    ./setup.sh --update
    

    Plain native installation

    git pull
    pip install -U -r requirements.txt
    
    Expand full changelog
    28b477308 Version bump 2022.7
    d70650b07 Add note for plot-dataframe and current-whitelist
    cc3ead9d7 Set required_profit for stoploss guard, allowing to ignore small stoplosses.
    2595e40e4 Remove unused test-strategy
    a0b938875 Bump ccxt to 1.91.29
    4c68bec17 Fix problem in `is_cancel_order_result_suitable`
    ea112fb58 Add test for empty order (cancelled order)
    47b52d4ba Bump types-dateutil in pre-commit
    40969f20b Bump types-python-dateutil from 2.8.18 to 2.8.19
    93340f546 Bump mypy from 0.961 to 0.971
    43343d0e5 Revert markdown to 3.3.7
    3ce46ff09 Bump types-requests in pre-commit
    f93a3a5fc Bump ccxt from 1.90.89 to 1.91.22
    98d0ad76b Bump types-requests from 2.28.1 to 2.28.3
    d5933fb2a Bump mkdocs from 1.3.0 to 1.3.1
    1b49e4522 Bump orjson from 3.7.7 to 3.7.8
    83cac7bee Improve some more tests by adding proper orders
    6e691a016 Use leverage-tiers loading in tests
    2eb1d18c2 Don't load leverage tiers when not necessary
    7682c9ace Update trade_close test to include orders
    24a786bed Update rpc test to contain sell order
    80845807e Improve some test resiliance
    a02d02ac1 Enhance protections tests to have orders in mock trade
    5c4f60f37 Improve configuration table formatting and ordering
    e97468964 Add support for --timeframe-detail in hyperopt
    32c3f6293 Fix documentation typo
    b609dbcd8 Update mdx_truly_sane_lists to be compatible with markdown again
    75e190ff1 Update sell-test without filled buy order
    0daa9d3e5 Bump types-requests in pre-commit
    ea523136f Bump types-requests from 2.28.0 to 2.28.1
    d2ef24878 Bump markdown from 3.3.7 to 3.4.1
    f07ad7aa8 Bump ccxt from 1.90.88 to 1.90.89
    cb63d5e3d Bump fastapi from 0.78.0 to 0.79.0
    5f820ab0a Bump pytest-asyncio from 0.18.3 to 0.19.0
    2c6fb617a Bump jsonschema from 4.6.2 to 4.7.2
    46be1b877 Version bump ccxt to 1.90.88
    05a5ae4fc Update plotting to use entry/exit terminology
    9347677c6 Uppdate pricecontours test to not recreate backtesting every loop
    423af371c Simplify calculation by calling "get_fee" only once
    4172f92bf simplify dry-run taker/maker selection
    8b2535a8d Update Typing for fees
    bf07d8fe8 Update test to properly patch/mock exchange
    357000c47 Extract exchange validation to separate method
    d03dfb393 Oder cost is real cost (including leverage)
    ed64e4299 Stoploss orders should also be eligible to update closed fees
    415780a4f gateio order cost is not in contracts
    7b8a5585d Fetch 2ndary stoploss order once the order triggered.
    7c4dd4c48 Support fee cost as string
    40e2da10f Add hypeorpt cloudpickle magic
    e53e53087 Add test showing broken inheritance hyperopt
    2e642593e Update formatting of hyperopt_conf fixture
    29efe75a6 Update hyperoptable strategy to use V3 interface
    1c7f60103 Don't use master for publish CI action
    fada432f4 Pin markdown docs dependency
    b657a4df2 Improve hyperopt docs
    cdc58058d Add candletype to notebook example
    5c164efdb Also check for createLimitOrder as optionals
    b9ba94d64 Bump ccxt to 1.90.47
    bf992fd9d Add test for newly added functionality
    f9d3775d4 Move "candle" logic for message to telegram
    9a3a2f901 Simplify adding candle to message
    8e8f026ea Telegram candle message should be configurable
    ec3179156 Revert unwanted changes.
    64f89af69 Add Explicit test for "has" checks
    6ac1aa15f Reenable ccxt order checks
    f8e35d876 Add TODO to disabled test
    523d8a84a skip "supports market order" for now until CCXT fixes their assignemnt bugs.
    7d6b3d0e0 Update hyperopt param docs to be clear that non-conclusive parameters will be ignored
    0bb8c8feb Bump python-rapidjson from 1.6 to 1.8
    c06b524b4 Bump urllib3 from 1.26.9 to 1.26.10
    7c6c2c4d6 Bump cryptography from 37.0.2 to 37.0.4
    7b998378c Bump numpy from 1.23.0 to 1.23.1
    fa158ba8d Bump pre-commit from 2.19.0 to 2.20.0
    719fa6f8e Bump orjson from 3.7.6 to 3.7.7
    c98786a4f Bump jsonschema from 4.6.1 to 4.6.2
    b1d34dba9 Bump ccxt from 1.90.40 to 1.90.41
    5070a04a8 Bump mkdocs-material from 8.3.8 to 8.3.9
    9086176f7 Bump pytest-mock from 3.8.1 to 3.8.2
    494e0529d Update conftest for leverage tiers
    9313a2d29 Update leverage tiers to latest version
    ea5f41aa6 Version bump ccxt
    aab59a8ca Bump ccxt to required version
    c98e7ea05 Revert allowing empty currency for futures
    b7167ec88 Fix wrong fee calclulation for gateio futures
    5b733a723 use "fees" for trades responses
    81f7d77d7 Allow fee currency to be empty for futures
    2499276fc Refactor calculate_fee_rate to take separate parameters instead of an "Order"
    e52f82b56 Add leverage to custom_stake_amount callback
    b39508f64 remove loadMarkets from "required" section,
    2dc46ca0b Add cost to partial test buy order
    dbc3376fe Add alias for gate to gateio
    514f7d491 change rejected to denied
    647f9b546 replace the word abortion with rejected in log messages
    6f0721ae2 Update dry-order-fix to use sqlalchemy internals
    fe8083c7f Improve test for dry-run orderclosing
    6da3fa08e Update migrations to also support Postgres
    5820fc3b4 Bump jsonschema from 4.6.0 to 4.6.1
    0a8a0c66b Bump requests from 2.28.0 to 2.28.1
    dd21d963f Bump ccxt from 1.89.14 to 1.89.96
    9a8d03b1f Bump uvicorn from 0.18.1 to 0.18.2
    0555d7783 Bump python-telegram-bot from 13.12 to 13.13
    b16bb23cc Bump prompt-toolkit from 3.0.29 to 3.0.30
    92d189a84 Bump orjson from 3.7.3 to 3.7.6
    405ea74f1 stopPrice
    7fe8b7661 Display the signal candle analyzed in telegram.
    10cbb5e67 test_exchange::test_taker_or_maker fixes
    86ad5dd02 test_exchange::test_taker_or_maker fixes
    dac9931b4 test_create_dry_run_order_fees
    5d9aee6b7 test_taker_or_maker
    e8803477d exchange/exchange add param taker_or_maker to add_dry_order_fee
    
    
    Source code(tar.gz)
    Source code(zip)
  • 2022.6(Jul 3, 2022)

    Highlighted changes

    • New sub-command backtesting-analysis - allowing detailed entry/exit reason analysis.
    • Hyperoptable parameters can now be added to the instance (self) from within bot_start().
    • Improved handling of old orders after longer "downtime".
    • Specific Discord webhook message formatting.
    • Open orders will now be shown in the UI detail pane.
    • Relative profit is shown in /daily, /weekly and /monthly telegram commands.
    • buy/sell Telegram messages now contain a marker if the trade was made in a dry run.
    • Additional metrics in /profit telegram command.

    How to update

    As always, you can update your bot using one of the following commands:

    docker-compose

    docker-compose pull
    docker-compose up -d
    

    Installation via setup script

    # Deactivate venv and run 
    ./setup.sh --update
    

    Plain native installation

    git pull
    pip install -U -r requirements.txt
    
    Expand full changelog ``` c1d407851 Version bump to 2022.6 07aa372e2 Ensure bot_loop_start is called in hyperopt, too c5e6520fe Reorder methods in freqtradebot f2fdc2137 Only use exit_tag if exit_type i exit_signal 906c7b92f Add enhance testcase to show problematic exit_reason behavior 86f407702 update dateutil precommit f2bc35e05 Bump types-python-dateutil from 2.8.17 to 2.8.18 74471e41d update tabulate precommit types 8b1798522 Bump types-tabulate from 0.8.9 to 0.8.11 0c69a0886 update requests precommit f6e058a32 Bump types-requests from 2.27.30 to 2.28.0 d60127a6d Bump time-machine from 2.7.0 to 2.7.1 82ef97af7 Bump pandas from 1.4.2 to 1.4.3 01185ab48 update cachetools precommit 9a9d1a897 Bump orjson from 3.7.2 to 3.7.3 0ef2c812d Bump ccxt from 1.88.15 to 1.89.14 6510c8d33 Bump tabulate from 0.8.9 to 0.8.10 efee148e4 Bump types-cachetools from 5.0.2 to 5.2.1 8b7dc031f Bump plotly from 5.8.2 to 5.9.0 963f38a69 Bump sqlalchemy from 1.4.37 to 1.4.39 45db2347d Bump mkdocs-material from 8.3.6 to 8.3.8 4840c7d2f Bump pytest-mock from 3.7.0 to 3.8.1 92dbb0d36 Bump uvicorn from 0.17.6 to 0.18.1 b5d0bc997 Clarify stoploss behavior when not defining offset 2b07d3461 Revert several undesired changes ddc355feb Bump numpy from 1.22.4 to 1.23.0 90feccf33 slightly update custom dockerfile with add. comment 53e5483da Store StopPrice for dry-run orders 15fac746a Bump mkdocs-material from 8.3.4 to 8.3.6 3189b284c Fix tests condition 1cd2b0504 Run regular tests for 3.9 under other ubuntu systems e1e3a903f Bump ccxt from 1.87.12 to 1.88.15 996372b8f Bump colorama from 0.4.4 to 0.4.5 50c19ece5 Fix ccxt test gateio flukyness f9668ede4 Fix CI Syntax error 0804fc7a3 CI should run ccxt tests only once 55fb7656d Update pre-commit cachetools 840601026 Bump types-cachetools from 5.0.1 to 5.0.2 0d967f93b Improve performance of some RPC calls 0809f9aef Add offset to trade response 0168343b7 Add trading-volume to api schema 474e6705e Add Profit factor to backtesting 53bfa7931 Add rudimentary test for prior bug 8c46d1907 Fix backtesting bug b7e4dea6c Document new Profit metrics 40c9abc7e Add trading volume to /profit output 6a15d36d1 Add Drawdown and profit_factor to /profit d77ce468e Add "dry" hint to buy/sell messages 03815cb81 Use fstrings in telegram messaging d62273294 Update /help for /fx to align with actual command name 017fd0318 Fix but with late entries in backtesting 616bf315c gateio: futures market orders require IOC to be set. fda8248d4 Gateio allow market orders on futures markets 6bdf9c2a9 Simplify trade profit calculations further 91f9818ae Simplify trade calculations d7770c507 Remove implicit use of certain rates in profit calculations 76cae8e8e Update tests to always provide rate to profit calculations 575b4ead1 Update Test with funding_fee 0 14a859c19 Improve some documentation around futures / leverage 8f32fa5cb Avoid exception on exchange recycling if __init__ fails f9e2e8734 Improve some formatting and typehints e2e6c790b Minor doc update 4a5ed5a27 Fix tests c391ca08d Change backtesting-analysis options to space separated lists 29d8aeb9b Don't fail on invalid parameter 3c62df6b8 Ensure the same timestamp is used for backtest and signal export 6bb342f23 Add export-filename support 01a68e106 Remove unnecessary check and condition 1ffee96ba Fix protection parameters not loading from parameter file d5fd1f9c3 Improve order filled handling 848a5d85c Add small stability fix to test 35adeb641 Bump plotly from 5.8.0 to 5.8.2 850f5d384 Bump orjson from 3.7.1 to 3.7.2 fdca583c6 Bump pymdown-extensions from 9.4 to 9.5 cb2f89bca Bump requests from 2.27.1 to 2.28.0 43b8b0a08 Bump mypy from 0.960 to 0.961 71f314d4c Bump ccxt from 1.85.57 to 1.87.12 ee0b9e3a5 Bump mkdocs-material from 8.3.2 to 8.3.4 e67d29cd2 Update more trades to use create_mock_trades 70966c8a8 Bump actions/setup-python from 3 to 4 8fd245c28 Update pre-commit filelocktypes 43c871f2f Use time-machine to stabilize time-sensitive tests 390e600f5 Update statistics output 40c7caac1 Bump types-filelock from 3.2.6 to 3.2.7 7619fd08d Update telegram tests to use mock_trades dff83ef62 Update telegram profit test to USDT 56652c2b3 Improve test resiliance c9761f473 FreqUI should be installed by default when running setup.sh 4b70e03da Add some rudimentary tsts for discord webhook integration fdfa94bcc make discord notifications fully configurable. f816c15e1 Update discord message format 3a0633760 Update API to provide new values. 9ba11f7bc Update docs and tests for new daily command 76827b31a Add relative profit to daily/weekly commands 0a801c022 Simplify daily RPC test 1a5c3c587 Simplify weekly/monthly tests, convert to usdt ab6a306e0 Update daily test to USDT 2c7c5f9a6 Update mock_usdt trade method 76f87377b Reduce decimals on FIAT daily column 714239412 remove random_state condition ad3c01736 time aggregate to only query for data necessary dce9fdd0e don't overwrite is_random 8fb743b91 improve variable wording 3c2ba99fc Improve sql cheatsheet docs a9c7ad8a0 Add warning about sqlite disabled foreign keys 1ddd5f190 Update docstring throughout the bot. 88f8cbe17 Update tests to reflect new naming b211a5156 Add test for strategy_wrapper lazy loading a54700160 Reduce Telegram "unit" stats d4dd02631 Consolidate monthly stats to common method 3cb15a2a5 Combine weekly and daily profit methods c550cd8b0 Simplify query in freqtradebot d265b8adb Bump python from 3.10.4-slim-bullseye to 3.10.5-slim-bullseye 7eacb847b Fix backtesting bug when order is not replaced ac40ae89b give extra info on rate origin for confirm_trade_* 381d64833 version-bump ccxt 9534d6cca Cancel orders which can no longer be found after several days 057be5094 Remove old concurrency method 0b806af48 Add orders column to btresult 82c5a6b29 Update CI to use concurrency ea9b68bad Add updating freqtrade to updating desc 99f6c75c4 Bump types-requests precommit 05922e9eb Bump ccxt from 1.84.39 to 1.84.97 4affa75ff Bump sqlalchemy from 1.4.36 to 1.4.37 963dc0221 Bump types-requests from 2.27.29 to 2.27.30 35316ec06 Bump jsonschema from 4.5.1 to 4.6.0 6547f3aad Bump mkdocs-material from 8.2.16 to 8.3.2 04cb49b7e Bump filelock from 3.7.0 to 3.7.1 786bc3616 Bump orjson from 3.6.8 to 3.7.1 79107fd06 Add minimal order object serialization 8369d5bed Include open orders in json responses c0ff554d5 Cleanup old, left open dry-run orders f70922294 Properly close out orders in backtesting c499bb051 Allow empty unfilledtimeout for webserver mode a790bad1e Add entry_tag to leverage callback 27bea580d Fix rest-client script's force_enter eb4adeab4 fix flake8 issues 45c47bda6 refactor into discord rpc module afd8e8583 feat: add support for discord notification ea537b32c Update tests for leverage_tier_loading cce8d1aa4 Update get_market_leverage_tiers to be async be6e0813d Remove --strategy from analysis test c285ad0e2 Remove --strategy parameters, update docs 056047f63 Fix --help 9a068c0b1 Add test for each analysis group, remove default table output if not indicator-list 24b02127e Update docs df1c36e5a Change command name, use load_backtest_stats for strategy resolving e7c5818d1 First pass changes for cleaning up 43b7955fc Fully rely on pathlib 145faf981 Use tmpdir for testing 21e6c14e1 Final test changes f5c293088 Presume that pytest will call the cleanup call 2873ca6d3 Add cleanup, adjust _print_table for indicators, add rsi to test output edd474e66 Another test fix attempt 22b9805e4 Fix all tests 3adda84b9 Update docs, add test 8c03ebb78 Fix group 0 table, add pathlib.Path use 80c6190c0 Fix analyze_commands setup ae1ede58d Fix import order a1a09a802 Add analyze_commands 9488e8992 First commit for integrating buy_reasons into FT 2b61aa282 Removed None in dict.get()
    
    
    </details>
    
    Source code(tar.gz)
    Source code(zip)
  • 2022.5.1(Jun 1, 2022)

    2022.5.1

    • Fix edge-case bug in backtesting (colliding canceled and replaced orders).
    • Fix deleting trades when position adjustment (DCA) orders time out.

    Highlighted changes 2022.5

    • New adjust_entry_price() callback - to adjust open entry limit orders.
    • New command convert-db to migrate databases between database systems.
    • Dry-run orders no longer reset on bot restart.
    • Certain Protections can now only look at longs or shorts, and only lock this direction.
    • Updated binance leverage tiers to contain new pairs.
    • Multiple exit-sigals are evaluated in sequence, causing changed behavior for confirm_trade_exit(), which can now be called multiple times for the same trade with different exit signal types.
    • download-data now respects the timerange end date.
    • download-data now allows data-prepending.
    • LowProfitPairs now supports "only_per_side" for futures trading.
    • Fixed OKX historic data download (:warning: Warning- requires manual clearing and redownload of existing data)

    How to update

    As always, you can update your bot using one of the following commands:

    docker-compose

    docker-compose pull
    docker-compose up -d
    

    Installation via setup script

    # Deactivate venv and run 
    ./setup.sh --update
    

    Plain native installation

    git pull
    pip install -U -r requirements.txt
    
    Expand full changelog
    c57db0a33 Version bump 2022.5.1
    34a44b9dd Fix backtesting bug when canceling orders
    66edbcd3d Fix slight backtesting bug in edge-case scenarios
    354917637 Update missleading docstring
    88845f6d8 Fix cancel order deleting trade
    d950b0acb Update documentation about dynamic parameters
    8e2c7e129 extract detect_parameters to separate function
    f323cbc76 Bump types-requests precommit
    5bf021be2 Enhance hyperoptable strategy to test instance parameters
    eaa656f85 Hyperoptable parameters can be instance attributes
    2b2967f34 Bump types-requests from 2.27.27 to 2.27.29
    386d3e035 Rename stop/roi loading method
    ad8ff10a0 Minor doc changes
    41052b4e1 Bump types dateutil precommit
    23fa00e29 Bump ccxt from 1.83.62 to 1.84.39
    a937f3699 Bump mypy from 0.950 to 0.960
    9366c1d36 Bump mkdocs-material from 8.2.15 to 8.2.16
    e7c78529e Bump types-python-dateutil from 2.8.16 to 2.8.17
    b52fd0b4d Bump python-telegram-bot from 13.11 to 13.12
    f65df4901 Update doc clarity
    e6affcc23 Move parameter file loading to hyper-mixin
    1ee08d22d Delay parameter init
    a875a7dc4 Use unified stopPrice for binance
    f64f2b1ad Fix /stats Formatting issue in multi-message settings
    a1d54f5ae Version bump 2022.5
    3e7bf6a9e Remove imports in test_strategy2
    b04fe5d4e Simplify test v2 strategy
    24cf04464 Fix bybit spot mode
    682daa4e9 Reset logging mixin to avoid random test failure
    e1c6cf5f9 fix typo
    537d10c62 Improve some typing
    3e66275c9 Refactor bot_start to separate function
    023f81717 Improve wording for supported futures exchanges
    b2968df5d Fix some type problems
    43f726ba8 Run CI against different templates
    a8ee77cd5 Simplify backtesting typechecking
    904f094b8 Don't reassign method, but implement it properly
    0a713faca Fix some type errors
    f1a72e448 Align interfaces and strategy templates
    3f68c3b68 Update some types
    502404c0c Use pyproject.toml  instead of setup.cfg
    7f4161ff7 Add typehints to strategy wrapper
    07ec3b27f Add typing information to retrier decorator
    42ae8ba6f Refactor hyperopt parameters to separate file
    5c4014ee6 Change default value of process_only_new_candles to True since False is an uncommon usecase for expert strategy devs
    34b1231df Bump filelock-precommit
    b88dfe429 Bump types-filelock from 3.2.5 to 3.2.6
    cc3ec279c Bump dateutil types precommit
    596aeec65 Bump scikit-learn from 1.1.0 to 1.1.1
    66497c28e Bump pre-commit requests types
    7f5650699 Bump types-requests from 2.27.25 to 2.27.27
    34657639f Bump numpy from 1.22.3 to 1.22.4
    ff9dcfe78 Bump types-python-dateutil from 2.8.15 to 2.8.16
    40f63ae51 Bump scipy from 1.8.0 to 1.8.1
    f819fafa1 Bump psutil from 5.9.0 to 5.9.1
    27019339b Bump ccxt from 1.83.12 to 1.83.62
    e3beaae8b update hyperopt typing
    0b5544ef9 Stoploss fill should fill as "filled" notification
    938a66511 Update Documentation for new confirm_trade_exit behavior
    3692fcd3d Improve exit signal sequence
    ce3bfd59f Add explicit should_sell test
    b7388557a Update interface tests
    bdb904e71 Should_exit should return all sell signals
    1315d0243 Fix startup sending "longed" messages for open stoplosses
    26d394ca7 Add liquidation Price to api response
    ea8fda0de Slightly improve test
    f006978ca Be more explicit in default value
    681ef1317 Relax dry-run leverage test-case to simplify future updates
    97abcf4b3 Add documentation for leverage_tiers update
    963cc17c1 Update leveraged tiers
    0d388b561 Add test for "combine_funding_and_mark", fix bug
    2df42a303 Move "funding fillup" logic to exchange class
    6bd5535d6 Use exchange method to combine funding and mark candles
    0e158b66b Update docs link
    c499a92f5 Remove surplus mark columns, and make fillna on funding rate only
    c3e3188c6 Rename variable
    843bf0631 Remove Sponsored Promotions
    b3acfb3c6 Bump ccxt to 1.83.12
    2cf17e04b Init persistence for tests that use dry-run orders
    46ea135b6 Update dry-run considerations
    219363fff Check for both ask and bid in SpreadFilter
    56a73575a Add explicit test for order_to_ccxt
    5e18e51ce Fix some tests
    a3d9384bc Remove clean-dry-run code
    0a95ef6ab Don't reset open orders in dry-run on restart
    363098d32 Fix reversed makr/funding_rate columns
    736f9f497 Fix docs and add outer join support for merging funding rates across full timerange
    d5486f17d Update Test to use StrategyV3
    c41d4c4f4 Fix leverage docs
    37e4ede65 Fix flake issues
    bb758da94 Add support for fudging unavailable funding rates, allowing backtesting of timeranges where futures candles are available, but rates are not
    c6bf6779f Update docs BT sample report and details.
    bb7ffd8fb Update testcases relying on BT results.
    0585b378b BT: Report canceled/replaced orders also.
    6e8f24f6a BT: track canceled/replaced orders also.
    905b24bd4 Update BT report detailing.
    a2a8e4fdc Update doc BT sample report.
    99aea454b Update testcases to match reporting.
    f2e2e5723 Report trade entries canceled by user.
    fb7c0792c Track trade entries canceled by user.
    76637d393 Simplify timeframe-transition
    2e65a1793 Add fallback to load 1M files as well as 1Mo files
    a1048fb61 Store monthly candles as "Mo"
    9607d0427 Improve ccxt imports
    d09b46293 Add rudimentary tests for Precise "builtin operator" workings
    c8e0fc926 Update to do Builtin Precise math
    a793cf8f0 Use ccxt's "precise" to do precise math
    528509f80 Extract get_price_side from get_rate
    f5183df0f Bump scikit-learn from 1.0.2 to 1.1.0
    bd65236e1 Bump pyjwt from 2.3.0 to 2.4.0
    dd1b84f93 Bump filelock from 3.6.0 to 3.7.0
    a8b4066f8 Bump mkdocs-material from 8.2.14 to 8.2.15
    9e44d6977 Bump ccxt from 1.81.81 to 1.82.61
    9fc21686e Bump flake8-tidy-imports from 4.7.0 to 4.8.0
    748055892 Bump plotly from 5.7.0 to 5.8.0
    47c116a42 Bump fastapi from 0.76.0 to 0.78.0
    4fc6857d8 Bump time-machine from 2.6.0 to 2.7.0
    2cb8eecf1 add space
    e21f6a778 missing newline
    008ee1488 Improve ci to run on ubuntu 22.04
    86af3fe0e Update image versions from 3.9 to 3.10
    a0b25938f Fix exit_reason assignment in backtesting
    a8f064a8c Fix exit_reason assignment in live mode
    706994340 Fix bad docstring
    18fd3bb33 Update stoploss handling for entry-order adjustment
    9143e9ecb Add some safety measures for new startup_candles verification
    d60d0f64d Revert ohlcv_candle_limit logic for okx
    116b58e97 add "date_minus_candles" method
    a947a1316 Add test to ensure stoploss is set properly in live
    3b1443924 Slightly improve performance of order adjusts
    c27e0a0a1 Allow SL refresh only if no filled entry orders.
    ec54b47b6 Flake fix.
    1c20fb763 Refresh open_rate and stoploss on order replacement.
    5767d652b Add explicit test and document behavior
    2a1368d50 Offsetfilter: add number_assets parameter
    bb1b283d9 Update some ohlcv_candle_limit calls
    111b04c9e Okx - conditional candle-length
    64668b11d  add ohlcv_has_history - disabling kraken downloads
    64670726a flake8 fix
    9d13c8729 cleaned up backtesting
    71a80cab3 fixed variable naming style
    8a3c2c6ca Corrected docstring
    c299601ec Add warning about OKX futures backtesting data
    1fc041d0d Fix formatting issue
    b2b503f04  minor polish for explanation of --breakdown
    8a6a6ec91 corrected minor "typo" in formatting
    f374c9da7 PR cleanup
    044afdf7a Add better test scenario
    31cce741a Add sequence migration
    269630e75 Add preliminary documentation for database conversion
    c19be34e7 Add rudimentary test for db migration
    0958c06b8 Implement database migration to other system
    c3b0f6b64 Add feature shell for database conversion
    35ec657ef Bump types-tabulate==0.8.9 precommit
    a5beacbdd Bump types-tabulate from 0.8.8 to 0.8.9
    2dd655eda Bump pre-commit from 2.18.1 to 2.19.0
    5080245a7 Bump ccxt from 1.81.43 to 1.81.81
    0756027e3 BUmp types-python-dateutil precommit
    69b79cd79 Bump types-python-dateutil from 2.8.14 to 2.8.15
    1ae74c119 Bump flake8-tidy-imports from 4.6.0 to 4.7.0
    77a22a6b1 Bump fastapi from 0.75.2 to 0.76.0
    74b309cf5 Bump jsonschema from 4.4.0 to 4.5.1
    30cc8e92a Bump mkdocs-material from 8.2.12 to 8.2.14
    df48399a9 Bump cryptography from 37.0.1 to 37.0.2
    f71b2624a then -> than
    30d6eeffd Fix migration bug
    b58e811b1 Move trade/order Models to their own class
    af1a5e044 Extract base and Pairlock from models file
    3221726d8 Update migration to use boolean value
    4a7515e66 Add test for 0.0 case
    1436bc1a7 Update list-strategies command
    f43ae0ea4 logged balance details
    d79b90a98 consistent exchange name
    45b328af2 explicitly call cleanup when cleaning backtest
    bfc789865 Report profit only on filled entries.
    277e07589 update/fix some comments and docs
    eca8d16c6 Minor fix and enhancement for TC51.
    f5f599c7f Add LowProfitPairs only_per_side option
    dc0c1bf87 Only fetch accounts when authenticated.
    149704e74 Fix wrong type
    6fdcf3a10 Support both position modes on OKX
    2da284b92 Properly type side for create_order
    68a97a898 Disable scheduled notification in CI
    108903f7f Add DCA order adjust test
    70bac41d8 Add more backtest test scenarios
    182a6f475 Minor typos.
    5b3eaa300 Ensure advanced strategy template is runnable
    d11c44940 Slightly reword docs
    2d9be6dac move  open_rate updating to close_bt_order
    29f1edbde Cleanup. Remove stray new line.
    2bed0eab0 BT: Update trade open_rate on first filled order.
    25c74e26d Models:Trade: Revert trade open_rate update.
    1a37c6ff4 Bump ccxt to 1.81.43
    ae01afdd0 Models:Trade: Fix open_rate updates.
    dbecc097d Models:Trade: Update trade open_rate based on lastest order.
    b2f33944e Add preliminary backtesting test
    5c82cce06 Fix new test failures
    ce035a594 Add bot_loop_start() call in plotting.py
    091cb4fb8 Reduce no stake amount verbosity
    eb996a152 Fix fee handling for futures trades
    8e1cdb910 Update setup.sh
    7a5762991 Keep Backtest-metrics aligned
    3f64c6307 Maintain compatibility with old backtest results
    1e2523af6 Fix some assumptions on the data
    4c7460107 Freqtradebot: Cleanup stray debug messages.
    59397cdd1 Freqtradebot: Fix full cancel logging location.
    b83cd95a0 Tests: add basic testcases for entry adjustment.
    2a6efab8a Don't use deprecated abstractclassmethod decorator
    38dffe1ed types-tabulate - pre-commit update
    24ce90ba9 Bump types-tabulate from 0.8.7 to 0.8.8
    67dd9be95 Bump sqlalchemy from 1.4.35 to 1.4.36
    71ae92274 Bump pre-commit dependency
    49c1b310c Bump pre-commit types
    ba28fa6c3 Bump cryptography from 36.0.2 to 37.0.1
    9de0652b2 Bump jinja2 from 3.1.1 to 3.1.2
    093bea423 Bump types-requests from 2.27.20 to 2.27.25
    73aafb886 Bump ccxt from 1.80.61 to 1.81.16
    4990534bf Bump mypy from 0.942 to 0.950
    3d730661e Bump mkdocs-material from 8.2.10 to 8.2.12
    a0e27d82a Bump types-python-dateutil from 2.8.12 to 2.8.14
    7160f9085 Update summary examples
    f9244aad9 Fix on max drawdown formula to match tests
    4e43194df BT: Refactor open order management.
    2cedbe570 Fix documentation mishap
    9d205132d Revert unintended comment change.
    8c19953cd Quick exit when order should be maintained.
    8b5d454b5 Fix subtle bug in trades download
    e49b3ef05 Improve message formatting
    f6a7e6b78 Add prepend option to download-data
    11d447cd5 Add support for download-data "until"
    ad0c5d944 Refactor entry adjustment for backtesting.
    f9977c26e Full cancel only for non DCA trades.
    17650d7e6 Maintain existing order. Update functionality and documentation
    bc5048e4f Update to backtesting.md
    444425907 Fix hyperopt-loss interface to enforce kwargs
    5ff2261b7 Improve test to explicitly test for dates
    9bc6bbe47 Improve test for max_drawdown calculations
    e8aec967d Update on note
    086cc6be9 Correction on tests
    4de0fdbfc Minor edits found during review
    662319210 improve doc  wording
    737bdfe84 Use "side" parameter when calling Pairlocks
    144e4da96 Update stoploss guard tests
    b0a8bf302 Show lock side
    4942d7369 update pairlock tests
    845f960a4 realign pairlock naming to side
    fc201bb4f implement pairlock side further
    420836b1b Update test naming
    7c79d937e Properly type "side" parameter
    b7cada1ed Convert ProtectionReturn to dataclass
    9e199165b Update protection-interface to support per-side locks
    6ff3b178b Add direction column to pairlocks
    0f943c482 PEP8 code compliance
    76558f284 Fix user cancellation functionality.
    d24ee9032 Update usage in backtest. No functional update.
    d9f838a65 Update template usage to reflect changes.
    3166739ec Update strategy callback params and description.
    95e009b9c Update adjustment functionality and add cancelation option
    2cac1b7dc Add new (user cancellation) reason.
    541147c80 Update documentation to match feature changes.
    17da4ca09 Use order_date_utc
    698c25f13 Fix issues reported by flake.
    237d116d8 Update existing tests to use the new func name.
    452f44206 Add new callback to advanced template.
    bf5799ef9 Add new functionality to backtesting.
    f8a7fdd5e Add new callback to strategy interface.
    317c1e074 Add option to handle_cancel_enter to prevent closing trade.
    76c545ba0 Reorganize, rename, redescribe and add new functionality
    e5d4f7766 Add new cancel reason for when replacing orders.
    16b6b0822 Update docs to include info on new functionality.
    c8e468783 Plots and hyperopt
    47a6ef4f0 Max relative drawdown
    da0688b6a Revert "Add exchange id for binance Futures"
    3c8387ab6 Add exchange id for binance Futures
    
    Source code(tar.gz)
    Source code(zip)
  • 2022.5(May 28, 2022)

    Highlighted changes

    • New adjust_entry_price() callback - to adjust open entry limit orders.
    • New command convert-db to migrate databases between database systems.
    • Dry-run orders no longer reset on bot restart.
    • Certain Protections can now only look at longs or shorts, and only lock this direction.
    • Updated binance leverage tiers to contain new pairs.
    • Multiple exit-sigals are evaluated in sequence, causing changed behavior for confirm_trade_exit(), which can now be called multiple times for the same trade with different exit signal types.
    • download-data now respects the timerange end date.
    • download-data now allows data-prepending.
    • LowProfitPairs now supports "only_per_side" for futures trading.
    • Fixed OKX historic data download (:warning: Warning- requires manual clearing and redownload of existing data)

    How to update

    As always, you can update your bot using one of the following commands:

    docker-compose

    docker-compose pull
    docker-compose up -d
    

    Installation via setup script

    # Deactivate venv and run 
    ./setup.sh --update
    

    Plain native installation

    git pull
    pip install -U -r requirements.txt
    
    Expand full changelog ``` a1d54f5ae Version bump 2022.5 3e7bf6a9e Remove imports in test_strategy2 b04fe5d4e Simplify test v2 strategy 24cf04464 Fix bybit spot mode 682daa4e9 Reset logging mixin to avoid random test failure e1c6cf5f9 fix typo 537d10c62 Improve some typing 3e66275c9 Refactor bot_start to separate function 023f81717 Improve wording for supported futures exchanges b2968df5d Fix some type problems 43f726ba8 Run CI against different templates a8ee77cd5 Simplify backtesting typechecking 904f094b8 Don't reassign method, but implement it properly 0a713faca Fix some type errors f1a72e448 Align interfaces and strategy templates 3f68c3b68 Update some types 502404c0c Use pyproject.toml instead of setup.cfg 7f4161ff7 Add typehints to strategy wrapper 07ec3b27f Add typing information to retrier decorator 42ae8ba6f Refactor hyperopt parameters to separate file 5c4014ee6 Change default value of process_only_new_candles to True since False is an uncommon usecase for expert strategy devs 34b1231df Bump filelock-precommit b88dfe429 Bump types-filelock from 3.2.5 to 3.2.6 cc3ec279c Bump dateutil types precommit 596aeec65 Bump scikit-learn from 1.1.0 to 1.1.1 66497c28e Bump pre-commit requests types 7f5650699 Bump types-requests from 2.27.25 to 2.27.27 34657639f Bump numpy from 1.22.3 to 1.22.4 ff9dcfe78 Bump types-python-dateutil from 2.8.15 to 2.8.16 40f63ae51 Bump scipy from 1.8.0 to 1.8.1 f819fafa1 Bump psutil from 5.9.0 to 5.9.1 27019339b Bump ccxt from 1.83.12 to 1.83.62 e3beaae8b update hyperopt typing 0b5544ef9 Stoploss fill should fill as "filled" notification 938a66511 Update Documentation for new confirm_trade_exit behavior 3692fcd3d Improve exit signal sequence ce3bfd59f Add explicit should_sell test b7388557a Update interface tests bdb904e71 Should_exit should return all sell signals 1315d0243 Fix startup sending "longed" messages for open stoplosses 26d394ca7 Add liquidation Price to api response ea8fda0de Slightly improve test f006978ca Be more explicit in default value 681ef1317 Relax dry-run leverage test-case to simplify future updates 97abcf4b3 Add documentation for leverage_tiers update 963cc17c1 Update leveraged tiers 0d388b561 Add test for "combine_funding_and_mark", fix bug 2df42a303 Move "funding fillup" logic to exchange class 6bd5535d6 Use exchange method to combine funding and mark candles 0e158b66b Update docs link c499a92f5 Remove surplus mark columns, and make fillna on funding rate only c3e3188c6 Rename variable 843bf0631 Remove Sponsored Promotions b3acfb3c6 Bump ccxt to 1.83.12 2cf17e04b Init persistence for tests that use dry-run orders 46ea135b6 Update dry-run considerations 219363fff Check for both ask and bid in SpreadFilter 56a73575a Add explicit test for order_to_ccxt 5e18e51ce Fix some tests a3d9384bc Remove clean-dry-run code 0a95ef6ab Don't reset open orders in dry-run on restart 363098d32 Fix reversed makr/funding_rate columns 736f9f497 Fix docs and add outer join support for merging funding rates across full timerange d5486f17d Update Test to use StrategyV3 c41d4c4f4 Fix leverage docs 37e4ede65 Fix flake issues bb758da94 Add support for fudging unavailable funding rates, allowing backtesting of timeranges where futures candles are available, but rates are not c6bf6779f Update docs BT sample report and details. bb7ffd8fb Update testcases relying on BT results. 0585b378b BT: Report canceled/replaced orders also. 6e8f24f6a BT: track canceled/replaced orders also. 905b24bd4 Update BT report detailing. a2a8e4fdc Update doc BT sample report. 99aea454b Update testcases to match reporting. f2e2e5723 Report trade entries canceled by user. fb7c0792c Track trade entries canceled by user. 76637d393 Simplify timeframe-transition 2e65a1793 Add fallback to load 1M files as well as 1Mo files a1048fb61 Store monthly candles as "Mo" 9607d0427 Improve ccxt imports d09b46293 Add rudimentary tests for Precise "builtin operator" workings c8e0fc926 Update to do Builtin Precise math a793cf8f0 Use ccxt's "precise" to do precise math 528509f80 Extract get_price_side from get_rate f5183df0f Bump scikit-learn from 1.0.2 to 1.1.0 bd65236e1 Bump pyjwt from 2.3.0 to 2.4.0 dd1b84f93 Bump filelock from 3.6.0 to 3.7.0 a8b4066f8 Bump mkdocs-material from 8.2.14 to 8.2.15 9e44d6977 Bump ccxt from 1.81.81 to 1.82.61 9fc21686e Bump flake8-tidy-imports from 4.7.0 to 4.8.0 748055892 Bump plotly from 5.7.0 to 5.8.0 47c116a42 Bump fastapi from 0.76.0 to 0.78.0 4fc6857d8 Bump time-machine from 2.6.0 to 2.7.0 2cb8eecf1 add space e21f6a778 missing newline 008ee1488 Improve ci to run on ubuntu 22.04 86af3fe0e Update image versions from 3.9 to 3.10 a0b25938f Fix exit_reason assignment in backtesting a8f064a8c Fix exit_reason assignment in live mode 706994340 Fix bad docstring 18fd3bb33 Update stoploss handling for entry-order adjustment 9143e9ecb Add some safety measures for new startup_candles verification d60d0f64d Revert ohlcv_candle_limit logic for okx 116b58e97 add "date_minus_candles" method a947a1316 Add test to ensure stoploss is set properly in live 3b1443924 Slightly improve performance of order adjusts c27e0a0a1 Allow SL refresh only if no filled entry orders. ec54b47b6 Flake fix. 1c20fb763 Refresh open_rate and stoploss on order replacement. 5767d652b Add explicit test and document behavior 2a1368d50 Offsetfilter: add number_assets parameter bb1b283d9 Update some ohlcv_candle_limit calls 111b04c9e Okx - conditional candle-length 64668b11d add ohlcv_has_history - disabling kraken downloads 64670726a flake8 fix 9d13c8729 cleaned up backtesting 71a80cab3 fixed variable naming style 8a3c2c6ca Corrected docstring c299601ec Add warning about OKX futures backtesting data 1fc041d0d Fix formatting issue b2b503f04 minor polish for explanation of --breakdown 8a6a6ec91 corrected minor "typo" in formatting f374c9da7 PR cleanup 044afdf7a Add better test scenario 31cce741a Add sequence migration 269630e75 Add preliminary documentation for database conversion c19be34e7 Add rudimentary test for db migration 0958c06b8 Implement database migration to other system c3b0f6b64 Add feature shell for database conversion 35ec657ef Bump types-tabulate==0.8.9 precommit a5beacbdd Bump types-tabulate from 0.8.8 to 0.8.9 2dd655eda Bump pre-commit from 2.18.1 to 2.19.0 5080245a7 Bump ccxt from 1.81.43 to 1.81.81 0756027e3 BUmp types-python-dateutil precommit 69b79cd79 Bump types-python-dateutil from 2.8.14 to 2.8.15 1ae74c119 Bump flake8-tidy-imports from 4.6.0 to 4.7.0 77a22a6b1 Bump fastapi from 0.75.2 to 0.76.0 74b309cf5 Bump jsonschema from 4.4.0 to 4.5.1 30cc8e92a Bump mkdocs-material from 8.2.12 to 8.2.14 df48399a9 Bump cryptography from 37.0.1 to 37.0.2 f71b2624a then -> than 30d6eeffd Fix migration bug b58e811b1 Move trade/order Models to their own class af1a5e044 Extract base and Pairlock from models file 3221726d8 Update migration to use boolean value 4a7515e66 Add test for 0.0 case 1436bc1a7 Update list-strategies command f43ae0ea4 logged balance details d79b90a98 consistent exchange name 45b328af2 explicitly call cleanup when cleaning backtest bfc789865 Report profit only on filled entries. 277e07589 update/fix some comments and docs eca8d16c6 Minor fix and enhancement for TC51. f5f599c7f Add LowProfitPairs only_per_side option dc0c1bf87 Only fetch accounts when authenticated. 149704e74 Fix wrong type 6fdcf3a10 Support both position modes on OKX 2da284b92 Properly type side for create_order 68a97a898 Disable scheduled notification in CI 108903f7f Add DCA order adjust test 70bac41d8 Add more backtest test scenarios 182a6f475 Minor typos. 5b3eaa300 Ensure advanced strategy template is runnable d11c44940 Slightly reword docs 2d9be6dac move open_rate updating to close_bt_order 29f1edbde Cleanup. Remove stray new line. 2bed0eab0 BT: Update trade open_rate on first filled order. 25c74e26d Models:Trade: Revert trade open_rate update. 1a37c6ff4 Bump ccxt to 1.81.43 ae01afdd0 Models:Trade: Fix open_rate updates. dbecc097d Models:Trade: Update trade open_rate based on lastest order. b2f33944e Add preliminary backtesting test 5c82cce06 Fix new test failures ce035a594 Add bot_loop_start() call in plotting.py 091cb4fb8 Reduce no stake amount verbosity eb996a152 Fix fee handling for futures trades 8e1cdb910 Update setup.sh 7a5762991 Keep Backtest-metrics aligned 3f64c6307 Maintain compatibility with old backtest results 1e2523af6 Fix some assumptions on the data 4c7460107 Freqtradebot: Cleanup stray debug messages. 59397cdd1 Freqtradebot: Fix full cancel logging location. b83cd95a0 Tests: add basic testcases for entry adjustment. 2a6efab8a Don't use deprecated abstractclassmethod decorator 38dffe1ed types-tabulate - pre-commit update 24ce90ba9 Bump types-tabulate from 0.8.7 to 0.8.8 67dd9be95 Bump sqlalchemy from 1.4.35 to 1.4.36 71ae92274 Bump pre-commit dependency 49c1b310c Bump pre-commit types ba28fa6c3 Bump cryptography from 36.0.2 to 37.0.1 9de0652b2 Bump jinja2 from 3.1.1 to 3.1.2 093bea423 Bump types-requests from 2.27.20 to 2.27.25 73aafb886 Bump ccxt from 1.80.61 to 1.81.16 4990534bf Bump mypy from 0.942 to 0.950 3d730661e Bump mkdocs-material from 8.2.10 to 8.2.12 a0e27d82a Bump types-python-dateutil from 2.8.12 to 2.8.14 7160f9085 Update summary examples f9244aad9 Fix on max drawdown formula to match tests 4e43194df BT: Refactor open order management. 2cedbe570 Fix documentation mishap 9d205132d Revert unintended comment change. 8c19953cd Quick exit when order should be maintained. 8b5d454b5 Fix subtle bug in trades download e49b3ef05 Improve message formatting f6a7e6b78 Add prepend option to download-data 11d447cd5 Add support for download-data "until" ad0c5d944 Refactor entry adjustment for backtesting. f9977c26e Full cancel only for non DCA trades. 17650d7e6 Maintain existing order. Update functionality and documentation bc5048e4f Update to backtesting.md 444425907 Fix hyperopt-loss interface to enforce kwargs 5ff2261b7 Improve test to explicitly test for dates 9bc6bbe47 Improve test for max_drawdown calculations e8aec967d Update on note 086cc6be9 Correction on tests 4de0fdbfc Minor edits found during review 662319210 improve doc wording 737bdfe84 Use "side" parameter when calling Pairlocks 144e4da96 Update stoploss guard tests b0a8bf302 Show lock side 4942d7369 update pairlock tests 845f960a4 realign pairlock naming to side fc201bb4f implement pairlock side further 420836b1b Update test naming 7c79d937e Properly type "side" parameter b7cada1ed Convert ProtectionReturn to dataclass 9e199165b Update protection-interface to support per-side locks 6ff3b178b Add direction column to pairlocks 0f943c482 PEP8 code compliance 76558f284 Fix user cancellation functionality. d24ee9032 Update usage in backtest. No functional update. d9f838a65 Update template usage to reflect changes. 3166739ec Update strategy callback params and description. 95e009b9c Update adjustment functionality and add cancelation option 2cac1b7dc Add new (user cancellation) reason. 541147c80 Update documentation to match feature changes. 17da4ca09 Use order_date_utc 698c25f13 Fix issues reported by flake. 237d116d8 Update existing tests to use the new func name. 452f44206 Add new callback to advanced template. bf5799ef9 Add new functionality to backtesting. f8a7fdd5e Add new callback to strategy interface. 317c1e074 Add option to handle_cancel_enter to prevent closing trade. 76c545ba0 Reorganize, rename, redescribe and add new functionality e5d4f7766 Add new cancel reason for when replacing orders. 16b6b0822 Update docs to include info on new functionality. c8e468783 Plots and hyperopt 47a6ef4f0 Max relative drawdown da0688b6a Revert "Add exchange id for binance Futures" 3c8387ab6 Add exchange id for binance Futures ```
    Source code(tar.gz)
    Source code(zip)
  • 2022.4.2(May 3, 2022)

    Highlighted changes

    • Introducing Futures markets (gateio, okx and binance) - which includes short trades and leveraged trading.
    • Revised strategy interface (no immediate migration necessary for spot market bots).
    • Improved backtesting timeout behavior (buy timeouts are now evaluated on the proper candle).
    • Webhook naming changes (sell -> exit).
    • Changed behavior of custom_exit() (formerly custom_sell()) - which is now called independent of exit_profit_only.
    • /forcesell now returns a list interactive trades to exit from when no parameter is specified.
    • FreqUI backtesting mode (freqtrade started with freqtrade webserver) now allows loading historic backtest results.
    • Recursive config loading via add_config_files.
    • Recursive loading of strategies via --recursive-strategy-search.
    • Remove long deprecated V1 strategy interface.
    • Add CAGR calculation to backtesting metrics.
    • New callback bot_start() - which get's called once per bot iteration.

    New in 2022.4.2:

    • bugfix freqUI not loading correctly
    • bugfix OKX futures fees not always correct

    Important notes

    If you're looking to get started with futures trading, please make sure to read the strategy migration guide - as well as the leverage documentation page to get up to speed with the changes necessary for the new modes.

    :warning: Trading futures with leverage is very risky - please make sure you understand the risks involved. freqtrade is not responsible for any losses.

    How to update

    As always, you can update your bot using one of the following commands:

    docker-compose

    docker-compose pull
    docker-compose up -d
    

    Installation via setup script

    # Deactivate venv and run 
    ./setup.sh --update
    

    Plain native installation

    git pull
    pip install -U -r requirements.txt
    
    Expand full changelog

    Too big to show - sorry.

    Source code(tar.gz)
    Source code(zip)
  • 2022.4.1(May 1, 2022)

    Highlighted changes

    • Introducing Futures markets (gateio, okx and binance) - which includes short trades and leveraged trading.
    • Revised strategy interface (no immediate migration necessary for spot market bots).
    • Improved backtesting timeout behavior (buy timeouts are now evaluated on the proper candle).
    • Webhook naming changes (sell -> exit).
    • Changed behavior of custom_exit() (formerly custom_sell()) - which is now called independent of exit_profit_only.
    • /forcesell now returns a list interactive trades to exit from when no parameter is specified.
    • FreqUI backtesting mode (freqtrade started with freqtrade webserver) now allows loading historic backtest results.
    • Recursive config loading via add_config_files.
    • Recursive loading of strategies via --recursive-strategy-search.
    • Remove long deprecated V1 strategy interface.
    • Add CAGR calculation to backtesting metrics.
    • New callback bot_start() - which get's called once per bot iteration.

    Important notes

    If you're looking to get started with futures trading, please make sure to read the strategy migration guide - as well as the leverage documentation page to get up to speed with the changes necessary for the new modes.

    :warning: Trading futures with leverage is very risky - please make sure you understand the risks involved. freqtrade is not responsible for any losses.

    How to update

    As always, you can update your bot using one of the following commands:

    docker-compose

    docker-compose pull
    docker-compose up -d
    

    Installation via setup script

    # Deactivate venv and run 
    ./setup.sh --update
    

    Plain native installation

    git pull
    pip install -U -r requirements.txt
    
    Expand full changelog

    Too big to show - sorry.

    Source code(tar.gz)
    Source code(zip)
  • 2022.3(Mar 27, 2022)

    Highlighted changes

    • Huobi added as officially supported exchange (including stoploss-on-exchange support).
    • Kucoin stoploss on exchange support.
    • Gate.io stoploss on exchange support.
    • FreqUI:
      • Rename your bots in the UI.
      • New Heikin Ashi mode.
    • Removal of long deprecated ticker_interval.
    • Simplify derived strategies by allowing "local" imports (e.g. from strategyfile import StrategyName).

    How to update

    As always, you can update your bot using one of the following commands:

    docker-compose

    docker-compose pull
    docker-compose up -d
    

    Installation via setup script

    # Deactivate venv and run 
    ./setup.sh --update
    

    Plain native installation

    git pull
    pip install -U -r requirements.txt
    
    Expand full changelog
    fdfbafbb3 Version bump 2022.3
    60f2a12bd Fix wrong datetime conversion
    81957e004 Revert false update
    2cb24ed31 Added in ms
    a55bc9c1e Pin jinja in docs requirements
    3f98fcb0d all datetime included again
    d94b84e38 datetime included again
    dae9f4d87 Update doc clarity, partially revert prior commit
    094676def Removed old datetime keys and added timestamp
    e7418cdcd Remove obsolete note box
    487d3e891 Revert version to develop for now
    c28e0b0d0 Bump types-tabulate from 0.8.5 to 0.8.6
    7170b585f Bump mypy from 0.940 to 0.941
    057db5aaa Bump types-requests from 2.27.12 to 2.27.14
    03090d8f3 Bump pytest from 7.1.0 to 7.1.1
    1a37100bd Bump types-python-dateutil from 2.8.9 to 2.8.10
    5a136f04d Bump ccxt from 1.76.5 to 1.76.65
    59c7403b1 Bump urllib3 from 1.26.8 to 1.26.9
    1bc5d449a Bump cryptography from 36.0.1 to 36.0.2
    f5e71a67f Bump pymdown-extensions from 9.2 to 9.3
    e9c4e6a69 Update derived strategy documentation
    6ec7b84b9 Modify hyperoptable strategy to use relative importing
    49e087df5 Allow Strategy subclassing in different files by enabling local imports
    fcec071a0 Use order date to fetch trades
    8556e6a05 Automatically assign buy-tag to force-buys
    aceaa3fae remove last ticker_interval compatibility shim
    0f76b2373 update deprecation message for ticker_interval
    eb08b9218 Raise exception when ticker_interval is set.
    95f69b905 Remove ticker_interval support
    73fc344eb Improve wording in docs
    f55db8e26 Spreadfilter should fail to start if fetchTickers is not supported
    96bf82dbc Remove gateio broker program
    6024fa482 Use brackets to break IF lines
    47317e0f0 version: use 'contains' to check for "develop" instead of literal comparison
    89aae71c3 correcting docs for pricing of ask strategy
    18030a30e Add exchange parameter to test-pairlist command
    5462ff0eb Bump mypy from 0.931 to 0.940
    404d700a7 Raise min-requirement for ccxt
    3fbe4a994 Bump numpy from 1.22.2 to 1.22.3
    a7133f197 Bump nbconvert from 6.4.2 to 6.4.4
    4cbdc9a74 Bump types-requests from 2.27.11 to 2.27.12
    3fc1c94ab Bump ccxt from 1.75.12 to 1.76.5
    3a0ad2f26 Bump uvicorn from 0.17.5 to 0.17.6
    7764ad154 Bump types-cachetools from 4.2.10 to 5.0.0
    be5b0acfb Bump pytest from 7.0.1 to 7.1.0
    c63b5fbbb Use last to get rates for /balance endpoints
    32c06f4a0 Improve test
    3133be19e Update precisionfilter to use last instead of ask or bid.
    7146122f4 Update docstring
    b8b56d95f Update missleading docstring
    9107819c9 Fix order migration "forgetting" average
    843606c9c gateio stoploss adjust
    91549d325 Revert "stoploss_adjust fixed breaking tests"
    7e7e59637 Revert "moved binance.stoploss_adjust to exchange class"
    2ba79a32a Update docs/exchanges.md
    f343036e6 Add stoploss-ordertypes mapping for gateio
    7825d855c Fix flake8 error in tests
    11c76c3c8 Check if timeframe is available before calling exchange
    24f480b4c Double-check stoploss behaviour
    9ff52c0a9 Add test for emergencysell behaviour
    6f4d60790 stoploss_adjust fixed breaking tests
    7db28b1b1 gateio stoploss docs
    6bb93bdc2 moved binance.stoploss_adjust to exchange class
    6e10439f9 Map usdt fiat to correct coingecko fiat
    d47274066 Added stoploss_on_exchange flag to gateio
    ae4742afc test_fetch_stoploss_order_gateio and test_cancel_stoploss_order_gateio
    e3ced55f5 gateio.fetch_order and gateio.cancel_order
    61182f849 exchange.fetch_order and exchange.cancel_order added params argument
    f2ed6165e convert price to precision price before verifying stoploss adjustment
    17041b78f Add stoploss-limit-ratio to full config sample
    3c83d8c74 Bump actions/setup-python from 2 to 3
    25964f70d Bump actions/checkout from 2 to 3
    0c8dd7e50 Bump ccxt from 1.74.63 to 1.75.12
    f1d2cb9ce Bump types-cachetools from 4.2.9 to 4.2.10
    1d63bb66a Bump mkdocs-material from 8.2.3 to 8.2.5
    67a8b8b63 Bump pytest-asyncio from 0.18.1 to 0.18.2
    708def3d9 Bump sqlalchemy from 1.4.31 to 1.4.32
    d74e3091d Bump fastapi from 0.74.1 to 0.75.0
    be4bc4955 Explicitly check for None to determine if initial stoploss was set
    c0e12d632 Add FTX ref links
    e9456cdf1 Update trade response to use a single Order object
    17c9c3caf Enable orders via API
    71be547d8 Bump ccxt to 1.74.63
    abc8854b5 setup.sh install gettext for mac
    f74de1cca Improve Backtesting "wrong setup" message to include tradable_balance
    54165662c Don't require unfilledtimeout, it's optional.
    69cfb0b27 Revert change to telegram - this should be handled at the source
    a2c987937 Reset sell-reason if order is cancelled
    f26247e8e Revert wrong version string
    68bc2a610 Add huobi to ccxt compat tests
    207b211e5 Bump fastapi from 0.74.0 to 0.74.1
    42fbec417 Bump ccxt from 1.74.17 to 1.74.43
    faf6a35ad Bump types-requests from 2.27.10 to 2.27.11
    590944a60 Bump mkdocs-material from 8.2.1 to 8.2.3
    1ac360674 Update Readme quickstart
    0ebf40f39 Don't call amount_to_precision twice on entry
    41316abb5 Sort supported exchanges alphabetically
    14d49e85a Update Huobi stoploss to shared method
    a1f2f6dde Updates required for huobi datadownload
    f3421dfa9 Use unified stopPrice argument
    1b91be08f Add huobi to list of supported exchanges
    292c35088 Add stoploss support for huobi
    9504b3eb0 Improve huobi config generation
    ee7bc5572 Add huobi to Exchange setup
    2ec1a7b37 Add huobi exchange class
    3942b30eb Add kraken TODO
    6caa5f713 Update dry-run behaviour
    074919909 Add stoploss tests for kucoin
    020729cf5 update docs about kucoin stoploss
    768b526c3 Add kucoin stoploss on exchange
    7ba92086c Make stoploss method more flexible
    ea197b79c Add some more logic to stoploss
    1d57ce19e Move stoploss -limit implemenentation to exchange class, as this seems to be used by multiple exchanges.
    df726a54f cater for case where sell limit order expired
    
    
    Source code(tar.gz)
    Source code(zip)
  • 2022.2.2(Mar 21, 2022)

    Highlighted changes

    • Remove shift in backtesting columns - so buy/sell/tag columns are available correctly via dataprovider
    • Added /health endpoint, showing the time of the last completed bot-cycle.
    • Improved "status" message when using multiple trade entries.
    • Improved sorting for PerformanceFilter for pairs without prior result (prior pairlist-ordering is kept for these pairs).
    • Changed sqlite mode to "wal" - fixing rare concurrency issues.
    • Backtesting improvements
      • dataframes retrieved via dataprovider no longer have shifted signals
      • Timeout handling - this will change how custom-pricing works in backtesting. check_buy_timeout() and check_sell_timeout() are now called in backtesting for orders with prices outside of the opening candle.

    2022.2:

    Fix coingecko duplicate USDT mapping

    How to update

    As always, you can update your bot using one of the following commands:

    docker-compose

    docker-compose pull
    docker-compose up -d
    

    Installation via setup script

    # Deactivate venv and run 
    ./setup.sh --update
    

    Plain native installation

    git pull
    pip install -U -r requirements.txt
    
    Expand full changelog
    f9d10a7fa Version bump 2022.2.1
    7883160ce Update to fstrings
    018c62005 Fix 0 Division error on exchanges without average
    a0b42c7aa gitignore  sqlite temporary files
    5826698c0 Don't emergencysell partial sold exit
    e88b022cd Version bump 2022.2
    4b7271df4 Improve wording, add Picture detailing what must be installed.
    3b1b66bee Prevent backtest starting when not in webserver mode
    42df65d4e Make sure backtesting is cleaned up in tests
    731eb9971 Update mock-trade creation to rollback first
    5a4f30d1b Don't specially handle empty results.
    1f9ed0bef Add test for wal mode
    02ce0dc02 Set journal mode to wal for sqlite databases
    b9a99bd0b Bump python-rapidjson from 1.5 to 1.6
    7b6a0f7a1 Bump uvicorn from 0.17.4 to 0.17.5
    d354f1f84 Bump mkdocs-material from 8.1.11 to 8.2.1
    317487fef Bump ccxt from 1.72.98 to 1.73.70
    dc8e9bab4 Bump fastapi from 0.73.0 to 0.74.0
    d1cded353 Bump filelock from 3.4.2 to 3.6.0
    21b5f56f7 Bump types-requests from 2.27.9 to 2.27.10
    fddacfeda Remove returntype
    a24586cd4 Update migrations for new column
    6fb5b22a8 Some cleanup
    dc7bcf5dd Update failing test
    db540dc99 Orders should also store fee if in receiving currency
    e9f451406 Use correct order id
    874c161f7 Update more tests to use order_obj to update trade
    508e677d7 Fix some tests to call update_trade with order object
    1b1216fc8 Rename update_trade method
    c13eed217 use Order object to update trade
    d610b6305 Improve /balance output by removing trailing zeros
    a7a25bb28 Update "round coin value" to trim trailing zeros
    a32aed222 Update FTX stoploss code to avoid exception for stoploss-market orders
    3785f04be Handle empty min stake amount as observed on FTX
    0bbbe2e96 Add test for #6429
    60d1e7fc6 fix stake amt
    95d4a11bb add precision
    eb88c0f71 fixed stake amount
    e60553b8f Add max_entry_position hyperopt to docs
    e7bfb4fd5 Add test case for "sell below close" case
    b043697d7 Update config_full.example.json
    78a93b605 noqa
    3787b747a Simplify api schema by not using union types
    64b98989d Update open candle ROI condition
    7b2e33b0b corrects typo
    30f6dbfc4 Attempt fix for #6261
    acd7f26a9 update tc36 to properly cover #6261
    5cc6c2afe Bump pytest-asyncio from 0.17.2 to 0.18.1
    5062c17ac Bump pandas from 1.4.0 to 1.4.1
    04c20afec Bump nbconvert from 6.4.1 to 6.4.2
    7f8e956b4 Bump types-requests from 2.27.8 to 2.27.9
    22036d69d Bump mkdocs-material from 8.1.10 to 8.1.11
    b18e44bc4 Bump pytest from 7.0.0 to 7.0.1
    1674beed9 Bump ccxt from 1.72.36 to 1.72.98
    03d4002be Bump pymdown-extensions from 9.1 to 9.2
    be8accebd Bump plotly from 5.5.0 to 5.6.0
    ca6291479 Bump prompt-toolkit from 3.0.26 to 3.0.28
    b1b8167b5 Update stop documentation
    c769e9757 Improve "order refind" to also work for stoploss orders
    119d4d520 select_order should use ft_order_side, not the exchange specific one
    08803524b align variable naming to use current_time
    c9cfc246f Sort /forcebuy pairs alphabetically, add cancel button
    6511b3bec fix: rename buy_tag to entry_tag
    d563bfc3d feature: add buy tag to forcebuy
    6a5910386 update wallets in backtesting to ensure a fresh wallet is used
    be84a028c Avoid mixed types in the api for /stats
    af984bdc0 Update comment regarting NaT replacement
    7252cf47f Update url to include campaign tracking
    45c03f144 Docstrings are evaluated, while comments are not
    a6a041526 Update intro message
    1ba9b70af Improve index/readme wording
    6d3803fa2 Add TokenBot promo
    4e2f06fe9 Simplify band-aid code
    6191288ff Add test for NaT problematic
    1d10d2c87 Okex -> okx
    172e018d2 Add probit to list of non-working exchanges
    dcf8ad36f Backtesting should not allow unrealistic (automatic-filling) orders.
    926b01798 Fix freqUI charts not displaying when dtype(datetime) column has NaT values
    118ae8a3d Fix api_schemas/json_encoders by manually converting NaT values to empty Strings
    b192c8273 Only call "custom_exit_price" for limit orders
    d2dbe8f8d Improve doc wording
    85767d0d7 Add timedout_*_orders to tests
    036c2888b Track timedout entry/exit orders
    380e383ee Add log_Responses to full config example
    4bce64b42 commented method deletition
    92d1f2b94 fix tests
    7811a36ae max_drawdown_abs calc fix & .DS_Store deletition
    5047492f5 gitignore .ds_store files
    8cdb6e077 DRAWDOWN_MULT back to a higher value as built-in for safer HOs first
    f31fa07b3 Bump numpy from 1.22.1 to 1.22.2
    2893d0b50 proper var name
    94b546228 Bump python-telegram-bot from 13.10 to 13.11
    b8af4bf8f Bump mkdocs-material from 8.1.9 to 8.1.10
    110a270a0 Bump uvicorn from 0.17.1 to 0.17.4
    576d5a5b4 Bump types-requests from 2.27.7 to 2.27.8
    1e4368328 Bump ccxt from 1.71.73 to 1.72.36
    22e395af8 Bump pytest from 6.2.5 to 7.0.0
    e24c837e1 Bump scipy from 1.7.3 to 1.8.0
    099a03f19 flake8
    6d91a5ecb Change "buy" and "sell" to "entry" and "exit"
    7d3b80fbd isort fix and leftover cleaning
    6b5f63d4d change profit_ratio by profit_abs
    ee2a7a968 Add tests for /status on closed trades
    5eb502985 Performancefilter - improve sorting
    ef086d438 Update PerformanceFilter test to run with USDT pairs
    c19f3950d Add losing trade to usdt_mock_trades
    0b01fcf04 Add ProfitDrawdownHyperoptLoss method
    b657d2d8d Add Github funding
    7232324eb Update missing doc segment
    da73e754b Explicit map coingecko symbol to ID for bnb and sol
    8f2425e49 Add rudimentary tests for pg-specific stuff
    644442e2f Track timedout orders
    17d748dd4 Improve handling of left_open_trades
    2a3ab1ef6 1 more line to be hidden
    6b9696057 Update documentation to require python3.8 everywhere
    4cf514e29 fix flake8
    131b2d68d reduce complexity (flake8)
    0477070fa hide some lines if trade is closed
    c4a54cc9c refinement of status
    cfaf13c90 update
    82006ff1d Update setup.sh
    22173851d Detail tests for custom exit pricing
    2a59ef731 Add detail tests for timeout behaviour
    808cefe52 Update order_selection logic
    9bf86bbe2 Extract backtesting row validation to separate function
    58fad7277 Update wallets when necessary
    e08006ea2 Adjust tests to use order Object
    4ea79a32e Use Order object for ft_timeout check
    1e603985c Extract backtesting order cancelling
    6637dacd7 Extract protections in backtesting
    7ac44380f Extract backtest order closing to models class
    090554f19 Try fill backtest order imediately for adjusted order
    f4149ee46 Force ROI to be within candle
    44e616c26 Add unfilledtimeout to required props for backtesting
    49cecf1cb Small cosmetic fix
    9140679bf Backtest order timeout continued.
    15698dd1c Fix errors so it runs, implement timeout handling.
    f7a1cabe2 Add first version to fill orders "later" in backtesting
    c12e5a3b6 Initial idea backtesting order timeout
    761f7fdef fix: linter
    e84a58de2 fix: don't use different configuration keys, just add as 2nd argument
    a3e045f69 Plotting: add alias `--backtest-filename` for `--export-filename`
    f8faf748d Simplify prepare_buy_details
    1e6362deb Add test for new /status telegram message
    29879bb41 Update wording to entry/exit
    15d538956 Update /health endpoint to be in local timezone
    5d0c2bcb4 Shift candles after pushing them to dataprovider
    4b9d55dbe Add test for backtest dataprovider
    1f26709ac changes
    e72c3ec19 Commit just to force tests to run again.
    78986a0de I sort managed to fit it on another row. Impressive.
    acf6e9459 Fix unittest.
    bf62fc9b2 Add /health endpoint that returns last_process timestamp, fix issue #6009
    480ed90a0 create to_json function for Order
    bd4014e1e Small cleanup
    05046b9ee Add more info on status message
    3d94d7df5 Update migrations for mariadb
    c265f3932 Update sequences for postgres
    19948a6f8 Try fix sequence migrations
    5dca183b7 Combine order and Trade migrations to better facilitate migrations in advanced DB systems
    
    Source code(tar.gz)
    Source code(zip)
  • 2022.2.1(Feb 26, 2022)

    Highlighted changes

    • Remove shift in backtesting columns - so buy/sell/tag columns are available correctly via dataprovider
    • Added /health endpoint, showing the time of the last completed bot-cycle.
    • Improved "status" message when using multiple trade entries.
    • Improved sorting for PerformanceFilter for pairs without prior result (prior pairlist-ordering is kept for these pairs).
    • Changed sqlite mode to "wal" - fixing rare concurrency issues.
    • Backtesting improvements
      • dataframes retrieved via dataprovider no longer have shifted signals
      • Timeout handling - this will change how custom-pricing works in backtesting. check_buy_timeout() and check_sell_timeout() are now called in backtesting for orders with prices outside of the opening candle.

    How to update

    As always, you can update your bot using one of the following commands:

    docker-compose

    docker-compose pull
    docker-compose up -d
    

    Installation via setup script

    # Deactivate venv and run 
    ./setup.sh --update
    

    Plain native installation

    git pull
    pip install -U -r requirements.txt
    
    Expand full changelog
    f9d10a7fa Version bump 2022.2.1
    7883160ce Update to fstrings
    018c62005 Fix 0 Division error on exchanges without average
    a0b42c7aa gitignore  sqlite temporary files
    5826698c0 Don't emergencysell partial sold exit
    e88b022cd Version bump 2022.2
    4b7271df4 Improve wording, add Picture detailing what must be installed.
    3b1b66bee Prevent backtest starting when not in webserver mode
    42df65d4e Make sure backtesting is cleaned up in tests
    731eb9971 Update mock-trade creation to rollback first
    5a4f30d1b Don't specially handle empty results.
    1f9ed0bef Add test for wal mode
    02ce0dc02 Set journal mode to wal for sqlite databases
    b9a99bd0b Bump python-rapidjson from 1.5 to 1.6
    7b6a0f7a1 Bump uvicorn from 0.17.4 to 0.17.5
    d354f1f84 Bump mkdocs-material from 8.1.11 to 8.2.1
    317487fef Bump ccxt from 1.72.98 to 1.73.70
    dc8e9bab4 Bump fastapi from 0.73.0 to 0.74.0
    d1cded353 Bump filelock from 3.4.2 to 3.6.0
    21b5f56f7 Bump types-requests from 2.27.9 to 2.27.10
    fddacfeda Remove returntype
    a24586cd4 Update migrations for new column
    6fb5b22a8 Some cleanup
    dc7bcf5dd Update failing test
    db540dc99 Orders should also store fee if in receiving currency
    e9f451406 Use correct order id
    874c161f7 Update more tests to use order_obj to update trade
    508e677d7 Fix some tests to call update_trade with order object
    1b1216fc8 Rename update_trade method
    c13eed217 use Order object to update trade
    d610b6305 Improve /balance output by removing trailing zeros
    a7a25bb28 Update "round coin value" to trim trailing zeros
    a32aed222 Update FTX stoploss code to avoid exception for stoploss-market orders
    3785f04be Handle empty min stake amount as observed on FTX
    0bbbe2e96 Add test for #6429
    60d1e7fc6 fix stake amt
    95d4a11bb add precision
    eb88c0f71 fixed stake amount
    e60553b8f Add max_entry_position hyperopt to docs
    e7bfb4fd5 Add test case for "sell below close" case
    b043697d7 Update config_full.example.json
    78a93b605 noqa
    3787b747a Simplify api schema by not using union types
    64b98989d Update open candle ROI condition
    7b2e33b0b corrects typo
    30f6dbfc4 Attempt fix for #6261
    acd7f26a9 update tc36 to properly cover #6261
    5cc6c2afe Bump pytest-asyncio from 0.17.2 to 0.18.1
    5062c17ac Bump pandas from 1.4.0 to 1.4.1
    04c20afec Bump nbconvert from 6.4.1 to 6.4.2
    7f8e956b4 Bump types-requests from 2.27.8 to 2.27.9
    22036d69d Bump mkdocs-material from 8.1.10 to 8.1.11
    b18e44bc4 Bump pytest from 7.0.0 to 7.0.1
    1674beed9 Bump ccxt from 1.72.36 to 1.72.98
    03d4002be Bump pymdown-extensions from 9.1 to 9.2
    be8accebd Bump plotly from 5.5.0 to 5.6.0
    ca6291479 Bump prompt-toolkit from 3.0.26 to 3.0.28
    b1b8167b5 Update stop documentation
    c769e9757 Improve "order refind" to also work for stoploss orders
    119d4d520 select_order should use ft_order_side, not the exchange specific one
    08803524b align variable naming to use current_time
    c9cfc246f Sort /forcebuy pairs alphabetically, add cancel button
    6511b3bec fix: rename buy_tag to entry_tag
    d563bfc3d feature: add buy tag to forcebuy
    6a5910386 update wallets in backtesting to ensure a fresh wallet is used
    be84a028c Avoid mixed types in the api for /stats
    af984bdc0 Update comment regarting NaT replacement
    7252cf47f Update url to include campaign tracking
    45c03f144 Docstrings are evaluated, while comments are not
    a6a041526 Update intro message
    1ba9b70af Improve index/readme wording
    6d3803fa2 Add TokenBot promo
    4e2f06fe9 Simplify band-aid code
    6191288ff Add test for NaT problematic
    1d10d2c87 Okex -> okx
    172e018d2 Add probit to list of non-working exchanges
    dcf8ad36f Backtesting should not allow unrealistic (automatic-filling) orders.
    926b01798 Fix freqUI charts not displaying when dtype(datetime) column has NaT values
    118ae8a3d Fix api_schemas/json_encoders by manually converting NaT values to empty Strings
    b192c8273 Only call "custom_exit_price" for limit orders
    d2dbe8f8d Improve doc wording
    85767d0d7 Add timedout_*_orders to tests
    036c2888b Track timedout entry/exit orders
    380e383ee Add log_Responses to full config example
    4bce64b42 commented method deletition
    92d1f2b94 fix tests
    7811a36ae max_drawdown_abs calc fix & .DS_Store deletition
    5047492f5 gitignore .ds_store files
    8cdb6e077 DRAWDOWN_MULT back to a higher value as built-in for safer HOs first
    f31fa07b3 Bump numpy from 1.22.1 to 1.22.2
    2893d0b50 proper var name
    94b546228 Bump python-telegram-bot from 13.10 to 13.11
    b8af4bf8f Bump mkdocs-material from 8.1.9 to 8.1.10
    110a270a0 Bump uvicorn from 0.17.1 to 0.17.4
    576d5a5b4 Bump types-requests from 2.27.7 to 2.27.8
    1e4368328 Bump ccxt from 1.71.73 to 1.72.36
    22e395af8 Bump pytest from 6.2.5 to 7.0.0
    e24c837e1 Bump scipy from 1.7.3 to 1.8.0
    099a03f19 flake8
    6d91a5ecb Change "buy" and "sell" to "entry" and "exit"
    7d3b80fbd isort fix and leftover cleaning
    6b5f63d4d change profit_ratio by profit_abs
    ee2a7a968 Add tests for /status on closed trades
    5eb502985 Performancefilter - improve sorting
    ef086d438 Update PerformanceFilter test to run with USDT pairs
    c19f3950d Add losing trade to usdt_mock_trades
    0b01fcf04 Add ProfitDrawdownHyperoptLoss method
    b657d2d8d Add Github funding
    7232324eb Update missing doc segment
    da73e754b Explicit map coingecko symbol to ID for bnb and sol
    8f2425e49 Add rudimentary tests for pg-specific stuff
    644442e2f Track timedout orders
    17d748dd4 Improve handling of left_open_trades
    2a3ab1ef6 1 more line to be hidden
    6b9696057 Update documentation to require python3.8 everywhere
    4cf514e29 fix flake8
    131b2d68d reduce complexity (flake8)
    0477070fa hide some lines if trade is closed
    c4a54cc9c refinement of status
    cfaf13c90 update
    82006ff1d Update setup.sh
    22173851d Detail tests for custom exit pricing
    2a59ef731 Add detail tests for timeout behaviour
    808cefe52 Update order_selection logic
    9bf86bbe2 Extract backtesting row validation to separate function
    58fad7277 Update wallets when necessary
    e08006ea2 Adjust tests to use order Object
    4ea79a32e Use Order object for ft_timeout check
    1e603985c Extract backtesting order cancelling
    6637dacd7 Extract protections in backtesting
    7ac44380f Extract backtest order closing to models class
    090554f19 Try fill backtest order imediately for adjusted order
    f4149ee46 Force ROI to be within candle
    44e616c26 Add unfilledtimeout to required props for backtesting
    49cecf1cb Small cosmetic fix
    9140679bf Backtest order timeout continued.
    15698dd1c Fix errors so it runs, implement timeout handling.
    f7a1cabe2 Add first version to fill orders "later" in backtesting
    c12e5a3b6 Initial idea backtesting order timeout
    761f7fdef fix: linter
    e84a58de2 fix: don't use different configuration keys, just add as 2nd argument
    a3e045f69 Plotting: add alias `--backtest-filename` for `--export-filename`
    f8faf748d Simplify prepare_buy_details
    1e6362deb Add test for new /status telegram message
    29879bb41 Update wording to entry/exit
    15d538956 Update /health endpoint to be in local timezone
    5d0c2bcb4 Shift candles after pushing them to dataprovider
    4b9d55dbe Add test for backtest dataprovider
    1f26709ac changes
    e72c3ec19 Commit just to force tests to run again.
    78986a0de I sort managed to fit it on another row. Impressive.
    acf6e9459 Fix unittest.
    bf62fc9b2 Add /health endpoint that returns last_process timestamp, fix issue #6009
    480ed90a0 create to_json function for Order
    bd4014e1e Small cleanup
    05046b9ee Add more info on status message
    3d94d7df5 Update migrations for mariadb
    c265f3932 Update sequences for postgres
    19948a6f8 Try fix sequence migrations
    5dca183b7 Combine order and Trade migrations to better facilitate migrations in advanced DB systems
    
    Source code(tar.gz)
    Source code(zip)
  • 2022.2(Feb 25, 2022)

    Highlighted changes

    • Remove shift in backtesting columns - so buy/sell/tag columns are available correctly via dataprovider
    • Added /health endpoint, showing the time of the last completed bot-cycle.
    • Improved "status" message when using multiple trade entries.
    • Improved sorting for PerformanceFilter for pairs without prior result (prior pairlist-ordering is kept for these pairs).
    • Changed sqlite mode to "wal" - fixing rare concurrency issues.
    • Backtesting improvements
      • dataframes retrieved via dataprovider no longer have shifted signals
      • Timeout handling - this will change how custom-pricing works in backtesting. check_buy_timeout() and check_sell_timeout() are now called in backtesting for orders with prices outside of the opening candle.

    How to update

    As always, you can update your bot using one of the following commands:

    docker-compose

    docker-compose pull
    docker-compose up -d
    

    Installation via setup script

    # Deactivate venv and run 
    ./setup.sh --update
    

    Plain native installation

    git pull
    pip install -U -r requirements.txt
    
    Expand full changelog
    3b1b66bee Prevent backtest starting when not in webserver mode
    42df65d4e Make sure backtesting is cleaned up in tests
    731eb9971 Update mock-trade creation to rollback first
    5a4f30d1b Don't specially handle empty results.
    1f9ed0bef Add test for wal mode
    02ce0dc02 Set journal mode to wal for sqlite databases
    b9a99bd0b Bump python-rapidjson from 1.5 to 1.6
    7b6a0f7a1 Bump uvicorn from 0.17.4 to 0.17.5
    d354f1f84 Bump mkdocs-material from 8.1.11 to 8.2.1
    317487fef Bump ccxt from 1.72.98 to 1.73.70
    dc8e9bab4 Bump fastapi from 0.73.0 to 0.74.0
    d1cded353 Bump filelock from 3.4.2 to 3.6.0
    21b5f56f7 Bump types-requests from 2.27.9 to 2.27.10
    fddacfeda Remove returntype
    a24586cd4 Update migrations for new column
    6fb5b22a8 Some cleanup
    dc7bcf5dd Update failing test
    db540dc99 Orders should also store fee if in receiving currency
    e9f451406 Use correct order id
    874c161f7 Update more tests to use order_obj to update trade
    508e677d7 Fix some tests to call update_trade with order object
    1b1216fc8 Rename update_trade method
    c13eed217 use Order object to update trade
    d610b6305 Improve /balance output by removing trailing zeros
    a7a25bb28 Update "round coin value" to trim trailing zeros
    a32aed222 Update FTX stoploss code to avoid exception for stoploss-market orders
    3785f04be Handle empty min stake amount as observed on FTX
    0bbbe2e96 Add test for #6429
    60d1e7fc6 fix stake amt
    95d4a11bb add precision
    eb88c0f71 fixed stake amount
    e60553b8f Add max_entry_position hyperopt to docs
    e7bfb4fd5 Add test case for "sell below close" case
    b043697d7 Update config_full.example.json
    78a93b605 noqa
    3787b747a Simplify api schema by not using union types
    64b98989d Update open candle ROI condition
    7b2e33b0b corrects typo
    30f6dbfc4 Attempt fix for #6261
    acd7f26a9 update tc36 to properly cover #6261
    5cc6c2afe Bump pytest-asyncio from 0.17.2 to 0.18.1
    5062c17ac Bump pandas from 1.4.0 to 1.4.1
    04c20afec Bump nbconvert from 6.4.1 to 6.4.2
    7f8e956b4 Bump types-requests from 2.27.8 to 2.27.9
    22036d69d Bump mkdocs-material from 8.1.10 to 8.1.11
    b18e44bc4 Bump pytest from 7.0.0 to 7.0.1
    1674beed9 Bump ccxt from 1.72.36 to 1.72.98
    03d4002be Bump pymdown-extensions from 9.1 to 9.2
    be8accebd Bump plotly from 5.5.0 to 5.6.0
    ca6291479 Bump prompt-toolkit from 3.0.26 to 3.0.28
    b1b8167b5 Update stop documentation
    c769e9757 Improve "order refind" to also work for stoploss orders
    119d4d520 select_order should use ft_order_side, not the exchange specific one
    08803524b align variable naming to use current_time
    c9cfc246f Sort /forcebuy pairs alphabetically, add cancel button
    6511b3bec fix: rename buy_tag to entry_tag
    d563bfc3d feature: add buy tag to forcebuy
    6a5910386 update wallets in backtesting to ensure a fresh wallet is used
    be84a028c Avoid mixed types in the api for /stats
    af984bdc0 Update comment regarting NaT replacement
    7252cf47f Update url to include campaign tracking
    45c03f144 Docstrings are evaluated, while comments are not
    a6a041526 Update intro message
    1ba9b70af Improve index/readme wording
    6d3803fa2 Add TokenBot promo
    4e2f06fe9 Simplify band-aid code
    6191288ff Add test for NaT problematic
    1d10d2c87 Okex -> okx
    172e018d2 Add probit to list of non-working exchanges
    dcf8ad36f Backtesting should not allow unrealistic (automatic-filling) orders.
    926b01798 Fix freqUI charts not displaying when dtype(datetime) column has NaT values
    118ae8a3d Fix api_schemas/json_encoders by manually converting NaT values to empty Strings
    b192c8273 Only call "custom_exit_price" for limit orders
    d2dbe8f8d Improve doc wording
    85767d0d7 Add timedout_*_orders to tests
    036c2888b Track timedout entry/exit orders
    380e383ee Add log_Responses to full config example
    4bce64b42 commented method deletition
    92d1f2b94 fix tests
    7811a36ae max_drawdown_abs calc fix & .DS_Store deletition
    5047492f5 gitignore .ds_store files
    8cdb6e077 DRAWDOWN_MULT back to a higher value as built-in for safer HOs first
    f31fa07b3 Bump numpy from 1.22.1 to 1.22.2
    2893d0b50 proper var name
    94b546228 Bump python-telegram-bot from 13.10 to 13.11
    b8af4bf8f Bump mkdocs-material from 8.1.9 to 8.1.10
    110a270a0 Bump uvicorn from 0.17.1 to 0.17.4
    576d5a5b4 Bump types-requests from 2.27.7 to 2.27.8
    1e4368328 Bump ccxt from 1.71.73 to 1.72.36
    22e395af8 Bump pytest from 6.2.5 to 7.0.0
    e24c837e1 Bump scipy from 1.7.3 to 1.8.0
    099a03f19 flake8
    6d91a5ecb Change "buy" and "sell" to "entry" and "exit"
    7d3b80fbd isort fix and leftover cleaning
    6b5f63d4d change profit_ratio by profit_abs
    ee2a7a968 Add tests for /status on closed trades
    5eb502985 Performancefilter - improve sorting
    ef086d438 Update PerformanceFilter test to run with USDT pairs
    c19f3950d Add losing trade to usdt_mock_trades
    0b01fcf04 Add ProfitDrawdownHyperoptLoss method
    b657d2d8d Add Github funding
    7232324eb Update missing doc segment
    da73e754b Explicit map coingecko symbol to ID for bnb and sol
    8f2425e49 Add rudimentary tests for pg-specific stuff
    644442e2f Track timedout orders
    17d748dd4 Improve handling of left_open_trades
    2a3ab1ef6 1 more line to be hidden
    6b9696057 Update documentation to require python3.8 everywhere
    4cf514e29 fix flake8
    131b2d68d reduce complexity (flake8)
    0477070fa hide some lines if trade is closed
    c4a54cc9c refinement of status
    cfaf13c90 update
    82006ff1d Update setup.sh
    22173851d Detail tests for custom exit pricing
    2a59ef731 Add detail tests for timeout behaviour
    808cefe52 Update order_selection logic
    9bf86bbe2 Extract backtesting row validation to separate function
    58fad7277 Update wallets when necessary
    e08006ea2 Adjust tests to use order Object
    4ea79a32e Use Order object for ft_timeout check
    1e603985c Extract backtesting order cancelling
    6637dacd7 Extract protections in backtesting
    7ac44380f Extract backtest order closing to models class
    090554f19 Try fill backtest order imediately for adjusted order
    f4149ee46 Force ROI to be within candle
    44e616c26 Add unfilledtimeout to required props for backtesting
    49cecf1cb Small cosmetic fix
    9140679bf Backtest order timeout continued.
    15698dd1c Fix errors so it runs, implement timeout handling.
    f7a1cabe2 Add first version to fill orders "later" in backtesting
    c12e5a3b6 Initial idea backtesting order timeout
    761f7fdef fix: linter
    e84a58de2 fix: don't use different configuration keys, just add as 2nd argument
    a3e045f69 Plotting: add alias `--backtest-filename` for `--export-filename`
    f8faf748d Simplify prepare_buy_details
    1e6362deb Add test for new /status telegram message
    29879bb41 Update wording to entry/exit
    15d538956 Update /health endpoint to be in local timezone
    5d0c2bcb4 Shift candles after pushing them to dataprovider
    4b9d55dbe Add test for backtest dataprovider
    1f26709ac changes
    e72c3ec19 Commit just to force tests to run again.
    78986a0de I sort managed to fit it on another row. Impressive.
    acf6e9459 Fix unittest.
    bf62fc9b2 Add /health endpoint that returns last_process timestamp, fix issue #6009
    480ed90a0 create to_json function for Order
    bd4014e1e Small cleanup
    05046b9ee Add more info on status message
    3d94d7df5 Update migrations for mariadb
    c265f3932 Update sequences for postgres
    19948a6f8 Try fix sequence migrations
    5dca183b7 Combine order and Trade migrations to better facilitate migrations in advanced DB systems
    
    Source code(tar.gz)
    Source code(zip)
  • 2022.1(Feb 3, 2022)

    Highlighted changes

    • New callback adjust_trade_position() - Which allows to increase position size on open trades (DCA trading).
    • Improved backesting logic for ROI (sell signal is now evaluated before ROI).
    • Backtest result caching (for repeated backtests via --strategy-list, or when no changes happened). This is enabled by default!
    • Improved memory-usage in backtesting and Hyperopt.
    • Updated Drawdown calculation to calculate drawdown of the account.
    • Improved VolumePairList Performance by excluding blacklisted pairs right away.
    • Improved freqUI mobile style.
    • check_*_timeout now also receives a current_time argument.
    • entry_tag is now a new optional argument for custom_entry_price, custom_stake_amount and confirm_trade_entry callbacks.
    • generate_estimator() implementations for hyperopt now requires an argument, dimensions. If you're implementing custom Estimators, please update your strategies.
    • Dropped python 3.7 support (aligns with pandas/numpy approach)

    Please familiarize yourself with the relevant sections in the documentation before using any of the new features.

    You can also sponsor my work on freqtrade via Github sponsors (link also includes Crypto addresses).


    How to update

    As always, you can update your bot using one of the following commands:

    docker-compose

    docker-compose pull
    docker-compose up -d
    

    Installation via setup script

    # Deactivate venv and run 
    ./setup.sh --update
    

    Plain native installation

    git pull
    pip install -U -r requirements.txt
    
    Expand full changelog
    2d45163f8 Bump version to 2022.1
    0058abcc2 Fix crash when no min-stake-amount could be determined
    64d0c75bb Fix deprecation warnings
    d96a354a3 Version bump ccxt to 1.71.73
    479b56054 Add missing entry_tag argument to custom_entry_tag documentation
    1a838680e docs: fix typo and fix markdown list rendering
    f35c6545c Update strategy-callbacks.md
    bc5adc018 Bump prompt-toolkit from 3.0.24 to 3.0.26
    65526e980 Bump arrow from 1.2.1 to 1.2.2
    8a9b70cc4 Bump pytest-mock from 3.6.1 to 3.7.0
    ab5c1e6c1 Bump uvicorn from 0.17.0 to 0.17.1
    15dbdfe13 Bump types-python-dateutil from 2.8.8 to 2.8.9
    dbf222684 Bump nbconvert from 6.4.0 to 6.4.1
    7d066d81c Bump mkdocs-material from 8.1.8 to 8.1.9
    287e90af8 Bump ccxt from 1.70.45 to 1.71.46
    7aae9565c Only look at buy orders when looking to recalculate trade value
    da39ca665 fix new-config
    aea84dc11 Limit should default to None when calling pair_candles
    d1d520769 Improve status table for position adjust
    e7409e74c Remove default from position_adjustment (otherwise strategy parameters won't work anymore)
    fb3c67d86 Accept that keys sometimes are not provided
    2ba2144df Add tests for ETH fiat_convert
    660f474ab Fix ETH duplicate in CoinGecko
    138e867a6 Filter tickers on stake-currency for kraken
    9df7014de Skip kraken tests temporarily
    b8f29802e another typo
    cbd213bc0 fix typo
    31211a33f Fix ETH duplicate in CoinGecko
    002226f5f Update setting to max_entry_position_adjustment
    4a2914d72 Update docs/docker_quickstart.md
    4408f97a0 Added note to docker_quickstart.md
    30b27ae73 explicit dtype
    f7a5b2cb7 explicit dimensions, added **kwargs, updated docs
    6e47d0673 Bump ccxt from 1.68.20 to 1.70.45
    d9347e990 Update references to remove python 3.7 support
    aacddf64c Add pandas 3.7 requirements workaround
    45a229892 Re-add getting buy orders in docs
    381bda1e4 Update test to add new argument
    194a5ce3c Update advanced strategy template with missing methods
    e25283022 Add entry_tag to "entry" callbacks
    b8413410d Bump fastapi from 0.72.0 to 0.73.0
    fd1828c28 Bump pandas from 1.3.5 to 1.4.0
    cf79cef7b Bump types-filelock from 3.2.4 to 3.2.5
    95c7d4868 Bump sqlalchemy from 1.4.29 to 1.4.31
    12fabba78 Bump pytest-asyncio from 0.17.1 to 0.17.2
    013262f7e Bump mkdocs-material from 8.1.7 to 8.1.8
    138fd9440 Bump types-python-dateutil from 2.8.7 to 2.8.8
    451eca51c Optimise the multiple usages of the same timestamp.
    e67a54f7a Fix missing order time info in backtesting.
    daee59f4f Reorder interface methods
    57067ce88 Add tests for max_adjustment_buy handling
    7429f535c Imrpove code by reusing available properties
    6492e1cd7 Investigate random test failure
    6613e3757 Additional fix
    09db4bcad Don't use strings, use methods directly
    51b94889b Just in case also check for closed to avoid counting in canceled orders.
    8c79d5573 Fix issue #6268
    821a9d9cd Add current_time to check_timeout functions for convenience
    cc3852daf Add defaults to constants.py and update docs
    56daafd6b Use realistic date for dry-run orders
    7bef9a9b3 Extract timeout handling from freqtradebot class
    82f0d4d05 set stoploss at trade creation
    a35b0b519 Update forcebuy endpoint to support stake-amount
    9ecd7400c Allow NaN when calculating digests
    314a54488 Add Failing test for get_strategy_run_id
    a43c08844 Allow @informative in webserver mode
    bb1d8fb54 Improve message when no hyperopt fie is found
    3249f9fb9 Add max buys on status table
    d02acb21c Add simple test for #buy header
    748381c5c Update based on flake8
    e35a1e4a0 fix flake8
    a9f14ac11 show buy_tag only if not None
    8ce5536dd fix tests
    4e9f0d89a add buy_tag to trade tooltip in plots
    d54990585 Api-backtest to test new functionality
    a6c7f4554 Update webserver backtseting to reuse prior results
    e9baabce6 Store results when backtesting via API
    f30580e5f Update freqtradebot.py
    5fb951155 fix typo
    62ea1a445 add lines to show_config message
    2e537df35 Update strategy_resolver.py
    afe46a55f Add documentation for --cache backtest option
    d319204de Add note about legacy metadata format
    7c010b305 Update strategy-callbacks.md
    ac93eea58 update
    5fffc5033 Rework backtesting --no-cahche to --cache=[none, day, week, month]. Fix an issue where config modification during runtime would prevent use of cached results.
    5525fdae1 add max_buy_position_adjustment as attribute
    3925e8a7e add "# Buys" column to status table
    a4dbdb549 added type spec
    a6a127f59 Update .gitignore
    407c20412 Pass dimensions to generate_estimator
    d918d24f0 Spreadfilter log % fix
    d813fef95 Add asyncio_mode setting for pytest
    9c9c9f017 Readd trailing white line
    3de843ab2 Add eager-loading for orders. This allows access to trade.orders in all callbacks.
    f9a935b9a Update rpc_manager.py
    d0dc9e26b Bump uvicorn from 0.16.0 to 0.17.0
    f2984e9d0 Bump time-machine from 2.5.0 to 2.6.0
    da134d3ad Bump types-cachetools from 4.2.8 to 4.2.9
    9092596a1 Bump pytest-asyncio from 0.16.0 to 0.17.1
    81b800804 Bump types-python-dateutil from 2.8.6 to 2.8.7
    d38418478 Bump ccxt from 1.66.66 to 1.68.20
    9fbb9332f Bump types-requests from 2.27.5 to 2.27.7
    c403464bb Bump flake8-tidy-imports from 4.5.0 to 4.6.0
    3d9f34b06 Bump fastapi from 0.71.0 to 0.72.0
    e4af162f3 Bump jsonschema from 4.3.3 to 4.4.0
    5afa97583 Bump mkdocs-material from 8.1.5 to 8.1.7
    6be6515ec Bump numpy from 1.22.0 to 1.22.1
    edd2ea369 Update rpc_manager.py
    3cdb672ac Improve test coverage
    2bcfc0c90 Add warning about cache problems
    d08885ed9 Fix empty "/log" endpoint in certain moments
    69c00db7c Only show /balance % improvement if trades have been made
    b96b0f89b improved unfilledtimeout defaults
    acda9571d Revert "add position_adjustment_enable to config_full.example"
    6c4b26146 Convert nan to None in get_signal.
    eabeb87ce add position_adjustment_enable to config_full.example
    39184e1f9 Fix random test-fail around midnight
    270d7ebbf Simplify test strategy
    062d00e8f Fix @informative decorator failing with edge.
    2b7405470 Fix timerange check.
    9becce989 Update failing test
    526ed7fa9 Add test_backtest_start_multi_strat_caching test flexing backtest result caching.
    16861db65 Implement previous backtest result reuse when config and strategy did not change.
    6684bff96 Dry-run orders should have filled set correctly
    66a479c26 Small doc improvements
    6c0eef94b Fix typo.
    9f9e2a872 Remove references to wallets.get_trade_stake_amount
    93adb436f Fix flake8 intention issue.
    320c9ccf9 Unify functions and make it easy to get a list of filled buy orders
    08cae6f06 Fix horrible whitespace mistake.
    7699fde38 Update documentation about trade.nr_of_successful_buys
    ffe69535d These could be properties.
    13bc5c5d8 Fine, this does look better.
    678be0b77 Slightly move code.
    faa35cb16 Small minor fixes
    13651fd3b Downgrade docker-image to 3.9.9
    a22e1b650 minor spelling correction
    33cb9e900 Fix erroneous import in docs
    7344f88ad Add a note about not being called when there's an open order.
    7cd844865 Fix documentation example.
    8643b20a0 Improve documentation about /stopbuy command
    af3d220ff Update example method signature.
    db3483c82 Our example should also set position_adjustment_enable
    775b1201d psutil is always required now.
    e50b07ecb Make code compatible.
    94f2c9998 Temporary fix for lazy loading. Probably we can do it better.
    438a08360 Update TA-lib binary files
    fbf026ac4 Fix sorting of imports.
    3b7167ab0  Fix backtesting missing filled amounts in orders.
    26f2db477 Fix notify_enter attempting to fetch rate during testing.
    30d293bfe Fix bug with None in backtesting.
    0d00da8da Bump ta-lib from 0.4.23 to 0.4.24
    e0b05c4df Bump progressbar2 from 3.55.0 to 4.0.0
    fc1069cfe Bump urllib3 from 1.26.7 to 1.26.8
    1e35f5470 Bump types-tabulate from 0.8.4 to 0.8.5
    130275faf Bump mypy from 0.930 to 0.931
    29457078e Bump requests from 2.26.0 to 2.27.1
    8d554585f Bump types-filelock from 3.2.1 to 3.2.4
    fe067994e Bump types-requests from 2.26.3 to 2.27.5
    2d930d081 Bump types-python-dateutil from 2.8.4 to 2.8.6
    af60b9db5 Bump ccxt from 1.66.32 to 1.66.66
    bc95e1e15 Bump fastapi from 0.70.1 to 0.71.0
    626970b32 Bump types-cachetools from 4.2.7 to 4.2.8
    a0d378fb7 Bump nbconvert from 6.3.0 to 6.4.0
    b8e8a31f8 Bump python-telegram-bot from 13.9 to 13.10
    3fc44aa1b Bump mkdocs-material from 8.1.4 to 8.1.5
    cbd449f71 Remove non-decimal numerical separators
    91b89c8c4 Improve docs, fix telegram message to show current rate.
    195d601b8 Fix notification message showing "Current rate" as the initial buy order desired rate.
    c929d428b Remove blank line.
    0bca07a32 Added min_stake, max_stake. Removed pair as its included in trade.
    813a2cd23 Add useful helper methods for adjust_trade_position implementation
    cf077b15c Fix random test failure
    94631c7d6 Add performance warnings for backtesting and implementation.
    43f8087f3 Bitvavo does not support USDT stake
    827b8d3e4 Don't use test_datadir as userdata dir
    04976658d Fix crash when using backtesting-show on a old backtestresult
    11ace0f86 Instead of clearing `processed` dict, store `df_analyzed` (one with buy/sell signals) dataframe in it.
    cd144cdfc Add bitvavo to compatibility tests
    e540959c2 Remove btdata from generate_strategy_stats
    1203d08d1 generate_pair_metrics does not need processed dict
    d64f9030c Remove now unused codesegment
    9a3d0528a Versionbump ccxt to 1.66.32
    b3a4ecaf7 Remove old backtest format support
    28011a390 Update bt_results filename to new.json
    72f486289 Update Volumepairlist test
    24ec78b11 Quote-volumelist fix for gateio
    326e3d1f8 Selectively convert quote to base volume in volumepairlist
    7451b6050 increase okex candle limit
    a0f9c1bf7 Avoid failure when calculating max-drawdown
    e88a1ab20 Improve VolumePairlist behaviour
    545197245 Success-messages should use success coloring
    2a2392fd7 Update parameter name in docstring
    33d95d245 Fix unbounderror
    a9a6cf13f Add exit_tag to detail-sells
    4e2b9203d Remove no longer used BT_DATA_COLUMNS_MID
    2ca90577a Update strategy-comparison test
    2ecaf9f8b Update backtest-result test-files to latest format
    6abd6bceb Avoid recalculating statistics for comparison line
    67e4dda5b Fix missing DataFrame in advanced docs
    8373a4e71 Small Adjustments to improve compatibility
    4d9b4ddc2 Update hyperopt-tools to use account drawdown
    09fae25c9 Fix some tests after drawdown calculation change
    7a2b50ce8 Update drawdown calculation to account drawdown
    42579c026 Drop hyperopt results legacy mode
    7bf735dbf Update deprecated dynamic-whitelist docs with reference to new method
    937f5e3d0 No longer use legacy mode for tests
    7ea5b0e35 Simplify hyperopt test setup
    5536410ed Update ta-lib wheels
    079dbc799 Remove duplicate psutil dependency
    8ed30fc9c Bump psutil from 5.8.0 to 5.9.0
    2469dc042 Bump types-tabulate from 0.8.3 to 0.8.4
    5407a0625 Bump ta-lib from 0.4.22 to 0.4.23
    3f4c5a790 Bump types-cachetools from 4.2.6 to 4.2.7
    0da31cff7 Bump mkdocs-material from 8.1.3 to 8.1.4
    f7d3c5021 Bump types-requests from 2.26.2 to 2.26.3
    6b0a7a81a Bump ccxt from 1.65.25 to 1.66.20
    8c0f7321c Bump jsonschema from 4.3.2 to 4.3.3
    fac6956ee Fix test failure after merge
    2116b0729 Integration-test for DCA order
    209ecc873 Fix typo in bt_progress
    08ba5b045 Update docs to include underwaterplot
    fb06a673e Add Underwater plot
    78ba2d3fc Add underwaterplot calculation to btanalysis
    a2d97eecf Add trade parallelism plot
    8b49bec64 Use Version-dependent requirements
    c29469dec Version bump numpy to 1.22.0
    9becd20f2 Improve "Missing data" messages
    713b884d9 Fix failing monthly test
    670aed06b Remove loop for hyperopt.
    0277d93a6 don't use deprecated `asyncio.get_event_loop()`
    c9296dc9a Uvloop_helper should use "get_running_loop"
    550a1eef9 Reduce "cleanup" slowdown in telegram
    39f8c5719 Fix exception on exchange shutdown
    a715083fc Reduce memory usage by not holding on to no longer needed data.
    b1b2eebd1 Change sequence of ROI/sell signal to favor sell-signal
    b63491fb9 Update ROI_if_buy_signal tests to not use sell signal
    1bc2c7175 Update documentation with support for python 3.10
    6b22f84d3 Add windows ta wheel
    505d4bacd Update dockerfile to 3.10
    5b2a1b9e7 Update CI to run on python 3.10
    8edc84bf2 Exclude virtual environment from isort fixing
    bd98637ae Fail gracefully from plot-profit when no data is provided
    2b94fbfa7 Avoid using singleton where not necessary
    3d336a736 Improve documentation.
    f965e9177 Fix title
    4b654b271 Reduce logging.
    2a728c676 Improve documentation. Fix bug.
    05a488a7a Further reduce log verbosity for kucoin 429000 exception
    bb6562113 Simplify test, simplify "log_*" selection
    ef2b32626 Reduce retrier message repetition
    54858a0bb Simplify test to only initialize and mock once.
    314e10596 Remove checking against logger_name in num_log_has
    17f037cec Extract order_fee handling from update_trade_state
    f77b8cbb7 Reduce KuCoin logs only for 429000 error
    bc8fc3ab0 We can actually call recalc_open_trade_value less since it's being called eventually anyway.
    bd5520bee Adjust comments, fix stoploss_on_exchange for slower closed orders.
    099dc07ba No longer needed since recalc_trade_from_orders always calls it.
    817a65b65 This is not needed since backtesting does not have open orders.
    045225bee Slightly improve doc formatting
    d3f3c49b1 Fix minor "gotchas"
    6509c3871 Introduce new test functions to check logs
    fbaf46901 Reduce more KuCoin logs on retrier decorator
    96fbf63d0 Reduce KuCoin logs on DDosProtection error messages
    ea79eb55e Remove this test change from DCA branch.
    3cbb2ff31 Fix up documentation.
    e3181748d Add ignore_buying_expired_candle to config_full example
    f61aaa8c0 Improve documentation example
    de79d25ca Refactoring to use strategy based configuration
    ac690e921 Remove unnecessary returns.
    0c4664e8f Lock file is not always left behind so handle it.
    bc60139ae I really should make this flake8 / isort check automatic before commit.
    8393c99b6 Whoops, missing a line.
    8bf1001b3 Fix test failing when user_data already contains data...
    ace0a83c0 Allow forcebuy to also buy more when trade is already open.
    2e23e88fc Re-add back the log i accidentally removed.
    d70ddeef9 Remove whitespace. Darn IntelliJ.
    e439ae1fe Update wallet balance on every order close, not only trade close
    da2e07b7f Unittest base_stake_amount_ratio
    7df3e7ada Add base_stake_amount_ratio config param to support unlimited stakes.
    fa01cbf54 iSort
    4862cdb29 Improve documentation.
    c9243fb4f Use buy side for price since mostly used for DCA.
    f6d36ce56 Fix the dca order not being counted bug.
    f28d95ffb Add test for position adjust
    5da38f361 Fix typo. Make sure trade is market open.
    3aca3a713 Use parentheses instead of backslash
    1eb83f9a6 Fix documentation formatting.
    db2f0660f Some more compatibility fixes.
    b094430c2 Restructure for less complexity. Flake8
    30673f84f Flake8 compatibility
    cc28f73d7 Hopefully fix orders being left lingering and trade not updating once they are complete
    d10fb95fc Fix typo
    462270bc5 Fix a case where the amount was not recalculated. Added additional temporary logging.
    9be29c6e9 Theoretically fix second order timeout/canceling deleting the whole order.
    468076cf5 This has to be reset since otherwise it will not handle live limit orders after first buy.
    d4b31263c Fix open rate being None formatting error.
    6f6e7467f Fix potential problem.
    1362bd962 Fix potential problem.
    2c3e5fa08 Remove extra logging.
    1017b68af Fix some unit-tests. Use common trade entry code.
    c6256aba3 Improve documentation.
    64558e60d Fix bug in example.
    71147d289 Attempt to support limit orders for position adjustment.
    f11a40f14 Improve documentation on adjust_trade_position and position_adjustment_enable
    f97662e81 Add position_adjustment_enable config keyword to enable it.
    b7bf3247b Only adjust stoploss if it's set.
    1e3fc5e98 Slight code touchup
    c179951cc Expect stake_amount, not actual amount of pair from strategy for DCA.
    b2c2852f8 Initial backtesting support. This does make it rather slow.
    00366c5c8 Additional unit-tests
    28d0b5165 Add unit-test
    fde677987 Some code improvements. Still some bugs.
    fd875786f Initial very crude DCA implementation attempt. Very alpha.
    
    
    
    Source code(tar.gz)
    Source code(zip)
  • 2021.12(Dec 29, 2021)

    Highlighted changes

    • Allow forcebuy / forcesell to specify ordertype when called via API.
    • Webhooks now allow a "raw" format, sending messages as text/plain.
    • version() method for strategy, to allow versioning from within the strategy.
    • custom_entry_price() and custom_exit_price() support for backtesting.
    • Added exchange.unknown_fee_rate parameter to allow specifying rates for non-tradable fee currencies (e.g. gateio -> POINT).
    • Remove pairs from the blacklist:
      • Added /blacklist_delete [pairs] or /bl_delete [pairs] to telegram to remove pairs from the blacklist.
      • Add corresponding Delete endpoint to the API.
      • Add "remove" functionality to freqUI.
    • Webhooks now get base_currency - the Coin that's beeing traded.

    How to update

    As always, you can update your bot using one of the following commands:

    docker-compose

    docker-compose pull
    docker-compose up -d
    

    Installation via setup script

    # Deactivate venv and run 
    ./setup.sh --update
    

    Plain native installation

    git pull
    pip install -U -r requirements.txt
    
    Expand full changelog
    043218cc7 Version bump to 2021.12
    24807515c Fix random test failure
    5a546855e Import TTLCache from cachetools
    3804a1777 Bump scikit-learn from 1.0.1 to 1.0.2
    3cba405b2 Bump filelock from 3.4.0 to 3.4.2
    24d16d7da Bump mypy from 0.920 to 0.930
    2e84b8f0d Bump types-python-dateutil from 2.8.3 to 2.8.4
    470ef7c16 Bump jsonschema from 4.3.1 to 4.3.2
    1093f22b8 Bump plotly from 5.4.0 to 5.5.0
    e08505862 Bump sqlalchemy from 1.4.28 to 1.4.29
    81b383fe5 Bump ccxt from 1.64.44 to 1.65.25
    2917cc1f2 Bitpanda's "fetch_my_trades" requires "to" argument
    6fdad8c6b Prevent exception, ensure deletion occurs
    356b2d3d9 Reestablish backward compatibility
    b1feb69ca Use Pathlib to delete testfile
    d11a8928d Fix test not running when user_data contains historical data.
    98f6d2d72 Update CI to notify on discord only
    110e48c54 Remove travis config file
    61dbb6206 Slightly reduce verbosity when reload_conf is issued
    9a9cc31d8 Update docs regarding multiarch builds
    e5aaef644 Fix CI failure
    6ba8b17fd Use LoggingMixin.log_once to remove/reduce logs on pairlists
    40036bc71 Force dry-run for webserver backtest mode
    21da01f77 Bump cryptography from 36.0.0 to 36.0.1
    b6f8765d3 Bump mypy from 0.910 to 0.920
    cde35509d Bump jsonschema from 4.2.1 to 4.3.1
    5a3a5e98d Bump time-machine from 2.4.1 to 2.5.0
    44ac002cf Bump types-requests from 2.26.1 to 2.26.2
    56d96d6cf Bump ccxt from 1.63.65 to 1.64.44
    36632b48c Bump numpy from 1.21.4 to 1.21.5
    1b3aaffef Bump mkdocs-material from 8.1.0 to 8.1.3
    58c3d69d1 📝 Docs - Added `Any` import
    ea38b5808 Add base_currency to allowed webhook fields
    39f0a17e6 Fix formatting
    f9aa36f29 Don't hard-fail when executing emergency sell fails
    b80b5ed1a Improve uri_logging test
    9d8646072 Add test case for checking removal of logs for pains in blacklist
    793d09056 Improve log message wording for rejected stake amounts
    95949bd46 Update windows wheels to ta-lib 0.4.22
    884a04c7f Bump fastapi from 0.70.0 to 0.70.1
    172b9383c Bump pandas from 1.3.4 to 1.3.5
    ec4a24649 Bump ccxt from 1.63.55 to 1.63.65
    3398469e5 Update PerformanceFilter to have min_profit as ratio again.
    8dd3128ed Add type annotation to new logs suppression code
    5b998aeca Remove unused import
    878e16545 Suppress additional logs for pairs in blacklist
    b90c5e56f Fix webserver schema bug when running in webserver mode
    8fdef2900 Increment API version to let clients know this is now available
    58cd91bd8 Bump python-telegram-bot from 13.8.1 to 13.9
    857f4ec12 Remove exception-handlers which catch exceptions that are never raised
    783ee633a Bump crazy-max/ghaction-docker-buildx from 1 to 3.3.1
    fb134c67a Bump peter-evans/dockerhub-description from 2.1.0 to 2.4.3
    849ca1ec0 Dependabot - use correct branch
    8da79d0ab Add blacklist-control to telegram
    aaf5f4ce3 Bump sqlalchemy from 1.4.27 to 1.4.28
    ae92bf56b Bump ccxt from 1.63.1 to 1.63.55
    f47cfbd2a Bump mkdocs-material from 8.0.4 to 8.1.0
    c9c683f2b Bump prompt-toolkit from 3.0.23 to 3.0.24
    81cafd090 Bump uvicorn from 0.15.0 to 0.16.0
    671b9903d Add github-actions dependabot
    cc96db76f Add possibility to delete pairs from the pairlist via api
    e729fad99 Add unknown_fee_rate parameter
    e9c3f0cbb Add note about python3.10 not being supported
    be6b1f6f8 Import from enums, not submodules
    facb5b399 Revert "Bump python from 3.9.9-slim-bullseye to 3.10.1-slim-bullseye"
    7848e17a4 Bump python from 3.9.9-slim-bullseye to 3.10.1-slim-bullseye
    3dda0ef2e Bump mkdocs-material from 8.0.1 to 8.0.4
    50a6eaea2 Bump ccxt from 1.62.42 to 1.63.1
    61211a119 Bump ta-lib from 0.4.21 to 0.4.22
    fbd64d757 Improve doc wording
    4278c5a24 add note about arm64 installation
    c981cc335 Remove wrong comment
    d0467b30b Add strategy_version to API response
    e3190cf8a Update documentation
    2080bf095 Fix some formatting errors, add test for strategy version
    68ac8008e Call custom_exit_price only for sell_signal and custom_sell
    84ad17628 Improve documentation wording
    86910b58d Bracket entry/exit prices to low/high of the candle
    d09a30cc6 OrderTypeValues should be in enums
    ad5c8f601 Simplify datahandler classes by exploiting commonalities
    d3ad4fb52 Don't crash dry-run if orderbook side is empty
    294c98ed5 Document exchange.uid
    0375a0830 use to_hdf instead of HDFStore
    5ce1eeecf Reorder messages to be sent in correct order
    c22f381df Fix Schema issue
    542963c7a Reduce code complexity by combining buy and buy_fill methods
    f0abe218a Batch ohlcv requests to not overwelm ccxt's async throttler
    231b1e2f5 Improve Async error message content
    85b1f6f6b Update pairlists.md
    60eca8b1f revert to random object
    dfb148f8d Fix formatting
    f8cb3d290 Restore openAPI functioning
    2e5147745 Update mkdocs file to 8.0
    018407852 Added missing webhook config params to constants
    57e55eb93 Bump time-machine from 2.4.0 to 2.4.1
    c126d2530 Add few sentences on docs
    24997fb36 Bump mkdocs-material from 7.3.6 to 8.0.1
    b81d768eb Bump types-requests from 2.26.0 to 2.26.1
    39c3175b6 Bump types-python-dateutil from 2.8.2 to 2.8.3
    b0b2fdba7 Bump aiofiles from 0.7.0 to 0.8.0
    c2a7b1930 Bump types-cachetools from 4.2.5 to 4.2.6
    589c9f55e Bump scipy from 1.7.2 to 1.7.3
    e9e8023d7 Bump ccxt from 1.61.92 to 1.62.42
    df09fe5df Bump prompt-toolkit from 3.0.22 to 3.0.23
    29180a1d2 Moved retry config to constants
    0fa5bf54c Changed comment
    cf5ff9257 Add plotconfig as property documentation and sample
    c7d10e2c7 delete unneeded comment
    fb6ae174b Added raw config and retry config to webhook
    fd9bf2adb add weekly and monthly to valid keys
    6429205d3 Improve Notebook documentation to include Dataprovider
    2b3e7eeb2 Use Enum values within bot code
    409a80176 Fix caching problem in refresh_ohlcv
    b90303c9a Update ShuffleFilter.py
    2f0f576fc Update pairlists.md
    8c52ba336 ShuffleFilterDetectLiveMode
    bc52b3db5 Properly handle None values via API
    80ed5283b Add forcesell market/limit distinction
    338fe333a Allow forcebuy to specify order_type
    d4fd13bf5 Telegram and log prints strategy version.
    00406ea7d Update backtesting.py
    
    
    Source code(tar.gz)
    Source code(zip)
  • 2021.11(Nov 27, 2021)

    Highlighted changes

    • New CalmarHyperOptLoss loss function.
    • unlock_reason() to allow strategies to unlock all pairs locked by with particular reason.
    • setup.sh script now supports yum based (RHEL/Centos) distributions.
    • Added support for custom sell_reason from within populate_sell.
    • Show Buy-tag table during backtesting.
    • Official support for OKEX.
    • New telegram commands /weekly [num] and /monthly [num] to get more statistics.
    • Trigger emergency sell if trade exit fails for X times (can be configured via unfilledtimeout.exit_timeout_count).
    • Trade mode allows more history (multiple ohlcv calls) via startup_candle_count. Please use with care, as it will have a performance impact.
    • Improved Fill notifications in telegram.

    Please familiarize yourself with the relevant sections in the documentation before using any of the new features.

    You can sponsor my work on freqtrade via github sponsor (https://github.com/sponsors/xmatthias/) (includes Crypto addresses).

    How to update

    As always, you can update your bot using one of the following commands:

    docker-compose

    docker-compose pull
    docker-compose up -d
    

    Installation via setup script

    # Deactivate venv and run 
    ./setup.sh --update
    

    Plain native installation

    git pull
    pip install -U -r requirements.txt
    
    Expand full changelog
    7e1eedd7d Version bump to 2021.11
    a9cdb428d Version bump to 2021.10
    3f10430eb Version bump to 2021.9
    a62977789 Improve test coverage in telegram module
    6ca6f6250 Remove duplicate code in optimize_reports
    897788de1 Reformulate exception to be "nicer"
    f4bc30c92 Update docs to include "vpn/ssh" section
    5307d2bf3 Trimming the sentence
    c23d90e2b Update test_backtesting.py
    0c629fc95 Update test_backtesting.py
    0d1e84cf5 Add more words
    65906d330 Improve tests for pair_to_filename
    e8feac367 Improve tests for pair_to_filename
    c23ca35d2 Update ARMHF image to 3.9
    b8cefd687 Add api_version to botresponse
    c245a2a89 fix typo in Volatility filter description.
    43dab3ee6 Changed the wording of the documentation to be clearer
    78a00f251 Use market data to get base and quote currencies in @informative() decorator.
    64e34f382 Sell-fill should include open-rate
    ecf2ac3c2 Bump aiohttp to 3.8.1
    80946cd9d Bump ccxt from 1.61.24 to 1.61.92
    0ef99206b Bump plotly from 5.3.1 to 5.4.0
    247f855ba Bump types-cachetools from 4.2.4 to 4.2.5
    fdc6ca1bd Bump cryptography from 35.0.0 to 36.0.0
    ab93e1368 Bump filelock from 3.3.2 to 3.4.0
    c0cc3f5f9 Small doc improvements to callback documentation
    b36fe8fe0 Simplify strategy documentation
    0bae1471b Extract callbacks into a separate site
    ef67a2adf Improve callback documentation
    d8ee72554 Improve callback documentation
    f8f7d81fc Update strategy template to use parameters
    a239e5f72 Add segment on colliding signals
    0b6060dd1 indentation problem :)
    5fb0f5353 Add curl to install description
    60cf52aa3 Remove unused test code
    d477ccab1 Bump ccxt from 1.60.68 to 1.61.24
    e3bb102dc Bump python-telegram-bot from 13.7 to 13.8.1
    7bd384c7f Bump nbconvert from 6.2.0 to 6.3.0
    876b59f47 Bump jinja2 from 3.0.2 to 3.0.3
    8ec5f72be Bump isort from 5.10.0 to 5.10.1
    178e3ac6a Bump coveralls from 3.3.0 to 3.3.1
    2a1c61fb3 Bump sqlalchemy from 1.4.26 to 1.4.27
    c04679072 Bump pymdown-extensions from 9.0 to 9.1
    43120e03f Bump types-requests from 2.25.11 to 2.26.0
    4d1d8de9b Split /stats messages
    1dc98cc4d Break line
    5b9cbaf27 Use Close value for trade signal calculation
    632c1bc0a Add static workaround for kucoin 429000 issue
    7c1161992 avoid using replace in messages
    c4c1b301c buy notification code consolidation
    0bc938445 more notification code consolidation
    7412b7ba5 buy/sell fill notification code consolidation
    a177e58dc Remove "currency" generating from splitting pair str
    37d461c6c Improve strategy dataframe documentation
    0e70d23be Add documentation for exit_tags
    0e2b5ef6d Simplify custom strategy file wording
    df27499e1 Improve `/help` output from telegram
    32e337629 Update buy/sell fill telegram notifications
    a237667bc Update buy/sell fill telegram notifications
    39bb34cdb Fix test loading bug
    e0fd880c1 Improve some more pct formattings
    4eb903835 Some more fixes to % formatting
    1b271d084 Improve % outputs to not use explicit "pct" entries
    ce2aa1dc6 Small formatting upgrades
    f8d30abd7 Handle order returns that contain trades directly
    f7b2c0c5d Remove unneeded assignment from tests
    e7d1630c9 Add space
    d3d17f9f8 Only allow min-stake adjustments of up to 30%
    23a566b47 validate_stake_amount should not be a private method
    c9d974d21 Clarify performancefilter docs
    e8b4d4488 Add warning about telegram group usage
    6f0a98229 docs: removes duplicated "without" in pairlists.md
    6267678ca Use doublequotes for docstrings
    f9e5a25b3 Add docstring style to Contributing
    2bfec7d54 Add small test-case confirming trade object copy
    ae0e72a94 Provide strategy with copied objects
    e4cca6316 Align sell_reason assignment location
    63f4221f7 Fix broken documentation link
    84261237a Improve doc wording
    3ce898e4a Bump isort from 5.9.3 to 5.10.0
    b39794f8d Bump scipy from 1.7.1 to 1.7.2
    ab06584a3 Bump numpy from 1.21.3 to 1.21.4
    a2c12f15f Bump ccxt from 1.60.11 to 1.60.68
    d0199b601 Bump coveralls from 3.2.0 to 3.3.0
    dbc863bcd Bump jsonschema from 4.1.2 to 4.2.1
    c54cf63ba Bump prompt-toolkit from 3.0.21 to 3.0.22
    c11e1a84e Fix wrong logging
    de4bc7204 Update documentation to clarify new behaviour
    a08dd17bc Use startup_candle-count to determine call count
    9fa64c264 Allow multiple calls to get more candles in live-run
    fb6ba6215 Add default to "is_new_pair"
    4595c1e73 Slightly reformat to simplify new change
    25fcab079 Enhance /show_config endpoint
    4f5c5b698 Clarify timeout documentation
    d0e192e20 Fix naive timezone for /daily command
    f7dc47b1c Add test for exit_timeout_count
    d5acd979d Move dev-only requirement
    3c33b48fd Fix naive timezones
    7a907a763 Add Emergencyselling after X timeouts have been reached
    da4344d21 Remove line breaks
    8eabdd659 Fix missing CallbackQueryHandler
    70253258f Test /monthly & clean
    87634f040 /weekly and /monthly documentation
    459ff9692 Add /weekly and /monthly to Telegram RPC
    5f40158c0 WIP Add /weekly and /monthly to Telegram RPC
    a8651b0dc /weekly and /monthly documentation
    15616d75a Add /weekly and /monthly to Telegram RPC
    d99eaccb5 Fix exception when using okex
    ae3b53014 Add failing test for OKEX failure
    60a5ded53 Don't convert telegram chat_id
    2115a3ed1 Update warning message open trades
    ffc2de8d3 WIP Add /weekly and /monthly to Telegram RPC
    ae2343db9 Update optimize_reports
    10e839c17 Update setup.sh
    5b9a168ca removed build-essential from redhat install
    c061b576a OKEX Notes
    048db4f50 Enhance "new exchange" documentation
    437e5f064 Fix officially supported exchange list
    6fb086635 Add OKEX to list of officially supported exchanges
    ce597d12d Update exchanges.md
    f60d10107 Some finetuning for OKEX
    1fefb132e Improve wording in documentation
    161a3fac1 Run exchange-enabled tests against okex
    e78df59e3 Configure candle length for OKEX
    f365e6870 [docs] Update RateLimit value [small]
    7ae9b9017 Further clarify backtesting trailing stop logic
    3056be3a1 document prerequisites for exchange listing
    74e8b2899 Improve FAQ with outdated history message
    a16328f37 Don't force timeframe in config in config generator
    6623dfe7d Improve CORS documentation
    46d4418e8 Bump scikit-learn from 1.0 to 1.0.1
    45f7093e5 Bump mkdocs-material from 7.3.4 to 7.3.6
    e2041ddb7 Bump ccxt from 1.59.2 to 1.59.77
    3d59289b0 Bump filelock from 3.3.1 to 3.3.2
    6b90b4a14 Test "get-signal"
    dffe76f10 Don't double-loop to generate profits
    c15f73aa1 Rename command to backtesting-show
    20904f1ca Add tests for new command
    72ecb45d8 Add test for backtest_show logic
    650d6c276 Add documentation
    d60001e88 Stoploss cannot be below candle low
    459a2239c Fix candle ranges in backtesting test
    6cf140f8f FIx testcases
    851062ca4 Rename backtest-filter to backtest_show
    f47270943 Add option to show sorted pairlist
    0f3809345 Remove backtest-path parameter
    c579fcfc1 Add tests and documentation for unlock_reason
    240923341 Reformat telegram test
    5cdae2ce3 Remove CalmarDaily hyperopt loss
    e9d71f26b small changes
    658006e7e removed wrong use of map and filter function
    560802c32 Added tests for the new rpc/telegram functions
    02e69e166 Changes to unlock_reason: 	- introducing filter 	- replaced get_all_locks with a query for speed 	. removed logging in backtesting mode for speed 	. replaced for-loop with map-function for speed
    335412a3a Improve wording of FAQ entry
    f280397fd Add FAQ section about Fees
    dc605e29a removed empty lines for flake8
    2eb33707c Undo changes
    91b9e5ce6 Delete StackingDemo.py
    c1b5dcd75 Delete freqtradebot.py
    6b17094c6 Delete configuration.py
    51c925f9f Delete StackingConfig.json
    21ab83163 Quick import/clarity fix
    e4e75d486 Added test data for buy_tag/sell_reason testing
    9c6cbc025 Update StackingDemo.py
    9f6e4c6c0 uncomment
    ae0689969 removed commenting
    c3f3bdaa2 Add "allow_position_stacking" value to config, which allows rebuys of a pair Add function unlock_reason(str: pair) which removes all PairLocks with reason Provide demo strategy that allows buying the same pair multiple times
    b51f946ee Fixed models and rpc performance functions, added skeletons for tests.
    d1e2a5326 Added centOS support to setup.sh script
    7ff16997e Wrote echo block method for setup script
    88b96d5d1 Update hyperopt_loss_calmar.py
    22dd2ca00 Fix mypy type errors
    17432b282 Improve some stylings
    5f309627e Update tests for Calmar ratio
    0e085298e Fixed test failures.
    1267374c8 Small fixes to tests
    905f3a1a5 Removed exit_tag from Trade objects.
    1fdc4425d Changed exit_tag to be represented as sell_reason
    69a59cdf3 Fixed flake 8, changed sell_tag to exit_tag and fixed telegram functions
    0bb7ea10a Fixed minor header for backtesting
    ed39b8dab fixed profit total calculation
    8b2c14a6f Readme fix
    d341d8507 Refixed some files for the pull request
    96cab22a8 Fixed some bugs for live sell_tags.
    0f670189e quick typo fix
    3ee9674bb Update README.md
    af74850e7 Update README.md
    02243b1a2 minifix
    80b71790b Added some bigfixes for sell_tag
    c9edf3bf4 Updated the gitignore
    b898f8636 Added sell_tag and buy/sell telegram performance functions
    626a40252 resolved mypy error
    c3414c3b7 resolved mypy error
    67e9626da fixed isort issue
    a1566fe5d updated to latest constant.py file
    bc86cb328 updated to correct hyperopt.md file
    e1036d6f5 Added Calmar Ratio Daily to hyperopt.md file
    89b7dfda0 Added Calmar Ratio Daily
    24baad788 Add Calmar Ratio Daily
    ca20e17d4 added CalmarHyperOpt to hyperopt.md
    b2ac039d5 added CalmarHyperOptLoss to HYPEROPT_LOSS_BUILTIN
    0f29cbc88 added CalmarHyperOptLoss
    3b99c84b0 resolved the total profit issue
    c6b684603 removed trade_count inside if statement
    b946f8e7f I sorted imports with isort
    3834bb86f updated line 42
    3845d5518 a new hyperopt loss created that uses calmar ratio
    85979c317 * Adding command for Filtering * Read latest Backtest file and print trades
    
    
    Source code(tar.gz)
    Source code(zip)
  • 2021.10(Oct 28, 2021)

    Highlighted changes

    • New trades-to-ohlcv subcommand to easily convert trades to ohlcv data (kraken only).
    • New loss function MaxDrawDownHyperOptLoss.
    • New endpoint to get System information (CPU / Ram).
    • FreqUI now supports multi-bot mode, connecting to multiple bots.
    • freqtrade install-ui now allows to specify a specific UI version.
    • Possibility to skip unavailable spaces with --ignore-missing-spaces.
    • Fail and warn when using qtpylib.vwap() - pointing to qtpylib.rolling_vwap() instead.
    • Support StaticPairlist after VolumePairlist, to append a static list of pairs.
    • Added --breakdown argument to backtesting, showing a daily/weekly/monthly breakdown of trades.

    How to update

    As always, you can update your bot using one of the following commands:

    docker-compose

    docker-compose pull
    docker-compose up -d
    

    Installation via setup script

    # Deactivate venv and run 
    ./setup.sh --update
    

    Plain native installation

    git pull
    pip install -U -r requirements.txt
    
    Expand full changelog
    98ed7edb1 Version bump to 2021.10
    92130837a Improve and clarify informative pairs documentation
    e2b64a750 Update data-download.md
    f80d3d48e Add default to minimal_roi to avoid failures
    262f186a3 .
    cea251c83 Clarify documentation for /forcebuy
    4e88bd07f Bump numpy from 1.21.2 to 1.21.3
    538d9e8b3 Bump arrow from 1.2.0 to 1.2.1
    826d4eb2f Bump jsonschema from 4.1.0 to 4.1.2
    3d90305f8 Bump ccxt from 1.58.47 to 1.59.2
    b50b38f04 Bump sqlalchemy from 1.4.25 to 1.4.26
    520c5687a Bump prompt-toolkit from 3.0.20 to 3.0.21
    f7926083c Clean up unclosed file handles
    df033d92e Improve performance of decimalspace.py
    fde10f539 Use pathlib.stem instead of str(x).ends_with
    053fb076e Add documentation for breakdown command
    e458c9867 Styling fixes
    7b5346b98 Add test for breakdown-stats
    fa028c213 Support day/week/month breakdowns
    7197f4ce7 Don't show daily % profit (it's wrong)
    de5497c76 backtest_days cannot be below 1
    545446022 Revert initial_points to 30
    55b021618 Allow StaticPairlist in non-first position
    42a4dfed2 Reallow bitstamp
    f863f4fdf Update advanced-setup.md
    5d2e37409 Update docs/advanced-setup.md
    f9b166747 Update docs/advanced-setup.md
    0da5ef16e Remove unnecessary dependency
    ddba4e32d Fully remove flake8-type-annotations
    8a7ea6553 Bump types-filelock from 3.2.0 to 3.2.1
    3af55cc8c Bump pandas from 1.3.3 to 1.3.4
    75e6a2d27 Bump mkdocs-material from 7.3.2 to 7.3.4
    618f0ffe6 Bump types-tabulate from 0.8.2 to 0.8.3
    44e6e1342 Bump ccxt from 1.57.94 to 1.58.47
    4b0274901 Bump mkdocs from 1.2.2 to 1.2.3
    82684f5de Bump progressbar2 from 3.53.3 to 3.55.0
    69c98c414 Bump python-rapidjson from 1.4 to 1.5
    035380d8a Bump types-cachetools from 4.2.2 to 4.2.4
    d7756efe8 Bump wrapt from 1.13.1 to 1.13.2
    b60371822 Bump pyjwt from 2.2.0 to 2.3.0
    e7a2672f0 Bump filelock from 3.3.0 to 3.3.1
    9b0171ef3 Bump flake8 from 4.0.0 to 4.0.1
    12a041b46 Bump pytest-asyncio from 0.15.1 to 0.16.0
    6be40cb7c Bump types-requests from 2.25.9 to 2.25.11
    00fc38a5d Update setup.sh to correctly exit if ta-lib fails
    7d8cd736b Support days-breakdown also for hyperopt results
    28483a795 Fix doc-link in developer docs
    d4d57f000 Document expansion of `--pairs`, add download-inactive
    e23eb99ab Disable ability to use lookahead-biased vwap
    abd5c4f27 Convert additional test to USDT
    fb2c8f762 Rollback after each request
    f61dc6d95 📝 `mkdocs.yml` - Fixed darktheme toggle
    5a9983086 How to run multiple instances with docker
    89ca8abea Bump fastapi from 0.68.1 to 0.70.0
    5ba1d66be Make sure transactions are reset
    dcefb3eb9 Fix delete_Trade api test
    7f1080368 Commit mock-trades to avoid errors in tests
    de5657a91 Fix test failing when UI is installed
    fe9f597ea Don't build ta-lib in parallel, this causes failures
    c02a53818 Add documentation and log to PerformanceFilter
    fe8374f2a Test for non-failing missing hyperopt space
    3279ea568 Add new parameter to hyperopt docs
    aed919a05 Simplify "no-space-configured" error handling by moving it to hyperopt_auto
    8798ae567 Version bump also scikit-optimize
    ce9debe9f Add version argument to freqUI installer
    396bc9b2e Version bump flake8-tidy-imports to 4.5.0
    fa00b52c4 Bump scikit-learn from 0.24.2 to 1.0
    802599bdc Bump ccxt from 1.57.38 to 1.57.94
    29371b2f2 Bump joblib from 1.0.1 to 1.1.0
    90ea3d444 Bump mkdocs-material from 7.3.1 to 7.3.2
    4921a4cae Bump jinja2 from 3.0.1 to 3.0.2
    32174f8f9 Bump pyjwt from 2.1.0 to 2.2.0
    afc086f33 Bump arrow from 1.1.1 to 1.2.0
    e467491db Bump jsonschema from 4.0.1 to 4.1.0
    3fdc62d29 Bump flake8 from 3.9.2 to 4.0.0
    5fb0401dc Bump cryptography from 3.4.8 to 35.0.0
    7323ffa25 Bump blosc from 1.10.4 to 1.10.6
    57095d716 Bump wrapt from 1.12.1 to 1.13.1
    1a3b41ed9 Rephrase and simplify UI access section in docker quickstart
    2c6834214 Move pypi installation to documentation
    7b1c88866 Add FAQ entry for incomplete candles
    30bc96cf3 simplify expression
    11ec1d9b0 Revert previous commit
    482f4418c Clarify "required candle" message
    1327c21d0 Update README.md
    f07eeddda Update api_schemas.py
    a1be6124f Don't set bid_last_balance if None in tests
    45b7a0c83 Add Test and docs for MaxDrawDownHyperOptLoss
    29863ad2b Fix error when ask_last_balance is not set
    46c320513 use profit_abs
    526bdaa2d Recommend using 0.0.0.0 as listen address for docker
    65d4df938 Improve docker port api
    992cef56e Add test for sysinfo endpoint
    57ef25789 Fix style errors
    6ba46b38b fix formatting
    c0d01dbc2 add max_drawdown loss
    949d61608 Update docker_quickstart.md
    0db5c0731 Fix issues with sysinfo rpc/API code, add SysInfo api_schema
    92f8f231a Remove ratelimit from kucoin template
    7f4baab42 Remove explicit rateLimits, improve docs
    f15922a16 Fix custom_stoploss in strategy template
    07750518c Added min_profit param to PerformanceFilter
    f41fd4e88 Bump mkdocs-material from 7.3.0 to 7.3.1
    949f4fbbb Bump types-cachetools from 4.2.0 to 4.2.2
    2b41066ab Bump pytest-cov from 2.12.1 to 3.0.0
    0071d002b Bump ccxt from 1.57.3 to 1.57.38
    35c4a0a18 Bump jsonschema from 3.2.0 to 4.0.1
    ff45d52d4 Bump types-filelock from 0.1.5 to 3.2.0
    d220c55d4 Bump pymdown-extensions from 8.2 to 9.0
    0d9beaa3f Bump filelock from 3.0.12 to 3.3.0
    1c63d01ce Prevent using market-orders on gateio
    f5e520338 Use "round" to 12 digits for TickSize mode
    e73f5ab48 Add test confirming #5652
    126c29198 Improve docs
    9e77a739f Change usdt stake_amount to 60$
    058c7b3e9 Fixed odd test_execute_entry where the filled coins were higher than the amount
    908dee961 Changed test values in test_sell_profit_only to usdt like values
    93679db7c Removed ... TODOs
    057a18723 Removed uneccessary TODOs
    3b5cc5f01 Improve dates used for hyperopt tests
    77388eb42 Improve generate_test_data to make it easier to use
    5fdeca812 Combine most hyperopt-loss tests to one
    022839b72 remove unnecessary test
    e5e1e49f5 Remove some unused test parameters
    96d09b561 Fixed breaking rpc tests
    6f8e66117 flake8 isort
    107fa911a Fixed test_tsl_on_exchange_compatible_with_edge
    c820db4c6 Fix couple more usdt tests which failed due to ticker prices causing roi being hit, but tests did not expect that to happen.
    896137026 Fix failing test due to not updated expected values.
    2ee87f8c6 Fix failing USDT tests due to not enough open markets.
    43339f166 A lot of the usdt freqtradebot tests pass now
    ba5d78f00 swapped default_conf for default_conf_usdt and ticker for ticker_usdt
    7eebb6bb2 updated test_create_trade to use default_conf_usdt
    755cc9cda Updated test_check_available_stake_amount to use default_conf_usdt
    26fdad846 Removed edge_conf_usdt
    d0e0d0ee0 Removed init_persistence_usdt
    5ce09c751 updated test_reupdate_enter_order_fees to usdt
    ffa9a3ac7 changed default_conf_usdt stake_amount to 10
    6fdcf8cd7 created default_conf_usdt and init_persistence_usdt so that these tests pass: test_handle_stoploss_on_exchange_trailing, test_handle_stoploss_on_exchange_custom_stop, test_update_trade_state_withorderdict
    d1e3d4807 changed test_update_trade_state_withorderdict to usdt
    8d7f75c4d Fixed a bunch of freqtradebot tests
    dadd13420 changes some tests to use usdt values
    f69cb39a1 Fix missing comma in kucoin template
    15df5fd9c Fix pair_candles to point to correct API call
    df45f467c Adding ability to ignore unparameterized spaces
    95227376b Adding IUS to optimize args
    08fcd1a0d Adding ignore space errors to Hyperopt CLI
    5dd1088d8 Adding ignore unparameterized spaces flag
    5f23af580 Rename update_open_trades to clarify it's only called at startup
    bd27993e7 Add documentation segment about indicator libraries
    178db516b Add documentation for trade-to-ohlcv
    248c61bb2 Add test for trades-to-ohlcv
    fc511aac4 don't use %default when no default is defined
    656526c00 Add trades-to-ohlcv command to simplify adding new timeframes
    e025576d8 Introduce markets_static fixture serving an immutable list of markets. Adapt pairlist/markets tests to use this new fixture.
    097da448e Add CPU,RAM sysinfo support to the REST API to help with bot system monitoring
    76a02ff70 fix indentations
    2bed41da5 Add days breakdown table to backtesting
    
    
    Source code(tar.gz)
    Source code(zip)
  • 2021.9(Sep 28, 2021)

    Highlighted changes

    • --timeframe-detail in backtesting allows you to look "into" candles` for improved backtest results.
    • Improved new-config templates, defaulting to a "ready to start" configuration.
    • Improved download-data logic for new pairs on binance.
    • Officially support kucoin and gate.io.
    • PerformanceFilter can now only consider trades closed within the last X minute.
    • Allow hyperopt to define custom estimators (generate_estimator).
    • @informative decorator to easily define informative pairs.
    • Improved /balance output, including change % over the whole period (including assumed starting balance).
    • Notifications when protections trigger. Enabled by default for global protections, must be explicitly enabled for "per pair" protections.

    How to update

    As always, you can update your bot using one of the following commands:

    docker-compose

    docker-compose pull
    docker-compose up -d
    

    Installation via setup script

    # Deactivate venv and run 
    ./setup.sh --update
    

    Plain native installation

    git pull
    pip install -U -r requirements.txt
    
    Expand full changelog
    5938514e5 Version bump to 2021.9
    5726886b0 Reduce backtest-noise from "pandas slice" warning
    3fbf716f8 Fix "sticking" timerange in webserver mode
    5b7a1f864 Validate config also in webserver mode
    78096c9ef Bump nbconvert from 6.1.0 to 6.2.0
    905950230 Bump ccxt from 1.56.86 to 1.57.3
    08b1f04ed Bump types-requests from 2.25.8 to 2.25.9
    6319c104f Fix unreliable backtest-result when using webserver mode
    f4f204d84 Update test to use cost dict
    4c268847d Add pandas-ta to setup.py
    b59906b11 Update minimum for tradable_balance_ratio to 0.0
    72a1e27fc Bump ccxt from 1.56.30 to 1.56.86
    954c46819 Add pandas-ta to requirements
    0353f070f Bump progressbar2 from 3.53.2 to 3.53.3
    90d5af9a3 Bump urllib3 from 1.26.6 to 1.26.7
    766ef90b5 Bump sqlalchemy from 1.4.23 to 1.4.25
    e85dc6326 Bump mkdocs-material from 7.2.6 to 7.3.0
    422d56018 Bump types-requests from 2.25.6 to 2.25.8
    692e91a26 changed close date from datetime.utcnow() to datetime.now(timezone.utc)
    d7903f012 Move PerformanceWarning to advanced section
    2bf49445b add parameterized names
    30cc69c88 set all to eth for multi test
    8cfb6ddd5 fix long line
    f768bdea5 cleanup based on feedback
    553c868d7 combined test_order_book_depth_of_market and test_order_book_depth_of_market_high_delta
    b0de4d333 fixed webhook error
    707d0ef79 remove trades_for_order3
    277828bf0 parameterize some tests
    6fc770d97 Add warning about running with docker on windows
    abddb0db6 Fix header indention
    3ce05c0d5 Add "sane" defaults to protection triggers
    fd23ab3d6 improve formatting, add tests
    dd0db7ee5 Split protection-notification into global and per-pair
    a0fb43c6c Add pairlock-notification
    c91a9a92f Add troubleshooting information
    1da091dea ProtectionManager should return the lock just created
    879bf47b3 Refactor telegram.py to simplify send_msg
    ec0353177 Improve naming of variables
    ab8821718 Improve /balance output to include starting balance and percentual change
    cee4ed541 parametrized test_update_trade_state_withorderdict
    ec9dbc550 parametrized test_create_trade_minimal_amount
    c1895a0fc Remove warning related to legacy hyperopt
    eab7f8f69 [SQUASH] Doh.
    713e7819f [SQUASH] Remove mypy import.
    518a59ad4 parametrized test_edge_overrides_stoploss
    42a2fdc1c parametrized test_order_dict
    216f75bbb parametrized test_sell_profit_only , test__safe_exit_amount, test_order_book_bid_strategy1
    e4ca42fae [SQUASH] Update stoploss_from_absolute to behave more like stoploss_from_open and add a test for it.
    7e6aa9390 [SQUASH] Unconditionally include quote currency when asset is explicitly specified. Added docs suggesting to use string formatting to make strategy independent of configured stake currency.
    e88c4701b [SQUASH] Address PR comments.
    bb6ae682f Small simplifications
    5dc78a0c6 [SQUASH] Get rid of _initialize() and fix informatives for dynamic pairlists.
    f81df19b9 [TMP] Make tests not fail for now.
    dfa61b7ad [SQUASH] Fix informatives for each pair not being created because dataprovider was not available. Fix not being able to have informative dataframe of a pair in whitelist.
    f2a1d9d2f [SQUASH] Address PR comments.
    1fdb65633 Add a decorator which can be used to declare populate_indicators() functions for informative pairs.
    d84ef3474 A helper to calculate stoploss value from absolute price.
    56fb25c5e Add test for PerformanceFilter lookback
    564e0b9a1 Switch performanceFilter to use Minutes lookback resolution
    12c12d42d Add documentation for days parameter in PerformanceFilter
    d7395e873 Removed unused OperationalException
    4b2c1a9b8 Remove trailing whitespace
    e715f2a25 Update formatting
    9525a5b96 Add type to "trials" parameter
    fb6beb90e Include Raspberry Pi armv6 (0, 0W,...)
    124e97f3b Remove ununsed variables from export_csv_file
    5fc993231 Update HyperoptTools.export_csv_file usage
    3a98fb72a Update prepare_trials_columns() return type
    982deeedf Update freqtrade/persistence/models.py
    54ef36a49 Updates after review to PerformanceFilter days param
    457e738b4 Added days parameter to PerformanceFilter
    994c3c3a4 Add some errorhandling for custom estimator
    c0811ae89 Add possibility to override estimator from within hyperopt
    90ad17893 Remove verbosity of edge
    57ea0c322 Rename indicator_space to buy_indicator_space
    f7bae81d9 Dataframe should be copied after populate_indicator
    4e2b1764b ccxt_compat_tests must run with dry-run=False
    35eda8c8c Improve agefilter test
    3ce5197e8 Add Tests for AgeFilter caching
    c9ba52d73 Expire cached pairs in age-filter once per day
    a12c3ecc9 Remove credentials whenever dry-run is set from within the exchange
    8afb3c4b7 Move AgeFilter cache to instance level
    3cdd06f56 Add PeriodicCache
    b13bd8762 Bump ccxt from 1.55.83 to 1.56.30
    81039fce2 Bump progressbar2 from 3.53.1 to 3.53.2
    d8f48cf0e Bump pandas from 1.3.2 to 1.3.3
    236dc4800 Update CI to use new hyperopt interface
    0017b3438 Remove list-hyperopts
    3675df834 Update documentation regarding Legacy Hyperopt
    fd6bf591f Update some tests to remove explicit hyperopt interface
    dad4a49e8 Remove legacy hyperopt interface from hyperopt.py
    ebb0b8aa3 Remove new-hyperopt command
    432c3df17 Add documentation for Bittex/Gemini with VolumePairlist
    a5f90a409 Small updates to async_history_fetch
    4c4604f83 Add explicit test for get_historic_ohlcv
    8c9159f59 Improve comments
    a19c33ba5 Don't blindly create coroutines, but fire them off in batches
    982534ddc Add gate.io to list of supported exchanges
    366247dff removed caplog.clears at end of functions in test_freqtradebot
    b2f289e40 Fixed freqtradebot failing tests
    a1c9a4d61 freqtradebot local name changes
    362dc2040 notify_buy -> notify_enter, notify_sell -> notify_exit
    e1f846f22 sell_lock -> exit_lock
    e0092a85e handle_cancel_buy/sell -> handle_cancel_enter/exit
    be93c75e4 reupdate_buy_order_fees -> reupdate_enter_order_fees
    aac05029e safe_sell_amount -> safe_exit_amount
    79ca6135a added caplog clears to freqtradebot tests
    2d66987ac Add test for "pair-startdate" detection
    8c83c258a Move "first-pair_getting" to binance subclass
    71ff214ad Support "initial_call" for download-data of new pairs
    880474594 have ftuser use `/bin/bash` in dockerfile
    10d0987f4 Fix docs for custom hyperopt space
    6bd495a32 Fix 0Exception error
    a04875eb5 Update edge.md
    765e72715 Bump mkdocs-material from 7.2.5 to 7.2.6
    44f8d7abf Bump ccxt from 1.55.56 to 1.55.83
    771193cbe Bump plotly from 5.3.0 to 5.3.1
    4daa4b9e6 Bump pytest from 6.2.4 to 6.2.5
    1d24d3d5e case insensitive blacklist
    c519ecf8d Exclude more untestable sections from coverage
    a8f28ffb1 Increase test coverage
    2173ff013 Update PR template to not link to issues in changelog
    4e049f65f Exclude some parts from coverage that can't really be tested
    eb0362c29 ⚡️ ️`install_ta-lib.sh` - Run `ldconfig` after `make install`
    493fb3507 Fix uvicorn not working properly on windows
    103a8e827 ⚡ `setup.sh` - Use `build_helpers/install_ta-lib.sh` for TA-Lib installation
    2f92838c3 Properly close parenteses in exchange doc
    b4130dfab Use volumePairlist instead of staticPairlist in generated config
    c489e6825 Simplify binance blacklist
    68f13173b Update new-config templates to use USDT by default
    e64ccd8fc Add new_config section for kucoin
    19ad16548 Add time_in_force for kucoin
    93c1dff71 Allow adding new additional headers
    87fa49d52 Bump python from 3.9.6-slim-buster to 3.9.7-slim-buster
    1cbe30343 Add documentation for --detail-timeframe
    da5f8c87a Add stake_currency to strategy interface
    4cc1f2b4a Update bot-basics.md
    2a0c95a2e Update freqtrade/commands/build_config_commands.py
    45c6f9069 Bump mkdocs-material from 7.2.4 to 7.2.5
    9e0ab9c2c Bump fastapi from 0.68.0 to 0.68.1
    26451e8c0 Bump ccxt from 1.55.28 to 1.55.56
    d0504c47e Bump plotly from 5.2.1 to 5.3.0
    c64ebeb6e Bump cryptography from 3.4.7 to 3.4.8
    c17595b31 Docs: Mention Performance Warning for strategies
    20878290a Surround "unlimited" by double quotes in build config.
    c14d8ea82 Export HDF5 and CBLOSC paths.
    1895230af Clarify exception on load when markets could not be loaded
    89581ad25 Fix typo in protections hyperopt doc
    f79b30e88 Docs: Minor fixes
    482e65453 Remove extra comma after the last element in binance pair_blacklist.
    ac0dada96 Update Version to develop again
    fa4ec9f83 Add explicit test for get_sell_trade_entry
    3406b889b First test
    8405ccc15 Seperate detail data loading from regular backest-data loading
    88172fab8 Allow "detailed" backtesting timeframe to look into the candle
    
    
    Source code(tar.gz)
    Source code(zip)
  • 2021.8(Aug 28, 2021)

    Highlighted changes

    • startup-candles are available for populate_buy_trend() and populate_sell_trend().
    • Addition of buy_tag to classify buys based on the signal used.
    • Informative pairs are now limited to the selected timerange during backtesting.
    • Backtesting now caches informative pairs to speed up backtesting and hyperopt.
    • Support Environment Variables (e.g. export FREQTRADE__EXCHANGE__KEY=<yourExchangeKey>).
    • Hyperopt protections (warning: Configuring protections in the configuration is deprecated as part of this).
    • Add BooleanParameter() - a shorthand for CategoricalParameter([True, False]).
    • New callbacks custom_entry_price() and custom_exit_price() to specify custom order prices.

    How to update

    As always, you can update your bot using one of the following commands:

    docker-compose

    docker-compose pull
    docker-compose up -d
    

    Installation via setup script

    # Deactivate venv and run 
    ./setup.sh --update
    

    Plain native installation

    git pull
    pip install -U -r requirements.txt
    
    Expand full changelog
    b3a4b0fbd Version bump to 2021.8
    2ce458810 rename default_hyperopt_loss file
    07d71f014 Rename defaultStrategy file
    6d96b1127 Rename DefaultStrategy
    df1c0540a Rename Hyperopt Test Class
    0d8e105a3 Rename legacystrategy file
    58ecb34a6 Allow DefaultHyperopts as hyperopt name
    fbf8eb452 Rename test-legacy strategy
    1f3ccc258 DefaultStrategy does not need to be limited
    c4be52d1c rename execute_sell to execute_trade_exit
    63844d39f Rename execute_buy to execute_entry
    7fb570cc5 hyperopt Fallback methods should not be used.
    68dd34909 Update hyperopt docs regarding protections
    3745966c6 Update help-docstring for hyperopt
    23d21d8ac Fix wrong message if protection-space is missing
    4b36276e4 Improve has_space test
    8a9407bac Don't hard-fail when fetch_ticker doesn't return a value
    60b476611 Simplify a number of tests by relying on default arguments
    345c7ab64 Bump sqlalchemy from 1.4.22 to 1.4.23
    90f1845ea Bump prompt-toolkit from 3.0.19 to 3.0.20
    0f9bfcf8b Bump types-cachetools from 0.1.10 to 4.2.0
    4ee467f85 Bump ccxt from 1.55.20 to 1.55.28
    3026583ed Reduce verbosity of "is in blacklist" logging
    04b4deab5 Update strategy-advanced.md
    56759cea7 Add "high fee rate" blocker to fees from trades
    127f470bc .* ADDED
    40ad45101 Download-data log process added
    695a1e21b Set gate.io download limit to 1000 candles
    ba5abb20b Run compat ci for gate.io
    dc0b4d07d Fix typo
    9951f5107 Update test to ensure direction of movement is correct
    d97fc1e48 Update docs/strategy-advanced.md
    ffd60f392 add custom price max distance ratio option in configuration.md
    9469c6dfa small cosmetic changes in doc related to custom entry and exit exemple
    2fb9f6e2f rename custom price max distance option in config, update formula and test associated
    acb00cd07 Use realistic threshold for "get_fee" test
    6e41add40 Version bump ccxt
    4164f9385 Simplify fiat_convert and handle multi-mappings
    37e3d2035 Fix no-event-loop available
    9758bed25 Fix refresh_latest_ohlcv bug
    f47191582 Add test for refresh_latest_ohlcv caching
    f08d673a5 add details and exemple of custom_price_max_distance_percent usage in doc
    17daba321 add custom_price_max_distance_percent config option in constants
    faff40577 fix test_execute_buy In case of custom entry price
    3ea4b2ba0 add custom_price_max_distance_percent security to get_valid_price, update tests
    0264d77d8 Fix test for fixed typo
    f24a951ec fix: typo spelling grammar
    4115121c2 Fix missing return statement in is_Relative_to
    4b65206e6 Add compat code for is_relative_to
    6b2ef36a5 Prevent directory traversal in UI Serving
    abddb3ef2 Add test for directory traversal
    108a6cb89 Bump pandas from 1.3.1 to 1.3.2
    3878e5186 Bump numpy from 1.21.1 to 1.21.2
    a10fd6690 Bump plotly from 5.1.0 to 5.2.1
    d8607b2ce Bump flake8-tidy-imports from 4.3.0 to 4.4.1
    712579324 Bump uvicorn from 0.14.0 to 0.15.0
    e7b6a996d Bump mkdocs-material from 7.2.2 to 7.2.4
    37d454512 Bump ccxt from 1.54.74 to 1.55.6
    dda827658 Update documentation for sell_profit_offset
    322ea2481 Add log-message for edge-case
    ed6776c5c Fix disappearing pairlist bug
    4f10a8852 Reduce verbosity when incompatible pairs are detected
    123971d27 Don't change passed in parameter variable
    0f7ddabec Slightly reword documentation
    bb472ff98 Improve new-exchange documentation
    db5a94439 Cleanup GHA node after building images
    c7147311f Fix json syntax error in config template
    0a6c0c429 add a note concerning default custom entry or exit price in documentation
    20cc60bfd update get_valid_price function and test cases to handle inputs with try catch
    dbf7f34ec add unit test to function get_valid_price
    b098ce4e7 add function get_valid_price to validate type of custom entry or exit price and use default proposed price if invalid
    ae11be397 manage None or string value returned by custom_entry_price and add unit test for those cases
    e03784d98 Fix filled exception
    fad253ad5 Version bump ccxt to 1.54.74
    f6267c751 Fix buy_tag not being saved to trade object.
    61c076563 Add max-slippage limiting for dry-run orders to avoid insane market order fills
    65d025923 add code
    039d6384e Stream hyperopt-result in small batches
    3f160c714 Cache dataframe before cutting the first candle
    cf27968b9 Properly preserve trade's low during backtesting
    5bfb9edf0 Only query date once from list
    895b912c7 Fix recently introduced lookahead bias in backtesting
    a5f796bc9 refactor ohlcvdata_to_dataframe to advise_all_indicators
    519c256b8 Fix kucoin typo in index.md as well
    927ac24f8 Update README.md
    f17942b68 Fix random test failure
    5919992ad Bump types-requests from 2.25.1 to 2.25.6
    47f641d12 Remove hyperopt-pickle result support
    b89a99389 Bump types-filelock from 0.1.4 to 0.1.5
    59626b4ff Bump types-tabulate from 0.1.1 to 0.8.2
    bad25b753 Bump ccxt from 1.54.24 to 1.54.62
    32e8e3b24 Bump types-cachetools from 0.1.9 to 0.1.10
    3bd0c3d00 Remove legacy code from export to csv
    be240566b Fix random test failure
    faf16a64e Remove legacy hyperopt file support
    0ae4eccea Refactor Hyperopt-list and hyperopt-show to reduce some duplicate code
    7eaadb263 Add custom-* methods to bot-basics
    cf70b34ff Add min_value to all volumepairlist samples
    5393c55b5 Document min_value for VolumePairList
    b9356a556 Autopep8 formatting
    0985b1126 add doc for custom exit price
    84d082033 fix default retval for strategy custom_entry_price
    0aeebc9d5 add test for custom exit price
    90c194de1 Align Readme and documentation index in supported exchange lists
    eee5f174f update link
    cb3b0cf31 add custom_exit_price in interface and freqtradebot
    f243ad4af add custom_exit_price in strategy interface
    f9f519fd3 add custom_exit_price function to interface
    d9b9eecd4 remove entry price reached method
    2cf781f3d add freqtradebot execute_buy test in custom entry price case
    ad0e4a856 Add BooleanParameter
    b73768acd Fix bug in property overwriting prevention
    3c4122333 Add test for protections-hyperopt
    a661e0db6 Deprecate protections from config
    ceed3c663 Document using protections
    a6454cfc3 Autoenable protections when protection-space is selected
    091bf7c4d Output protection space
    544e0da6c Add protection parameter space
    800b2eeaf Load protections as part of backtest()
    74a5cb3c2 Remove protections from full config
    6410a6528 Add missing methods to advanced strategy template
    bc3e6deb1 remove specific test for buy with custom entry
    b644233ea rename custom_entry_price kwarg to align it to the interface
    b3dafb378 remove use_custom_entry_price as a config option
    16146357b reuse buy_limit_requested as rate input for custom entry price
    42e24d8b4 remove price change cancel reason in contants, will be added in another PR
    00939b63f flake 8 fixes
    53fb8b05e remove short logic in entry_price_reached function
    d9c9b7d7f restore interface test file
    3d8c3ffd3 fix syntax error in unit test
    5284112b6 fix in custom entry function output,remove changes related to outdated prices, doc exemple minor changes
    f11f5d17e add feature custom entry price for live
    dfc17f2bd Fix ci failure
    4ab03f7e3 Don't load fallback methods for autohyperopt
    e70a74200 Reorder space methods in hyperopt
    c98164144 Don't fail if strategy doesn't contain sell signal
    3c5f06d5c Update tests/exchange/test_exchange.py
    b63eda3a2 Some minor cleanup and improved test coverage
    3a19e1610 Bump mkdocs-material from 7.2.1 to 7.2.2
    7fd3fc98c Bump types-requests from 2.25.0 to 2.25.1
    849b8197a Bump scipy from 1.7.0 to 1.7.1
    4afcea9a1 Bump fastapi from 0.67.0 to 0.68.0
    4f05d31b9 Bump ccxt from 1.53.72 to 1.54.24
    b3f057e7c Bump isort from 5.9.2 to 5.9.3
    059c32b06 Check for and default to 'None'
    056bc93bc backtesting needs startup_candle_count
    047df0c21 Removed leverage references
    e9ef9a6d2 Use .view() to convert dates to enums
    90a61b176 Changed tests in tests/test_persistence.py to use usdt prices
    6f8519d0a Add environment variable support
    c5e3348b8 Migrations for indexes should run in a seperate session
    1ccc89d1e Store fully analyzed dataframe
    b1cbc75e9 Properly cache pair dataframe in backtesting (without startup-range).
    6abd352c0 Add test for backtesting dataframe cache
    ab3c75341 Fix develop_plot building
    499af5c42 Update webservermode docs
    35bf2a59a Improve test reliability (fix fluky test)
    aa34889c0 Don't run migrations twice
    25c527ee6  combined exchange.buy and exchange.sell, Adding dummy mock to create_order in tests in test_freqtradebot
    34c8a5afa remove second filter, add max option
    b7ba2f115 retrigger checks
    0fcbe097c remove blankspace
    7a0cb95ff fix testcase
    b9c2489b7 remove SN
    ba0fa1120 revert rename naming
    acfaa39e5 revert back test_rpc_api_server
    8032257fd revert test_pairlist
    aea5da0c7 changes testcase
    65fc094c9 add to webhook-config
    5fe18be4b add note buy_tag and split 3 assignment for get_signal
    dd923c347 Update docs/strategy-advanced.md
    65b4705b6 Update docs/strategy-advanced.md
    b01daa8bb expose  buy_tag to api
    dd809f756 run mypy
    643b6b950 run flake8
    25e329623 change signature
    46f2a20a9 run flake8
    235c1afd0 add buy_tag on telegram
    f5a660f84 caps BUY_TAG_IDX
    49886874a rename to buy_tag
    1ea29a918 Fix webserver timerange problem.
    db1e67663 retrigger checks
    66a707017 run linter
    5d04d6ffa fix edge testcase
    cbfedf8b2 fix backtest testcase
    c558fc0b1 fix feedback
    3d8b2d601 fix test persistance
    ed30c023c fix some testcase
    d31d38a85 add doc
    ec526b3f9 fix testcase
    7d0400521 add test and migration
    104711a9b get_signal signature
    9e63bdbac feat: add buy signal name
    ab786abf7 Fix intendation.
    f70529335  Dataprovider caching and trimming to timerange of historical informative.
    365479f5e Remove startup-candles after populating buy/sell signals
    8b0a02db8 Correct exception messages
    8b485d197 Update Plugins doc
    638bed3da Add RangeStabilityFilterMax pairlist filter
    
    
    Source code(tar.gz)
    Source code(zip)
  • 2021.7(Jul 29, 2021)

    Highlighted changes

    • Configs / templates will now default to using the orderbook to determine prices.
    • Move several settings from ask_strategy to the config's root level.
    • .range option now available for CategoryParameter and DecimalParameter.
    • Provide full backtest statistics to hyperopt_loss functions (important for hyperopt-loss function authors)
    • Automatic hyperopt parameter file - allowing you to automatically have aligned hyperopt and backtesting results.
    • Pairlist modifications
      • New option for AgeFilter to filter only for new pairs. Careful, these often mean more risk!
      • New pairlist-filter OffsetFilter - allowing to skip the first few pairs (for example in combination with Volumepairlist).
      • New option for VolumePairList - allowing dynamic lookbacks based on candle data.
    • New available_capital setting - allowing multiple bots to coexist while relying on compounding gains Read more.
    • Improved cumulative profit calculation for /profit command.
    • Added Webserver mode (freqtrade webserver) for interactive, web-based backtesting.
    • Censor Database passwords before printing them to log to prevent information leakage.
    • Docker images are now available as multiarch build (including arm64). This simplifies usage on Raspberry or arm64 devices, such as the Apple M1.
    • Deprecated order_book_max and order_book_min. Removed support for having the 2 options different - which resulted in strange sell behaviour.

    How to update

    As always, you can update your bot using one of the following commands:

    docker-compose

    docker-compose pull
    docker-compose up -d
    

    Installation via setup script

    # Deactivate venv and run 
    ./setup.sh --update
    

    Plain native installation

    git pull
    pip install -U -r requirements.txt
    
    Expand full changelog
    03064731a Version bump 2021.7
    6490b82ad Update docker-documentation for multiarch builds
    cf4d1875d Use prohibitedIn instead of isRestricted
    a451a9727 Bump ccxt from 1.53.25 to 1.53.72
    0fac9c9cf Bump pandas from 1.3.0 to 1.3.1
    6a3838ea4 Bump coveralls from 3.1.0 to 3.2.0
    0f82174c5 Bump sqlalchemy from 1.4.21 to 1.4.22
    7d428f9cb Bump fastapi from 0.66.0 to 0.67.0
    11937fd1b Bump mkdocs-material from 7.1.11 to 7.2.1
    05f74bdf5 Changed log ouput to debug in exchange.get_rate
    1e32a3ca0 :memo: Docs - StrategyAdvanced - Added `current_time` to `confirm_trade_entry/exit()` examples
    b42afb9da get_rate checks if side is buy for some console output
    06e7f379b Fix code to get Bittrex US-restricted markets
    b84a1d0c9 Don't crash when *_params is not defined in strategy
    986aafcdf Fix configuration.md typos
    550a9de09 Fixed setup for python3.9 on ubuntu
    b0bfbb655 removed buy and sell merge, updated strategy name, removed default side for get_rate
    d13524f7c Update ta-lib wheels
    fe8de9883 Bump mkdocs from 1.2.1 to 1.2.2
    bff353a29 Bump numpy from 1.21.0 to 1.21.1
    b7c951eac Bump sqlalchemy from 1.4.20 to 1.4.21
    7efad98e4 Bump questionary from 1.9.0 to 1.10.0
    4a2688974 Bump ccxt from 1.52.83 to 1.53.25
    31b3b4999 Bump requests from 2.25.1 to 2.26.0
    c1f1dfb36 Bump mkdocs-material from 7.1.10 to 7.1.11
    e9d9668e8 Bump ta-lib from 0.4.20 to 0.4.21
    ffeff9c0f Update ARM image building
    adef5d89f Fix failing test after webserver merge
    0282d1322 Fix PI image caching
    51cc90324 Run ci on selfhosted runner
    44df5eeac Adjusted docstring, and conditional near end of buy_rate
    7c27525bd Merge get_buy_rate and get_sell_rate
    53a8c693b Honor skip_pair_validation setting when downloading pairs.
    d652e6fcc Don't log from wallet in backtest mode
    b7dc2989e flake8 adjustments
    2e95df4d8 Update docs for /profit output
    2928ee22c Remove compose file for devcontainer
    07e3f8240 Changed to python3.8 installing first, removed test_and_fix_python_on_mac
    65ce7c983 Added echo python3.* line back in
    74d7497a4 Setup script tries to install python3.9 instead of 3.8 with this fix, python versions are also checked for in a loop instead of copy and pasted code
    cde041f70 install hdf5 and c-blosc on mac if using python3.9
    697bf92f6 Add test for get_starting_balance method
    02d716a8b Fix api test
    c9c7f84e8 Calculate relative profit based on assumed starting balance
    f5c47767c Provide available capital to api
    288c92301 Improve docs wording
    362436f7d Renamed example config files so they are .json so that syntax highlighting is all correct. Explicitly listed each one in .gitignore to prevent a real config file from being uploaded accidently
    29e2b858c Improve wording in docs
    2bf7705f2 Renamed example config files so they are .json so that syntax highlighting is all correct. Explicitly listed each one in .gitignore to prevent a real config file from being uploaded accidently
    91e5562ae style: apply flake8 formatting
    8def18b00 style: apply flake8 formatting
    313cf6a01 test: add test for parsing db uri
    c78b2075d feat: add one additional asterisk
    6a53e2c76 feat: apply censoring to logging
    f94dbcd08 feat: censor password from logs
    40db42436 Add documentation for available capital setting
    6a8e8875a Test new behaviour
    786374690 Add available_capital parameter
    b41c23444 Extract Closed profit calculation to trade object
    ed77889d6 Add explicit tests for _validate_stake_amount
    81c50aca0 Bump isort from 5.9.1 to 5.9.2
    21ef08d9a Bump mkdocs-material from 7.1.9 to 7.1.10
    f4caf9b93 Bump ccxt from 1.52.40 to 1.52.83
    8b78a3bde Quick fix for trades opening below min-trade amount
    7ea0a74c5 Default to proposed stake
    0e4466ca1 Implement strategy-controlled stake sizes. Expose `self.wallet` to a strategy.
    f658cfa34 Remove Slack
    52ae95b2a Improve naming of apiserver variables
    ad26b0dad Don't void backtest object when not necessary
    72a103f32 Properly test webserver startup in standalone mode
    e4e2340f9 Fix bug where currencies are duplicated
    cf6f70607 Don't build for feat branches
    6129c5ca9 Fix deprecation warnings from pandas 1.3.0
    2f33b97b9 Validate startup candles for backtesting correctly
    03861945a Update documentation page too.
    863391122 fix short desc not appear
    8be024157 Build images for feat/** branches
    e5da7ff6d Fix typos and improve wording in docs
    7dc826d6b warning for range based lookback performance more readable formatting of examples
    5a2bc192d Update docs/includes/pairlists.md
    4d4ed82db Update docs/includes/pairlists.md
    682f88063 Slightly simplify if statement, add additional test
    8248d1acd run flake8
    00a1931f4 fix test
    c44e87cd3 added tests for `OffsetFilter to `test_pairlist.py`
    6cea0ef2d documentation for `OffsetFilter`
    f30e300f1 adjusted `test_pairlist.py` for fixed rolling sum
    3c3772703 changed quoteVolume to be built over a rolling period using lookback_period to avoid pair_candles being larger than requested lookback_period
    d1104bd43 fix daily profit data and daily profit curve example
    b7a9853d9 Increase test coverage
    a4bd86232 Fix fluky test
    36d4a15d2 quickly document webserver mode
    005da9718 extract backtesting abort functionality
    5474d5ee6 Move webserver start command to seperate file
    e5b1657ab Properly remove rpc handler
    2ec22f1d9 Add Sorting to available pair list
    830b2548b Add backtest stopping
    129c7b02d Not all config values are mandatory in webserver mode
    17b3cc209 Return numeric value, not empty string
    b44d215b9 Add test for backtest via APII
    804d99cce Move backtesting api to it's own file
    856630601 Add test for start_websever
    134c61126 Properly track bt progress ...
    03140a0ec Run webserver in main thread when using webserver mode
    37b15e830 Add trade count to progress
    048008756 Add progress tracking for backtesting
    06b672602 Support compounding key
    f96d7dfe6 Allow backtesting to reuse data
    edb8c4f0e Fix tests for webserver mode
    5c18c8726 Implement backtesting with fastapi
    df5525973 Add start_trading endpoint
    02b84bd01 Introduce webserver mode for fastapi
    800e314bf Store backtesting results in backtest instance
    97e8ec91f Save configuration file paths
    ef137546f Add webserver entrypoint
    502c69dce change short desc
    dec523eef Display verison of installed FreqUI
    1e87225e9 added `test_VolumePairList_range` to test_pairlist.py
    10998eb0f Remove further usages of int(int_timestamp)
    346d66748 first version of OffsetFilter
    5626ca5a0 removed unnecessary casting to int()
    ac7598ff1 Bump python-telegram-bot from 13.6 to 13.7
    0c8afea38 Bump pandas from 1.2.5 to 1.3.0
    d1555a109 Bump fastapi from 0.65.2 to 0.66.0
    7ae5f4724 Bump sqlalchemy from 1.4.19 to 1.4.20
    2f97846bd Bump ccxt from 1.52.4 to 1.52.40
    0d787fde5 Bump plotly from 5.0.0 to 5.1.0
    7ac55e541 AgeFilter, RangeStabilityFilter, VolatilityFilter changed `float_timestamp` to `int_timestamp`
    85c7b5575 improvements: - `float_timestamp` switched to `int_timestamp` - added documentation to pairlists.md
    c5489d530 Reexport File to docs to have this available as documentation too
    c3cf71bba sort import
    2d5ced780 fix testcase
    9e548657e fix testcase
    558bcc795 Jupyter notebook snippet: Plotting daily profit / equity line
    4aa2ae37b add daily_profit_list
    791dfd9ba Fix some doc typos
    9919061c7 PEP8 compliance
    348dbeff3 added meaningful logging of used lookback range
    77293b1f1 Remove Zero duration Trades
    a4096318e Provide full backtest-statistics to Hyperopt loss functions
    7efa228d7 add dust balance
    dbdd7f38a add plural
    b722e1235 compact low balance currencies
    f6511c3e3 fix typo and add blocker
    b72bbebcc fix flake8
    3d9f3eeb0 feat(agefilter): add max_days_listed
    dc8abd77d Fix import order
    3686efa08 Add range property to CategoricalParameter and DecimalParameter, add their tests.
    53f963dd7 fixed `self._tf_in_secs` to `self._tf_in_sec`
    62da4b452 code cleanup and comments
    055229a44 first iteration of volume pairlist with range lookback
    3503fdb4e Improve tests for newly added methods
    fbd91cd3f Improve formatting to avoid backslash newlines
    b25ad68c4 Fix np.bool_ not outputting correctly
    849f01e6b FIx doc typo
    99bc6bbb8 Bump python from 3.9.5-slim-buster to 3.9.6-slim-buster
    e034f11dc Improve test for hyperopt_show
    b8de3270f Plotting: Fix hover mode options after plotly update
    60b7f6edf Improve documentation
    15e36a20e Improve naming of default hyperopt serializer
    bc0742ae6 Fix extremely optimistic results when using a combination of custom_stoploss and trailing_stop.
    0809225a0 Update documentation to mention parameter strategy files
    645da51b5 Add test for parameter loading
    dcf53ac3f Add test for try_eport_params
    ff61b8a2e Disable parameter export from tests
    84703080b Extract hyperopt_defaults_serializer to hyperopt_tools
    55f032b18 Catch trying to read faulty parameter file
    62cdbdc26 Automatically export hyperopt parameters
    a8117c6e0 Refactored to use results variable from for loop
    a2ccc1526 Load parameters from file
    8ca007633 Fix small typos
    d4514f5f1 Introduce File versions to hyperopt result files
    a7e9e362b Simplify printing logic for non-optimized parameters
    8b7010fc9 Update pprint name
    aa5181ca8 Properly export non-optimized parameters
    ef14359d3 Add some tests for paramfile writing
    e97de4643 Move tests to hyperopttools test file
    34e6ce431 Print non-optimized parameters (also stop / roi)
    2310deec5 Update name to get non-optimized parameters
    8cdd1e3ae Fix some type errors
    2bf17f71e Dump parameters from hyperopt-show
    750c78029 Support loading parameters from json file
    d54de7247 "/profit N" command should print best pair for the same period of time, not for all trades
    65d7e7488 Add note about ldconfig
    a0f28f4a1 Added max open trades to strategy summary first line
    8a0523885 Bump mypy from 0.902 to 0.910
    2e5b719de Added timerange above multiple strategy backtest result summary table
    c99ae3b41 Added timerange above multiple strategy backtest result summary table
    321523269 Bump pandas from 1.2.4 to 1.2.5
    91bb37820 Bump nbconvert from 6.0.7 to 6.1.0
    06829c840 Bump ccxt from 1.51.77 to 1.52.4
    694f30d0f Bump types-requests from 0.1.13 to 2.25.0
    157ff8219 Bump urllib3 from 1.26.5 to 1.26.6
    6824e64dc Bump sqlalchemy from 1.4.18 to 1.4.19
    9e09b271e Bump isort from 5.8.0 to 5.9.1
    281c18bad Bump plotly from 4.14.3 to 5.0.0
    3026c340c Bump python-rapidjson from 1.0 to 1.4
    d41218c97 Bump mkdocs-material from 7.1.8 to 7.1.9
    738fe45b4 Bump numpy from 1.20.3 to 1.21.0
    d810c262e Bump arrow from 1.1.0 to 1.1.1
    d09b71245 Bump types-cachetools from 0.1.8 to 0.1.9
    34448fb87 Expose default currency precision to API
    00a7097b9 Reduce verbosity of getting sell-rate from orderbook
    3f669147f Simplify strategy-resolver moving
    158cb415a Add settings interface to have types available
    ce69abc06 Update docs and tests for newly deprectated settings
    b7f01a08f Update sequence of process_deprecated_setting parameters
    0235868c6 Update tests for new config structure
    1067a9f35 Move strategy-override signals to top-level of the config
    fa72ed10b Add Kukoin to community tested exchanges
    c62fad008 Pricing strategies should default to use orderbook pricing
    0ecf456d7 Update Deprecation date
    59a33d0fa Add test for ask_orderbook validation
    8c542e402 Update tests for removed order_book_max option
    ae6a5c908 Update documentation to reflect new setting for sell price
    d59a38665 Remove support for order_book_max
    
    Source code(tar.gz)
    Source code(zip)
  • 2021.6(Jun 26, 2021)

    Highlighted changes

    • Sell-notifications can now be configured based on sell-reason.
    • list-strategies subcommand shows hyperoptable parameters.
    • /profit now accepts a number of days from which the profit shall be shown.
    • Improved backtest-logic, improving accuracy in trailing stop scenarios.
    • Hyperopt now shows the maximum drawdown for each epoch.
    • Refresh-buttons on select telegram messages, to refresh the message instead of reposting it.
    • Dry-run is now realistically simulating order filling, allowing dry-run to result in unfilled orders in dry-run as well.

    How to update

    As always, you can update your bot using one of the following commands:

    docker-compose

    docker-compose pull
    docker-compose up -d
    

    Installation via setup script

    # Deactivate venv and run 
    ./setup.sh --update
    

    Plain native installation

    git pull
    pip install -U -r requirements.txt
    
    Expand full changelog
    1cb057bda Version bump 2021.6
    d294ef10d unexpected docstring params
    a46f60bd9 spell corrections
    1a82685dd Don't reset log caching
    fef73b1b6 Update configuration.md
    ea236abf1 Update configuration.md
    69a3aee01 minor edits
    9e9124028 binance-portal
    2ade3ec7b Add max-width query to hide on small screens
    f585ffa26 Add Dark theme to Documentation
    538a1acdb Add Binance Broker ad to documentation page
    e0d3ca6c6 Fix import sorting
    c938edc01 Apply dataprovider to /pair_history endpoint
    f7c09ba63 Log endpoint should use static rpc class
    3c70768e1 make "/profit N" command output be consistent with "/daily" and "/status table" commands
    10e94350e Update installation.md
    e97c82c51 make "/profit N" command output be consistent with "/daily" and "/status table" commands
    0605cbb06 make "/profit N" command output be consistent with "/daily" and "/status table" commands
    8c1484ed5 Bump types-filelock from 0.1.3 to 0.1.4
    2d05a8bea Bump types-cachetools from 0.1.7 to 0.1.8
    fdc04e27a Bump types-tabulate from 0.1.0 to 0.1.1
    bb0ee837b Bump pycoingecko from 2.1.0 to 2.2.0
    a6628fc65 Bump types-requests from 0.1.11 to 0.1.13
    eab639949 Bump prompt-toolkit from 3.0.18 to 3.0.19
    fc7b372ce Bump ccxt from 1.51.40 to 1.51.77
    17f8936f4 Bump scipy from 1.6.3 to 1.7.0
    97351c95c Add section about GPU support
    7f434c041 Simplify mkdocs jquery inclusion by using overrides
    347eceeda Try fix fluky test
    122943d83 Don't run filter again for pairlist generator
    96fbb226c Implement better strategy checks
    a7f834217 Add small documentation about reload disabling
    6e99e3fbb Implement tests for message updating
    39b876e37 Log exchange responses if configured
    656bebd4d :beetle: Included completely non_optimized spaces in json + swapped merge dictionary order
    6e89fbd14 Remove Dockerfile.aarch64
    e1010ff59 Don't load protections from config if strategy defines a property
    0a1e15988 Fix errors during ubuntu install
    156780450 :zap: kwargs merge dictionaries instead of using loops
    546ca0107 :recycle: Fixed flake8 warning
    8562e1977 Document protections to come from the strategy
    a9f111dca Fix some types
    a49ca9cbf Change log-level "Executing handler" msg to debug
    b38ab84a1 Add documentation mention about new behaviour
    1c9def2fd Update freqtrade/optimize/optimize_reports.py
    1bb04bb0c Moved daily avg trade row next to total trades on backtest results
    38ed49cef move low to stoploss_reached
    6d5fc9671 Implement most pessimistic handling of trailing stoploss.
    cf7394d01 Export backtesting results by default
    4ba7a2bbd Fix mypy update problems
    63802aa7f Bump mkdocs from 1.2 to 1.2.1
    fe933e78b Bump ccxt from 1.51.3 to 1.51.40
    3f1d6d453 Bump mypy from 0.812 to 0.902
    4530ae28c Bump sqlalchemy from 1.4.17 to 1.4.18
    6dc4259c6 Bump mkdocs-material from 7.1.7 to 7.1.8
    cd6620a04 Ignore broken symlinks while resolving strategies.
    e22625292 Always use the same parameter sequence
    a95f760ff Simplify update logic by moving it to send_msg
    03eff6982 Simplify update message sending
    eaf0aac77 Remove OrderedDict
    fb4dd6c2a Update test to cover this scenario
    d54ee0eb0 Refactor hyperopt_tools naming
    c65b4e5d3 Small fix to models
    d35b2e3b8 Update ftx stoploss logic to properly detect correct trades
    a05e38dbd Require timeframe for plot-profit
    c215b24a1 Bump fastapi from 0.65.1 to 0.65.2
    c29292608 Small style improvements (no empty line at start)
    d4dfdf04f Move RPCMessageType to enums
    40f1ede77 Simplifying HO's result function
    756904f98 Set sell_reason to stoploss when closing the trade as stoploss
    9c34304cb Move state enums to enums package
    3c149b9b5 Move signalType to enums
    89b9915c1 Update imports for SellType in tests
    d16a61948 Move SellType Enum to it's own module
    b9cf950bb Add test for bad argument on /profit
    3310a4502 Change wording if limited lookback is used
    3cce66835 Creating a control variable to determine the existence of max drawdown in the final result.
    816bb531b Creating fake column for legacy mode on max drawdown
    4595db39a Displaying max. drawdown only when it is not legacy mode.
    c513c9685 Remove blank line (PEP8)
    5c3a418e6 Adjusting drawdown column position.
    35d614006 Displays the max drawdown in the hyper optimization results table.
    4512ece17 Update Discord link
    97a12ddab Version pin mkdocs to avoid nasty surprises
    dff8490da Fix docs rendering for pricefilter
    57cd8888e Bump blosc from 1.10.2 to 1.10.4
    14119d736 Bump mkdocs-material from 7.1.6 to 7.1.7
    77a2feeb9 Bump pycoingecko from 2.0.0 to 2.1.0
    2468ae35c Bump ccxt from 1.50.70 to 1.51.3
    69d74544a Bump python-telegram-bot from 13.5 to 13.6
    9073a0532 Bump pytest-cov from 2.12.0 to 2.12.1
    c8accd314 Bump uvicorn from 0.13.4 to 0.14.0
    6479217cb Don't build for test_multiarch
    c76848e08 Update dry-run description with new filling logic
    c389d44e9 Improve filling logic
    db03a2410 Add tests for fill methods
    1e988c97a Update dry-run order handling to use realistic fill prices
    a0893b291 Fix strategy samples to use runmode.value
    42b6d28b3 Update warning about order_time_in_force
    812eb229d plot-profit: Make "auto-open" HTML result optional
    80af6e43e test-pairlist: remove non-JSON headline from JSON output
    cabab44b7 Combine docker build scripts
    387f3bbc5 Adjust missed tests
    bd1984386 Move get_sell_rate to exchange class
    12916243e Move get_buy_rate to exchange class
    4e1425023 Further reorder exchange methods
    4c277b303 Reorder exchange methods
    67beda6c9 Add fetch_dry_run_order method
    10cd89a99 Allow the API to respond faster in case of long pairlists
    9edcb393b telegram: move the most important information to the top of sell message fixed flake error
    159440231 Add note about signal expiry
    79552a93f telegram: move the most important information to the top of sell message fixed tests
    53b1f3895 telegram: move the most important information to the top of sell message
    f920c2680 fix Hyperopt-list avg-time filters
    b5e3fe3b8 Document bittrex volumepairlist incompatibility
    f9541d301 Bump ccxt from 1.50.48 to 1.50.70
    5d4e18233 Bump coveralls from 3.0.1 to 3.1.0
    b4319b5ad Bump sqlalchemy from 1.4.15 to 1.4.17
    eb166147c Bump mkdocs-material from 7.1.5 to 7.1.6
    cd300c52e Bump urllib3 from 1.26.4 to 1.26.5
    2d7ccaeb3 Add test for load_config
    06b59551b Improve test coverage
    e3d5c9cb1 Fix typo in exception message
    901d984ee Tests should write to tmpdir, not testdir
    806838c3a Fix we use check sell_noti not noti
    b54da430b Add ability to plot bars on indicator chart and pass custom arguments to plotly.
    08f96df3a Don't write to testdir, but to tempdir
    d7fdc2114 allow list-strategies to show if params are hyperoptable
    f6b1abe23 Remove ci from test_multiarch again
    9cf2c2201 Align dockerfiles
    1e052bde9 Move Dockerfile.armhf to docker directory
    8658be004 Use docker-manifest to build multiarch images
    313567d07 Support having numbers in custom keyboard
    6418f2eed Removed binance.je from exchange specific notes
    4617967e1 Try building for multiarch
    14df24366 day/week options for Telegram '/profit' command mypy fix
    012309a06 day/week options for Telegram '/profit' command fixed line lenght
    36b68d370 day/week options for Telegram '/profit' command format changed to "/profit n"
    4b5a9d8c4 day/week options for Telegram '/profit' command revert accidental changes
    59366208b Add no_build-isolation to arm images too
    27bd3cea4 Fix failing docker build
    a965436cd day/week options for Telegram '/profit' command format changed to "/profit n"
    8a56af919 Update onlyprofit loss should use absolute profit
    a42effd4f Update email to freqtrade email address
    6235a4d92 [changes] - Hyperopt code example
    5d9610749 Don't configure isort twice
    3014bc346 Don't use Sum sign in hyperopt to avoid compatibility problems
    9fbc5c053 Switch to pyproject.toml for setup
    cf39dd216 Fix csv-export error with new hyperopt format
    e0083bc58 Support backwards-compatible sell setting
    66de5df1d Update sqlite init method
    b82f7a2df Update orders-migrations to work with new sqlalchemy syntax
    17f74f7da Ensure commit happens on forcebuy
    a01d05997 Add Trade.commit method for easy use
    6fb32c359 Use commit instead of .flush()
    eaa47ff33 Don't use autocommit
    c31cb6711 Further changes for sqlalchemy 1.4
    2f79958ac Move declarative_base import to import from .orm
    c5c323ca8 Settings notify sell in telegram base on sell reason (#5028)
    8bef7217e Forgot to save :O
    a6cd35365 Address random ci failure
    bd44deea0 BugFix - hyperopt-show --print-json include non-optimized params
    336f4aa6a day/week options for Telegram '/profit' command isort fix
    935ed3643 day/week options for Telegram '/profit' command mypy fix
    e9841910e day/week options for Telegram '/profit' command
    1cb430f59 Remove encoding specifics, gitattributes to echeckout as utf8
    e0ca3c014 Don't completely remove encode/decode
    30da307d1 Remove encode/decode for hyperopt
    cf03daa0f Fix bug in running hyperopt in windows 10 with preferred encoding in locale differrent from utf-8
    ba32708ed Update telegram.py
    54d0ac9d2 Update telegram.py
    21d3635e8 Update telegram.py
    69d62ef38 Add Refresh / Reload Button on rpc/Telegram
    
    
    Source code(tar.gz)
    Source code(zip)
  • 2021.5(May 27, 2021)

    Highlighted changes

    • custom_sell callback method, providing access to current trade info while determining the sell signal.
    • Store backtest-report for each hyperopt epoch.
    • Show backtest-report with hyperopt-show for the selected epoch.
    • Show non-optimized hyperoptable parameters.
    • Edge supporting informative-pairs.
    • Dataprovider get_analyzed_dataframe() now supports backtesting.
    • /performance now sorts pairs based on absolute profit.
    • Add max_value option to PriceFilter.
    • Add unit to unfilledtimeout - to allow timeouts < 1 minute.
    • Prevent partial fills with too low amount.
    • Add backoff timer on FIAT converter (in case rate-limit is reached).
    • Forcebuy can now ask you for a pair of your whitelist via inline-keyboard.

    How to update

    As always, you can update your bot using one of the following commands:

    docker-compose

    docker-compose pull
    docker-compose up -d
    

    Installation via setup script

    # Deactivate venv and run 
    ./setup.sh --update
    

    Plain native installation

    git pull
    pip install -U -r requirements.txt
    
    Expand full changelog
    0c9b913ca Version bump 2021.5
    f3d8e5c9e Improve hyperopt docs
    42453333b Align coinbase download with ccxt limits
    8e89d3e6e Fix sort error
    cc5769e90 Convert np.int64 to proper int
    a747312c1 Explicitly provide is_open to trade Object
    7dcf94f80 Update Dockerfile
    9465fd390 Fix devcontainer
    c0d3a31dd Update strategy-advanced.md
    ba3997185 Update wheels for ta-lib
    af16614bf Fix formatting issue
    20ccda169 Bump ccxt from 1.50.6 to 1.50.30
    7757c476f Bump ta-lib from 0.4.19 to 0.4.20
    2fddb4ae4 Bump jinja2 from 3.0.0 to 3.0.1
    4c02e6667 Bump mkdocs-material from 7.1.4 to 7.1.5
    6f990c597 Fix a rare error in save_result : ValueError: Out of range float values are not JSON compliant
    77302ea17 Update documentation for forcebuy query
    3f956441f Properly format % of zero_duration_trades
    a39860e0d Add tests for rejected signals
    7f125315b Track Rejected Trades
    916ece6a2 More realistic testcase for results
    db985cbc2 Fix hyperopt-show failing to display old results with missing new fields.
    765c824bf isort
    a7bd8b0aa Fix exception in plotting when no trades where generated
    069345850 Update freqtrade/rpc/fiat_convert.py
    08c707e0c Update docs with new format
    25cc4eae9 Fix tests that broke after table formatting changed.
    be1385617 Fix flake8 error in test_fiat_convert
    f8cdd6475 Reduce warnings when waiting for coingecko backoff
    21d986710 Fix missing `not` in `empty` check
    e4ca94459 Add tests for coingecko backoff
    6e05f856b Abort _find_price when cryptomap is empty after retry
    ab6bfbad1 Handle RequestExceptions that are not 429s in _load_cryptomap
    8842e0d16 Fix flake8 error in fiat_convert
    a0921ec75 Add backoff timer for coingecko API
    cc064f157 String columns should have a max-length defined
    5285cd69b Add documentation for Postgres and Mysql
    44bbc0718 CLosing bracket
    a7216e627 SQLite does not know drop column
    41e3233ba Fix failing test
    6acb2eb2b Add average column to orders table
    4e94d3d3e Add test for too small buy check
    45e262150 Add minimum-filled protection for buy cancels
    9537d9f4e Update strategy-customization.md
    dfa412f0d Fix typo in filter
    981b2df7c Include win:loss ratio in results tables.
    debd98ad9 Make results table more compact by merging win/draw/loss columns and drawdown abs/% into single columns.
    e1dc1357c Add drawdown column to strategy summary table.
    edcfa9409 Include zero duration trades in backtesting report.
    0e6c1d28f Fix cleanup CI by updating action
    96ea10e56 Fix circular import in hyperopt
    f39888886 Refactor preprocessed trimming to seperate method
    1a30e3922 Move squeeze into if block
    0045d3a72 fix wrong json key
    6172e67fc Update hyperopt.py
    c2b9da68e fix indent
    1b3bfb2e7 found root cause.
    48210170e wrap with is not empty
    0358b5365 Add "unfilledtimeout-unit" to full config sample
    082fb11bb Avoid having error `cannot set a frame with no defined index and a scalar`
    75f88b466 add ability to choose unit in unfilled timeout
    7a9853bfe Fix "Too many open Files" exception
    2565f91bc Adjust tests to reflect new stoploss behaviour
    16c22c7b6 Add pair name to stoploss
    36eba0f11 Don't use "r+" memmap, but "r2
    6aa574fa2 Convert ROI result to proper json object
    6659a0707 Add tests for max-value filter
    369f19df6 Add valuefilter to Pricefilters
    300639639 Fix docstring typo
    459fae6d8 Total row for telegram "/status table" command fixes
    3ad8fa2f3 Total row for telegram "/status table" command moved sum calculation to API
    cb50298bf Bump fastapi from 0.64.0 to 0.65.1
    196fde44e Total row for telegram "/status table" command work around mypy warning
    915ff7e1b Total row for telegram "/status table" command fix mypy warnings
    d7479fda1 Total row for telegram "/status table" command fix compiler warnings
    0abb9cfe2 Total row for telegram "/status table" command
    860a4d239 update doc to reflect better empty dataframe check
    10ef0f54a Total row for telegram "/status table" command
    40ae21f3a Bump numpy from 1.20.2 to 1.20.3
    c0b61282f Bump jinja2 from 2.11.3 to 3.0.0
    8143e6385 Bump aiofiles from 0.6.0 to 0.7.0
    976a026d3 Bump sqlalchemy from 1.4.14 to 1.4.15
    439ef197b Bump flake8-tidy-imports from 4.2.1 to 4.3.0
    78c77cca7 Bump pytest-cov from 2.11.1 to 2.12.0
    b0f854af9 Bump ccxt from 1.49.73 to 1.50.6
    37b71b8cf Fix PerformanceFilter failing in test-pairlist mode
    0d50e9956 Fix Agefilter checking for > instead of >=
    c9ac67e98 Fix some typos
    8f8d5dbff Add tests for sl_order_with_result
    6f3897647 Introduce cancel_stoploss_with_result
    380754b8a Fix typos in docstrings
    0b1dd0d20 Use correct order_id for ftx
    2d7735ba0 Update telegram to sort performance by absolute performance
    6b2a38ccf Add absolute Profit to apiserver
    2ecb42a63 Improve rest-api doc config samples
    8e9877849 Update installation.md
    db17b1a85 fix indentation
    88da1f109 fix #4412 download-data does not stop downloading at the specified TIMERANGE end date
    2d5f465f1 Fix protections being loaded multiple times for first strategy when backtesting.
    29fed37df Fix exception when few pairs with no data do not result in aborting backtest.
    e1447f955 /locks should always respond, even if there's no locks
    2eac23a15 if stoploss price is above the candle high, set it to candle open instead.  this can occur if stoploss had previously been reached but the sell was prevented by `confirm_trade_exit`
    0ace35bf3 Fix unreferenced error
    5e73195b3 Use linux lineseperator at all times
    330fb538a Couple tweaks for docs.
    09b6923e5 Use "choose" link for new issues
    4bc018a45 Change rate back to "open" for custom_sell
    09756e300 Subplots should always be included in responses
    ecee42f56 Read pickle file in mmap mode
    1055862bc Extract data-load + dump from hyperopt
    5e66d37d5 Slightly modify docker instructions for arm64
    24a1d5a96 Change default hyperopt-name to be shorter
    5f5597b93 Better test hyperopt writing and reading
    9bb6ba086 Update docs/strategy-advanced.md
    ad4c51b3c * Added "Dataframe access" section showcasing how to obtain dataframe and use it to get last-available and trade-open candles. * Fix custom_sell() example to use rsi from last-available instead of trade-open candle, add a pointer to "Dataframe access" section for more info. * Simplify "Custom stoploss using an indicator from dataframe example" greatly, add a pointer to "Dataframe access" section for more info.
    3cbe40875 read hyperopt results from pickle or json
    06bf1aa27 Store epochs as json per line
    7398ea88e Change optimize_reports to convert dates to string earlier
    e53bbec28 remove duplicate python3-pip
    bcab44560 Fix doc typo
    425d97719 Update strategy-advanced.md
    3d6b3f1d6 Add Issue config.yml
    8e6a95e11 Bump ccxt from 1.49.30 to 1.49.73
    43c7382d2 Bump fastapi from 0.63.0 to 0.64.0
    93268ba16 Bump pytest-mock from 3.6.0 to 3.6.1
    5ecd86ed5 Bump pymdown-extensions from 8.1.1 to 8.2
    6eb47b0ae Bump flake8 from 3.9.1 to 3.9.2
    0a82e2b06 Bump pytest from 6.2.3 to 6.2.4
    a7cd8fc57 Bump sqlalchemy from 1.4.12 to 1.4.14
    a7bd051f6 Bump mkdocs-material from 7.1.3 to 7.1.4
    d495ea369 Update docs about availability of get_analyzed
    1c408c040 Add small tests for backtest mode
    f2add4425 Update docs/docker_quickstart.md
    0a0e7ce5f Documentation for running arm64 builds
    00e93dad0 Fix mistake in the docs
    92186d89a Add some changes to strategytemplate
    2157923ae have edge send multiple messages if necessary
    17b9e898d Update docs displaying how to get last available and trade-open candles.
    8d8c782bd Slice dataframe in backtesting, preventing access to rows past current time.
    70189b199 Move dockerfile and document M1 image existance
    f1eb65354 Fix strategy protections not being loaded in backtesting.
    1b01ad6f8 Make exchange parameter optional and do not use it as parameter in backtesting.
    4b6cd69c8 Add test for no-exchange dataprovider
    d344194b3 Fix dataprovider in hyperopt.
    9b4f6b41a Use correct datetime.
    6fb4d83ab Fix dataprovider in hyperopt.
    6af4de8fe Remove dataframe parameter from docs.
    cdfa6adbe Store pair datafrmes in dataprovider for backtesting.
    dc6e702fe Pass current_time to confirm_trade_entry/confirm_trade_exit.
    d34da3f98 Revert "Add dataframe parameter to custom_stoploss() and custom_sell() methods."
    513be11fd Fix hyperopt output
    554f5f14b Raise exception if no data is left
    4f529fe42 Don't use Arrow to get min/max backtest dates
    a710b7dc0 Update tests to match new behaviour
    431cb5313 Support informative pairs in edge positioning
    947ad856c Update Dockerfile.armhf
    f55ce04fa Bump python from 3.9.4-slim-buster to 3.9.5-slim-buster
    da47f4e1a Fix Kraken balance update error
    860379bc5 Bump ccxt from 1.48.76 to 1.49.30
    2d8982426 Bump cachetools from 4.2.1 to 4.2.2
    82a08bd7d Bump python-telegram-bot from 13.4.1 to 13.5
    f138cca79 Be explicit with space assignment in documentation
    a63d9e951 Bump arrow from 1.0.3 to 1.1.0
    cea207026 Bump technical from 1.2.2 to 1.3.0
    37227170b Bump pyjwt from 2.0.1 to 2.1.0
    8ed15fb7c Bump sqlalchemy from 1.4.11 to 1.4.12
    8364343cd Bump scikit-learn from 0.24.1 to 0.24.2
    da574e4e6 Small style fixes
    6d7096dc6 Use both old and new fixtures for test
    fc110ea41 Support csv export for new and old versions
    303895b33 Add support for filters to new hyperopt-results
    ef9dd0676 Rename hyperoptresult fixture  to avoid naming collision
    99e1ef9b4 Fix docs typo for CategoryParameter
    b71d85059 Fixed anchor link for PriceFilter
    4fc37f15d Fixed syntax error in the example
    287b43e99 Output strategy results including non-optimized parameters
    d069ad43d Small reformatting in hyperopt
    8ee0b0d8e Store not optimized parameters (if applicable)
    9049d6b77 Reformat hyper to cache parameters
    6b6270db1 Add hint about "sell_profit_only" to docs
    46f0f6603 Keep dimensions stored in hyperopt class
    ced5cc7ce Don't recalculate min/max date - they won't change between epochs
    ecdfb6e5e Fix output of % for new format
    881cba336 Show backtesting result in hyperopt-show
    420e75af6 Extract show_backtest_result for one strategy
    97478abb9 Move format explanation string to HyperoptTools
    4c00d4496 Update tests to reflect new backtest returns
    f2e182002 Simplify calling backtesting by returning the proper result
    e2e1d3482 Extract stake_currency param from hyperopt-explanationstring
    852f12534 Fix tests
    6aaaad29d Use backtesting output for hyperopt results
    545cba7fd Refactor optimize_report
    9994fce57 Extract generation of report for one strategy to it's own method
    b125c975c Rename strategy_comparison method
    c45204a2c Fix failing mocks
    ac2e1eb3d Don't import joblib for regular strategies
    bdd0184f0 Small stylistic fixes
    0b280a59b Support per exchange params for OHLCV endpoint
    ca0749dfd Update strategy-advanced.md
    555262b6e Only calculate additional indicators if the space is selected
    e381df909 extract has_space to Hyperopt-Tools
    e050ea8df Don't load parameters for other space
    42a52ff66 Docker support for arm64
    856b65206 Reduce log-frequency of AgeFilter
    f3388ed9a fix IStrategy: abstract methods still need to pass through return value
    6763bd447 Fix link to poweredby image
    3be7bc509 Telegram: send locks as chunks of 25.
    4d1613a43 Add chunks function.
    f2bd70dfc Add sentence about how it differs from custom_stoploss()
    cf839e36f Add to custom_sell() documentation
    83708ae04 Update strategy-advanced.md
    7cf8c5d65 Docker Quick start grammatical error
    5bc908870 Fix documentation comment missalignment
    3285f6caa Improve wording in Note box
    7c8a36744 Update docs to not promote stoploss / take-profit
    6eb947ae0 Move static Trade functions to right class
    cc916ab2e Add test for custom_sell
    55faa6a84 safe_wrapper should use kwargs to call methods
    2061162d7 Convert trade-opendate to python datetime
    dbf33271b Small doc changes
    31a2285ea Fix mypy complaints.
    9c21c75cf Fix inaccuracy in docs.
    98f6fce2e Use correct sell reason in case of custom sell reason.
    e58fe7a8c Update custom_sell documentation.
    004550529 Document dataframe parameter in custom_stoploss().
    595b8735f Add dataframe parameter to custom_stoploss() and custom_sell() methods.
    961b38636 Remove explicit sell_flag parameter from SellCheckTuple.
    bfad4e82a Make execute_sell() use SellCheckTuple for sell reason.
    a90e79569 Warn and trim custom sell reason if it is too long.
    1aad128d8 Support returning a string from custom_sell() and have it recorded as custom sell reason.
    a77337e42 Document IStrategy.custom_sell.
    1292e08fe Use strategy_safe_wrapper() when calling custom_sell().
    0fd68aee5 Add IStrategy.custom_sell method which allows per-trade sell signal evaluation.
    b69a9134f fixing support for HitBTC #4778
    7a98de10e telegram: Formatting typings
    e3c5a4b3f telegram: Formatting imports
    5fae4ea2f telegram: Formatting code
    50bdae8eb telegram: Adding forcebuy inline keyboard
    e2f28991e telegram: Wrapping long line
    271e4500d telegram: Adding dynamic keyboard to /forcebuy response
    
    Source code(tar.gz)
    Source code(zip)
  • 2021.4(May 3, 2021)

    Highlighted changes

    • Quick Hyperopt - using Parameters to inline hyperopt parameters in the strategy. In many cases, this will make a seperate hyperopt file unnecessary. Please make sure to read the updated hyepropt documentation for full details.
    • new-config will help configuring the RestAPI and frequi.
    • Technical is part of the freqtrade dependencies and therefore available in the default Docker images (no need to build your custom docker image anymores)
    • Docker images are now using a non-root user to run freqtrade.
    • VolatilityFilter - filtering pairs based on low / high volatility. check the Documentation for more details.
    • Buy / sell fill notification messages. These messages are sent when a order fills - and are disabled by default. Check the Telegram docs for details.
    • Backtesting output is now sorted.
    • Freqtrade will now dynamicaly determine which exchanges can be supported.
    • Improved "unlimited" calculation when stake-currency is deposited or withdrawn.
    • plot-profit will now show absolute Values, no longer Percentage results.

    How to update

    As always, you can update your bot using one of the following commands:

    docker-compose

    docker-compose pull
    docker-compose up -d
    

    Installation via setup script

    # Deactivate venv and run 
    ./setup.sh --update
    

    Plain native installation

    git pull
    pip install -U -r requirements.txt
    
    Expand full changelog
    e905e0328 Version bump to 2021.4
    63c28b651 Remove obsolete get_balance method
    1465af50d FTX usable configuration
    3f84c37a7 Fix wallet calls
    298f54adf Bump pytest-asyncio from 0.15.0 to 0.15.1
    6f0a585bd Fix random test failure due to ttl 0  issue
    02160d52e Bump scipy from 1.6.2 to 1.6.3
    bdcf21e18 Bump pycoingecko from 1.4.1 to 2.0.0
    e5bdafd4a Bump ccxt from 1.48.22 to 1.48.76
    09a3448fd Bump pytest-mock from 3.5.1 to 3.6.0
    14ef080d2 Bump sqlalchemy from 1.4.9 to 1.4.11
    4a5eba3db Bump mkdocs-material from 7.1.2 to 7.1.3
    bb7ef2f80 Cache pairlist in pairlist, not globally
    7448a05f1 Use correct variable in pairlist_manager
    fd3afdc23 plot-profit should use absolute values
    4636b3970 Fix failed test due to exchange downtime
    2eda25426 fix typo in sample_strategy.py
    e85553048 hdf5 handler should include the end-date
    cb86c90d3 Remove obsolete TODO's
    88f26971f Use defaultdict for backtesting
    b22377538 Update "output" of jupyter notebook as well
    185d754b8 Improve documentation to suggest config-private.json
    31b0e3b5e add distribution graph to example notebook
    7453dac66 Improve doc wording
    d647b841f Add docs how to optimize indicator parameters
    5c7f278c8 add tests for IntParameter.range
    90476c428 Add "range" property to IntParameter
    9dc7f776d Improve log output when loading parameters
    191a31db3 NameErrors should not stop loading a different strategy
    df16fbd74 Add "dataload complete" message to backtest + hyperopt
    4005708f8 Handle edge with volumepairlist and empty pair_whitelist
    406c1267a Remove superfluss space
    ccaf5764d Small adjustments
    0d2457cd4 Add lock_reason to per-pair lock
    7e2e19664 improve sell_message by using sell rate
    314418540 Allow specifying "new_pairs_days" in config.
    f744df237 Fix bad fill message
    09efa7b06 Add --new-pairs-days parameter for download-data command.
    515c73f39 Don't hard-limit trades endpoint for now
    896ec58ca Add the reason why there is a global pairlock when lock is available
    92a2e254a Fix backtesting test
    d8c8a8d8c Remvoe pointless arguments from get_trade_stake_amount
    f7a4331c8 Create config_ftx.json.example
    ba2d4d465 Reduce number of calls to `Trade.total_open_traes_stakes()`
    0233aa248 Limit stake_amount to max available amount
    9f6f3e086 Address ZeroDivisionExceptiond
    05ce3acc4 Improve tests for api_trades
    759bbd8e7 Update documentation about pagination
    bd92ce938 trade_history should paginate through results
    cfa9315e2 Prevent out of candle ROI sells
    5defd9a7f setup.sh: Install libpython3-dev on Debian/Ubuntu
    fd110c7d6 The error that it prints says the contrary to what was evaluated.
    f821ef5ae Final finetunings of rpc_fill messages
    efbe0843b Add documentation for fill messages
    d740aae8c Default fill notifications to off
    0341ac5a5 rename RPC message types
    8800a0977 Don't send double-notifications for stoploss fills
    fecd5c582 Add buy and sell fill notifications
    71b017e7c Simplify webhook test
    06d6f9ac4 Fix calculation of unlimited_stake in case of modified wallet
    1936dd1ee Add test-case verifying "changing" wallet
    2254f65fa use binance intests instead of bittrex
    bd7e535e4 Use "human" amounts in stake_amount tests
    c9e901cf3 Move wallet tasks to test_wallets
    75612496d Improve poweredBy logo spacing
    a2acb54e7 Clarify comments in pairlist
    0ddc68b37 Bump ccxt from 1.47.47 to 1.48.22
    66b3ecfee Remove faulty font-family in svg
    9407dbcf8 Add freqtrade powered by ccxt
    b94de3030 Bump mkdocs-material from 7.1.1 to 7.1.2
    59d02f3f0 Bump sqlalchemy from 1.4.7 to 1.4.9
    05246e663 Bump pandas from 1.2.3 to 1.2.4
    8d2e6954a Bump flake8 from 3.9.0 to 3.9.1
    296ea30cc Bump pytest-asyncio from 0.14.0 to 0.15.0
    0737e3fa2 Clarify refresh_period section for volumepairlist
    44bfb5366 Don't use current rate for closed trades
    fbb907553 Update util command structures too
    c8d3d449a Add quick test for pair_whitelist overwrite
    6a9c47d15 Update docs with new options
    1eb9ce422 Allow specifying pairs for optimize commands via `--pairs`
    5c579613e add /trade endpoint to rest_client script
    aeb81f90f Implement errorhandling for /trade endpoint
    e6936ae13 Improve wording in docs
    8ce5522a1 Add additional documentation for SKDecimal space
    2011912a1 Adapt documentation to use 3 decimals only
    01b303e0f Aligning the doc
    5e51ba625 fix flake8
    ce870bbcf Use 3 decimals for ROI space
    714278725 Roll back unintended changes that break rendering
    c9c039d64 remove `copy()` from `custom_info` example
    ce23d9dfe Fix test min stake amount
    885096f2b Update tests for get_min_pair_stake_amount
    fa343b048 Fix get_min_pair_stake_amount formula
    52c482cec Convert trailing and roi defaults to skdecimal
    e82081480 Default-stoploss-hyperopt should use decimal space, nto real
    862df2b43 Add blacklist recommendation for kucoin
    ba38e398e Add type hint
    c316531c4 make tests 3.7 compatible
    c2f35ce41 /balance should use cached tickers when possible
    82d66410f Fix /performance output
    521e48c94 Add doc section for Kucoin
    e4bb6b158 Add kucoin exchange subclass
    638cd4e8f Upgrade cleanup action to latest version
    37c8fd6ad Remove arrow from models.py
    e0f2bb616 update conda dependencies to make compatible with tables package
    99e7ee127 Fix ftx stoploss creation test
    f1cf56cc4 Update current_whitelist test
    9b23be402 Return a copy from `current_whitelist`
    4b902d6eb Don't use response-model on trades endpoint for now
    9a58a8534 Don't export "hum" date versions for trade objects.
    1194d0c0f Update brew before installing packages
    d4dc05980 Update ftx.py
    f1ac6853f Fix discord invite link
    c19ebc015 Bump mkdocs-material from 7.1.0 to 7.1.1
    53bbb2b42 Bump ccxt from 1.46.38 to 1.47.47
    1b925ec4a Bump sqlalchemy from 1.4.5 to 1.4.7
    906c4e64d chore(readme): Fix markdown of docker manual
    aaf9872ef Simplify webserver test
    4820b4b31 Fix test failure
    579e68f31 Reduce log verbosity when  buying
    96a5b6555 fix documentation inconsistency fixes freqtrade/freqtrade#4650
    14e857423 fetch_balance is never called in dry-run
    37c2e037f Rename dry_run_order to create_dry_run_order
    ebbe47f38 Simplify fiat convert and fix USD coingecko problem
    9804e2011 Don't use _set_value for autoOpt-Spaces
    83fbaf16c Extract numeric param validation and explosion
    ea4b5d675 Don't explode low/high, but use explicit parameters
    34e47db18 Test SKDecimal space
    fedff1a75 Fix failing test
    5f6740064 Add SKDecimal Space
    126127c1e Fix armHF image to use ftuser on install too
    4b2cec22e Chown .local dir
    0b4b67e46 add FAQ entries for shorting, futures, and options
    644dcc164 Only allow chown via sudo
    4eb251ce4 Update dockerfiles to run as non-root
    898c24949 Add chown method to support docker
    74bf0b639 Fix typo in documentation
    5a5c5fccf Add gitattributes file
    862f69f89 removed typos
    f8244d9d7 resolves freqtrade/freqtrade#4650
    4d30c32ad Improve resiliancy of a test
    5ee879a74 isort resolves freqtrade/freqtrade#4650
    17508efbb resolves freqtrade/freqtrade#4650
    7f8d90d34 Update list-exchanges doc with new format
    d2680f6cb Remove telegram deprecation warning
    ac6bff536 Fix test failure with UI test if UI is deployed
    0f0607bae Fix rangeestability filter caching issue
    9772a9363 resolves freqtrade/freqtrade#4650
    9089323d2 resolves freqtrade/freqtrade#4650
    187cf6dcd VolatilityFilter resolves freqtrade/freqtrade#4650
    a3b4667f7 Update exchange validation to use "validate_exchange".
    b6599c1da Improve Kraken-specific config description.
    5ed782844 Remove hardcoded list of non-working exchanges
    f37fbbf4e Update constants.py
    c40b811f1 flush after creating mock trades
    bf0886a83 Update constants.py
    56ef3af42 Allow comments in pairs files
    1733e2406 pyLint adjustment resolves freqtrade#4650
    be770a894 added VolatilityFilter resolves freqtrade#4650
    6f02acdbb Revert "resolves freqtrade/freqtrade#4650"
    142690c93 resolves freqtrade/freqtrade#4650
    ddabfe020 adjust tests to match new exchangelist output
    969d44a95 Update Dockerfile.armhf
    0550f261f Add exchange_has validation
    6633752fc Bump python from 3.9.3-slim-buster to 3.9.4-slim-buster
    fc78246bb Some changes to rest-api docs
    ddba0d688 Add new trade endpoint to docs
    c176e277f Add a REST endpoint for getting a specific trade
    78a84f808 Allow --hyperoptloss in addition to --hyperopt-loss
    7b2a0d46c Fix typo
    3044aa18e Add warning for hyperopt-parameters
    c51839dc3 Make the logmessage for loaded parameters clearer
    dc406fe19 Fail in case of name and explicit space name collisions
    7132aefd6 Rename Trade.session to Trade._session
    af5258181 Update Dockerfile.armhf
    e979f132e Bump python from 3.9.2-slim-buster to 3.9.3-slim-buster
    ea0b47a7f Replace test occurances of Trade.session with Trade.query.session
    0407bf755 Use .query.session to make sure the scoped session is used properly
    abbc56c1c Bump pytest from 6.2.2 to 6.2.3
    36b39f913 Bump pycoingecko from 1.4.0 to 1.4.1
    320172a22 Bump sqlalchemy from 1.4.3 to 1.4.5
    fc2f9fd0c Bump ccxt from 1.45.44 to 1.46.38
    342f14472 Bump mkdocs-material from 7.0.7 to 7.1.0
    c2be9b971 Improve backtest assumptions with fill rules
    9e56f6d4e Sort pair lists by total profit
    30e5e9296 Don't allow one parmeter to be in 2 spaces
    9d4b5cc6b Fix typo
    5f6eae52a fix too long performance message
    6555454bd Remove more ticker_interval occurances
    771fc0574 Update sample strategy with hyperoptable Parameters
    093d6ce8a Add sample for Nested space
    c2d43a526 Combine Legacy and advanced hyperopt sections
    32a503491 Reorder hyperopt methods
    4eb7ce52c Remove duplicate entries from hyperopt_legacy
    faf40482e Fix parameter printing.
    23c19b685 New hyperopt documentation.
    e7a1924aa Fix typo
    7728e269f Include Technical in default image
    ea43d5ba8 Implement DecimalParameter and rename FloatParameter to RealParameter.
    3691ae868 Make sure the fiat converter exists before calling it
    ede26091b Add validation in the right places...
    f47dc3178 Refactor the comparison involving `not`
    2c0079b00 Add profit_fiat to tests, use ANY, as price changes...
    51f0fcb2c Add profit_fiat to REST API
    d64295ba2 Adapt test strategy to new parameters
    5acdc9bf4 Fix type errors by converting all hyperopt methods to instance methods
    5e5b11d4d Split "enabled" to "load" and "optimize" parameters.
    2869d5368 Allow edge to use dynamic pairlists
    50fcb3f33 Reduce verbosity of missing data if less than 1% of data is missing
    89bbfd232 Remove candle_count from dataframe before backtesting
    6954a1e02 MOre tests for ParameterHyperopt
    5d5debab6 Bump scipy from 1.6.1 to 1.6.2
    3e864a87a Bump cryptography from 3.4.6 to 3.4.7
    dacaa4a73 Bump ccxt from 1.43.89 to 1.45.44
    8d01767a4 Fix CI syntax
    95a9c9276 Add permission-check before slack notify
    8e49271e6 Bump prompt-toolkit from 3.0.17 to 3.0.18
    607c05b3c Bump sqlalchemy from 1.4.2 to 1.4.3
    e5789b36c Bump numpy from 1.20.1 to 1.20.2
    932284574 Bump mkdocs-material from 7.0.6 to 7.0.7
    f6211bc00 new-config should include API config
    fc8478111 Improve strategy template
    929f32960 more tests
    20f7e9b4b Make BaseParameter get_space abstract
    802238640 Type custom_hyperopt
    4fd7bedcb Sort imports ...
    71e213469 Add some simple tests for hyperoptParameters
    786ddc6a9 remove unused imports
    e934d3ddf [SQUASH] Oopsie.
    40f5c7853 [SQUASH] Add a way to temporarily disable a parameter (excludes from parameter loading/hyperopt) and print parameter values when executed.
    bbe6ece38 [SQUASH] Fix parameter configs not loading.
    424cd2a91 [SQUASH] Use "space" instead of category.
    fd45dfd89 [SQUASH] Make skopt imports optional.
    11689100e [SQUASH] Fix exception when HyperOpt nested class is not defined.
    e9f0babe8 [SQUASH] Use HyperStrategyMixin as part of IStrategy interface.
    2d13e5fd5 [SQUASH] Oopsies.
    bb89e44e1 [SQUASH] Address PR comments.
    0a205f52b Optional support for defining hyperopt parameters in a strategy file and reusing common hyperopt/strategy parts.
    4d8183491 Merge `isinstance` calls
    45da3a702 Refactor unnecessary `else` / `elif` when `if` block has a `continue` statement
    910e15b17 Remove methods with unnecessary super delegation.
    6d6ad035d Remove length check in favour of truthiness of the object
    537ad059b Remove unnecessary use of comprehension
    62d99a0b7 Remove unnecessary comprehension
    4f5a1e94a Add .deepsource.toml
    
    
    Source code(tar.gz)
    Source code(zip)
  • 2021.3(Mar 28, 2021)

    Highlighted changes

    • Allow removing locks via Telegram (/unlock <lockid | pair>) and API
    • Show trade-id in bot-initiated (buy, sell, cancel) notifications
    • New ordertype config option for forcesell - which will allow you to use a different ordertype for forcesells
    • Allow changing the order-type for forcesell and forcebuy via order_types configuration
    • New backtesting functionality, allowing compounding (stake_amount="unlimited")
      • Backtesting now requires a valid dry-run wallet balance (can be provided via --dry-run-balance 1000)
      • Minimum amounts for coins are respected (e.g. backesting with 1USDT per trade will no longer work).
      • Backtesting can now run out of money (get broke) - so no further trades can happen
    • New backtesting metrics:
      • Absolute drawdown
      • Min / Max Balance
      • Starting Balance
      • Final balance
      • Trade volume

    As the new backtesting format is a major change over the old format, identical results between prior versions and this verison cannot be guaranteed (it will depend on the strategy).

    How to update

    As always, you can update your bot using one of the following commands:

    docker-compose

    docker-compose pull
    docker-compose up -d
    

    Installation via setup script

    # Deactivate venv and run 
    ./setup.sh --update
    

    Plain native installation

    git pull
    pip install -U -r requirements.txt
    
    Expand full changelog
    7fb34f7e2 Version bump 2021.3
    39bfe5e1a Thee to the
    292ea8c1d Update backtesting.py
    0ca95aa0c Change rate to acctual close rate
    ec15610bf Fix isort issue
    d795febf9 Add info to documantation
    2fd510e6e Added comment with an example calculation
    65a9763fa Fixed an issue when there were exactly 50 trades, it was sending an extra empty table
    c928cd38d Small bugfix to make sure it shows all the trades
    d5301b4d6 RateLimit should be enabled by default
    f51f4b181 Add confirm_trade_exit and confirm_trade_entry to backtesting
    dc4ea604d Add confirm_trade_exit and confirm_trade_entry to backtesting
    eb5d69dcd Add confirm_trade_exit and confirm_trade_entry to backtesting
    6856963ae Add confirm_trade_exit and confirm_trade_entry to backtesting
    4e8999ade Changed the code for status table a bit so that it splits up the trades per 50 trades, to make sure it can be sent regardless of number of trades
    b7702a1e9 Improve tests to work with new sqlalchemy version
    e39cff522 Remove duplicate dict keys in test
    ea3012e94 Bump sqlalchemy from 1.3.23 to 1.4.2
    09c7ee9e9 Bump isort from 5.7.0 to 5.8.0
    9612ba34e Bump urllib3 from 1.26.3 to 1.26.4
    ac7a1305c Bump ccxt from 1.43.27 to 1.43.89
    e315a6a0d assume "last" can miss from a ticker response
    43d7f9ac6 Add bid_last_balance parameter
    f4e71c1f1 get_buy_rate tests should be sensible
    73876b61b Show potential errors when loading markets
    16a54b361 Don't require non-mandatory arguments
    fe7f3d9c3 Add price side validation for market orders
    066dd7221 add orderbook structure documentation
    69799532a Document usage of open_date_utc
    7ffe1fd36 Fix calculation error for min-trade-stake
    fb90901bb Fix telegram table for both rendered and github markdown
    c1f799227 Added slash to fix a broken formatting
    0d5833ed9 Use OperationalException for TimeRange errors
    4d52732d3 Added a small snippet to give users a descent error message,  when their start date is afer the stop date. Also updated the tests.
    dd4d1d82d Update docs/strategy-advanced.md
    bf14796d4 revert "Trailing stoploss with positive offset" example as stoploss_from_open() wasn't adding value
    b6e9e74a8 Add link between stoploss_from_open and custom_stop documentation
    983c0ef11 update stoploss_from_open examples to use helper function
    76ca3c219 extract result-printing from hyperopt class
    b05de6d46 Move advanced exchange config to exchange page
    6597055a2 Ensure ccxt tests run without dry-run
    ce1ed7626 complete stoploss_from_open and associated test
    aee259149 add stoploss_from_open() as a strategy_helper
    79d4585da Add check to ensure close_profit_abs is filled on closed trades
    8f2693525 Bump ccxt from 1.42.66 to 1.43.27
    b6c29bebb Update slack action
    a209b0a39 Bump python-telegram-bot from 13.3 to 13.4.1
    1173d8971 Bump prompt-toolkit from 3.0.16 to 3.0.17
    22c34faca Bump mkdocs-material from 7.0.5 to 7.0.6
    09872d8e4 Bump flake8 from 3.8.4 to 3.9.0
    b191663a7 Adapt hyperopt templates to be better aligned
    0b35c0571 Allow custom fee to be used during dry-run
    e92441643 correct math used in examples and clarify some terminology regarding custom stoploss functions
    7a63f8cc3 Fix hdf5 support on raspberry
    b57c15065 Final balance should include forcesold pairs
    618bae23a fix: Use now() to match timezone of download data
    eb4f05eb2 Add documentation for hyperopt.strategy availability
    6389e86ed Add test for uvloop fix
    0320c8dc9 Improve tests for trades_proxy
    5e872273d Provide access to strategy instance from hyperopt class.
    d1acc8092 Improve backtest performance
    425cd7adb Create event loop manually if uvloop is available
    ef9977fc1 Make stake_amount + stake_currency mandatory for backtesting
    333ad0260 Fix random test failure
    60f6b998d Update logo with smiling one
    99583bbd0 Fix problem with FTX
    a1902f226 Make trade-close sequence clear for mock trades
    37e600616 Fix order_by in trades command
    4b550dab1 Always reset fake-databases
    25c9e8995 Bump aiohttp from 3.7.4 to 3.7.4.post0
    7950acf6d Bump pandas from 1.2.2 to 1.2.3
    a9c114d30 Bump mkdocs-material from 7.0.3 to 7.0.5
    a2b923608 Bump arrow from 1.0.2 to 1.0.3
    1f314f7d4 Bump ccxt from 1.42.47 to 1.42.66
    46965b1a2 Bump coveralls from 3.0.0 to 3.0.1
    0b81b58d2 Use pandas.values.tolist instead of itertuples
    02d7dc478 Increase cache size to be large enough to hold all pairs
    ad0e60b5b Add trade_id to Cancel messages and reduced lines length
    2472f5287 Add trade_id to tests
    03b89e7f7 Add trade_id in Telegram messages
    a405d578d Introduce forcebuy ordertype to allow specifiying a different ordertype for forcebuy / forcesells
    453222201 Fixed line length in HyperOpt for new name
    519630640 Remove deprecated profit return value
    345f7404e Add strategy name to HyperOpt results filename
    731ab5d2a Fix too long line errors
    bc05d0312 Make best / worst day absolute
    dfeafc220 Update docs/strategy-customization.md
    161a4656d Update docs/strategy-advanced.md
    1304918a2 fix(docs/strategy-advanced/custom_info-storage/example): only add to "custom_info" in backtesting and hyperopt
    900deb663 fix(docs/strategy-advanced/custom_stoploss/example): check if "pair" exists in "custom_info" before requesting
    c56b9cd75 fix(docs/strategy-advanced): add warnings
    a6ef354a5 fix(docs/strategy-advanced): use `get_analyzed_dataframe()` instead of `custom_info.iloc`
    22a558e33 fix(docs/strategy-advanced): fix link to custom_info storage
    1a02a146a feature(docs/strategy-advanced/custom_info-storage/example): add ATR column calculation
    4064f856d fix(docs/strategy-customization): add "hyperopt" to runmode check for custom_info in custom_stoploss example
    b52698197 refactor(docs/strategy-advanced): extract "Storing information" section from `strategy-customization.md`
    d05acc30f fix(docs/strategy-customization): remove superflous `prints` from example code
    32f35fcd9 fix(docs/strategy-customization): "custom_stoploss indicator" example need to check for RUN_MODE
    c5900bbd3 feature(docs/strategy-customization): add example "Custom stoploss using an indicator from dataframe"
    cc4e84bb7 feature(docs/strategy-customization): add example how to store indicator with DatetimeIndex into custom_info
    5cf3194fa chore(docs/strategy-customization): clean up left over trailing whitespaces
    d5993db06 refactor(docs/strategy-customization): change variable name for better readability
    0968ecc1a added "Median profit" column to hyperopt -> export-csv
    078b77d41 Fix crash when using unlimited stake and no trades are made
    55a315be1 fix: avg_stake_amount should not be `NaN` if df is empty
    a85e656e8 rest_client.py
    218d22ed5 rest_client.py
    95c635091 rest_client.py
    82bf65f69 rest_client.py
    4fe2e542b rest_client.py
    7c35d107a rest_client.py
    4bb6a2774 Don't catch errors that can't happen
    007ac7abb Add telegram pair unlocking
    6640156ac Support deleting locks via API
    4e5136405 Add warning about sandboxes
    64ef7becc Update styles to work with new mkdocs version
    2083cf6dd Fix mypy errors introduced by Arrow update
    3d65ba2dc Add rpc method to delete locks
    bba9b9e81 Don't use __root__ directly for api response
    4537a4898 Bump arrow from 0.17.0 to 1.0.2
    d0fd3c289 Bump ccxt from 1.42.19 to 1.42.47
    00747a3bc Bump mkdocs-material from 6.2.8 to 7.0.3
    aba034ff4 Fix mypy problem after mypy 0.800 upgrade
    94cab4ed7 Bump mypy from 0.790 to 0.812
    a13dc3cdd Use sensible defaults for balance_dust_level
    9cb37409f Explicitly convert starting-balance to float
    089540781 add balance_dust_level parameter to make telegram less chatty
    05f057fe7 Stringify favicon path
    e791ff604 Fix: custom_stoploss returns typo
    d9d561743 UPdate backtesting doc for total profit calc
    b2e9295d7 Small stylistic fixes
    6018a0534 Improve backtest documentation
    324b9dbdf Simplify wallet code
    f65092459 Fix optimize_reports test
    fb489c11c Improve test-coverage of pairlocks
    f5bb5f56f Update documentation with backtesting compounding possibilities
    98f3142b3 Improve handling of backtesting params
    86f9409fd fix --stake-amount parameter
    d3fb473e5 Improve backtesting documentation
    fc256749a Add test for backtesting _enter_trade
    60db6ccf4 Add test for subclassing
    53a57f2c8 Change some types
    03eb23a4c 2 levels of Trade models, one with and one without sqlalchemy
    394a6bbf2 Fix some type errors
    52acacbed Check min-trade-stake in backtesting
    f04f07299 Improve backtesting metrics
    791316645 Improve performance by updating wallets only when necessary
    37d7d2afd Wallets should not recalculate close_profit for closed trades
    f367375e5 ABS drawdown should show wallet high and low values
    aed23d55c Add starting balance to profit cumsum calculation
    0d2f877e7 Use absolute drawdown calc
    74fc4bdab Shorten debug log
    72f21fc5e Add trade-volume metric
    35e6a9ab3 Backtest-reports should calculate total gains based on starting capital
    8d61a2638 Allow dynamic stake for backtesting and hyperopt
    e4abe902f Enable compounding for backtesting
    959ff9904 Add Dry-run wallet CLI option
    0754a7a78 total_open_trades_stake should support no-db mode
    0faa6f84d Improve Wallet logging disabling for backtesting
    20455de2a Small enhancements to docs
    081b9be45 use get_all_locks to get locks for backtest result
    e32b2097f Use timestamp in UTC timezone for ROI comparisons
    712d503e6 Use sell-reason value in backtesting, not the enum object
    b5177eada Extract close method for exchange
    4ce4eadc2 remove only ccxt objects when hyperopting
    9361aa1c9 Add wallets to backtesting
    f0a154692 Wallets should use trade_proxy
    9968e4e49 Add warning about downloading data from kraken
    642e3be7c Fix(strategy/interface.py): comment typo
    f0391d376 Better JSON webhook result description
    efa50be14 Fix blank lines rule at test_rpc_webhook.py
    7281e794b Fix too long line at webhook.py
    9a926c155 Add forcesell entry to full config
    984e70d4e Add webhook result example to documentation
    52641aaa3 Add test for webhook JSON format
    a2cd3ed5b Add documentation for JSON webhook format
    fc69240e6 Add JSON-encoded webhooks
    51d73a588 Fix #4441
    622ff771e Bump aiohttp from 3.7.3 to 3.7.4
    1b3b38910 Remove binanceje, add ftx to config selector
    c4979fd87 Add note to check configuration settings to docker quickstart
    d877e3c1d Fix failing CI due to unavailable pairs
    6d38a2e65 Small enhancements to docs
    262394e11 Add psutils to support OOM Gracefull shutdown
    006f31129 Reduced length of the line
    117f0064e Allow changing the order_type for forcesell
    1f30c3d7f Refresh slack link
    
    Source code(tar.gz)
    Source code(zip)
  • 2021.2(Feb 24, 2021)

    Highlighted changes

    • Remove BacktestResult return type, use the Trade object instead. This gives us more datapoints for each backtested trade.
    • Align Total Profit from the backtesting summary with the Total Profit column from the table.
    • Improve how max_open_trades is calculated when used for backtesting with fewer pairs than max_open_trades.
    • New subcommand freqtrade install-ui to deploy freqUI from within the bot. Make sure to read the API documentation to fully understand this.
    • Reduced buttonsize on Telegram to allow more buttons in custom layouts.
    • Slightly improved formatting of Values for some Telegram methods (no need to use 8 decimals for USDT).
    • New metric cumsum min / max metrics to backtest report
    • Fix "disappearing whitelist" bug when staticpairlist was used in combination with certain filters

    How to update

    As always, you can update your bot using one of the following commands:

    docker-compose

    docker-compose pull
    docker-compose up -d
    

    Installation via setup script

    # Deactivate venv and run 
    ./setup.sh --update
    

    Plain native installation

    git pull
    pip install -U -r requirements.txt
    
    Expand full changelog
    aea8f05d1 Version bump 2021.2
    d6d8678fd Fix missleading FAQ information
    3612c786b Bump tabulate from 0.8.8 to 0.8.9
    a0fa1e84f Bump ccxt from 1.41.90 to 1.42.19
    c71ecd368 Fix wrong pair-content in strategy-analysis notebook and documentation
    228e51b60 Fix #4405
    5e4730b73 Add test confirming  #4405
    8a62bfa0e armhf image should not be updated to python3.9
    d8c7e5ce8 Bump python from 3.9.1-slim-buster to 3.9.2-slim-buster
    85f12f8c2 Bump cryptography from 3.4.5 to 3.4.6
    dea04c645 Bump scipy from 1.6.0 to 1.6.1
    932aabd01 Bump uvicorn from 0.13.3 to 0.13.4
    8c398acc0 Bump python-telegram-bot from 13.2 to 13.3
    ab74c6e77 Bump tabulate from 0.8.7 to 0.8.8
    188d7aaf8 Fix example in storing-information docs
    3629892fc Stoploss-guard should use the trade_limit or more
    245e39e52 dry-run should be a bool, not a string
    c9688f1c8 fix(doc/plotting): misplaced comma in example code
    2b0d2070d Avoid crash with /delete
    327c23618 Improve documentation for get_analyzed_dataframe
    b5a9ce289 Download data in the right format as well ...
    87dc1d395 Explicitly push tag and tag_plot images
    fedbb5c0c Remove last flask occurance from setup.py
    11b20d693 Add config to hyperopt_loss_function documentation
    009a447d8 Adjust documentation for new parameter in loss functions
    3e06cd8b3 pass data and config to loss function
    bc188907b Bump cryptography from 3.3.2 to 3.4.5
    5f2513934 Bump ccxt from 1.41.70 to 1.41.90
    dbef5425c Bump prompt-toolkit from 3.0.14 to 3.0.16
    d08572ea0 Bump pandas from 1.2.1 to 1.2.2
    44cb20668 Bump joblib from 1.0.0 to 1.0.1
    1a166f639 Add test for calcuate_csum
    5c263c7ff add backtesting results abs profit min/abs profit max, to get a better view if a strategy has a enough money to succeed
    ee74bc1f5 timeframe is mandatory, no need to use .get()
    ffca09bbc Test ohlcv_candle_limit explicitly
    da89838b5 Set bittrex limits as returned by the exchange
    5622bb324 Make candle_limit optionally timeframe dependent
    7ecf8f8b8 Cleanup candle_limit usage
    10a11bda3 Document bitvavo as community tested
    6f77ec063 Fix cookieError on python<3.8
    73d91275c Reset sell_order_status if a new sell-order is placed
    d4c8be915 Use fstring where possible
    e7acee790 Improve coin value output by rounding coin specific
    072abde9b Introduce round_coin_value to simplify coin rounding
    dd23f6bcb Fix type for getting pairs
    843fb204e Fix problem with inf values returned from dataframe for api methods
    aa79574c0 Position-size should NEVER be over available_capital
    3110d2dbb Add small test cases
    86fa75b28 Pin version of cryptography
    7ee149da5 Improve plotting errorhandling
    427d76274 Improve tests for cancel_order to be more realistic
    c5ab3a80a Check if order is a dict before parsing
    de727645a FIx random test failure if certain files exist
    c412f8df6 Bump python-telegram-bot from 13.1 to 13.2
    12168cbf0 Bump ccxt from 1.41.62 to 1.41.70
    22d447b3f Bump mkdocs-material from 6.2.7 to 6.2.8
    676cd7bb5 Bump sqlalchemy from 1.3.22 to 1.3.23
    dd7f9181c Bump numpy from 1.20.0 to 1.20.1
    d1bb46bed Bump py-find-1st from 1.1.4 to 1.1.5
    694f55c0a Use suggested link
    d5cf837c0 Parse regular cancel_order call to update orders table
    bc8fda8d6 Update sample_strategy.py
    0a43988f3 Fix sample strategy documentation link
    aec22c5c3 introduce skip_open_order_update parameter
    86a97988c Improve wording
    0806202d4 ccxt version bump to 1.41.62
    a816fb124 chore(lint): lint binance example config
    1310a7b54 Fix bug with wrong conversion for BTCST/BTC
    428d2af31 add `sudo` to `chown`
    5165357f4 Update data-download.md
    5cd874599 Update README.md
    99b2214d1 setting resize_keyboard=True for slightly smaller Telegram buttons
    e8e5acc2e Fix import in strategy template
    b8cb39462 Move get_trade_stake_amount to wallets
    f36c61e32 Fix documentation links pointing to pairlists
    06b56544a printing json by default now
    56569690d Update rest_client.py
    12bcbf437 #4289 printing json output
    43986d3f7 Move Pricing to subpage
    b41078cc4 Don't include plugin documentation in Configuration page
    dabe456d6 Improve wording of configuration doc
    3e3c9e99c Move command references to their respective subpages
    f0532f28c Small doc-reorg adding "advanced topics" as main header
    cfd0bb896 Extract min stake amount from bot to exchange class
    3d9b4034e Use already calculated current_profit for sell_profit_offset comparison
    a9f1c871d Add path loading snippet to derived strategies
    52acf9aaf Fix "disappearing pairs" bug
    130a9b4db Add test to call verify_pairlist multiple times
    55c9489eb Downgrade RPI docker-image to 3.7
    cd5c58fd3 Properly patch exchange for plot_profit test
    4facf662d Fix random test-failure caused by un-clean hyperopt shutdown
    ccdac3d4c Bump urllib3 from 1.26.2 to 1.26.3
    7fcf0d523 Bump pymdown-extensions from 8.1 to 8.1.1
    2a5e0920e Bump mkdocs-material from 6.2.5 to 6.2.7
    aa7120f27 Bump ccxt from 1.40.99 to 1.41.35
    ed1d4f056 Bump jinja2 from 2.11.2 to 2.11.3
    76312d722 Bump pytest from 6.2.1 to 6.2.2
    2c80388b4 Fix valueerror in case of empty array files
    06e2bc94c Deploy to subdirectory
    e4a085027 Add test for UI methods
    28be71806 Install html file as well
    a87a885cc Don't use Path object to return fileresponses
    7b3d99819 Fix bug with not cleaning UI folder
    944d674ee Store freqUI version and read it again
    2af1d2d63 Extract last FreqUI version from api response
    1df0aa875 Add ui installation to docker container builds
    35c2e2556 Document FreqUI usage
    e928d2991 Add fallback file
    f05f2c45e Allow deleting of UI only
    ddc99553b Add test case for get_ui_download_url
    a1a35115a Extract get_ui_download_url
    87ed2d750 Write some tests for UI Downloading
    a47616eed Add UI installation subcommand
    27970b424 Add webUI serving to api-server
    79087ba16 Fix intermitted test failure
    5724371a4 Fix types for numpy 1.20.0 upgrade
    92721db58 Version bump numpy to 1.20.0
    bc586fe73 Try fix CI
    4cc93151c Fix a bug when compare sell_profit_offset
    16dad8b6d Allow custom_stoploss to cooperate with stoploss on exchange
    30e5c01cb Improve formatting of custom_stoploss docs
    6b63129eb Fixed virtualenv link
    406682c3b Fix random api failure in slow cases
    5d1828982 Fix name in issue template
    1e6194fa3 Improve wording, fix hirerchial hierarchy
    ea0ffbae7 use profit_ratio in calculate_cum_profit
    b12d0b110 Update installation.md
    5cdd9dd44 Cache markets in the exchange object
    4bb2a00f0 Bump python from 3.8.6-slim-buster to 3.9.1-slim-buster
    d1d77f56d Update installation.md
    a414d5d75 Update installation.md
    ec2cf7f97 Update installation.md
    5da8a3078 Update installation.md
    188010329 Update installation.md
    bcc7adb18 Update installation.md
    d84824237 Update installation.md
    39cef2dbe Update environment.yml
    4a28fab8a Update installation.md
    65e0ba60d Update installation.md
    13ad6dd46 Fix documentation
    c659150d9 Also print trade_duration in seconds to json
    2226f6781 Update installation.md
    62e43539c Limit max_open_trades to maximum available pairs
    789a980a3 Fix tests for new export format
    2c2a33b2e updated environemnt.ylm
    9af89786b update installation.md
    deb8432d3 Streamline trade to dataframe conversion
    8ee264bc5 Don't use profit_percent for backtesting results anymore
    48977493b Backtesting does not need to convert to BacktestResult object
    3b51545d2 Add trade_duration to to_json
    172a629c5 Update installation.md
    f9dd74585 Update installation.md
    73206a919 Update installation.md
    63be27f67 Update installation.md
    9ad081710 Update installation.md
    a271c9e98 Update installation.md
    ce5ba1bb6 Adding Conda installation process
    
    Source code(tar.gz)
    Source code(zip)
  • 2021.1(Jan 27, 2021)

    Highlighted changes

    • New feature: Custom stoploss callback.
      • Allow the strategy to change the stoploss via custom callback.
      • Needs to be explicitly activated via use_custom_stoploss.
    • Wildcard-filters, allowing regex to blacklist and whitelist pairs dynamically (e.g. .*BULL/BTC, .*BEAR/BTC, BNB/.*)
    • Switch API layer from Flask to FastAPI to better support parallel requests.
    • Improved merge_informative_pair() making sure longer timeframes are used as soon as they're available.
    • Protections can now be defined in the strategy as well. As with all other settings, Protections in the config will overwrite strategy settings.
    • Expire buy-signals after X minutes (ignore_buying_expired_candle_after).
    • Set sell_profit_offset in combination with sell_profit_only to define an offset when to enable the sell-signal.
    • Call bot_loop_start() during backtesting once per pair.
    • Add bot_name setting, allowing the UI to differentiate when running multiple bots.
    • Add /status <tradeids> to query status of specific trades.

    Important note: As anounced previously, the master branch (and docker images) images will be removed with this version. If you didn't update your docker-image / branch previously, make sure to do so now to benefit from this new version.

    How to update

    As always, you can update your bot using one of the following commands:

    docker-compose

    Note: We've switched from master to stable for the release Images - please adjust your docker-file and replace freqtradeorg/freqtrade:master with freqtradeorg/freqtrade:stable. The master image will not be built for this release, and will be removed soon.

    docker-compose pull
    docker-compose up -d
    

    Installation via setup script

    # Deactivate venv and run 
    ./setup.sh --update
    

    Plain native installation

    git pull
    pip install -U -r requirements.txt
    
    Expand full changelog
    eac98dbbd Version bump to 2021.1
    a9b4d6de3 Check for existance of ask key in ticker
    4d7f3e570 Add test for spreadfilter division exception
    5ab8cc56a Update docs to also work for postgres
    8f529f48d Update freqtrade/freqtradebot.py use is_open.is_(True)
    91b6c0294 Update download-data --dl-trades sample command
    f98bd4095 Bump ccxt from 1.40.74 to 1.40.99
    cb749b578 Bump scikit-learn from 0.24.0 to 0.24.1
    fb99cf145 Bump prompt-toolkit from 3.0.10 to 3.0.14
    d4e9037e6 Bump pandas from 1.2.0 to 1.2.1
    afdcd2c0a Bump pytest-cov from 2.10.1 to 2.11.1
    9422062cb Bump blosc from 1.10.1 to 1.10.2
    b976baae3 Bump cachetools from 4.2.0 to 4.2.1
    c22cccb55 Fix operator does not exist: boolean = integer
    9a3c425cf Update slack link
    16f967535 Fix whitelist expansion problem
    31e0b0964 Rename config.json.example
    371b374ea Remove unused config setup from setup.sh
    bec9b580b sell_profit_offset should be documented in the strategy override section
    e94e2dd38 Remove docker config without compose
    c42241986 further investigate random test failure
    fd379d36a Fixed quickstart link in docs
    5c0f98b51 Blacklist Poloniex - as ccxt does not provide a fetch_order endpoint
    5f5f75e14 Improve wording in protections documentation
    992d6b801 Small improvement to MaxDrawDown protection
    7c80eeea9 Add use_custom_stoploss to optimize_report
    86b3306a3 Small doc refactoring
    7c99e6f0e Avoid random test failure
    cd8d4da46 Add test for /status <tradeids> functionality
    a68a546dd _rpc_trade_status argument datatype optimizations
    10104927c Fix devcontainer
    994b4013a Bump ccxt from 1.40.30 to 1.40.74
    8b5f8937c Bump pyjwt from 2.0.0 to 2.0.1
    7f8dbce36 Bump mkdocs-material from 6.2.4 to 6.2.5
    6a8e49510 Bump plotly from 4.14.1 to 4.14.3
    296a6bd43 Bump coveralls from 2.2.0 to 3.0.0
    eb95d970e flake8 beautify
    d21eff0d5 fix, if an non existing trade_id is provided
    3ea33d173 updating doc and help with new /status argument
    6d40814db extend status bot command to query specific trades
    a8bae3a38 Don't update trade fees for dry-run orders
    389db2fe7 Enhance wording of docker quickstart
    53c208197 Add bot_name setting
    572f5f918 Fix fstring syntax error
    9f338ba6e Debug random test failure in CI
    d74376726 api-server should fully support max_open_trades=-1
    bf5868c96 Add testcase for nonexisting pairs on whitelist
    f72d53351 Added ability to keep invalid pairs while expanding expand_pairlist
    0b65fe6af Capture backtest start / end time
    914710625 call bot_loop_start() in backtesting to allow setup-code to run
    baa1142af Use preprocessed to get min/max date in hyperopt
    9d4cdcad1 Extract backtesting of one strategy
    6d1fba140 Remove unnecessary log output tests
    f3de0dd3e Fix support for protections in hyperopt
    950c5c011 fix: edge doc typos
    adb3fb123 Fix typo
    47a06c621 Fix enable/reenable of swagger UI endpoint
    ac43591c4 Fix failing api when max_open_trades is unlimited
    60ea32e39 Improve wording
    1f6a71fdd Reformat code on new version
    71f45021b Removed redundant statement
    e328182bd Changed workings so it only needs to timing-parameter, instead of also requiring a boolean value
    4d7ffa8c8 Added suppoort for regex in whitelist
    b062b836c Add test for sell_profit_offset
    63a579dba Add sell_profit_offset parameter
    dbc25f00a Switch full config from bittrex to binance
    f159c4643 Include stoploss_on_exchange in stoploss_guard
    59efc5f08 Bump pytest-mock from 3.5.0 to 3.5.1
    f1809286c Bump ccxt from 1.40.25 to 1.40.30
    a34753fcb Bump prompt-toolkit from 3.0.9 to 3.0.10
    ddecf3ef9 Bump mkdocs-material from 6.2.3 to 6.2.4
    8631a5451 Fix test due to pyjwt2.0
    378a252ad Fix #4161 - by not using the problematic method for windows
    c8df3c473 Bump pyjwt from 1.7.1 to 2.0.0
    4d2c59b7e Bump numpy from 1.19.4 to 1.19.5
    3cf506fa5 Bump ccxt from 1.40.14 to 1.40.25
    784630e2f Bump uvicorn from 0.13.2 to 0.13.3
    f3319e138 Bump prompt-toolkit from 3.0.8 to 3.0.9
    bd5f46e4c Bump pytest-mock from 3.4.0 to 3.5.0
    2e7faa782 Add documentation section for macOS installation error on 3.999999999
    4f126bea3 Change trades-test2 to better test correct behaviour
    bf182dc01 Fix wrong key usage in trade_history_timebased
    124cb5c5b Add cblosc brew dependency
    54ab61d18 Install hdf5 via brew
    9e66417e8 Run CI for mac on 3.9
    b43ef474a Fix expired candle implementation
    c9e477214 Allow protections to be set in the strategy
    e69dac270 Fix bug in RPC history mode when no data is found
    a9ca72c1b Fix typo in documentation
    91f866788 DOn't update open orders in dry-run mode
    a90609315 FIx doc wording for all guards
    f7b055a58 Attempt to improve wording
    95732e899 Clarification in documentation
    5c34140a1 Adjusted documentation to reflect sub-key configuration
    65d91a3a5 isort fix
    573de1cf0 Fixed flake8 warnings
    e3f3f3629 Changes based on review comments
    eaaaddac8 Update docs/configuration.md
    c9ed2137b Simplified return statements
    67306d943 Update interface.py
    9a93a0876 Update interface.py
    844df96ec Making changes so the build checks are satisified (imports & flake8)
    614a99659 First commit about ignoring expired candle
    1cf6e2c95 Changed documentation based on review comments
    0704cfb05 Added an example with a positive offset for a custom stoploss
    07bc0c3fc Improve merge_informative_pairs to properly merge correct timeframes
    d1804dee6 Add note about python-dev dependency
    9e435fba0 Bump ccxt from 1.39.79 to 1.40.14
    7d06e6146 Bump scipy from 1.5.4 to 1.6.0
    66391b80a Bump isort from 5.6.4 to 5.7.0
    5ca2cd3a1 Change defaults to log only errors
    634d6f389 Change logging to stderr
    26c346340 Stake-amount supports unlimited, too
    cff50f9f6 Add response-model for show_config
    ca0bb7bbb Don't require RPC for strategy
    e6176d43f Optional RPC dependency
    3dc37dd79 Add types for deps
    336dd1a29 Rename api_models to api_schemas
    84ced9200 Fix mock-tests missing some fields
    29f4dd1dc Enhance some response models
    718f2b24d Don't use relative imports
    b2ab553a3 Rename api_server2 module to apiserver
    eb20f6e7d Align auth token to flask version to prevent user-logout
    346542e5c Remove flask dependency
    68d148e72 Allow configuration of openAPI interface
    1717121f1 Properly use JWT secret key
    790f83365 Some more tests around api_auth
    29ce32364 Fix wrong hyperoptlosstest
    776ce57f5 Remove api_server
    54a50b1fb Fix some tests
    9f873305e Improve response models
    9350f505b Implement missing methods
    e23898d17 Improve some tests
    9ee1d8835 Implement more endpoints
    73a29e6d7 Improve tests, implement more fastapi methods
    a18d66e10 Add more endpoints to fastapi
    f37ea4ba2 Fix some initial tests towards fastAPI
    4b86700a0 Implement more endpoints
    5e4c4cae0 Fix auth providers
    86d070088 Move models to apimodels
    659427850 Reorder endpoints
    eac74a9de Implement auth in fastapi
    619b855d5 Add version endpoint
    a862f19f8 Allow retrieval of rpc and config via dependencies
    1e38fec61 Initial fastapi implementation (Ping working)
    11f36fbae Fix all custom stoploss samples
    67ced6a53 Update docs/strategy-advanced.md
    e5840abaf Added imports to documentation for clarification when using custom stoploss
    512e16335 change docstring to better reflect what the method is for
    bd7600ff0 Small visual changes
    04624aae4 Add documentation for wildcard-blacklist
    0affacd39 Support invalid regex blacklist from config
    9feabe707 Fix RPC methods to allow wildcards (and validate wildcards)
    704cf1438 Add expand_pairlist method
    2fdda8e44 plot-profit should fail gracefully if no trade is within the selected timerange
    b8899b39e Show advanced plot-config section again
    b607740dd Fix kraken balance bug if open buy orders exist
    238e9aabb Add test showing wrong behaviour
    dcc7d559e Reinstate header partials
    ecea6c952 Move jquery to the bottom
    accc59aa1 Reinstate jquery
    003552d78 Remove custom header section from docs
    0d4cf3208 Slightly adapt to pandas incompatibility
    30087697e Bump pandas from 1.1.5 to 1.2.0
    092ebf845 Bump scikit-learn from 0.23.2 to 0.24.0
    fc0d14c1b Improve documentation
    676dd0d66 Improve documentation
    9d5961e22 Rename method to custom_stoploss
    277342f16 Rename flag to "use_custom_stoposs"
    8574751a0 Add stoploss_value to strategy template
    f8639fe93 Add more tests for custom_loss
    5f8610b28 Add explicit test for stop_loss_reached
    22d64553c Rename test file
    ea4238e86 cleanup some tests
    11e291562 Fix documentation problem
    6892c08e9 Improve docstring
    b2c109831 more docs for dynamic stoploss method
    f7b54c241 Allow and document time-based custom stoploss
    f235ab8cf Fix some typos in docs
    18795844d Add initial set of custom stoploss documentation
    a414b57d5 Experiment with custom stoploss interface
    8f6aefb59 Extract stoploss assignment
    768a24c37 Add stoplossvalue interface
    
    Source code(tar.gz)
    Source code(zip)
  • 2020.12(Dec 29, 2020)

    Highlighted changes

    • New PerformanceFilter, allowing sorting of the pairlist based on past trade performance.
    • Improved performance of AgeFilter and RangeStabilityFilter.
    • Changed backtesting behavior
      • Sell-signal is now favored over stoploss.
      • ROI is now favored over Trailing-stop - avoiding wins due to trailing stop higher than the current ROI
      • Best familiarize yourself with all assumptions by reading through the backtesting assumptions again.
    • New feature: Protections
      • Initial Protections:
        • CooldownPeriod - don't rebuy Pair if it had a position X time ago
        • LowProfitPairs - don't buy pair for stop_duration if the required profit within lookback_period is below required_profit
        • StoplossGuard - Stop trading if more than trade_limit stoplosses occured within lookback_period (either per pair, or without)
        • MaxDrawdown - stop trading if more than max_allowed_drawdown is reached within lookback period.
      • Backtesting support
        • to keep performance impact for backtesting at a minimum support for protections has to be enabled explicitly via --enable-protections.
        • Locks are exported to the backtesting file, allowing for analysis later
    • Improved setup.sh script, which should work better for Raspberry's.
    • New /stats Telegram / Rest API endpoint, providing some performance statistics.
    • New Telegram keyboard configuration options, allowing you to define the telegram keys yourself.
    • Reduced "locked pairs" log-spamming by reducing the message to once per candle.
    • Plot now supports customized area plots. Check the documentation for more details.

    Important note: This will be the last release with both master and stable branch, so please update your image / branch if not done so already.

    How to update

    As always, you can update your bot using one of the following commands:

    docker-compose

    Note: We're switching from master to stable for the release Images - please adjust your docker-file and replace freqtradeorg/freqtrade:master with freqtradeorg/freqtrade:stable

    docker-compose pull
    docker-compose up -d
    

    Installation via setup script

    # Deactivate venv and run 
    ./setup.sh --update
    

    Plain native installation

    git pull
    pip install -U -r requirements.txt
    
    Expand full changelog
    f80ffe279 Version bump 2020.12
    f49260911 Bump blosc from 1.9.2 to 1.10.1
    87b896879 Bump ccxt from 1.39.52 to 1.39.79
    10840ec17 Bump pymdown-extensions from 8.0.1 to 8.1
    b3e929d14 Bump mkdocs-material from 6.1.7 to 6.2.3
    7d2b9447d Update slack link
    a87c27390 Refactor RPC modules so handlers don't inherit RPC directly
    1508e08ea Move fiatconvert init to RPC class
    5bf739b91 Simplify more telegram tests
    be4a4be7a Further simplify test_telegram
    4cbbb80bc Refactor test_telegram to simplify tests
    516e56bfa Move init of _config to apiserver parent
    f11fd2fee Sort imports
    67193bca3 Move pairlists to be a plugin submodule
    1713841d0 Initialize markets at startup for ccxt tests
    721d0fb2a Improve wording of developer docs
    74bcd82c3 Exception msg
    65d91b7cb Add note on adding new exchange with compat tests
    5599490aa Adjust ohlcv test after rebase
    b39de171c Don't run longrun regularily
    0981287c6 Improve test syntax for ccxt_compat tests
    2016eea21 Fix some test-errors in ccxt_compat
    a6e6ce16b Fix test failures
    b7d4ff9c2 Add test for fetch_ohlcv (against exchange)
    7833d9935 Add dummy test for fetch_ohlcv
    79ed89e48 Add test for fee calculation
    38af1b2a5 Improve compat tests
    36d60fa8a First small compat test
    b1fe5940f check for Exception and log msgs
    cd1a8e2c4 better error msg
    be28b42bf Exception for invalid keyboard config
    4dadfd199 Documentation syntax
    78dff3d51 docs: Note syntax
    2787ba080 added /locks to command list
    277f3ff47 tests: cleaup
    d25fe5857 Bump sqlalchemy from 1.3.20 to 1.3.22
    8eb013020 Bump pytest-mock from 3.3.1 to 3.4.0
    3b6786391 Bump ccxt from 1.39.33 to 1.39.52
    a2873096c Bump flake8-tidy-imports from 4.2.0 to 4.2.1
    5716202e4 Bump joblib from 0.17.0 to 1.0.0
    fe2720692 Bump questionary from 1.8.1 to 1.9.0
    a1755364e Bump pytest from 6.2.0 to 6.2.1
    e7e687c8e Bump requests from 2.25.0 to 2.25.1
    5423c21be keyboard type
    f39dde121 moved keyboard config validation to __inti__
    18a24d75e cleanup
    3cb559994 some more test
    c1b8ad723 renaming, comments, cleanups
    fabb31e1b imports order
    f120c8d6c documentation
    f24626e13 removed too many blank lines
    43091a26c simple tests
    8b2487802 plot_config documentation for fill_to, fill_label, fill_color
    5b2902fcb cleanup
    16baca5ee fixed: too complex warning
    d901a8616 typo
    75e475893 changed config params, added fill area in subplots
    cc39cf97d revert to former create_plotconfig behaviour
    4531c924d PEP8
    fb3d82ccb cleanup
    fdd4b40c3 fixed subplots, empty create plot_config if its not given by strategie
    daa1727e2 Exeption for fill_area.traces
    3fdfc06a1 label for fill_area added and documentation updated
    ecadfdd98 fixed:advanced config. added. feature: fill area between traces by advanced configuration.
    6b44545d3 sort order imports
    799e6be2e fix tests
    621105df9 renaming shortcut_btns to keyboard
    bf9209948 test for custom keyboard
    5b3ffd514 better log msg, comments
    5e6897b27 documentation for custom keyboard
    e92bcb00f telegram: specify custom shortcut bottons (keyboard) in config.json
    8d3f096a9 AgeFilter does not require tickers
    d7daa8643 Add bybit subclass
    bd0af1b30 Fix test warning
    7d2395ddb Add limit parameter to fetch_ohlcv
    ca9fd0899 Update strategy-customization.md
    4e7f914e9 Improve test for AgeFilter, fix bug in Agefilter
    266031a6b Disallow PerformanceFilter for backtesting
    d1fda28d2 Fix typehints
    011ba1d9a Adapt tests to use async methods
    3c85d5201 Use async to get candle data for pairlists
    4c0edd046 Move dependencies to base image for RPI
    c8dde6322 Allow test-pairlist to run with verbosity
    69901c131 Provide pair to _validate_pairs in pairlists
    39fec25ae add optional Cache arguments to refresh_pairs method
    dc9280833 Change PI dockerfile to use staged build
    9f5c4ead1 Remove support for 3.6
    66d5271ad Don't build for 3.6 any longer
    ba869a330 Build 3.6 on github actions too
    8965b8a18 Bump pytest from 6.1.2 to 6.2.0
    a9b586d33 Bump ccxt from 1.39.10 to 1.39.33
    44f295110 Bump python-rapidjson from 0.9.4 to 1.0
    bdd895b8d Bump pandas from 1.1.4 to 1.1.5
    a3139dd9d Bump flake8-tidy-imports from 4.1.0 to 4.2.0
    4cf16fa8d Bump plotly from 4.13.0 to 4.14.1
    3bea9255e Bump cachetools from 4.1.1 to 4.2.0
    dad427461 Downgrade dockerfile to 3.8.6 to avoid image bloat
    a4bfd0b0a Split linux and OSX builds into 2 seperate, parallel jobs
    657b002a8 Explicitly check for False in fetch_ticker
    9cd1be8f9 Update usage of open_trade_price to open_trade_value
    8a2fbf659 Small cleanup of protection stuff
    14647fb5f Add tests for update fee
    3ee7fe64b Clean up some tests
    181b88dc7 Don't accept too high fees, assuming they are erroneous
    b45c2fb1d Update backtesting.md
    6107878f4 Bump ccxt to 1.39.10
    95fd3824d Finish renamal of open_trade_price to open_value
    201cc67e0 Rename open_trade_price to "open_trade_value"
    ca99d484f Refactor to use list comprehension
    33f330256 Reorder commands on telegram init
    af53dfbfa Update backtesting.md
    f5817063b Update backtesting.md
    25f8e0cc5 Added git packages for future dependencies
    570809825 Move ENV PATH to base image
    f1af2972e Ensure non-defined attributes fail correctly
    e6b3e6453 Update dockerfile to multistage
    d9a86158f Add cmake to support raspberry 64bit installs
    118a22d01 Update data-download.md
    9725b8e17 Update Dockerfile
    f897b683c Add seperate page describing plugins
    82bc6973f Add last key to config_full
    c37bc307e Small finetunings to documentation
    b5289d5f0 Update full config with correct protection keys
    de2cc9708 Fix test leakage
    f04729799 Improve wording, fix bug
    3ab551469 Add API endpoint for /stats
    81410fb40 Document /stats for telegram
    e873cafdc Beautify code a bit
    effc96e92 Improve tests for backtest protections
    5849d0749 Export locks as part of backtesting
    57a4044eb Enhance test verifying that locks are not replaced
    bb51da829 Fix slow backtest due to protections
    75a516165 Support multis-strategy backtests with protections
    a3f9cd2c2 Only load protections when necessary
    946fb0945 Update help command output
    e2d15f408 Add parameter to enable protections for backtesting
    32189d27c Disable output from plugins in backtesting
    9f34aebda Allow closing trades without message
    b606936eb Make changes to backtesting to incorporate protections
    98c88fa58 Prepare protections for backtesting
    3426e99b8 Improve formatting of protection startup message
    64d6c7bb6 Update developer docs
    0e2a43ab4 Add duration_explanation functions
    c993831a0 Add protections to startup messages
    d4799e6aa Implement *candle definitions
    a93bb6853 Document *candles settings, implement validations
    eb952d77b Move lookback_period to parent __init__
    f13e9ce5e Improve docs
    b36f333b2 Add new protections to full sample, documentation
    f06b58dc9 Test MaxDrawdown desc
    089c463cf Introduce max_drawdown protection
    9d6f3a89e Improve docs and fix typos
    768d7fa19 Readd optional for get_pair_locks - it's necessary
    9947dcd1d Beta feature warning
    ad746627b Fix lock-loop
    397a15cb6 Improve protection documentation
    4351a26b4 Move stop_duration to parent class
    12e84bda1 Add developer docs for Protections
    6d0f16920 Get Longest lock logic
    dce236467 Add stoploss per pair support
    dcdf4a050 Improve tests
    32cde1cb7 Improve test for lowprofitpairs
    8f958ef72 Improve login-mixin structure
    8d9c66a63 Add LogginMixin to freqtradebot class to avoid over-logging
    be57ceb25 Remove confusing entry
    5e3d2401f Only call stop methods when they actually support this method
    2cd54a593 Allow disabling output from plugins
    8ebd6ad20 Rename login-mixin log method
    2e5b9fd4b format profit in low_profit_pairs
    e29d918ea Avoid double-locks also in per pair locks
    fc97266dd Add "now" to lock_pair method
    59091ef2b Add helper method to calculate protection until
    47cd856fe Include protection documentation
    513367598 Apply all stops in the list, even if the first would apply already
    9484ee669 Test for low_profit_pairs
    bb06365c5 Improve protection documentation
    1f703dc34 Improve protection documentation
    00d4820bc Add low_profit_pairs
    9f6c2a583 Better wording for config options
    8dbef6bbe Add test for cooldown period
    fe0afb988 Implement calling of per-pair protection
    2a66c33a4 Add locks per pair
    ff7ba2347 Simplify enter_positions and add global pairlock check
    05be33ccd Simplify is_pair_locked
    56975db2e Add more tests
    2b85e7eac Add initial tests for StoplossGuard protection
    816703b8e Improve protections work
    f39a534fc Implement global stop (First try)
    246b4a57a add small note to pairlist dev docs
    04878c3ce Rename test directory for pairlist
    3447f1ae5 Implement first stop method
    a0bd2ce83 Add first version of protection manager
    b6b9c8e5c Move "slow-log" to it's own mixin
    647e6509a Bump ccxt from 1.38.55 to 1.38.87
    0c0eb8236 Bump mkdocs-material from 6.1.6 to 6.1.7
    51fbd0698 Move get_logs to be static method
    245c19f5e Add simple test for /stats call
    aa27c9ace Reorder methods in telegram
    143423145 Refactor most of the logic to rpc.py
    c556d1b37 Make /stats working
    058d40a72 Fix telegram /daily command without arguments
    71e46794b Add updating documentation
    7f453033a Update edge.md
    2fbbeb970 Gracefully handle cases where no buy price was found
    9b4a81c0a Update faq.md
    c09c23eab Make sure non-int telegram values don't crash the bot
    d039ce1fb Update available columns for hyperopt
    3c4fe66d8 Update faq.md
    4bc24ece4 Update faq.md
    c1fffb992 Update faq.md
    d6cc3d737 Improve FAQ
    5dfa1807a Fix tests after small updates
    36b7edc34 Update typing errors
    cec771b59 Ask for plotting dependency installation
    5f70d1f9a Ask for hyperopt installation during setup
    95b24ba8a Update setup.sh with some specifics
    202ca88e2 Changes to pi steup
    14d44b2cd Bump python-telegram-bot from 13.0 to 13.1
    275cfb3a9 Bump ccxt from 1.38.13 to 1.38.55
    f17c7f060 Bump plotly from 4.12.0 to 4.13.0
    b7de18608 Trigger CI
    99abe5204 Trigger CI
    5f8e67d2b Update docs/includes/pairlists.md
    90070f0dc Force test rerun
    179149547 Trigger another run of tests
    4b6f5b92b Remove non-pertinent test case
    e7a035eef Lint
    d6c939192 Restoring expectation
    323c0657f Sort by profit after sort by count/pair
    6a74c57c3 Pair name-based sorting.
    e40d97e05 Small formatting improvements
    5d3f59df9 Add best / worst trade
    a00f852cf Add best / worst pair to summary statistics
    03c571439 Use explicit merge without depending on library detail. Add no trades case.
    e1d42ba78 Alphabetize
    56529180e Further improve hyperopt docs
    ff286bd80 Slightly clarify hyperopt docs
    a47d8dbe5 Small refactor, avoiding duplicate calculation of profits
    4cb331b5a Remove non-needed parameters from tests
    37d2e476d isort imports
    f44856407 Lint
    ecce5265f Linting
    fefa50096 More lint
    966c6b308 Satisfy linter.
    dbd50fdff Document filter.
    662ec3207 Add test cases
    26855800a Remove unused seed
    4600bb807 Existing tests pass.
    9538fa1d7 Tweak main parameterized block for PerformanceFilter
    91b4c80d3 Remove unused parameters
    afb795b6f Remove unnecessary test
    380cca225 Remove unused imports
    335735062 Revert unintended change
    c34150552 Revert unrelated change
    05686998b Add starter entry in documentation
    7cbd89657 Initial step towards implementing proposed code
    89573348b Fix link
    af1b3721f remove duplicate settings check
    95c3c45ec Remove long deprecated settings that moved from experimental to ask_strategy
    46ec6f498 Correct link
    c69ce28b7 Update backtest assumption documentation
    fefb4b23d revise logic in should_sell
    4aa6ebee0 Add more tests for #2422
    57461a59f Update backtesting documentation with new logic
    81d08c4de Add detailed backtest test verifying the ROI / trailing stop collision
    312533fde Match current dev file
    dd42d61d0 Run CI on 3.9
    181d3a380 Bump python from 3.8.6-slim-buster to 3.9.0-slim-buster
    8e03fee86 Update interface.py
    1c27aaab7 Declare type of 'dur'.
    355afc082 Add command 'stats' in expected test output.
    7bce2cd29 Add trade duration by win/loss.
    627e221b6 Use tabulate to create sell reason message.
    44ad0f631 Summarize trade reason for telegram command /stats.
    28411da83 Add the telegram command function template.
    1b4b10f8c Update docs/installation.md
    
    
    Source code(tar.gz)
    Source code(zip)
Manuskript is an open-source tool for writers.

Manuskript is an open-source tool for writers. Manuskript runs on GNU/Linux, Mac OS X, and Windows.

Olivier 1.4k Jan 7, 2023
Python books free to read online or download

Python books free to read online or download

Paolo Amoroso 3.7k Jan 8, 2023
There is a new admin bot by @sinan-m-116 .

find me on telegram! deploy me on heroku, use below button: If you can't have a config.py file (EG on heroku), it is also possible to use environment

Sinzz-sinan-m 0 Nov 9, 2021
A high-level app and dashboarding solution for Python

Panel provides tools for easily composing widgets, plots, tables, and other viewable objects and controls into custom analysis tools, apps, and dashboards.

HoloViz 2.5k Jan 3, 2023
PyMMO is a Python-based MMO game framework using sockets and PyGame.

PyMMO is a Python framework/template of a MMO game built using PyGame on top of Python's built-in socket module.

Luis Souto Maior 61 Dec 18, 2022
Firebase Admin Console is a centralized platform for easy viewing and maintenance of Firestore database, the back-end API is a Python Flask app.

Firebase Admin Console is a centralized platform for easy viewing and maintenance of Firestore database, the back-end API is a Python Flask app. A starting template for developers to customize, build, and even deploy the desired admin console for their DB.

Daqi Chen 1 Sep 10, 2022
Django application and library for importing and exporting data with admin integration.

django-import-export django-import-export is a Django application and library for importing and exporting data with included admin integration. Featur

null 2.6k Jan 7, 2023
Collection of admin fields and decorators to help to create computed or custom fields more friendly and easy way

django-admin-easy Collection of admin fields, decorators and mixin to help to create computed or custom fields more friendly and easy way Installation

Ezequiel Bertti 364 Jan 8, 2023
BitcartCC is a platform for merchants, users and developers which offers easy setup and use.

BitcartCC is a platform for merchants, users and developers which offers easy setup and use.

BitcartCC 270 Jan 7, 2023
A Django app that creates automatic web UIs for Python scripts.

Wooey is a simple web interface to run command line Python scripts. Think of it as an easy way to get your scripts up on the web for routine data anal

Wooey 1.9k Jan 1, 2023
Python code for "Machine learning: a probabilistic perspective" (2nd edition)

Python code for "Machine learning: a probabilistic perspective" (2nd edition)

Probabilistic machine learning 5.3k Dec 31, 2022
A python application for manipulating pandas data frames from the comfort of your web browser

A python application for manipulating pandas data frames from the comfort of your web browser. Data flows are represented as a Directed Acyclic Graph, and nodes can be ran individually as the user sees fit.

Schlerp 161 Jan 4, 2023
A modern Python package manager with PEP 582 support.

A modern Python package manager with PEP 582 support.

Python Development Master(PDM) 3.6k Jan 5, 2023
Ajenti Core and stock plugins

Ajenti is a Linux & BSD modular server admin panel. Ajenti 2 provides a new interface and a better architecture, developed with Python3 and AngularJS.

Ajenti Project 7k Jan 7, 2023
Simple and extensible administrative interface framework for Flask

Flask-Admin The project was recently moved into its own organization. Please update your references to [email protected]:flask-admin/flask-admin.git. Int

Flask-Admin 5.2k Dec 29, 2022
Real-time monitor and web admin for Celery distributed task queue

Flower Flower is a web based tool for monitoring and administrating Celery clusters. Features Real-time monitoring using Celery Events Task progress a

Mher Movsisyan 5.5k Dec 28, 2022
Simple and extensible administrative interface framework for Flask

Flask-Admin The project was recently moved into its own organization. Please update your references to [email protected]:flask-admin/flask-admin.git. Int

Flask-Admin 4.6k Feb 7, 2021
FastAPI Admin Dashboard based on FastAPI and Tortoise ORM.

FastAPI ADMIN 中文文档 Introduction FastAPI-Admin is a admin dashboard based on fastapi and tortoise-orm. FastAPI-Admin provide crud feature out-of-the-bo

long2ice 1.6k Jan 2, 2023
Nginx UI allows you to access and modify the nginx configurations files without cli.

nginx ui Table of Contents nginx ui Introduction Setup Example Docker UI Authentication Configure the auth file Configure nginx Introduction We use ng

David Schenk 4.3k Dec 31, 2022