Compare commits

...

6029 Commits

Author SHA1 Message Date
Matthias
ab7807cee5 Merge pull request #4004 from freqtrade/new_release
New release 2020.11
2020-11-27 17:11:29 +01:00
Matthias
1353c59f18 Version bump to 2020.11 2020-11-27 11:24:14 +01:00
Matthias
5d038552ae Merge branch 'stable' into new_release 2020-11-27 11:18:42 +01:00
Matthias
22ff67c8f8 Merge pull request #4002 from mrsegen/patch-3
[Documentation] Prevent unintended LaTeX rendering
2020-11-27 08:06:47 +01:00
Matthias
31449987c0 Fix mkdocs rendering 2020-11-27 07:35:12 +01:00
Matthias
cff0527919 Merge pull request #4001 from mrsegen/patch-2
[Documentation] Fix parameter name
2020-11-27 07:00:30 +01:00
Leif Segen
fce31447ed Prevent unintended LaTeX rendering 2020-11-26 19:38:20 -06:00
Leif Segen
98118f5e95 Fix parameter name
Correct which parameter name was referred to within the 2nd Note under "Amend last stake amount"
2020-11-26 18:46:36 -06:00
Matthias
dddbc799f9 have kraken stoploss-limit support trailing stop 2020-11-26 19:40:36 +01:00
Matthias
83f6259594 Merge pull request #3999 from hoeckxer/documentation_typo
Fixed a small typo in the pairlist documentation
2020-11-26 11:21:48 +01:00
hoeckxer
0b68402c10 Fixed a small typo in the pairlist documentation
Signed-off-by: hoeckxer <hawkeyenl@yahoo.com>
2020-11-26 10:24:48 +01:00
Matthias
1d56c87a34 Fully support kraken limit stoploss 2020-11-25 21:40:39 +01:00
Matthias
53231d94a9 Merge pull request #3975 from freqtrade/volatility_filter
RangeStabilityFilter filter - filter for pairs without much movement
2020-11-25 19:17:06 +01:00
Matthias
76539bc700 Merge pull request #3997 from freqtrade/kraken_limitsl
Kraken stoploss-limit
2020-11-25 16:58:34 +01:00
Matthias
d0d9921b42 Reorder mkdocs sequence 2020-11-25 16:27:41 +01:00
Matthias
c14c0f60a1 Add Support for kraken stoploss-limit 2020-11-25 16:27:27 +01:00
Matthias
8180393bbc Merge branch 'develop' into kraken_limitsl 2020-11-25 16:04:33 +01:00
Matthias
7f621416a1 Merge pull request #3996 from freqtrade/fix/doublelog
Fix/doublelog
2020-11-25 15:22:37 +01:00
Matthias
6810192992 Update docstring for new filter 2020-11-25 15:14:36 +01:00
Matthias
8ae604d473 Ensure we're not running off of empty dataframes 2020-11-25 15:14:36 +01:00
Matthias
0d349cb355 Small finetuning 2020-11-25 15:14:36 +01:00
Matthias
8f1d2ff070 Renamd volatilityFilter to RangeStabilityFilter 2020-11-25 15:14:29 +01:00
Matthias
46389e343b Skip filehandler test on windows - as that causes a permission-error 2020-11-25 15:10:17 +01:00
Matthias
b9980330a5 Add explicit test for FileHandler 2020-11-25 14:58:09 +01:00
Matthias
0104c9fde6 Fix double logging 2020-11-25 14:31:34 +01:00
Matthias
99b67348b2 Add test for double-logging 2020-11-25 14:30:58 +01:00
Matthias
ceb50a7807 use exception handler when downloading data
closes #3992
2020-11-25 07:57:27 +01:00
Matthias
bd98ff6332 Update docstring in all pairlists 2020-11-24 20:24:51 +01:00
Matthias
006436a18d Require use_sell_signal to be true for edge
Otherwise edge will have strange results, as
edge runs with sell signal, while the bot runs without sell signal,
causing results to be invalid

closes #3900
2020-11-24 07:47:35 +01:00
Matthias
730c9ce471 Add Max_open_trades to summary metrics 2020-11-24 06:57:26 +01:00
Matthias
82335027b7 Merge pull request #3979 from freqtrade/dependabot/pip/develop/aiohttp-3.7.3
Bump aiohttp from 3.7.2 to 3.7.3
2020-11-23 10:30:51 +01:00
dependabot[bot]
1ec99e6b76 Bump aiohttp from 3.7.2 to 3.7.3
Bumps [aiohttp](https://github.com/aio-libs/aiohttp) from 3.7.2 to 3.7.3.
- [Release notes](https://github.com/aio-libs/aiohttp/releases)
- [Changelog](https://github.com/aio-libs/aiohttp/blob/master/CHANGES.rst)
- [Commits](https://github.com/aio-libs/aiohttp/compare/v3.7.2...v3.7.3)

Signed-off-by: dependabot[bot] <support@github.com>
2020-11-23 08:05:45 +00:00
Matthias
d325236f96 Merge pull request #3981 from freqtrade/dependabot/pip/develop/questionary-1.8.1
Bump questionary from 1.8.0 to 1.8.1
2020-11-23 07:44:12 +01:00
Matthias
421265243c Merge pull request #3978 from freqtrade/dependabot/pip/develop/ccxt-1.38.13
Bump ccxt from 1.37.69 to 1.38.13
2020-11-23 07:43:20 +01:00
Matthias
16899b9df1 Merge pull request #3983 from freqtrade/dependabot/pip/develop/coveralls-2.2.0
Bump coveralls from 2.1.2 to 2.2.0
2020-11-23 07:37:36 +01:00
Matthias
9427b5e924 Merge pull request #3982 from freqtrade/dependabot/pip/develop/python-rapidjson-0.9.4
Bump python-rapidjson from 0.9.3 to 0.9.4
2020-11-23 07:37:03 +01:00
Matthias
87a34b4306 Merge pull request #3980 from freqtrade/dependabot/pip/develop/mkdocs-material-6.1.6
Bump mkdocs-material from 6.1.5 to 6.1.6
2020-11-23 07:36:32 +01:00
dependabot[bot]
56629d882e Bump coveralls from 2.1.2 to 2.2.0
Bumps [coveralls](https://github.com/coveralls-clients/coveralls-python) from 2.1.2 to 2.2.0.
- [Release notes](https://github.com/coveralls-clients/coveralls-python/releases)
- [Changelog](https://github.com/coveralls-clients/coveralls-python/blob/master/CHANGELOG.md)
- [Commits](https://github.com/coveralls-clients/coveralls-python/compare/2.1.2...2.2.0)

Signed-off-by: dependabot[bot] <support@github.com>
2020-11-23 05:51:03 +00:00
dependabot[bot]
7c7a8190ab Bump python-rapidjson from 0.9.3 to 0.9.4
Bumps [python-rapidjson](https://github.com/python-rapidjson/python-rapidjson) from 0.9.3 to 0.9.4.
- [Release notes](https://github.com/python-rapidjson/python-rapidjson/releases)
- [Changelog](https://github.com/python-rapidjson/python-rapidjson/blob/master/CHANGES.rst)
- [Commits](https://github.com/python-rapidjson/python-rapidjson/compare/v0.9.3...v0.9.4)

Signed-off-by: dependabot[bot] <support@github.com>
2020-11-23 05:50:54 +00:00
dependabot[bot]
be4807d85c Bump questionary from 1.8.0 to 1.8.1
Bumps [questionary](https://github.com/tmbo/questionary) from 1.8.0 to 1.8.1.
- [Release notes](https://github.com/tmbo/questionary/releases)
- [Commits](https://github.com/tmbo/questionary/compare/1.8.0...1.8.1)

Signed-off-by: dependabot[bot] <support@github.com>
2020-11-23 05:50:52 +00:00
dependabot[bot]
83b4cd7b39 Bump mkdocs-material from 6.1.5 to 6.1.6
Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 6.1.5 to 6.1.6.
- [Release notes](https://github.com/squidfunk/mkdocs-material/releases)
- [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/docs/changelog.md)
- [Commits](https://github.com/squidfunk/mkdocs-material/compare/6.1.5...6.1.6)

Signed-off-by: dependabot[bot] <support@github.com>
2020-11-23 05:50:51 +00:00
dependabot[bot]
ec33011255 Bump ccxt from 1.37.69 to 1.38.13
Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.37.69 to 1.38.13.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/doc/exchanges-by-country.rst)
- [Commits](https://github.com/ccxt/ccxt/compare/1.37.69...1.38.13)

Signed-off-by: dependabot[bot] <support@github.com>
2020-11-23 05:50:43 +00:00
Matthias
29c6a9263d Protect against 0 values 2020-11-22 15:50:44 +01:00
Matthias
7e4fe23bf9 Add VolatilityFilter to full config 2020-11-22 11:08:01 +01:00
Matthias
f12a8afd41 Add test for ohlcv_as_df 2020-11-22 10:56:19 +01:00
Matthias
2e1551a2eb Improve tests of volatilityfilter 2020-11-21 19:57:17 +01:00
Matthias
f8fab5c4f8 Add tests for failure cases 2020-11-21 15:51:39 +01:00
Matthias
6b672cd0b9 Document volatilityFilter 2020-11-21 15:43:29 +01:00
Matthias
191616e4e5 Add first tests for volatilityFilter 2020-11-21 15:39:04 +01:00
Matthias
109824c9a8 Add VolatilityFilter 2020-11-21 15:39:00 +01:00
Matthias
fb86d8f8ff Add get_historic_ohlcv_as_df to support VolatilityFilter 2020-11-21 15:28:50 +01:00
Matthias
73f0e6e704 Improve wording for discord server
fix link to correct docker install guide
2020-11-21 11:40:28 +01:00
Matthias
4d60a4cf4e Add warning to StochRSI in sample strategy
closes #2961
2020-11-21 11:32:46 +01:00
Matthias
8ffd6f2469 Merge pull request #3971 from freqtrade/fix/3967
Fix bug when converting trades do ohlcv and no trades are available.
2020-11-21 11:14:30 +01:00
Matthias
89ea8dbef2 Update slack invite 2020-11-21 11:13:44 +01:00
Matthias
e8e3ca0c3c Catch ValueError from trade_conversion
closes #3967
2020-11-21 10:57:19 +01:00
Matthias
83861fabde Fix #3967, move TradeList type to constants 2020-11-21 10:52:15 +01:00
Matthias
5ed85963a9 Allow forcebuy price to be a string by converting it to float
fix #3970
2020-11-21 10:39:49 +01:00
Matthias
aa0c3dced8 Improve order types documentation 2020-11-20 13:14:02 +01:00
Matthias
fa0fcfb492 Merge pull request #3939 from drdux/historic-pair
Historic pair
2020-11-19 19:46:08 +01:00
Matthias
97e58a42f4 Update documentation with new options 2020-11-19 19:17:31 +01:00
Matthias
f88fe5d950 Document new "allow_inactive" option 2020-11-19 19:14:43 +01:00
Matthias
37849f8496 Merge pull request #3965 from freqtrade/fix_hdf5trades
Convert np to None when loading hdf5 trades to allow duplicate detection
2020-11-19 11:22:25 +01:00
Matthias
52c9a2c37f Convert np to None when loading hdf5 trades to allow duplicate detection 2020-11-19 07:31:54 +01:00
Matthias
bf6682d37f Merge pull request #3962 from Samaoo/patch-2
Fix typo in windows installation docs
2020-11-17 14:49:04 +01:00
Samaoo
854d0c481f Update windows_installation.md 2020-11-17 14:14:42 +01:00
Samaoo
4a215821cd Fix typo in windows installation docs 2020-11-17 14:07:24 +01:00
Matthias
9621734adc Allow setting datafromat via configuration
closes #3953
2020-11-17 06:53:38 +01:00
Matthias
853bd06841 Merge pull request #3959 from freqtrade/dependabot/pip/develop/ccxt-1.37.69
Bump ccxt from 1.37.41 to 1.37.69
2020-11-16 11:02:53 +01:00
dependabot[bot]
3f2addb729 Bump ccxt from 1.37.41 to 1.37.69
Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.37.41 to 1.37.69.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/doc/exchanges-by-country.rst)
- [Commits](https://github.com/ccxt/ccxt/compare/1.37.41...1.37.69)

Signed-off-by: dependabot[bot] <support@github.com>
2020-11-16 09:17:22 +00:00
Matthias
320dca19cb Merge pull request #3956 from freqtrade/dependabot/pip/develop/urllib3-1.26.2
Bump urllib3 from 1.25.11 to 1.26.2
2020-11-16 10:16:37 +01:00
dependabot[bot]
f092a92399 Bump urllib3 from 1.25.11 to 1.26.2
Bumps [urllib3](https://github.com/urllib3/urllib3) from 1.25.11 to 1.26.2.
- [Release notes](https://github.com/urllib3/urllib3/releases)
- [Changelog](https://github.com/urllib3/urllib3/blob/master/CHANGES.rst)
- [Commits](https://github.com/urllib3/urllib3/compare/1.25.11...1.26.2)

Signed-off-by: dependabot[bot] <support@github.com>
2020-11-16 07:51:10 +00:00
Matthias
d00a955af9 Merge pull request #3958 from freqtrade/dependabot/pip/develop/requests-2.25.0
Bump requests from 2.24.0 to 2.25.0
2020-11-16 07:33:39 +01:00
Matthias
d6bd018da4 Merge pull request #3957 from freqtrade/dependabot/pip/develop/flask-jwt-extended-3.25.0
Bump flask-jwt-extended from 3.24.1 to 3.25.0
2020-11-16 07:10:17 +01:00
Matthias
8c88173b74 Merge pull request #3955 from freqtrade/dependabot/pip/develop/mkdocs-material-6.1.5
Bump mkdocs-material from 6.1.4 to 6.1.5
2020-11-16 07:02:54 +01:00
dependabot[bot]
23947cf30b Bump requests from 2.24.0 to 2.25.0
Bumps [requests](https://github.com/psf/requests) from 2.24.0 to 2.25.0.
- [Release notes](https://github.com/psf/requests/releases)
- [Changelog](https://github.com/psf/requests/blob/master/HISTORY.md)
- [Commits](https://github.com/psf/requests/compare/v2.24.0...v2.25.0)

Signed-off-by: dependabot[bot] <support@github.com>
2020-11-16 05:40:50 +00:00
dependabot[bot]
e52c181a2a Bump flask-jwt-extended from 3.24.1 to 3.25.0
Bumps [flask-jwt-extended](https://github.com/vimalloc/flask-jwt-extended) from 3.24.1 to 3.25.0.
- [Release notes](https://github.com/vimalloc/flask-jwt-extended/releases)
- [Commits](https://github.com/vimalloc/flask-jwt-extended/compare/3.24.1...3.25.0)

Signed-off-by: dependabot[bot] <support@github.com>
2020-11-16 05:40:35 +00:00
dependabot[bot]
6ebc2f3897 Bump mkdocs-material from 6.1.4 to 6.1.5
Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 6.1.4 to 6.1.5.
- [Release notes](https://github.com/squidfunk/mkdocs-material/releases)
- [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/docs/changelog.md)
- [Commits](https://github.com/squidfunk/mkdocs-material/compare/6.1.4...6.1.5)

Signed-off-by: dependabot[bot] <support@github.com>
2020-11-16 05:40:25 +00:00
Samaoo
ef4ab601a9 Update exchanges.md 2020-11-15 20:02:19 +01:00
Samaoo
26176d4c91 Update exchanges.md
According to 
https://blog.kraken.com/post/5282/stop-loss-limit-take-profit-limit-two-new-advanced-orders-go-live-on-kraken/
Stop Loss Limit orders are enabled again
2020-11-15 19:55:09 +01:00
Matthias
0612658ec7 Merge pull request #3952 from Samaoo/patch-1
Fix typo in windows installation docs
2020-11-15 15:56:20 +01:00
Matthias
34120f6eb8 Merge pull request #3950 from xsa-dev/patch-1
Update telegram-usage.md
2020-11-15 15:52:50 +01:00
Matthias
7b4c1ec3ce Small wording changes 2020-11-15 15:40:40 +01:00
Aleksey Savin
da16474b25 Update telegram-usage.md 2020-11-15 15:13:44 +03:00
SamVerhaegen
7243c8ee56 Fix typo in windows installation docs. 2020-11-15 13:06:05 +01:00
Matthias
ab85c5bb49 Merge pull request #3946 from freqtrade/plot_startup_candles
Plot startup candles
2020-11-14 19:28:38 +01:00
Matthias
05f0cc787c Plotting should use startup_candles too
closes #3943
2020-11-14 09:28:00 +01:00
Matthias
164105acf2 Adjust startup_candle_count of sample strategies 2020-11-14 08:25:57 +01:00
Matthias
c09b641860 Merge pull request #3944 from freqtrade/fix_aioexception
Catch asyncio.TimeoutError when reloading async markets
2020-11-13 16:04:14 +01:00
Matthias
08b52926c8 Catch asyncio.TimeoutError when reloading async markets 2020-11-13 10:43:48 +01:00
Matthias
4eb96cfc4f Allow locks to be gathered even when the bot is stopped 2020-11-13 06:51:45 +01:00
Daniel Goller
2d6bfe1592 only skip pair validation rather than all of it 2020-11-12 11:32:45 +00:00
Daniel Goller
2424ac94c2 skip the check for active markets with flag for existing StaticPairList 2020-11-12 11:29:46 +00:00
Daniel Goller
2640dfee93 Revert "Added ConstPairList handler to skip validation of pairs if you want to backtest a pair that's not live any more, e.g. expiring contracts."
This reverts commit 13da8f9368.
2020-11-12 11:27:30 +00:00
Daniel Goller
916776bb53 Option to skip exchange validation, required to backtest pairs that are not live on the exchange any more. 2020-11-09 08:37:38 +00:00
Daniel Goller
13da8f9368 Added ConstPairList handler to skip validation of pairs if you want to backtest a pair that's not live any more, e.g. expiring contracts. 2020-11-09 08:34:40 +00:00
Matthias
5f483acdd0 Merge pull request #3938 from freqtrade/dependabot/pip/develop/ccxt-1.37.41
Bump ccxt from 1.37.14 to 1.37.41
2020-11-09 09:03:31 +01:00
dependabot[bot]
59e846d554 Bump ccxt from 1.37.14 to 1.37.41
Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.37.14 to 1.37.41.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/doc/exchanges-by-country.rst)
- [Commits](https://github.com/ccxt/ccxt/compare/1.37.14...1.37.41)

Signed-off-by: dependabot[bot] <support@github.com>
2020-11-09 07:48:14 +00:00
Matthias
4bc693c17c Merge pull request #3935 from freqtrade/dependabot/pip/develop/questionary-1.8.0
Bump questionary from 1.7.0 to 1.8.0
2020-11-09 07:27:49 +01:00
Matthias
d85fd3060a Merge pull request #3936 from freqtrade/dependabot/pip/develop/scipy-1.5.4
Bump scipy from 1.5.3 to 1.5.4
2020-11-09 07:03:35 +01:00
Matthias
52c147c88e Merge pull request #3934 from freqtrade/dependabot/pip/develop/numpy-1.19.4
Bump numpy from 1.19.3 to 1.19.4
2020-11-09 07:02:56 +01:00
Matthias
2a1835b165 Merge pull request #3933 from freqtrade/dependabot/pip/develop/mkdocs-material-6.1.4
Bump mkdocs-material from 6.1.2 to 6.1.4
2020-11-09 07:02:22 +01:00
dependabot[bot]
88b2f3f0d1 Bump scipy from 1.5.3 to 1.5.4
Bumps [scipy](https://github.com/scipy/scipy) from 1.5.3 to 1.5.4.
- [Release notes](https://github.com/scipy/scipy/releases)
- [Commits](https://github.com/scipy/scipy/compare/v1.5.3...v1.5.4)

Signed-off-by: dependabot[bot] <support@github.com>
2020-11-09 05:44:51 +00:00
dependabot[bot]
6063f2f91f Bump questionary from 1.7.0 to 1.8.0
Bumps [questionary](https://github.com/tmbo/questionary) from 1.7.0 to 1.8.0.
- [Release notes](https://github.com/tmbo/questionary/releases)
- [Commits](https://github.com/tmbo/questionary/compare/1.7.0...1.8.0)

Signed-off-by: dependabot[bot] <support@github.com>
2020-11-09 05:44:49 +00:00
dependabot[bot]
42d9e3a28f Bump numpy from 1.19.3 to 1.19.4
Bumps [numpy](https://github.com/numpy/numpy) from 1.19.3 to 1.19.4.
- [Release notes](https://github.com/numpy/numpy/releases)
- [Changelog](https://github.com/numpy/numpy/blob/master/doc/HOWTO_RELEASE.rst.txt)
- [Commits](https://github.com/numpy/numpy/compare/v1.19.3...v1.19.4)

Signed-off-by: dependabot[bot] <support@github.com>
2020-11-09 05:44:40 +00:00
dependabot[bot]
5243214a36 Bump mkdocs-material from 6.1.2 to 6.1.4
Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 6.1.2 to 6.1.4.
- [Release notes](https://github.com/squidfunk/mkdocs-material/releases)
- [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/docs/changelog.md)
- [Commits](https://github.com/squidfunk/mkdocs-material/compare/6.1.2...6.1.4)

Signed-off-by: dependabot[bot] <support@github.com>
2020-11-09 05:44:29 +00:00
Matthias
2af1c80fd5 Convert _rpc_show_config to static method 2020-11-08 11:26:02 +01:00
Matthias
b8f6f09de8 Merge pull request #3923 from freqtrade/rpc/combine_profit_fields
Rpc/combine profit fields
2020-11-03 19:22:27 +01:00
Matthias
7d2bd00f0c Update forgotten arrow.timestamp occurance 2020-11-03 09:23:07 +01:00
Matthias
b58d6d38b5 Use correct fields in telegram 2020-11-03 08:59:11 +01:00
Matthias
d1dab23283 Remove deprecated api fields 2020-11-03 08:59:11 +01:00
Matthias
cf89a773da Standardize trade api outputs
there should be no difference between current_profit and close_profit
 it's always profit, and the information if it's a closed trade is available elsewhere
2020-11-03 08:58:57 +01:00
Matthias
887d78171c Merge pull request #3857 from freqtrade/arrow_deprecation_timestamp
Convert timestamp to int_timestamp for all arrow occurances
2020-11-02 16:40:43 +01:00
Matthias
ac55215fca Merge pull request #3921 from freqtrade/dependabot/pip/develop/ccxt-1.37.14
Bump ccxt from 1.36.85 to 1.37.14
2020-11-02 15:39:03 +01:00
dependabot[bot]
d56da41679 Bump ccxt from 1.36.85 to 1.37.14
Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.36.85 to 1.37.14.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/doc/exchanges-by-country.rst)
- [Commits](https://github.com/ccxt/ccxt/compare/1.36.85...1.37.14)

Signed-off-by: dependabot[bot] <support@github.com>
2020-11-02 13:50:07 +00:00
Matthias
894853b300 Merge pull request #3917 from freqtrade/dependabot/pip/develop/aiohttp-3.7.2
Bump aiohttp from 3.7.1 to 3.7.2
2020-11-02 14:49:25 +01:00
dependabot[bot]
74d8a985e2 Bump aiohttp from 3.7.1 to 3.7.2
Bumps [aiohttp](https://github.com/aio-libs/aiohttp) from 3.7.1 to 3.7.2.
- [Release notes](https://github.com/aio-libs/aiohttp/releases)
- [Changelog](https://github.com/aio-libs/aiohttp/blob/master/CHANGES.rst)
- [Commits](https://github.com/aio-libs/aiohttp/compare/v3.7.1...v3.7.2)

Signed-off-by: dependabot[bot] <support@github.com>
2020-11-02 08:44:26 +00:00
Matthias
7e64a91720 Merge pull request #3919 from freqtrade/dependabot/pip/develop/pandas-1.1.4
Bump pandas from 1.1.3 to 1.1.4
2020-11-02 09:43:29 +01:00
dependabot[bot]
aed44ef6b3 Bump pandas from 1.1.3 to 1.1.4
Bumps [pandas](https://github.com/pandas-dev/pandas) from 1.1.3 to 1.1.4.
- [Release notes](https://github.com/pandas-dev/pandas/releases)
- [Changelog](https://github.com/pandas-dev/pandas/blob/master/RELEASE.md)
- [Commits](https://github.com/pandas-dev/pandas/compare/v1.1.3...v1.1.4)

Signed-off-by: dependabot[bot] <support@github.com>
2020-11-02 07:46:28 +00:00
Matthias
a8c6c3e2fa Merge pull request #3920 from freqtrade/dependabot/pip/develop/pytest-6.1.2
Bump pytest from 6.1.1 to 6.1.2
2020-11-02 07:30:43 +01:00
Matthias
8cbc2ce18d Merge pull request #3916 from freqtrade/dependabot/pip/develop/numpy-1.19.3
Bump numpy from 1.19.2 to 1.19.3
2020-11-02 07:30:06 +01:00
Matthias
a87fd6fcc7 Merge pull request #3918 from freqtrade/dependabot/pip/develop/mkdocs-material-6.1.2
Bump mkdocs-material from 6.1.0 to 6.1.2
2020-11-02 07:29:31 +01:00
dependabot[bot]
21b22760a7 Bump pytest from 6.1.1 to 6.1.2
Bumps [pytest](https://github.com/pytest-dev/pytest) from 6.1.1 to 6.1.2.
- [Release notes](https://github.com/pytest-dev/pytest/releases)
- [Changelog](https://github.com/pytest-dev/pytest/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest/compare/6.1.1...6.1.2)

Signed-off-by: dependabot[bot] <support@github.com>
2020-11-02 05:55:12 +00:00
dependabot[bot]
6c3753ac7f Bump mkdocs-material from 6.1.0 to 6.1.2
Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 6.1.0 to 6.1.2.
- [Release notes](https://github.com/squidfunk/mkdocs-material/releases)
- [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/docs/changelog.md)
- [Commits](https://github.com/squidfunk/mkdocs-material/compare/6.1.0...6.1.2)

Signed-off-by: dependabot[bot] <support@github.com>
2020-11-02 05:55:07 +00:00
dependabot[bot]
81fb0c5726 Bump numpy from 1.19.2 to 1.19.3
Bumps [numpy](https://github.com/numpy/numpy) from 1.19.2 to 1.19.3.
- [Release notes](https://github.com/numpy/numpy/releases)
- [Changelog](https://github.com/numpy/numpy/blob/master/doc/HOWTO_RELEASE.rst.txt)
- [Commits](https://github.com/numpy/numpy/compare/v1.19.2...v1.19.3)

Signed-off-by: dependabot[bot] <support@github.com>
2020-11-02 05:54:57 +00:00
Matthias
16572f90e3 Merge pull request #3913 from freqtrade/fix/dmmp
FIx bug with dmmp
2020-11-01 12:48:34 +01:00
Matthias
e73203acb8 FIx bug with dmmp 2020-11-01 10:51:07 +01:00
Matthias
a262618809 Merge pull request #3910 from matspi/dataformat-informative-pair
Dataformat informative pair
2020-10-31 15:47:40 +01:00
Matthias Spiller
0d11f0bd75 Add unit test for hdf5 dataformat for informative pairs 2020-10-31 11:45:46 +00:00
Matthias Spiller
78874fa865 informative_pairs does not honor dataformat 2020-10-31 10:53:51 +00:00
Matthias Spiller
38fc5d680b Enable usage of devcontainer for macOS users 2020-10-31 10:31:58 +00:00
Matthias
4d4471480b Merge pull request #3905 from freqtrade/new_release
New release 2020.10
2020-10-30 20:15:57 +01:00
Matthias
aaa6468983 Version bump to 2020.10 2020-10-30 07:48:05 +01:00
Matthias
55838b574c Merge branch 'stable' into new_release 2020-10-30 07:47:47 +01:00
Matthias
684de9c7d0 Merge pull request #3903 from freqtrade/download_data_stake
Download data remove stake_currency
2020-10-29 09:15:46 +01:00
Matthias
3ca97223f2 Improve test for test_pairlist 2020-10-29 08:09:50 +01:00
Matthias
d8ff79a2fa Improve tests of list commands 2020-10-29 07:54:42 +01:00
Matthias
f4d39f2a12 Improve test coverage of deploy_commands 2020-10-29 07:44:03 +01:00
Matthias
19fcbc92a7 Remove stake-currency for download-data - it's not needed 2020-10-29 07:43:40 +01:00
Matthias
0539bd5280 Merge pull request #3899 from freqtrade/improve_hyperopt_tests
Improve and refactor hyperopt tests
2020-10-28 19:35:41 +01:00
Matthias
86725847ed Add explicit test for check_int_nonzero 2020-10-28 16:58:39 +01:00
Matthias
ffa6797958 Improve test coverage 2020-10-28 16:29:08 +01:00
Matthias
e1e2829ef3 Improve and refactor hyperopt tests 2020-10-28 14:49:25 +01:00
Matthias
8e8f328bba Merge pull request #3898 from freqtrade/improve_hyperoptloss_missing
Improve error when hyperopt-loss-function is missing
2020-10-28 09:49:00 +01:00
Matthias
5cb3735a57 Improve error when hyperopt-loss-function is missing 2020-10-28 07:58:55 +01:00
Matthias
28d6c3419b Fix random test failure in pairlocks 2020-10-27 20:01:23 +01:00
Matthias
58a92dc3da Merge pull request #3895 from freqtrade/pairlock/middleware
Pairlock middleware
2020-10-27 19:44:13 +01:00
Matthias
72f61f4682 Remove optional, now is not optional 2020-10-27 10:08:24 +01:00
Matthias
5c8779b155 Sort imports 2020-10-27 08:11:57 +01:00
Matthias
6c913fa617 Fix locking - should round before storing to have a consistent picture 2020-10-27 08:01:31 +01:00
Matthias
9c54c9a2bf Use correct timezone for tests 2020-10-27 07:06:07 +01:00
Matthias
e602ac3406 Introduce Pairlocks middleware 2020-10-27 07:06:06 +01:00
Matthias
69e8da30e5 Ensure times that fall on a candle are also shifted 2020-10-27 07:04:04 +01:00
Matthias
09af776b66 Merge pull request #3890 from freqtrade/dependabot/pip/develop/ccxt-1.36.85
Bump ccxt from 1.36.66 to 1.36.85
2020-10-26 19:37:05 +01:00
Matthias
442e9d20e1 Remove pinned dependency of multidict 2020-10-26 16:28:08 +01:00
Matthias
835614517b Merge branch 'dependabot/pip/develop/aiohttp-3.7.1' into dependabot/pip/develop/ccxt-1.36.85 2020-10-26 16:24:54 +01:00
Matthias
0309b06b54 Merge pull request #3892 from freqtrade/dependabot/pip/develop/plotly-4.12.0
Bump plotly from 4.11.0 to 4.12.0
2020-10-26 08:22:38 +01:00
Matthias
f29b04b4d2 Merge pull request #3891 from freqtrade/dependabot/pip/develop/python-rapidjson-0.9.3
Bump python-rapidjson from 0.9.1 to 0.9.3
2020-10-26 08:22:12 +01:00
Matthias
4146b45c6e Merge pull request #3888 from freqtrade/dependabot/pip/develop/urllib3-1.25.11
Bump urllib3 from 1.25.10 to 1.25.11
2020-10-26 07:28:16 +01:00
dependabot[bot]
066ea45ce0 Bump plotly from 4.11.0 to 4.12.0
Bumps [plotly](https://github.com/plotly/plotly.py) from 4.11.0 to 4.12.0.
- [Release notes](https://github.com/plotly/plotly.py/releases)
- [Changelog](https://github.com/plotly/plotly.py/blob/master/CHANGELOG.md)
- [Commits](https://github.com/plotly/plotly.py/compare/v4.11.0...v4.12.0)

Signed-off-by: dependabot[bot] <support@github.com>
2020-10-26 05:45:39 +00:00
dependabot[bot]
95d11bd0d2 Bump python-rapidjson from 0.9.1 to 0.9.3
Bumps [python-rapidjson](https://github.com/python-rapidjson/python-rapidjson) from 0.9.1 to 0.9.3.
- [Release notes](https://github.com/python-rapidjson/python-rapidjson/releases)
- [Changelog](https://github.com/python-rapidjson/python-rapidjson/blob/master/CHANGES.rst)
- [Commits](https://github.com/python-rapidjson/python-rapidjson/compare/v0.9.1...v0.9.3)

Signed-off-by: dependabot[bot] <support@github.com>
2020-10-26 05:45:34 +00:00
dependabot[bot]
2831a78d0e Bump ccxt from 1.36.66 to 1.36.85
Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.36.66 to 1.36.85.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/doc/exchanges-by-country.rst)
- [Commits](https://github.com/ccxt/ccxt/compare/1.36.66...1.36.85)

Signed-off-by: dependabot[bot] <support@github.com>
2020-10-26 05:45:33 +00:00
dependabot[bot]
df5e6aa58b Bump aiohttp from 3.6.3 to 3.7.1
Bumps [aiohttp](https://github.com/aio-libs/aiohttp) from 3.6.3 to 3.7.1.
- [Release notes](https://github.com/aio-libs/aiohttp/releases)
- [Changelog](https://github.com/aio-libs/aiohttp/blob/master/CHANGES.rst)
- [Commits](https://github.com/aio-libs/aiohttp/compare/v3.6.3...v3.7.1)

Signed-off-by: dependabot[bot] <support@github.com>
2020-10-26 05:45:32 +00:00
dependabot[bot]
3439e6c5c4 Bump urllib3 from 1.25.10 to 1.25.11
Bumps [urllib3](https://github.com/urllib3/urllib3) from 1.25.10 to 1.25.11.
- [Release notes](https://github.com/urllib3/urllib3/releases)
- [Changelog](https://github.com/urllib3/urllib3/blob/master/CHANGES.rst)
- [Commits](https://github.com/urllib3/urllib3/compare/1.25.10...1.25.11)

Signed-off-by: dependabot[bot] <support@github.com>
2020-10-26 05:45:13 +00:00
Matthias
299dfe560a Merge pull request #3884 from freqtrade/fix/downloaddata_exception
Test if return value is an exception when downloading historic data
2020-10-23 14:27:31 +02:00
Matthias
b8c12f6576 Test if return value is an exception when downloading historic data 2020-10-23 07:50:40 +02:00
Matthias
2e7367d647 Merge pull request #3881 from apneamona/unfilledtimeout.buy/sell-addition
Update configuration.md
2020-10-22 15:18:37 +02:00
Matthias
9999017953 Fix small bug in case of duplicate locks 2020-10-22 08:04:48 +02:00
Matthias
71410a5a1e Merge pull request #3879 from freqtrade/persist_pairlocks
Persist pairlocks
2020-10-22 07:50:58 +02:00
Matthias
cd8610cb24 Update readme.md files 2020-10-22 07:50:09 +02:00
Matthias
ffcc47d8dd Cleanup sql cheatsheet 2020-10-22 07:42:47 +02:00
Matthias
cf1a726198 Rename table to be inline with other table naming 2020-10-22 07:35:59 +02:00
Matthias
a143f7bc43 Improve pairlock docstrings 2020-10-21 19:35:57 +02:00
Matthias
66efb5ccf1 Merge pull request #3880 from deeppaz/patch-1
update quick start steps
2020-10-21 19:27:01 +02:00
pure
42d9e2e7dc update quick start steps 2020-10-21 17:06:26 +03:00
Matthias
fd6018f67a Fix dependency sorting 2020-10-21 06:21:13 +02:00
Matthias
adffd402ea Replace some pointless occurances of arrow 2020-10-20 20:11:38 +02:00
Matthias
7a092271c5 Merge branch 'develop' into arrow_deprecation_timestamp 2020-10-20 20:01:54 +02:00
Matthias
5f63fdd8ad Use better lock message 2020-10-20 19:40:39 +02:00
Matthias
64e680d7ee Document new api method 2020-10-20 19:30:00 +02:00
Matthias
1156f5e686 Use constant for times 2020-10-20 19:21:13 +02:00
Matthias
0daf77f313 Don't check for lock start date 2020-10-20 19:21:13 +02:00
Matthias
cd2866eaec Add rest endpoint for /locks 2020-10-20 19:21:13 +02:00
Matthias
7a9768ffa6 Add /locks Telegram endpoint 2020-10-20 19:21:13 +02:00
Matthias
7caa6cfe31 Add tests for pairlock 2020-10-20 19:21:13 +02:00
Matthias
e513871fd5 Persist pairlocks
closes #3034
2020-10-20 19:21:13 +02:00
Matthias
6eab20e337 Use constant to format datetime 2020-10-20 19:21:13 +02:00
Matthias
2d04c2dd4f Fix small bug when cancel-order does not contain id
happens with kraken ...
2020-10-20 06:24:46 +02:00
Matthias
f6da9e358a Merge pull request #3878 from freqtrade/dependabot/pip/develop/ccxt-1.36.66
Bump ccxt from 1.36.12 to 1.36.66
2020-10-19 15:16:42 +02:00
dependabot[bot]
3e7c9bd485 Bump ccxt from 1.36.12 to 1.36.66
Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.36.12 to 1.36.66.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/doc/exchanges-by-country.rst)
- [Commits](https://github.com/ccxt/ccxt/compare/1.36.12...1.36.66)

Signed-off-by: dependabot[bot] <support@github.com>
2020-10-19 11:57:03 +00:00
Matthias
06293b2489 Merge pull request #3875 from freqtrade/dependabot/pip/develop/questionary-1.7.0
Bump questionary from 1.6.0 to 1.7.0
2020-10-19 08:23:08 +02:00
Matthias
f799a81c44 Merge pull request #3876 from freqtrade/dependabot/pip/develop/mkdocs-material-6.1.0
Bump mkdocs-material from 6.0.2 to 6.1.0
2020-10-19 07:57:23 +02:00
Matthias
667f1b8b8c Merge pull request #3845 from freqtrade/feat/backtest_speedup_serialize
Backtesting should not double-loop for sell signals
2020-10-19 07:52:33 +02:00
Matthias
340f25bd42 Merge pull request #3874 from freqtrade/dependabot/pip/develop/scipy-1.5.3
Bump scipy from 1.5.2 to 1.5.3
2020-10-19 07:51:01 +02:00
dependabot[bot]
b7eec3fc82 Bump mkdocs-material from 6.0.2 to 6.1.0
Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 6.0.2 to 6.1.0.
- [Release notes](https://github.com/squidfunk/mkdocs-material/releases)
- [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/docs/changelog.md)
- [Commits](https://github.com/squidfunk/mkdocs-material/compare/6.0.2...6.1.0)

Signed-off-by: dependabot[bot] <support@github.com>
2020-10-19 05:37:57 +00:00
dependabot[bot]
8975558595 Bump questionary from 1.6.0 to 1.7.0
Bumps [questionary](https://github.com/tmbo/questionary) from 1.6.0 to 1.7.0.
- [Release notes](https://github.com/tmbo/questionary/releases)
- [Commits](https://github.com/tmbo/questionary/compare/1.6.0...1.7.0)

Signed-off-by: dependabot[bot] <support@github.com>
2020-10-19 05:37:54 +00:00
dependabot[bot]
7997298538 Bump scipy from 1.5.2 to 1.5.3
Bumps [scipy](https://github.com/scipy/scipy) from 1.5.2 to 1.5.3.
- [Release notes](https://github.com/scipy/scipy/releases)
- [Commits](https://github.com/scipy/scipy/compare/v1.5.2...v1.5.3)

Signed-off-by: dependabot[bot] <support@github.com>
2020-10-19 05:37:36 +00:00
Matthias
cf2ae788d7 Convert backtesting rows to Tuples for performance gains 2020-10-18 17:16:57 +02:00
Matthias
5d3a67d324 Don't debug-log during backtesting.
Even though log-messages are surpressed, calling "debug" will always
have to do something.
2020-10-18 16:38:16 +02:00
Matthias
b80a219d03 Improve typehints for backtesting 2020-10-18 16:35:23 +02:00
Matthias
380e6628e0 Merge branch 'develop' into feat/backtest_speedup_serialize 2020-10-18 16:19:04 +02:00
Matthias
2591a34db4 Don't use arrow objects for backtesting 2020-10-18 16:18:52 +02:00
Matthias
7a9208a8d7 Merge pull request #3873 from sanket-k/develop
updated discord link to documentation.
2020-10-17 15:17:29 +02:00
sanket-k
cd940daaf4 updated discord link to documentation. 2020-10-17 17:17:43 +05:30
Matthias
f64ed6b878 Merge pull request #3871 from freqtrade/persistence/renameinit
Rename persistence.init to init_db
2020-10-16 08:26:35 +02:00
Matthias
8cdc795a44 Rename persistence.init to init_db 2020-10-16 08:15:18 +02:00
Matthias
685d18940a specify min-version for arrow
int_timestamp was introduced in this version
2020-10-16 08:13:31 +02:00
Matthias
ec713ff5ae Convert _rpc_analysed_history_full to static method 2020-10-16 06:26:57 +02:00
Matthias
8ae193f638 Merge pull request #3868 from freqtrade/fix/3865
bittrex fetch_orderbook API change.
2020-10-14 20:28:04 +02:00
Matthias
07da21e633 Fix problem when limit is > max allowed limit 2020-10-13 20:38:02 +02:00
Matthias
8165cc11df Change get_next_limit_in_list to use list comprehension 2020-10-13 20:30:35 +02:00
Matthias
2ed20eee4e Configs should default to dry-run 2020-10-13 20:10:50 +02:00
Matthias
8962b6d5c9 Add Bittrex subclass to correctly handle L2 orderbook 2020-10-13 20:09:43 +02:00
Matthias
077374ac42 Implement generic solution for l2 limited limit 2020-10-13 20:02:47 +02:00
Matthias
886abe36c9 Merge pull request #3860 from freqtrade/dependabot/pip/develop/prompt-toolkit-3.0.8
Bump prompt-toolkit from 3.0.7 to 3.0.8
2020-10-13 16:44:57 +02:00
Matthias
d7bbda9659 Merge pull request #3859 from freqtrade/dependabot/pip/develop/sqlalchemy-1.3.20
Bump sqlalchemy from 1.3.19 to 1.3.20
2020-10-13 16:38:06 +02:00
dependabot[bot]
6a0ab83684 Bump sqlalchemy from 1.3.19 to 1.3.20
Bumps [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) from 1.3.19 to 1.3.20.
- [Release notes](https://github.com/sqlalchemy/sqlalchemy/releases)
- [Changelog](https://github.com/sqlalchemy/sqlalchemy/blob/master/CHANGES)
- [Commits](https://github.com/sqlalchemy/sqlalchemy/commits)

Signed-off-by: dependabot[bot] <support@github.com>
2020-10-13 13:20:24 +00:00
Matthias
46f3ec1d0a Merge pull request #3864 from freqtrade/dependabot/pip/develop/ccxt-1.36.12
Bump ccxt from 1.36.2 to 1.36.12
2020-10-13 15:19:20 +02:00
dependabot[bot]
7c1402ef11 Bump prompt-toolkit from 3.0.7 to 3.0.8
Bumps [prompt-toolkit](https://github.com/prompt-toolkit/python-prompt-toolkit) from 3.0.7 to 3.0.8.
- [Release notes](https://github.com/prompt-toolkit/python-prompt-toolkit/releases)
- [Changelog](https://github.com/prompt-toolkit/python-prompt-toolkit/blob/master/CHANGELOG)
- [Commits](https://github.com/prompt-toolkit/python-prompt-toolkit/commits)

Signed-off-by: dependabot[bot] <support@github.com>
2020-10-13 13:06:37 +00:00
Matthias
f231a08202 Merge pull request #3861 from freqtrade/dependabot/pip/develop/colorama-0.4.4
Bump colorama from 0.4.3 to 0.4.4
2020-10-13 15:05:30 +02:00
Matthias
a0718ad8cb Merge pull request #3862 from freqtrade/dependabot/pip/develop/isort-5.6.4
Bump isort from 5.6.3 to 5.6.4
2020-10-13 15:05:07 +02:00
dependabot[bot]
fd9c8df049 Bump ccxt from 1.36.2 to 1.36.12
Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.36.2 to 1.36.12.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/doc/exchanges-by-country.rst)
- [Commits](https://github.com/ccxt/ccxt/compare/1.36.2...1.36.12)

Signed-off-by: dependabot[bot] <support@github.com>
2020-10-13 12:39:47 +00:00
dependabot[bot]
5f5fc513fa Bump isort from 5.6.3 to 5.6.4
Bumps [isort](https://github.com/pycqa/isort) from 5.6.3 to 5.6.4.
- [Release notes](https://github.com/pycqa/isort/releases)
- [Changelog](https://github.com/PyCQA/isort/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/pycqa/isort/compare/5.6.3...5.6.4)

Signed-off-by: dependabot[bot] <support@github.com>
2020-10-13 12:39:35 +00:00
dependabot[bot]
43532a2ffa Bump colorama from 0.4.3 to 0.4.4
Bumps [colorama](https://github.com/tartley/colorama) from 0.4.3 to 0.4.4.
- [Release notes](https://github.com/tartley/colorama/releases)
- [Changelog](https://github.com/tartley/colorama/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/tartley/colorama/commits)

Signed-off-by: dependabot[bot] <support@github.com>
2020-10-13 12:39:31 +00:00
Matthias
ecddaa663b Convert timestamp to int_timestamp for all arrow occurances 2020-10-13 06:24:01 +02:00
Matthias
5f0d1d609e Merge pull request #3855 from freqtrade/dependabot/pip/develop/python-telegram-bot-13.0
Bump python-telegram-bot from 12.8 to 13.0
2020-10-13 06:23:15 +02:00
Matthias
0b0b9c5d45 Merge branch 'develop' into dependabot/pip/develop/python-telegram-bot-13.0 2020-10-13 06:12:35 +02:00
Matthias
10651599dd Merge pull request #3854 from freqtrade/dependabot/pip/develop/mypy-0.790
Bump mypy from 0.782 to 0.790
2020-10-12 20:25:01 +02:00
Matthias
2a383f8785 Merge branch 'develop' into dependabot/pip/develop/mypy-0.790 2020-10-12 20:11:41 +02:00
Matthias
5aa0d3e05c Add multidict and aiohttp requirements 2020-10-12 20:08:40 +02:00
Matthias
a39898a5b3 Fix mock for telegram update 2020-10-12 19:54:31 +02:00
Matthias
44e374878c Fix mypy errors due to new version 2020-10-12 19:28:14 +02:00
dependabot[bot]
f299c4188b Bump python-telegram-bot from 12.8 to 13.0
Bumps [python-telegram-bot](https://github.com/python-telegram-bot/python-telegram-bot) from 12.8 to 13.0.
- [Release notes](https://github.com/python-telegram-bot/python-telegram-bot/releases)
- [Changelog](https://github.com/python-telegram-bot/python-telegram-bot/blob/master/CHANGES.rst)
- [Commits](https://github.com/python-telegram-bot/python-telegram-bot/compare/v12.8...v13.0)

Signed-off-by: dependabot[bot] <support@github.com>
2020-10-12 08:13:28 +00:00
Matthias
38cbf2f902 Merge pull request #3852 from freqtrade/dependabot/pip/develop/isort-5.6.3
Bump isort from 5.5.4 to 5.6.3
2020-10-12 10:12:56 +02:00
Matthias
94bc5356b7 Merge pull request #3856 from freqtrade/dependabot/pip/develop/ccxt-1.36.2
Bump ccxt from 1.35.22 to 1.36.2
2020-10-12 10:12:34 +02:00
dependabot[bot]
e39c2f4a96 Bump ccxt from 1.35.22 to 1.36.2
Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.35.22 to 1.36.2.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/doc/exchanges-by-country.rst)
- [Commits](https://github.com/ccxt/ccxt/compare/1.35.22...1.36.2)

Signed-off-by: dependabot[bot] <support@github.com>
2020-10-12 07:35:11 +00:00
Matthias
9d2b3b2edb Merge pull request #3851 from freqtrade/dependabot/pip/develop/arrow-0.17.0
Bump arrow from 0.16.0 to 0.17.0
2020-10-12 09:34:14 +02:00
dependabot[bot]
623cee61e6 Bump isort from 5.5.4 to 5.6.3
Bumps [isort](https://github.com/pycqa/isort) from 5.5.4 to 5.6.3.
- [Release notes](https://github.com/pycqa/isort/releases)
- [Changelog](https://github.com/PyCQA/isort/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/pycqa/isort/compare/5.5.4...5.6.3)

Signed-off-by: dependabot[bot] <support@github.com>
2020-10-12 07:31:08 +00:00
Matthias
2a2856e2dd Merge pull request #3853 from freqtrade/dependabot/pip/develop/nbconvert-6.0.7
Bump nbconvert from 6.0.6 to 6.0.7
2020-10-12 09:30:02 +02:00
Matthias
8363faf358 Merge pull request #3850 from freqtrade/dependabot/pip/develop/pandas-1.1.3
Bump pandas from 1.1.2 to 1.1.3
2020-10-12 09:29:24 +02:00
dependabot[bot]
80569c5f21 Bump mypy from 0.782 to 0.790
Bumps [mypy](https://github.com/python/mypy) from 0.782 to 0.790.
- [Release notes](https://github.com/python/mypy/releases)
- [Commits](https://github.com/python/mypy/compare/v0.782...v0.790)

Signed-off-by: dependabot[bot] <support@github.com>
2020-10-12 05:43:38 +00:00
dependabot[bot]
a33865e8c2 Bump nbconvert from 6.0.6 to 6.0.7
Bumps [nbconvert](https://github.com/jupyter/nbconvert) from 6.0.6 to 6.0.7.
- [Release notes](https://github.com/jupyter/nbconvert/releases)
- [Commits](https://github.com/jupyter/nbconvert/compare/6.0.6...6.0.7)

Signed-off-by: dependabot[bot] <support@github.com>
2020-10-12 05:43:37 +00:00
dependabot[bot]
a2bc9d60a0 Bump arrow from 0.16.0 to 0.17.0
Bumps [arrow](https://github.com/arrow-py/arrow) from 0.16.0 to 0.17.0.
- [Release notes](https://github.com/arrow-py/arrow/releases)
- [Changelog](https://github.com/arrow-py/arrow/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/arrow-py/arrow/compare/0.16.0...0.17.0)

Signed-off-by: dependabot[bot] <support@github.com>
2020-10-12 05:43:23 +00:00
dependabot[bot]
491af5a0cb Bump pandas from 1.1.2 to 1.1.3
Bumps [pandas](https://github.com/pandas-dev/pandas) from 1.1.2 to 1.1.3.
- [Release notes](https://github.com/pandas-dev/pandas/releases)
- [Changelog](https://github.com/pandas-dev/pandas/blob/master/RELEASE.md)
- [Commits](https://github.com/pandas-dev/pandas/compare/v1.1.2...v1.1.3)

Signed-off-by: dependabot[bot] <support@github.com>
2020-10-12 05:43:19 +00:00
Matthias
fa7dc742d0 Plot-image should have freqtrade as entrypoint 2020-10-12 06:07:57 +02:00
Matthias
3d911557d1 Fix typo in docs 2020-10-11 08:37:47 +02:00
Matthias
23bad8fd9f Rename DefahltHyperoptLoss function to ShortTradeDurHyperOptLoss 2020-10-10 14:22:29 +02:00
Matthias
028dd8be3e Merge pull request #3842 from freqtrade/edge_docs
Fix example R calculation in edge documentation
2020-10-10 14:13:25 +02:00
Matthias
62859455f7 Merge pull request #3847 from freqtrade/edge_fix_nan
Implement division/0 checks for win and loss columns in edge
2020-10-09 10:27:41 +02:00
Matthias
8fdcb600bc Merge pull request #3849 from freqtrade/improve_docstructure
allow imports in Documentation
2020-10-09 09:28:21 +02:00
Matthias
cedddd02da Install mkdocs for ci 2020-10-09 09:18:25 +02:00
Matthias
f43bd250a2 Extract pairlists from configuration 2020-10-09 09:02:44 +02:00
Matthias
53984a059f Configure mkdocs to allow page includes 2020-10-09 09:02:20 +02:00
Matthias
59b00ad662 Add test for only-win scenario 2020-10-09 06:47:02 +02:00
Matthias
f676156ec7 Implement division/0 checks for win and loss columns in edge
closes #3839
2020-10-09 06:39:13 +02:00
Matthias
23278e52db remove obsolete logging statements 2020-10-08 20:22:59 +02:00
Matthias
e8f2c09f08 Extract handling of left open trades to seperate method 2020-10-08 20:11:45 +02:00
Matthias
d1db847612 Fix "storing information" documentation
closes #3843
2020-10-08 19:27:00 +02:00
Matthias
7f0afe1244 Fix calculation to not show losses > initial investment 2020-10-08 10:24:52 +02:00
Matthias
6bb045f565 Simplify stoploss calculation 2020-10-08 08:30:30 +02:00
Matthias
48750b0ef8 Improve wording in formula 2020-10-08 08:23:56 +02:00
Matthias
1b5cb3427e Fix example R calculation in edge documentation 2020-10-08 08:09:55 +02:00
Matthias
52502193c4 Backtesting should not double-loop for sell signals 2020-10-07 20:59:05 +02:00
Matthias
72337a0ab7 Merge pull request #3836 from freqtrade/hyperopt_remove_default_loss
Hyperopt remove default loss
2020-10-07 09:49:25 +02:00
apneamona
72cf3147b8 Update configuration.md 2020-10-06 20:17:05 +02:00
Matthias
1628a0a4f0 Merge pull request #3837 from freqtrade/update_actions
Update actions image to ubuntu20.04
2020-10-06 09:47:38 +02:00
Matthias
299285a7bb Update actions image to ubuntu20.04 2020-10-06 09:18:49 +02:00
Matthias
8c2f763193 Add test to ensure --hyperopt-loss is mandatory 2020-10-05 20:36:16 +02:00
Matthias
14e87ed4a1 Improvements to hyperopt docs 2020-10-05 20:13:09 +02:00
Matthias
a4a8abfdc0 Update hyperopt documentation 2020-10-05 20:06:34 +02:00
Matthias
fa1d1679f0 Adapt tests to work without default hyperoptloss 2020-10-05 19:33:50 +02:00
Matthias
378b214a56 Remove hyperopt-loss default option
Force users to make a concious choice on a hyperopt-loss function
2020-10-05 19:27:28 +02:00
Matthias
584d095295 Merge pull request #3835 from freqtrade/hyperopt_trailing_output
Fix Hyperopt trailing output
2020-10-05 19:09:02 +02:00
Matthias
11f1ce2d9f Merge pull request #3827 from freqtrade/dependabot/pip/develop/questionary-1.6.0
Bump questionary from 1.5.2 to 1.6.0
2020-10-05 16:33:43 +02:00
Matthias
1e782781a6 Merge pull request #3834 from freqtrade/dependabot/pip/develop/ta-lib-0.4.19
Bump ta-lib from 0.4.18 to 0.4.19
2020-10-05 16:23:55 +02:00
Matthias
b86a602ad4 Update typehint 2020-10-05 16:17:37 +02:00
Matthias
4b53c2bca4 Complete TA-lib update with new binary files 2020-10-05 16:12:41 +02:00
dependabot[bot]
14c66afecc Bump ta-lib from 0.4.18 to 0.4.19
Bumps [ta-lib](https://github.com/mrjbq7/ta-lib) from 0.4.18 to 0.4.19.
- [Release notes](https://github.com/mrjbq7/ta-lib/releases)
- [Changelog](https://github.com/mrjbq7/ta-lib/blob/master/CHANGELOG)
- [Commits](https://github.com/mrjbq7/ta-lib/compare/TA_Lib-0.4.18...TA_Lib-0.4.19)

Signed-off-by: dependabot[bot] <support@github.com>
2020-10-05 07:11:13 +00:00
Matthias
0538af8875 Merge pull request #3833 from freqtrade/dependabot/pip/develop/joblib-0.17.0
Bump joblib from 0.16.0 to 0.17.0
2020-10-05 08:55:59 +02:00
Matthias
1ef702479b Merge pull request #3831 from freqtrade/dependabot/pip/develop/mkdocs-material-6.0.2
Bump mkdocs-material from 6.0.1 to 6.0.2
2020-10-05 08:55:25 +02:00
Matthias
09e9141e51 Merge pull request #3830 from freqtrade/dependabot/pip/develop/plotly-4.11.0
Bump plotly from 4.10.0 to 4.11.0
2020-10-05 08:52:25 +02:00
Matthias
d23ea36c05 Merge pull request #3832 from freqtrade/dependabot/pip/develop/pytest-6.1.1
Bump pytest from 6.1.0 to 6.1.1
2020-10-05 08:49:05 +02:00
Matthias
f4ab2dab4c Merge pull request #3829 from freqtrade/dependabot/pip/develop/pycoingecko-1.4.0
Bump pycoingecko from 1.3.0 to 1.4.0
2020-10-05 08:31:41 +02:00
Matthias
65e4c052f1 Merge pull request #3828 from freqtrade/dependabot/pip/develop/ccxt-1.35.22
Bump ccxt from 1.34.59 to 1.35.22
2020-10-05 08:21:26 +02:00
Matthias
2d6bc9aadc Merge pull request #3825 from freqtrade/dependabot/pip/develop/isort-5.5.4
Bump isort from 5.5.3 to 5.5.4
2020-10-05 08:20:27 +02:00
Matthias
482213fbb3 Merge pull request #3826 from freqtrade/dependabot/pip/develop/flake8-3.8.4
Bump flake8 from 3.8.3 to 3.8.4
2020-10-05 08:16:15 +02:00
Matthias
06759234b6 Add test to verify output of roi / trailing stop hyperopt 2020-10-05 08:07:53 +02:00
Matthias
40b61bbfe3 Adjust trailing-stop to be python compliant 2020-10-05 07:44:12 +02:00
dependabot[bot]
234f6c2f5e Bump joblib from 0.16.0 to 0.17.0
Bumps [joblib](https://github.com/joblib/joblib) from 0.16.0 to 0.17.0.
- [Release notes](https://github.com/joblib/joblib/releases)
- [Changelog](https://github.com/joblib/joblib/blob/master/CHANGES.rst)
- [Commits](https://github.com/joblib/joblib/compare/0.16.0...0.17.0)

Signed-off-by: dependabot[bot] <support@github.com>
2020-10-05 05:41:44 +00:00
dependabot[bot]
688442507e Bump mkdocs-material from 6.0.1 to 6.0.2
Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 6.0.1 to 6.0.2.
- [Release notes](https://github.com/squidfunk/mkdocs-material/releases)
- [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/docs/changelog.md)
- [Commits](https://github.com/squidfunk/mkdocs-material/compare/6.0.1...6.0.2)

Signed-off-by: dependabot[bot] <support@github.com>
2020-10-05 05:41:44 +00:00
dependabot[bot]
64de911e16 Bump pytest from 6.1.0 to 6.1.1
Bumps [pytest](https://github.com/pytest-dev/pytest) from 6.1.0 to 6.1.1.
- [Release notes](https://github.com/pytest-dev/pytest/releases)
- [Changelog](https://github.com/pytest-dev/pytest/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest/compare/6.1.0...6.1.1)

Signed-off-by: dependabot[bot] <support@github.com>
2020-10-05 05:41:44 +00:00
dependabot[bot]
56647bb498 Bump plotly from 4.10.0 to 4.11.0
Bumps [plotly](https://github.com/plotly/plotly.py) from 4.10.0 to 4.11.0.
- [Release notes](https://github.com/plotly/plotly.py/releases)
- [Changelog](https://github.com/plotly/plotly.py/blob/master/CHANGELOG.md)
- [Commits](https://github.com/plotly/plotly.py/compare/v4.10.0...v4.11.0)

Signed-off-by: dependabot[bot] <support@github.com>
2020-10-05 05:41:42 +00:00
dependabot[bot]
52b6f6b940 Bump pycoingecko from 1.3.0 to 1.4.0
Bumps [pycoingecko](https://github.com/man-c/pycoingecko) from 1.3.0 to 1.4.0.
- [Release notes](https://github.com/man-c/pycoingecko/releases)
- [Changelog](https://github.com/man-c/pycoingecko/blob/master/CHANGELOG.md)
- [Commits](https://github.com/man-c/pycoingecko/compare/1.3.0...1.4.0)

Signed-off-by: dependabot[bot] <support@github.com>
2020-10-05 05:41:40 +00:00
dependabot[bot]
0574a40693 Bump questionary from 1.5.2 to 1.6.0
Bumps [questionary](https://github.com/tmbo/questionary) from 1.5.2 to 1.6.0.
- [Release notes](https://github.com/tmbo/questionary/releases)
- [Commits](https://github.com/tmbo/questionary/compare/1.5.2...1.6.0)

Signed-off-by: dependabot[bot] <support@github.com>
2020-10-05 05:41:39 +00:00
dependabot[bot]
8d4f7ce84f Bump ccxt from 1.34.59 to 1.35.22
Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.34.59 to 1.35.22.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/doc/exchanges-by-country.rst)
- [Commits](https://github.com/ccxt/ccxt/compare/1.34.59...1.35.22)

Signed-off-by: dependabot[bot] <support@github.com>
2020-10-05 05:41:39 +00:00
dependabot[bot]
80890e0f59 Bump flake8 from 3.8.3 to 3.8.4
Bumps [flake8](https://gitlab.com/pycqa/flake8) from 3.8.3 to 3.8.4.
- [Release notes](https://gitlab.com/pycqa/flake8/tags)
- [Commits](https://gitlab.com/pycqa/flake8/compare/3.8.3...3.8.4)

Signed-off-by: dependabot[bot] <support@github.com>
2020-10-05 05:41:37 +00:00
dependabot[bot]
887b2fdb5e Bump isort from 5.5.3 to 5.5.4
Bumps [isort](https://github.com/pycqa/isort) from 5.5.3 to 5.5.4.
- [Release notes](https://github.com/pycqa/isort/releases)
- [Changelog](https://github.com/PyCQA/isort/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/pycqa/isort/compare/5.5.3...5.5.4)

Signed-off-by: dependabot[bot] <support@github.com>
2020-10-05 05:41:23 +00:00
Matthias
301598bac9 Merge pull request #3818 from freqtrade/rpc/candlehistory
Rpc/candlehistory
2020-10-04 09:34:25 +02:00
Matthias
c9b3766fa3 Remove rest_dump
it's just a wrapper around jsonify with no benefits
2020-10-04 09:14:46 +02:00
Matthias
63e1cba597 fix some typos 2020-10-04 09:12:52 +02:00
Matthias
2d343c8f73 Merge pull request #3823 from freqtrade/fix/hyperoptoutput
Fix hyperopt output
2020-10-03 13:42:05 +02:00
Matthias
cb74c9bcde Fix hyperopt output 2020-10-03 13:27:06 +02:00
Matthias
176006da29 Sort imports 2020-10-02 07:00:45 +02:00
Matthias
66b77d2f53 Fix some types 2020-10-02 06:52:43 +02:00
Matthias
62110dc2fc Add buy / sell signal count to dataframe interface 2020-09-29 06:35:47 +02:00
Matthias
350fcc071e Don't use __code__
__code__ is a special method name used by python already
source:
https://docs.python.org/3/reference/datamodel.html#special-method-names
2020-09-29 06:35:47 +02:00
Matthias
b38f68b3b0 Add 404 when strategy is not found 2020-09-29 06:35:47 +02:00
Matthias
becccca3d1 Add test for __code__ loading 2020-09-29 06:35:47 +02:00
Matthias
ba10bd7756 Add strategy code to __code__ 2020-09-29 06:35:47 +02:00
Matthias
4b6b7f8343 Add timeframe to candle return values 2020-09-29 06:35:47 +02:00
Matthias
a3d0889dab Add alpha to endpoint documentation 2020-09-29 06:35:47 +02:00
Matthias
816c8295f1 Add test for pair_history 2020-09-29 06:35:47 +02:00
Matthias
f82d39e1b0 Enhance restclient and add tests for new api methods 2020-09-29 06:35:47 +02:00
Matthias
bb4993dc20 Add new endpoints to the documentation 2020-09-29 06:35:47 +02:00
Matthias
c0654f3caf Add resiliancy against not having a analyzed dataframe yet 2020-09-29 06:35:47 +02:00
Matthias
c59a1be154 show_config should not use freqtrade object 2020-09-29 06:35:47 +02:00
Matthias
1de248fe38 add list_available_pairs endpoint 2020-09-29 06:35:47 +02:00
Matthias
6a59740f83 Strategies should be a nested object 2020-09-29 06:35:47 +02:00
Matthias
32e6ea314c Return strategy with analyzed data 2020-09-29 06:35:47 +02:00
Matthias
18bbfdd341 Add /strategies endpoint 2020-09-29 06:35:47 +02:00
Matthias
f227f6a755 Use passed in config object to allow this to work in webserver mode 2020-09-29 06:35:47 +02:00
Matthias
bf0e75e2a5 Include data start and end date in dataframe api 2020-09-29 06:35:47 +02:00
Matthias
b93ad8840a Return date column unmodified 2020-09-29 06:35:47 +02:00
Matthias
482f1faa88 Don't fail if no buy-signal is present 2020-09-29 06:35:46 +02:00
Matthias
f5dc10e4ae Add pair_history endpoint 2020-09-29 06:35:46 +02:00
Matthias
677078350f Add plot_config endpoint 2020-09-29 06:35:46 +02:00
Matthias
d528c44974 Add test for pair_history 2020-09-29 06:35:46 +02:00
Matthias
133ca9c770 Convert types to support valid json 2020-09-29 06:35:46 +02:00
Matthias
a38b33cd9c Support limiting analyzed history 2020-09-29 06:35:46 +02:00
Matthias
9dfbc1a7ff Add analyzed_history endpoint 2020-09-29 06:35:46 +02:00
Matthias
d2111c088b Merge pull request #3815 from freqtrade/isort_config
Introduce isort to have clear way to sort imports
2020-09-29 06:27:23 +02:00
Matthias
6977ffdbf9 Merge branch 'develop' into isort_config 2020-09-28 20:21:55 +02:00
Matthias
c410599a52 Merge pull request #3807 from freqtrade/hyperopt_disablecontinue
Hyperopt disablecontinue
2020-09-28 20:13:38 +02:00
Matthias
2be8e8070a Add Python 3.8 to setup.py classifiers 2020-09-28 20:02:11 +02:00
Matthias
ace2879265 Don't run isort on windows - once is enough 2020-09-28 19:53:29 +02:00
Matthias
0ea56548e4 Try fix random test failure 2020-09-28 19:50:22 +02:00
Matthias
ce228f19dc Apply isort to setup.py 2020-09-28 19:43:32 +02:00
Matthias
9df366d943 Apply isort to tests 2020-09-28 19:43:15 +02:00
Matthias
253b7b763e Apply isort to freqtrade codebase 2020-09-28 19:40:46 +02:00
Matthias
201e714343 include isort to contributing 2020-09-28 17:37:14 +02:00
Matthias
287604efd2 Add isort to project dev dependencies 2020-09-28 17:35:04 +02:00
Matthias
7623691a5f PyPi Publis should only run for releases 2020-09-28 17:19:41 +02:00
Matthias
17e605e130 Make it clear in samples that strategy is mandatory 2020-09-28 15:22:06 +02:00
Matthias
fe588e5722 Merge pull request #3811 from freqtrade/dependabot/pip/develop/ccxt-1.34.59
Bump ccxt from 1.34.40 to 1.34.59
2020-09-28 09:56:24 +02:00
Matthias
98a2811605 Version bump 2020.9.1 2020-09-28 08:55:17 +02:00
Matthias
1f14c6bacd PyPi Publis should only run for releases 2020-09-28 08:54:32 +02:00
Matthias
44e8184519 Tag image before building next image 2020-09-28 08:54:24 +02:00
Matthias
700529fe06 Tag image before building next image 2020-09-28 08:36:40 +02:00
Matthias
f174c74094 Merge pull request #3812 from freqtrade/dependabot/pip/develop/nbconvert-6.0.6
Bump nbconvert from 6.0.4 to 6.0.6
2020-09-28 08:30:48 +02:00
Matthias
f3e1eddc91 Merge pull request #3813 from freqtrade/dependabot/pip/develop/mkdocs-material-6.0.1
Bump mkdocs-material from 5.5.13 to 6.0.1
2020-09-28 08:28:50 +02:00
Matthias
5e0fa21d60 Merge pull request #3810 from freqtrade/dependabot/pip/develop/pytest-6.1.0
Bump pytest from 6.0.2 to 6.1.0
2020-09-28 08:26:42 +02:00
Matthias
c14ff2bee1 Merge pull request #3805 from freqtrade/new_release
New release 2020.9
2020-09-28 07:48:54 +02:00
dependabot[bot]
dd4d458ca8 Bump mkdocs-material from 5.5.13 to 6.0.1
Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 5.5.13 to 6.0.1.
- [Release notes](https://github.com/squidfunk/mkdocs-material/releases)
- [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/docs/changelog.md)
- [Commits](https://github.com/squidfunk/mkdocs-material/compare/5.5.13...6.0.1)

Signed-off-by: dependabot[bot] <support@github.com>
2020-09-28 05:48:15 +00:00
dependabot[bot]
6d8fadd560 Bump nbconvert from 6.0.4 to 6.0.6
Bumps [nbconvert](https://github.com/jupyter/nbconvert) from 6.0.4 to 6.0.6.
- [Release notes](https://github.com/jupyter/nbconvert/releases)
- [Commits](https://github.com/jupyter/nbconvert/compare/6.0.4...6.0.6)

Signed-off-by: dependabot[bot] <support@github.com>
2020-09-28 05:48:14 +00:00
dependabot[bot]
1dee0eed75 Bump ccxt from 1.34.40 to 1.34.59
Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.34.40 to 1.34.59.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/doc/exchanges-by-country.rst)
- [Commits](https://github.com/ccxt/ccxt/compare/1.34.40...1.34.59)

Signed-off-by: dependabot[bot] <support@github.com>
2020-09-28 05:48:12 +00:00
dependabot[bot]
48347b49fd Bump pytest from 6.0.2 to 6.1.0
Bumps [pytest](https://github.com/pytest-dev/pytest) from 6.0.2 to 6.1.0.
- [Release notes](https://github.com/pytest-dev/pytest/releases)
- [Changelog](https://github.com/pytest-dev/pytest/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest/compare/6.0.2...6.1.0)

Signed-off-by: dependabot[bot] <support@github.com>
2020-09-28 05:48:08 +00:00
Matthias
15bb0af1b3 Add some test-coverage 2020-09-28 00:36:13 +02:00
Matthias
f3de74f817 Mock all occurances of hyperopt.dump 2020-09-27 19:48:11 +02:00
Matthias
6e70ae6e95 Improve code quality 2020-09-27 19:40:55 +02:00
Matthias
5769b9244f Mock test correctly 2020-09-27 19:34:47 +02:00
Matthias
8de9c46110 Document hyperopt-filename usage 2020-09-27 17:09:33 +02:00
Matthias
3cb1a9a5a9 Support loading results from a specific hyperopt history file 2020-09-27 17:03:30 +02:00
Matthias
c42a924df8 Load latest file 2020-09-27 16:50:42 +02:00
Matthias
ff96cf154c Keep hyperopt result history 2020-09-27 16:33:26 +02:00
Matthias
7a652b07d5 UPdate documentation to remove --continue 2020-09-27 16:21:55 +02:00
Matthias
b736691e0e Remove hyperopt --continue 2020-09-27 16:18:28 +02:00
Matthias
17659001d8 Version bump to 2020.9 2020-09-27 09:51:19 +02:00
Matthias
45f4057d3c Merge branch 'stable' into new_release 2020-09-27 09:51:07 +02:00
Matthias
64c2b6c9a6 Merge pull request #3791 from freqtrade/rename_master_branch
Rename references to "master" branch to "stable"
2020-09-27 09:49:19 +02:00
Matthias
6a1b1eb75a Merge pull request #3803 from freqtrade/bt_params
Backtesting - handle mdifferent max_open_trades per strategy
2020-09-26 15:25:34 +02:00
Matthias
bb27b236ce Remove unused arguments 2020-09-26 14:55:12 +02:00
Matthias
c56dd487f2 Fix test failure 2020-09-25 21:00:58 +02:00
Matthias
ff3e2641ae generate_backtest_stats must take config options from the strategy
config

as a strategy can override certain options.
2020-09-25 20:47:37 +02:00
Matthias
fe45b79beb Merge pull request #3801 from freqtrade/dependabot/docker/python-3.8.6-slim-buster
Bump python from 3.8.5-slim-buster to 3.8.6-slim-buster
2020-09-25 08:02:52 +02:00
dependabot[bot]
d49488bf0e Bump python from 3.8.5-slim-buster to 3.8.6-slim-buster
Bumps python from 3.8.5-slim-buster to 3.8.6-slim-buster.

Signed-off-by: dependabot[bot] <support@github.com>
2020-09-25 05:47:58 +00:00
Matthias
378f03a5b1 Add relevant parameters to stored backtest result 2020-09-25 06:37:40 +02:00
Matthias
fa18274e9a Merge pull request #3798 from freqtrade/fix/wallets_dont_reset
Fix wallets dont reset
2020-09-24 19:22:14 +02:00
Matthias
66ca596e7c Merge pull request #3787 from freqtrade/rpc/telegram_settings
Allow Notification finetuning for telegram messages
2020-09-23 10:20:43 +02:00
Matthias
bb56d392a9 Fix typo in documentation 2020-09-22 20:19:46 +02:00
Matthias
6b46a35b19 Fix bug of balances not disappearing 2020-09-22 19:37:31 +02:00
Matthias
4b06c9e0ae Add test verifying wrong behaviour 2020-09-22 19:37:18 +02:00
Matthias
d639290f7d Merge branch 'develop' into rename_master_branch 2020-09-21 19:31:25 +02:00
Matthias
87f6c7bbec Merge pull request #3794 from freqtrade/dependabot/pip/develop/ccxt-1.34.40
Bump ccxt from 1.34.25 to 1.34.40
2020-09-21 08:18:16 +02:00
Matthias
6f52faf328 Merge pull request #3795 from freqtrade/dependabot/pip/develop/nbconvert-6.0.4
Bump nbconvert from 6.0.2 to 6.0.4
2020-09-21 08:17:40 +02:00
Matthias
a9198c1f7e Merge pull request #3793 from freqtrade/dependabot/pip/develop/mkdocs-material-5.5.13
Bump mkdocs-material from 5.5.12 to 5.5.13
2020-09-21 08:17:21 +02:00
Matthias
6e32ac5b3a Merge pull request #3792 from freqtrade/add_devcontainer
Add devcontainer
2020-09-21 07:42:57 +02:00
dependabot[bot]
be33556838 Bump nbconvert from 6.0.2 to 6.0.4
Bumps [nbconvert](https://github.com/jupyter/nbconvert) from 6.0.2 to 6.0.4.
- [Release notes](https://github.com/jupyter/nbconvert/releases)
- [Commits](https://github.com/jupyter/nbconvert/compare/6.0.2...6.0.4)

Signed-off-by: dependabot[bot] <support@github.com>
2020-09-21 05:40:00 +00:00
dependabot[bot]
d1b3a16c13 Bump ccxt from 1.34.25 to 1.34.40
Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.34.25 to 1.34.40.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/doc/exchanges-by-country.rst)
- [Commits](https://github.com/ccxt/ccxt/compare/1.34.25...1.34.40)

Signed-off-by: dependabot[bot] <support@github.com>
2020-09-21 05:39:56 +00:00
dependabot[bot]
4cb5c9c85f Bump mkdocs-material from 5.5.12 to 5.5.13
Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 5.5.12 to 5.5.13.
- [Release notes](https://github.com/squidfunk/mkdocs-material/releases)
- [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/docs/changelog.md)
- [Commits](https://github.com/squidfunk/mkdocs-material/compare/5.5.12...5.5.13)

Signed-off-by: dependabot[bot] <support@github.com>
2020-09-21 05:39:56 +00:00
Matthias
50aec1d6d3 Jupyter service should be called differently 2020-09-20 20:19:07 +02:00
Matthias
7dadca421a Update location of docker files 2020-09-20 16:26:48 +02:00
Matthias
261b267160 Don't build devcontainer on push 2020-09-20 16:20:17 +02:00
Matthias
3c460d37b6 Document existence of PLOT image 2020-09-20 16:20:01 +02:00
Matthias
8ff1429e68 Add user_data to backtesting 2020-09-20 15:39:50 +02:00
Matthias
b02c0904b6 Use buildarg to use correct parent variable 2020-09-20 15:17:54 +02:00
Matthias
ab190f7a5b Document jupyter with docker usage 2020-09-20 15:12:30 +02:00
Matthias
30c1253f75 Use correct ports for jupyter compose file 2020-09-20 15:02:07 +02:00
Matthias
f9efbed076 Ignore userdata from docker build 2020-09-20 14:59:13 +02:00
Matthias
40132bbea4 Add this branch to CI 2020-09-20 14:58:37 +02:00
Matthias
85ab6e43ba Build _plot dockerfile 2020-09-20 14:58:27 +02:00
Matthias
129cbf5ef5 Add more Dockerfiles 2020-09-20 14:58:15 +02:00
Matthias
096079a595 Install autopep8 2020-09-20 12:41:17 +00:00
Matthias
4355f36cd6 Add gitconfig to devcontainer 2020-09-20 12:36:47 +00:00
Matthias
0a7b6f73c9 Move devcontainer stuff to .devcontainer 2020-09-20 12:35:08 +00:00
Matthias
cf85a178f3 Update developer documentation related to devcontainer 2020-09-20 12:34:57 +00:00
Matthias
20e5c1b388 Update Developer documentation related to docker 2020-09-20 12:16:58 +00:00
Matthias
7ead4f9fa3 Update devcontainer settings 2020-09-20 14:16:36 +02:00
Matthias
8ff7ce8b17 Introduce devcontainer 2020-09-20 11:40:16 +00:00
Matthias
b72cccae3c Add note about download-data in combination with startup period
closes #2673
2020-09-20 13:09:34 +02:00
Matthias
a8a9fb5c6a Merge pull request #3790 from BlueSkyTrading/patch-3
1M and 1y timeframes added
2020-09-20 13:00:16 +02:00
Matthias
637fe35549 Fix typo in release documentation 2020-09-20 11:53:47 +02:00
Matthias
b3f0bfd77f Fix a few random typos 2020-09-20 11:51:12 +02:00
Matthias
2b1d0b4ab5 Rename references to "master" branch to "stable"
closes #2496
2020-09-20 11:45:08 +02:00
Matthias
c349499985 Also add 2w (supported by kraken) 2020-09-20 11:18:45 +02:00
Matthias
80f6f6dcbc Merge branch 'pr/BlueSkyTrading/3788' into pr/BlueSkyTrading/3790 2020-09-20 11:15:32 +02:00
Matthias
d5b2ffae7a Merge pull request #3789 from BlueSkyTrading/patch-2
changed epochs from 5000 to 500
2020-09-20 08:15:38 +02:00
HumanBot
f51f445011 1M and 1y timeframes added
Huobi Pro timeframes added
2020-09-19 14:45:36 -04:00
Matthias
a31de431ed Explicitly convert to type to string 2020-09-19 20:38:42 +02:00
HumanBot
8c9a600dec changed epochs from 5000 to 500
5000 is an overkill for the hyperopt process, repetitive 500 produce better predictions
2020-09-19 14:36:12 -04:00
HumanBot
a95dbdbde4 Added 1M and 1y timeframes
Huobi Pro allows monthly and yearly data downloading
2020-09-19 14:31:23 -04:00
Matthias
2554dc48e4 Add test for notification settings 2020-09-19 20:29:44 +02:00
Matthias
413d7ddf70 Document telegram notification settings 2020-09-19 19:42:56 +02:00
Matthias
e53b88bde3 Introduce notification_settings for telegram 2020-09-19 19:38:33 +02:00
Matthias
2a7935e35e Rename custom_notification to startup_notification 2020-09-19 17:51:31 +02:00
Matthias
6674285b12 Merge pull request #3756 from allenday/patch-1
prettify hyperopt console output
2020-09-19 17:43:05 +02:00
Matthias
f0d7f18cf9 Pad wins / draws / losses for hyperopt with spaces instead of 0's 2020-09-19 17:32:22 +02:00
Matthias
476319da45 Clarify --timerange documentation 2020-09-19 17:21:56 +02:00
Matthias
934abb0094 Merge pull request #3786 from freqtrade/download_data_timerange
Download data should support absolute starting point
2020-09-19 17:19:45 +02:00
Matthias
a559611c15 Merge pull request #3682 from freqtrade/db_keep_orders
Keep order history in the database
2020-09-19 17:12:14 +02:00
Matthias
bf95fe2e5c have the 2 timerange arguments next to each other 2020-09-19 11:33:55 +02:00
Matthias
5daaed1449 Help endpoint does not make sense for the rest api server.
therefore, remove the TODO.
2020-09-19 11:25:00 +02:00
Matthias
1f086e1466 Modify test loglevel 2020-09-19 09:46:32 +02:00
Matthias
77d0189695 Remove not needed argument in update_trade_state 2020-09-19 09:37:11 +02:00
Matthias
2f6b00555a Document support for --timerange in download-data 2020-09-19 09:13:43 +02:00
Matthias
35857b3dde Datetime should support --timerange too 2020-09-19 09:10:34 +02:00
Matthias
bfd0e3553a Don't build this branch anymore in CI 2020-09-19 08:42:37 +02:00
Matthias
254875e6b3 Add test for new close functionality
* Don't updates close_date if the trade was already closed
2020-09-19 08:42:15 +02:00
Matthias
dd87938a5e Fix bug causing close_date to be set again 2020-09-19 08:34:06 +02:00
Matthias
ec01f20bf8 Add ratio to sell reason stats 2020-09-16 20:27:28 +02:00
Matthias
962fed24b0 Readd refind_order logic 2020-09-14 17:34:13 +02:00
Matthias
b4443fdb1f Merge pull request #3777 from freqtrade/dependabot/pip/develop/ccxt-1.34.25
Bump ccxt from 1.34.11 to 1.34.25
2020-09-14 09:24:22 +02:00
Matthias
49d0bd4832 Merge pull request #3779 from freqtrade/dependabot/pip/develop/nbconvert-6.0.2
Bump nbconvert from 5.6.1 to 6.0.2
2020-09-14 09:07:47 +02:00
dependabot[bot]
6d30740b55 Bump ccxt from 1.34.11 to 1.34.25
Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.34.11 to 1.34.25.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/doc/exchanges-by-country.rst)
- [Commits](https://github.com/ccxt/ccxt/compare/1.34.11...1.34.25)

Signed-off-by: dependabot[bot] <support@github.com>
2020-09-14 07:07:14 +00:00
Matthias
c510b6012d Merge pull request #3778 from freqtrade/dependabot/pip/develop/plotly-4.10.0
Bump plotly from 4.9.0 to 4.10.0
2020-09-14 09:05:28 +02:00
Matthias
3aa34c411d Merge pull request #3776 from freqtrade/dependabot/pip/develop/numpy-1.19.2
Bump numpy from 1.19.1 to 1.19.2
2020-09-14 09:01:12 +02:00
Matthias
78555adecd Merge pull request #3775 from freqtrade/dependabot/pip/develop/pytest-6.0.2
Bump pytest from 6.0.1 to 6.0.2
2020-09-14 08:49:36 +02:00
dependabot[bot]
23c1ae5d4a Bump nbconvert from 5.6.1 to 6.0.2
Bumps [nbconvert](https://github.com/jupyter/nbconvert) from 5.6.1 to 6.0.2.
- [Release notes](https://github.com/jupyter/nbconvert/releases)
- [Commits](https://github.com/jupyter/nbconvert/compare/5.6.1...6.0.2)

Signed-off-by: dependabot[bot] <support@github.com>
2020-09-14 06:35:41 +00:00
dependabot[bot]
9d3caae9e3 Bump plotly from 4.9.0 to 4.10.0
Bumps [plotly](https://github.com/plotly/plotly.py) from 4.9.0 to 4.10.0.
- [Release notes](https://github.com/plotly/plotly.py/releases)
- [Changelog](https://github.com/plotly/plotly.py/blob/master/CHANGELOG.md)
- [Commits](https://github.com/plotly/plotly.py/compare/v4.9.0...v4.10.0)

Signed-off-by: dependabot[bot] <support@github.com>
2020-09-14 06:35:36 +00:00
dependabot[bot]
3c76945d5e Bump numpy from 1.19.1 to 1.19.2
Bumps [numpy](https://github.com/numpy/numpy) from 1.19.1 to 1.19.2.
- [Release notes](https://github.com/numpy/numpy/releases)
- [Changelog](https://github.com/numpy/numpy/blob/master/doc/HOWTO_RELEASE.rst.txt)
- [Commits](https://github.com/numpy/numpy/compare/v1.19.1...v1.19.2)

Signed-off-by: dependabot[bot] <support@github.com>
2020-09-14 06:35:14 +00:00
dependabot[bot]
60538368ac Bump pytest from 6.0.1 to 6.0.2
Bumps [pytest](https://github.com/pytest-dev/pytest) from 6.0.1 to 6.0.2.
- [Release notes](https://github.com/pytest-dev/pytest/releases)
- [Changelog](https://github.com/pytest-dev/pytest/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest/compare/6.0.1...6.0.2)

Signed-off-by: dependabot[bot] <support@github.com>
2020-09-14 06:35:00 +00:00
Matthias
7e28896c5c Merge pull request #3774 from freqtrade/reduce_requirements_files
Reduce requirements files
2020-09-14 07:44:24 +02:00
Matthias
07ccda9146 Fix syntax for released CI 2020-09-13 19:38:41 +02:00
Matthias
d65d886d7d add branch to CI - change branch-detection to support tags as well 2020-09-13 16:54:21 +02:00
Matthias
ba8e93e2a1 Remove requirements-common.txt
in an attempt to simplify installation
2020-09-13 16:43:22 +02:00
Matthias
dcedc1480f Merge pull request #3764 from Blackhawke/develop
Added full virtualenv command to quick start
2020-09-12 08:43:59 +02:00
Matthias
503d5db113 Merge branch 'develop' into pr/Blackhawke/3764 2020-09-12 08:33:46 +02:00
Blackhawke
3f52b6d6d5 Move "source" restored ".env/" 2020-09-11 12:01:45 -07:00
Matthias
77c28187a6 Don't run refind order on stoploss 2020-09-11 20:06:05 +02:00
Matthias
977ccaac16 Merge branch 'develop' into db_keep_orders 2020-09-11 20:01:28 +02:00
Matthias
50f0483d9a FIx fluky test in test_api_logs 2020-09-11 20:00:36 +02:00
Matthias
13994fac92 Merge pull request #3770 from freqtrade/api_closesessions
scoped sessions should be closed after requests
2020-09-11 19:49:03 +02:00
Matthias
a18305ffe7 Merge pull request #3771 from caudurodev/develop
FIX: Docs: added missing ( to SQLite insert statement to avoid error.
2020-09-11 10:01:31 +02:00
caudurodev
90d97c536d FIX: added missing ) for SQLite insert 2020-09-11 08:42:42 +02:00
caudurodev
0c9301e74a FIX: added missing ) for SQLite insert 2020-09-11 08:41:33 +02:00
Matthias
aa8832f70e Convert select_order to use ft_is_open flag 2020-09-11 07:12:10 +02:00
Matthias
41942e3af1 Update docstring for select_order 2020-09-11 06:59:07 +02:00
Matthias
b8773de5b0 scoped sessions should be closed after requests 2020-09-11 06:44:20 +02:00
Matthias
85d90645c7 Remove duplciate check for buy orders 2020-09-10 15:42:34 +02:00
Matthias
4db8c779fc Fix formatting issues 2020-09-10 08:19:40 +02:00
Matthias
6a08fee25b Fix wrong import in documentation 2020-09-10 08:04:04 +02:00
Matthias
23f569ea38 Add test for sell order refind, improve overall test for this function 2020-09-10 08:03:26 +02:00
Matthias
3c521f55b2 Add 6th mock trade 2020-09-10 07:40:19 +02:00
Blackhawke
c3e0397743 Added full "source" command to virtualenv in easy install 2020-09-09 09:16:11 -07:00
Matthias
6b22b4e4c7 Merge pull request #3760 from freqtrade/dependabot/pip/develop/progressbar2-3.53.1
Bump progressbar2 from 3.52.1 to 3.53.1
2020-09-09 16:06:21 +02:00
Matthias
beb8692231 Merge pull request #3763 from freqtrade/dependabot/pip/develop/pandas-1.1.2
Bump pandas from 1.1.1 to 1.1.2
2020-09-09 15:56:48 +02:00
Matthias
511dc254ff Merge pull request #3762 from freqtrade/dependabot/pip/develop/ccxt-1.34.11
Bump ccxt from 1.34.3 to 1.34.11
2020-09-09 15:51:32 +02:00
Matthias
d28d663175 Merge pull request #3761 from freqtrade/dependabot/pip/develop/blosc-1.9.2
Bump blosc from 1.9.1 to 1.9.2
2020-09-09 15:46:59 +02:00
Matthias
4480b3b393 Fix error in documentation (wrong sequence of steps) 2020-09-09 15:39:35 +02:00
dependabot[bot]
8c97b83b8c Bump pandas from 1.1.1 to 1.1.2
Bumps [pandas](https://github.com/pandas-dev/pandas) from 1.1.1 to 1.1.2.
- [Release notes](https://github.com/pandas-dev/pandas/releases)
- [Changelog](https://github.com/pandas-dev/pandas/blob/master/RELEASE.md)
- [Commits](https://github.com/pandas-dev/pandas/compare/v1.1.1...v1.1.2)

Signed-off-by: dependabot[bot] <support@github.com>
2020-09-09 13:29:36 +00:00
dependabot[bot]
d8dae46544 Bump ccxt from 1.34.3 to 1.34.11
Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.34.3 to 1.34.11.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/doc/exchanges-by-country.rst)
- [Commits](https://github.com/ccxt/ccxt/compare/1.34.3...1.34.11)

Signed-off-by: dependabot[bot] <support@github.com>
2020-09-09 13:29:31 +00:00
dependabot[bot]
986e767d6c Bump blosc from 1.9.1 to 1.9.2
Bumps [blosc](https://github.com/blosc/python-blosc) from 1.9.1 to 1.9.2.
- [Release notes](https://github.com/blosc/python-blosc/releases)
- [Changelog](https://github.com/Blosc/python-blosc/blob/master/RELEASE_NOTES.rst)
- [Commits](https://github.com/blosc/python-blosc/compare/v1.9.1...v1.9.2)

Signed-off-by: dependabot[bot] <support@github.com>
2020-09-09 13:29:27 +00:00
dependabot[bot]
4cf66e2fba Bump progressbar2 from 3.52.1 to 3.53.1
Bumps [progressbar2](https://github.com/WoLpH/python-progressbar) from 3.52.1 to 3.53.1.
- [Release notes](https://github.com/WoLpH/python-progressbar/releases)
- [Changelog](https://github.com/WoLpH/python-progressbar/blob/develop/CHANGES.rst)
- [Commits](https://github.com/WoLpH/python-progressbar/compare/v3.52.1...v3.53.1)

Signed-off-by: dependabot[bot] <support@github.com>
2020-09-09 13:29:22 +00:00
Matthias
083c358044 Fix wrong sequence in test 2020-09-09 07:57:02 +02:00
Matthias
25938efee6 Add partial test for refind_order 2020-09-09 07:50:52 +02:00
Matthias
98840eef3c Add 5th mock trade 2020-09-09 07:01:43 +02:00
Matthias
caf0476717 Add test for handle_insufficient_funds 2020-09-09 06:49:29 +02:00
Matthias
8af610b543 Add Test for reupdate_buy_order_fees 2020-09-09 06:42:36 +02:00
Matthias
aa2d1e9cca Merge pull request #3744 from freqtrade/fix/infomrativesample
fix Informative pair documentation
2020-09-08 16:38:08 +02:00
Allen Day
3fe2ed0e18 zero pad in test 2020-09-07 23:38:51 +08:00
Allen Day
f63a378967 Update hyperopt.py
zero pad wins/draws/losses (W/D/L) column to preserve alignment in console pretty print
2020-09-07 23:26:55 +08:00
Matthias
4c34934258 Merge pull request #3668 from freqtrade/dependabot/pip/develop/scikit-learn-0.23.2
Bump scikit-learn from 0.23.1 to 0.23.2
2020-09-07 09:50:40 +02:00
Matthias
384b966265 Merge pull request #3751 from freqtrade/dependabot/pip/develop/mkdocs-material-5.5.12
Bump mkdocs-material from 5.5.11 to 5.5.12
2020-09-07 09:48:29 +02:00
dependabot[bot]
f20318fad1 Bump scikit-learn from 0.23.1 to 0.23.2
Bumps [scikit-learn](https://github.com/scikit-learn/scikit-learn) from 0.23.1 to 0.23.2.
- [Release notes](https://github.com/scikit-learn/scikit-learn/releases)
- [Commits](https://github.com/scikit-learn/scikit-learn/compare/0.23.1...0.23.2)

Signed-off-by: dependabot[bot] <support@github.com>
2020-09-07 07:37:12 +00:00
Matthias
eb06ffc908 Merge pull request #3753 from freqtrade/dependabot/pip/develop/scikit-optimize-0.8.1
Bump scikit-optimize from 0.7.4 to 0.8.1
2020-09-07 09:35:55 +02:00
Matthias
d8fdbd656b Merge pull request #3752 from freqtrade/dependabot/pip/develop/ccxt-1.34.3
Bump ccxt from 1.33.72 to 1.34.3
2020-09-07 09:35:32 +02:00
dependabot[bot]
ff0e73a9e5 Bump scikit-optimize from 0.7.4 to 0.8.1
Bumps [scikit-optimize](https://github.com/scikit-optimize/scikit-optimize) from 0.7.4 to 0.8.1.
- [Release notes](https://github.com/scikit-optimize/scikit-optimize/releases)
- [Changelog](https://github.com/scikit-optimize/scikit-optimize/blob/master/CHANGELOG.md)
- [Commits](https://github.com/scikit-optimize/scikit-optimize/compare/v0.7.4...v0.8.1)

Signed-off-by: dependabot[bot] <support@github.com>
2020-09-07 07:09:23 +00:00
dependabot[bot]
534404c284 Bump ccxt from 1.33.72 to 1.34.3
Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.33.72 to 1.34.3.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/doc/exchanges-by-country.rst)
- [Commits](https://github.com/ccxt/ccxt/compare/1.33.72...1.34.3)

Signed-off-by: dependabot[bot] <support@github.com>
2020-09-07 07:09:22 +00:00
dependabot[bot]
014fcb36f4 Bump mkdocs-material from 5.5.11 to 5.5.12
Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 5.5.11 to 5.5.12.
- [Release notes](https://github.com/squidfunk/mkdocs-material/releases)
- [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/docs/changelog.md)
- [Commits](https://github.com/squidfunk/mkdocs-material/compare/5.5.11...5.5.12)

Signed-off-by: dependabot[bot] <support@github.com>
2020-09-07 07:09:07 +00:00
Matthias
7852feab05 support smaller timeframes 2020-09-07 09:06:43 +02:00
Matthias
f3e0370d4d Stylistic fixes 2020-09-07 07:54:55 +02:00
Matthias
6518e7a789 Add test for update_closed_trades_without_fees 2020-09-07 07:47:38 +02:00
Matthias
26a5cc5959 Add return-type for select_order 2020-09-07 07:41:58 +02:00
Matthias
f113b45036 Refactor test to not duplicate order info 2020-09-07 06:53:11 +02:00
Matthias
da0ceb7d87 Extract orders for mock trades 2020-09-07 06:48:34 +02:00
Matthias
cad0275b32 Extract mock_trade generation to sepearate file 2020-09-07 06:39:48 +02:00
Matthias
f6ebe51314 Add test for update_open_orders 2020-09-06 19:32:00 +02:00
Matthias
a0fd7f4644 Update tests to merged version 2020-09-06 15:27:16 +02:00
Matthias
5fba446e9a Merge branch 'develop' into db_keep_orders 2020-09-06 15:22:13 +02:00
Matthias
b4da36d6e9 Fix small typo and add small testcase 2020-09-06 15:05:47 +02:00
Matthias
7c1f111ddf Add insufficient_funds_test 2020-09-06 14:59:43 +02:00
Matthias
cec98ad407 Test stoploss insufficient funds handling 2020-09-06 14:51:48 +02:00
Matthias
68d51a9787 Don't raise OperationalException when orderid's dont' match 2020-09-06 14:33:45 +02:00
Matthias
a78d61150c Deleting must delete orders first 2020-09-06 14:28:24 +02:00
Matthias
b7662722ba Add tests for Order object parsing 2020-09-06 14:17:45 +02:00
Matthias
b4c3529135 Add orders to mock_trades fixture 2020-09-06 14:05:15 +02:00
Matthias
8c9297e1f0 Don't crash if a strategy imports something wrongly 2020-09-05 16:51:19 +02:00
Matthias
c18441f36f Fix typo in reloading_conf 2020-09-05 16:44:23 +02:00
Matthias
71af64af94 Move comment to the right place 2020-09-04 20:10:43 +02:00
Matthias
cc684c5141 Correctly handle identical timerame merges 2020-09-04 20:09:02 +02:00
Matthias
7bc8927914 Add documentation for merge_informative_pair helper 2020-09-04 20:02:31 +02:00
Matthias
bd4f3d838a Implement merge_informative_pairs helper 2020-09-04 19:44:35 +02:00
Matthias
3ecd23f853 Merge pull request #3745 from silvavn/develop
Updating Edge Positioning Doc.
2020-09-04 10:39:39 +02:00
Matthias
848a94d62e Merge branch 'develop' into pr/silvavn/3745 2020-09-04 07:56:10 +02:00
Matthias
bc5cc48f67 Adjust windows docs, fix failing doc-test 2020-09-04 07:28:21 +02:00
Matthias
1406691945 Rename files to have clearer paths 2020-09-04 07:12:08 +02:00
silvavn
32005b886a small typo 2020-09-03 13:39:38 -06:00
silvavn
275d853432 Updated W, L Formulas 2020-09-03 13:38:46 -06:00
silvavn
34b27d2f96 Moving stuff around
- Mac troubleshooting to the end
- optional master checkout
- Anaconda moved to the end
2020-09-03 13:32:07 -06:00
silvavn
29fe2ffff7 Added that the user can edit docker-compose.yml 2020-09-03 13:22:22 -06:00
silvavn
e6058b716b removes prolixity docker-compose 2020-09-03 13:19:05 -06:00
silvavn
66505bd9bf Fixes Raspberri Pi Image config 2020-09-03 13:18:15 -06:00
silvavn
f6a8dda8e5 Reorganize structure
- Quickstart moved out of installation
- Installation now contains only advanced modes.
- Joined quickstart with Docker
2020-09-03 13:12:43 -06:00
silvavn
714264701c Fixes typos 2020-09-03 13:11:04 -06:00
Victor Silva
47f0e69072 Update docs/edge.md
Co-authored-by: Matthias <xmatthias@outlook.com>
2020-09-03 12:57:15 -06:00
Victor Silva
93d1ad5ed9 Update docs/edge.md
Co-authored-by: Matthias <xmatthias@outlook.com>
2020-09-03 12:56:54 -06:00
Victor Silva
1f13a8b91d Update docs/edge.md
Co-authored-by: Matthias <xmatthias@outlook.com>
2020-09-03 12:55:49 -06:00
Victor Silva
08e3546120 Update docs/edge.md
Co-authored-by: Matthias <xmatthias@outlook.com>
2020-09-03 12:55:07 -06:00
Victor Silva
5f9c449d8e Update docs/edge.md
Co-authored-by: Matthias <xmatthias@outlook.com>
2020-09-03 12:53:33 -06:00
Victor Silva
70eaf971cd Update docs/edge.md
Co-authored-by: Matthias <xmatthias@outlook.com>
2020-09-03 12:50:23 -06:00
Victor Silva
69349a9d8d Update docs/edge.md
Co-authored-by: Matthias <xmatthias@outlook.com>
2020-09-03 12:49:54 -06:00
Victor Silva
ec9b51d60a Update docs/edge.md
Co-authored-by: Matthias <xmatthias@outlook.com>
2020-09-03 12:49:32 -06:00
Matthias
27362046d4 Add documentation section about running docs locally 2020-09-03 19:33:34 +02:00
Matthias
5c5cf782f5 Fix small bug with /daily if close_profit_abs is not yet filled 2020-09-03 19:29:48 +02:00
silvavn
47352e1721 Address issue #2487
Breakdown insllation instructions
Make installation instructions shorter
Separate Windows from the remainder
Use tabs for better navigation
Minor language improvements
2020-09-02 20:37:45 -06:00
silvavn
295ecaa9b2 Updating Edge Positioning Doc.
Integrated MathJax
Included worked out examples
Changed Language to achieve a middle ground.
Minor formatting improvements
2020-09-02 16:58:54 -06:00
Matthias
79ea8cf771 Improve wording 2020-09-02 20:02:41 +02:00
Matthias
e268bd192e Fix informative sample documentation 2020-09-02 19:59:04 +02:00
Matthias
f54fecaeba Expose helpermethods thorugh freqtrade.strategy 2020-09-02 19:58:26 +02:00
Matthias
10c5b230b4 Merge pull request #3742 from freqtrade/remove_trailingstop_config
Remove trailing_stop from default config example - it'll be misleading
2020-09-01 20:16:54 +02:00
Matthias
dff0ac2768 Remove trailing_stop from default config example - it'll be misleading 2020-09-01 19:18:19 +02:00
Matthias
43035a3f76 Merge pull request #3724 from freqtrade/fix/3084
Forcesell should use the available methods for handling a trade correctly
2020-09-01 15:11:05 +02:00
Matthias
451a18c444 Merge pull request #3740 from freqtrade/remove_deprecated_volumepairlistkeys
Remove deprectead volumepairlist options
2020-09-01 10:51:45 +02:00
Matthias
d444182829 Reinstate wrongly removed pairlist test 2020-09-01 10:31:11 +02:00
Matthias
3bc6cb36c6 Remove deprectead volumepairlist options 2020-09-01 08:04:02 +02:00
Matthias
d6d3a02a23 Merge branch 'develop' into db_keep_orders 2020-09-01 07:51:16 +02:00
Matthias
a4e3edbcc5 Fix stoploss_last_update beein updated with date object in wrong
timezone
2020-09-01 07:10:48 +02:00
Matthias
38c52c7eee Merge pull request #3626 from freqtrade/feat/hdf5
Introduce HDF5 Datahandler
2020-08-31 16:10:24 +02:00
Matthias
24df8d6bf5 Sort imports 2020-08-31 15:46:31 +02:00
Matthias
8b664644c0 Merge pull request #3733 from freqtrade/docs/clock
Move clock warning to installation pages
2020-08-31 11:24:12 +02:00
Matthias
feb3ae87f7 Merge pull request #3739 from freqtrade/dependabot/pip/develop/pytest-mock-3.3.1
Bump pytest-mock from 3.3.0 to 3.3.1
2020-08-31 09:36:55 +02:00
Matthias
8bb3b6baf3 Merge pull request #3738 from freqtrade/dependabot/pip/develop/ccxt-1.33.72
Bump ccxt from 1.33.52 to 1.33.72
2020-08-31 09:25:19 +02:00
Matthias
96f95c340d Merge pull request #3737 from freqtrade/dependabot/pip/develop/progressbar2-3.52.1
Bump progressbar2 from 3.51.4 to 3.52.1
2020-08-31 09:24:43 +02:00
Matthias
34e586243a Merge pull request #3736 from freqtrade/dependabot/pip/develop/mkdocs-material-5.5.11
Bump mkdocs-material from 5.5.8 to 5.5.11
2020-08-31 09:23:35 +02:00
Matthias
aa839c3d2f Merge pull request #3735 from freqtrade/dependabot/pip/develop/flask-cors-3.0.9
Bump flask-cors from 3.0.8 to 3.0.9
2020-08-31 09:23:11 +02:00
Matthias
fbd68dd190 Merge pull request #3734 from freqtrade/dependabot/pip/develop/prompt-toolkit-3.0.7
Bump prompt-toolkit from 3.0.6 to 3.0.7
2020-08-31 09:22:41 +02:00
dependabot[bot]
c5b8993e9d Bump ccxt from 1.33.52 to 1.33.72
Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.33.52 to 1.33.72.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/doc/exchanges-by-country.rst)
- [Commits](https://github.com/ccxt/ccxt/compare/1.33.52...1.33.72)

Signed-off-by: dependabot[bot] <support@github.com>
2020-08-31 06:38:56 +00:00
dependabot[bot]
8969ab4aa3 Bump pytest-mock from 3.3.0 to 3.3.1
Bumps [pytest-mock](https://github.com/pytest-dev/pytest-mock) from 3.3.0 to 3.3.1.
- [Release notes](https://github.com/pytest-dev/pytest-mock/releases)
- [Changelog](https://github.com/pytest-dev/pytest-mock/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest-mock/compare/v3.3.0...v3.3.1)

Signed-off-by: dependabot[bot] <support@github.com>
2020-08-31 06:38:55 +00:00
dependabot[bot]
55a49bfc53 Bump progressbar2 from 3.51.4 to 3.52.1
Bumps [progressbar2](https://github.com/WoLpH/python-progressbar) from 3.51.4 to 3.52.1.
- [Release notes](https://github.com/WoLpH/python-progressbar/releases)
- [Changelog](https://github.com/WoLpH/python-progressbar/blob/develop/CHANGES.rst)
- [Commits](https://github.com/WoLpH/python-progressbar/compare/v3.51.4...v3.52.1)

Signed-off-by: dependabot[bot] <support@github.com>
2020-08-31 06:38:38 +00:00
dependabot[bot]
821af9be9e Bump mkdocs-material from 5.5.8 to 5.5.11
Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 5.5.8 to 5.5.11.
- [Release notes](https://github.com/squidfunk/mkdocs-material/releases)
- [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/docs/changelog.md)
- [Commits](https://github.com/squidfunk/mkdocs-material/compare/5.5.8...5.5.11)

Signed-off-by: dependabot[bot] <support@github.com>
2020-08-31 06:38:36 +00:00
dependabot[bot]
4adf012ee6 Bump flask-cors from 3.0.8 to 3.0.9
Bumps [flask-cors](https://github.com/corydolphin/flask-cors) from 3.0.8 to 3.0.9.
- [Release notes](https://github.com/corydolphin/flask-cors/releases)
- [Changelog](https://github.com/corydolphin/flask-cors/blob/master/CHANGELOG.md)
- [Commits](https://github.com/corydolphin/flask-cors/compare/3.0.8...3.0.9)

Signed-off-by: dependabot[bot] <support@github.com>
2020-08-31 06:38:35 +00:00
dependabot[bot]
f83633ff4e Bump prompt-toolkit from 3.0.6 to 3.0.7
Bumps [prompt-toolkit](https://github.com/prompt-toolkit/python-prompt-toolkit) from 3.0.6 to 3.0.7.
- [Release notes](https://github.com/prompt-toolkit/python-prompt-toolkit/releases)
- [Changelog](https://github.com/prompt-toolkit/python-prompt-toolkit/blob/master/CHANGELOG)
- [Commits](https://github.com/prompt-toolkit/python-prompt-toolkit/compare/3.0.6...3.0.7)

Signed-off-by: dependabot[bot] <support@github.com>
2020-08-31 06:38:24 +00:00
Matthias
7f74ff53b1 Move clock warning to installation pages 2020-08-31 07:34:43 +02:00
Matthias
cb37166086 Merge pull request #3731 from freqtrade/release_2020.8
Release 2020.8
2020-08-31 06:52:49 +02:00
Matthias
7cbe3cd452 Merge pull request #3730 from freqtrade/allow_pairlists_in_backtesting
[minor] Allow pairlists in backtesting
2020-08-30 10:34:49 +02:00
Matthias
3d39f05c8f Improve release documetation 2020-08-30 10:23:14 +02:00
Matthias
77f2d46e29 Version bump to 2020.8 2020-08-30 10:11:57 +02:00
Matthias
b8aa07a6e8 Merge branch 'master' into release_2020.8 2020-08-30 10:11:45 +02:00
Matthias
842eff95eb Add simple verification to ensure pairlists is iitialized 2020-08-30 10:07:58 +02:00
Matthias
284d39930f Allow using pairlists through dataprovider in backtesting 2020-08-30 10:07:28 +02:00
Matthias
2ae04af694 Improve some doc wording 2020-08-29 10:26:26 +02:00
Matthias
a595d23bf1 Improve comment in test 2020-08-29 10:14:49 +02:00
Matthias
289425a434 Add test for dry-run-cancel order 2020-08-29 10:07:02 +02:00
Matthias
9c20d488a9 Merge branch 'develop' into fix/3084 2020-08-28 15:43:24 +02:00
Matthias
a9e7ee8113 Merge pull request #3683 from freqtrade/logging_endpoints
Logging endpoints
2020-08-27 15:11:17 +02:00
Matthias
dc6d71f651 Improve comment formatting 2020-08-27 14:41:31 +02:00
Matthias
cf719bc5d3 Fix logformat to use epoch timestamp in ms 2020-08-27 12:04:55 +02:00
Matthias
bf5a082358 bufferhandler should log right from the beginning 2020-08-27 11:37:20 +02:00
Matthias
b2373fccfd Adjust tests as send_msg is only called once 2020-08-27 06:35:28 +02:00
Matthias
9c0a3fffd7 Avoid double notifications in case of partially filled buy orders 2020-08-26 22:17:43 +02:00
Matthias
5e75caa917 Adjust tests to new forcesell 2020-08-26 21:55:31 +02:00
Matthias
85e71275d3 Simplify forcesell method by using freqtrade methods 2020-08-26 21:27:09 +02:00
Matthias
add78414e4 Don't overwrite cancel_reason 2020-08-26 21:24:47 +02:00
Matthias
d161b94d72 Allow simulating cancelled orders in dry-run 2020-08-26 21:22:36 +02:00
Matthias
309ea1246a Update config to use single quotes 2020-08-26 20:52:09 +02:00
Matthias
d1fe3c1a3d Merge pull request #3719 from freqtrade/fix/crossed_numpy_types
Allow numpy numbers as comparisons, too
2020-08-26 10:02:55 +02:00
Matthias
9d4ecb625a Allow numpy numbers as comparisons, too 2020-08-26 07:16:29 +02:00
Matthias
21f4aba4e3 Merge pull request #3055 from yazeed/verify_date_on_new_candle_on_get_signal
Verify date on last candle before producing signal
2020-08-25 20:22:48 +02:00
Matthias
605ed90567 Merge pull request #3592 from freqtrade/stoploss_distance
Add stoploss-distance (to current price) to /status output
2020-08-25 19:56:23 +02:00
Matthias
c6ead02da0 Merge pull request #3705 from mschultheiss83/update_bad_exchanges
update bad exchanges
2020-08-25 11:47:51 +02:00
Matthias
3bb69bc1bd Add returns statement to docstring 2020-08-24 17:31:00 +02:00
Matthias
fca11160e4 Improve docstring of is_pair_locked 2020-08-24 17:18:57 +02:00
Matthias
354a406248 Sort imports in interface.py 2020-08-24 11:45:38 +02:00
Matthias
b613fb7bc5 Merge pull request #3707 from freqtrade/update_sandbox_docs
Update sandbox documentation
2020-08-24 11:41:54 +02:00
Matthias
502e21b2cb Add unfilled explanation for sandboxes 2020-08-24 11:17:43 +02:00
Matthias
c272944834 Lock pair until a new candle arrives 2020-08-24 11:09:09 +02:00
Matthias
da097aea6a Merge pull request #3713 from freqtrade/dependabot/pip/develop/sqlalchemy-1.3.19
Bump sqlalchemy from 1.3.18 to 1.3.19
2020-08-24 09:29:30 +02:00
dependabot[bot]
7ece7294b2 Bump sqlalchemy from 1.3.18 to 1.3.19
Bumps [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) from 1.3.18 to 1.3.19.
- [Release notes](https://github.com/sqlalchemy/sqlalchemy/releases)
- [Changelog](https://github.com/sqlalchemy/sqlalchemy/blob/master/CHANGES)
- [Commits](https://github.com/sqlalchemy/sqlalchemy/commits)

Signed-off-by: dependabot[bot] <support@github.com>
2020-08-24 07:18:00 +00:00
Matthias
496a9cfb20 Merge pull request #3714 from freqtrade/dependabot/pip/develop/pandas-1.1.1
Bump pandas from 1.1.0 to 1.1.1
2020-08-24 09:13:02 +02:00
Matthias
c3523daa09 Merge pull request #3711 from freqtrade/dependabot/pip/develop/arrow-0.16.0
Bump arrow from 0.15.8 to 0.16.0
2020-08-24 09:04:42 +02:00
Matthias
c1b464f53c Merge pull request #3712 from freqtrade/dependabot/pip/develop/ccxt-1.33.52
Bump ccxt from 1.33.18 to 1.33.52
2020-08-24 09:01:05 +02:00
Matthias
7953c69922 Merge pull request #3709 from freqtrade/dependabot/pip/develop/pytest-mock-3.3.0
Bump pytest-mock from 3.2.0 to 3.3.0
2020-08-24 08:55:36 +02:00
Matthias
c83d6bd1e2 Merge pull request #3708 from freqtrade/dependabot/pip/develop/mkdocs-material-5.5.8
Bump mkdocs-material from 5.5.7 to 5.5.8
2020-08-24 08:55:09 +02:00
dependabot[bot]
f22fc8ef3e Bump pandas from 1.1.0 to 1.1.1
Bumps [pandas](https://github.com/pandas-dev/pandas) from 1.1.0 to 1.1.1.
- [Release notes](https://github.com/pandas-dev/pandas/releases)
- [Changelog](https://github.com/pandas-dev/pandas/blob/master/RELEASE.md)
- [Commits](https://github.com/pandas-dev/pandas/compare/v1.1.0...v1.1.1)

Signed-off-by: dependabot[bot] <support@github.com>
2020-08-24 06:45:20 +00:00
dependabot[bot]
0e20b8f530 Bump ccxt from 1.33.18 to 1.33.52
Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.33.18 to 1.33.52.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/doc/exchanges-by-country.rst)
- [Commits](https://github.com/ccxt/ccxt/compare/1.33.18...1.33.52)

Signed-off-by: dependabot[bot] <support@github.com>
2020-08-24 06:45:12 +00:00
dependabot[bot]
74c97369d9 Bump arrow from 0.15.8 to 0.16.0
Bumps [arrow](https://github.com/arrow-py/arrow) from 0.15.8 to 0.16.0.
- [Release notes](https://github.com/arrow-py/arrow/releases)
- [Changelog](https://github.com/arrow-py/arrow/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/arrow-py/arrow/compare/0.15.8...0.16.0)

Signed-off-by: dependabot[bot] <support@github.com>
2020-08-24 06:44:54 +00:00
dependabot[bot]
4c48fe96ed Bump pytest-mock from 3.2.0 to 3.3.0
Bumps [pytest-mock](https://github.com/pytest-dev/pytest-mock) from 3.2.0 to 3.3.0.
- [Release notes](https://github.com/pytest-dev/pytest-mock/releases)
- [Changelog](https://github.com/pytest-dev/pytest-mock/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest-mock/compare/v3.2.0...v3.3.0)

Signed-off-by: dependabot[bot] <support@github.com>
2020-08-24 06:44:52 +00:00
dependabot[bot]
5799cc51f2 Bump mkdocs-material from 5.5.7 to 5.5.8
Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 5.5.7 to 5.5.8.
- [Release notes](https://github.com/squidfunk/mkdocs-material/releases)
- [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/docs/changelog.md)
- [Commits](https://github.com/squidfunk/mkdocs-material/compare/5.5.7...5.5.8)

Signed-off-by: dependabot[bot] <support@github.com>
2020-08-24 06:44:50 +00:00
Matthias
8b767eedfd Merge branch 'develop' into pr/yazeed/3055 2020-08-24 07:21:48 +02:00
Matthias
26f45c8323 Improve logmessage for trailing stoploss 2020-08-24 06:56:56 +02:00
Matthias
38809acde8 Don't rerun for known closed orders 2020-08-24 06:50:43 +02:00
Matthias
8478e083dc Improve wording of sandbox documentation 2020-08-23 21:16:44 +02:00
Matthias
8940ba828f Update sandbox documentation 2020-08-23 21:14:00 +02:00
Matthias
311b55fc24 Merge branch 'develop' into db_keep_orders 2020-08-23 19:31:59 +02:00
Matthias
a55dd8444d Fix loglevel of using_cached-rate 2020-08-23 19:31:35 +02:00
Matthias
c3a367e4f0 Merge branch 'develop' into db_keep_orders 2020-08-23 19:14:57 +02:00
Matthias
ec94961437 Reduce loglevel of "using cached rate" 2020-08-23 19:14:28 +02:00
Matthias
9ba9f73706 Improve logging, don't search for buy orders in refind_lost_order 2020-08-23 16:04:32 +02:00
Matthias
4ecb67d1d1 Merge branch 'develop' into db_keep_orders 2020-08-23 10:36:56 +02:00
Matthias
92d8adf36c Merge pull request #3706 from freqtrade/fix_api_dates
Dates should be changed to UTC to provide the correct timestamp
2020-08-23 10:33:02 +02:00
Matthias
05ec56d906 Dates should be changed to UTC to provide the correct timestamp 2020-08-23 10:16:28 +02:00
Matthias
73417f11f1 Fix rendering issue on readthedocs 2020-08-23 09:11:52 +02:00
Martin Schultheiss
2701a7cb12 update bad exchanges 2020-08-23 09:11:34 +02:00
Matthias
c2707bdd9b Merge pull request #3688 from freqtrade/Fredrik81-stoploss.md
Update stoploss.md
2020-08-23 09:09:26 +02:00
Matthias
d8a6410fd1 Fix small bug when using max-open-trades -1 in backtesting 2020-08-23 09:00:57 +02:00
Matthias
674b510d23 Parametrize fetch_order retry counts 2020-08-22 17:35:42 +02:00
Matthias
3d7e800ff2 Remove test code 2020-08-22 16:08:54 +02:00
Matthias
11e69bdd65 Update open trades too 2020-08-22 15:49:32 +02:00
Matthias
fd33282eb1 Add handle_insufficient exception 2020-08-22 15:48:00 +02:00
Matthias
637147f89c Update sql cheatsheet parentheses 2020-08-22 09:33:35 +02:00
Matthias
3b4446339e Use fetch_order_or_stoploss order 2020-08-22 09:30:25 +02:00
Matthias
f2b390a271 Add fetch_order_or_stoploss wrapper 2020-08-22 09:28:36 +02:00
Matthias
fc2104bfad Fix bug with time when updating order_date 2020-08-22 09:12:09 +02:00
Matthias
39beb5c837 Add method to update fees on closed trades 2020-08-22 08:59:54 +02:00
Matthias
fc42d552ab Convert logs to fstrings 2020-08-22 08:59:50 +02:00
Matthias
2d6bcbb454 Fix small error in trades updating 2020-08-21 19:51:31 +02:00
Fredrik81
0e368b16ab Update stoploss.md 2020-08-21 18:25:45 +02:00
Matthias
3d93236709 Remove unused import 2020-08-21 14:55:47 +02:00
Matthias
301f74fd1b Merge pull request #3418 from freqtrade/hyperopt_colorama_init
Test colorama init again (after the fixes done to progressbar)
2020-08-21 14:54:35 +02:00
Matthias
fa0c8fa0b3 Readd note about windows hyperopt color output 2020-08-21 14:26:23 +02:00
Matthias
357d7714ec Add docstring to update_trade_state 2020-08-21 07:31:22 +02:00
Matthias
3be14933d4 Add comment explaining update_open_orders 2020-08-21 07:24:49 +02:00
Matthias
0b6014fae3 update_trade_state should take the order id directly - not from the trade object 2020-08-21 07:17:52 +02:00
Matthias
838985f6a0 Don't reset open-order-id just yet
it's needed to get the fees
2020-08-21 07:13:13 +02:00
Matthias
c4e597977c Merge pull request #3701 from freqtrade/fix/optimize_reports
Fix bug in backtesting
2020-08-20 20:21:38 +02:00
Matthias
4f1179d85c Test for empty case 2020-08-20 20:11:58 +02:00
Matthias
f5a9001dc0 Handle backtest results without any trades 2020-08-20 19:51:36 +02:00
Matthias
bca24c8b6b Clarify hyperopt dataprovider usage 2020-08-20 19:35:40 +02:00
Fredrik81
55c6e56762 Update stoploss.md 2020-08-19 23:07:03 +02:00
Matthias
42273ae042 Merge pull request #3695 from freqtrade/fix_daily_rpc
Fix daily rpc for webservice
2020-08-19 14:16:24 +02:00
Matthias
3d515ed5bf Merge pull request #3558 from freqtrade/bt_add_maxdrawdown
Revise backtesting export format, add some metrics
2020-08-19 06:39:47 +02:00
Matthias
e206cc9c21 Adjust tests 2020-08-18 20:15:41 +02:00
Matthias
375e671aaf Move formatting of /daily to telegram
so /daily can return numbers in the API
2020-08-18 20:12:14 +02:00
Matthias
d8e1f97465 Fix documentation typo 2020-08-18 19:44:44 +02:00
Matthias
9982ad2f36 Add profit to backtest summary output 2020-08-18 16:59:24 +02:00
Matthias
668d167adc Add docstring to store_backtest_stats 2020-08-18 16:15:24 +02:00
Matthias
4eb17b4daf Remove unneeded function 2020-08-18 15:20:37 +02:00
Matthias
aa866294cd Reformulate documentation 2020-08-18 14:02:22 +02:00
Matthias
ce15c55185 Add libffi-dev to rpi image 2020-08-17 20:24:30 +02:00
Matthias
e0fa549bb4 Merge pull request #3692 from freqtrade/dependabot/pip/develop/prompt-toolkit-3.0.6
Bump prompt-toolkit from 3.0.5 to 3.0.6
2020-08-17 09:08:59 +02:00
Matthias
53ea6e0a86 Merge pull request #3693 from freqtrade/dependabot/pip/develop/coveralls-2.1.2
Bump coveralls from 2.1.1 to 2.1.2
2020-08-17 09:08:41 +02:00
Matthias
0f5dd6d0fa Merge pull request #3690 from freqtrade/dependabot/pip/develop/pytest-cov-2.10.1
Bump pytest-cov from 2.10.0 to 2.10.1
2020-08-17 08:58:38 +02:00
Matthias
70e213751d Merge pull request #3691 from freqtrade/dependabot/pip/develop/ccxt-1.33.18
Bump ccxt from 1.32.88 to 1.33.18
2020-08-17 08:58:00 +02:00
Matthias
161417b6f4 Merge pull request #3689 from freqtrade/dependabot/pip/develop/mkdocs-material-5.5.7
Bump mkdocs-material from 5.5.3 to 5.5.7
2020-08-17 08:57:41 +02:00
dependabot[bot]
30a2df14cb Bump coveralls from 2.1.1 to 2.1.2
Bumps [coveralls](https://github.com/coveralls-clients/coveralls-python) from 2.1.1 to 2.1.2.
- [Release notes](https://github.com/coveralls-clients/coveralls-python/releases)
- [Changelog](https://github.com/coveralls-clients/coveralls-python/blob/master/CHANGELOG.md)
- [Commits](https://github.com/coveralls-clients/coveralls-python/compare/2.1.1...2.1.2)

Signed-off-by: dependabot[bot] <support@github.com>
2020-08-17 06:25:10 +00:00
dependabot[bot]
c8ddd5654a Bump prompt-toolkit from 3.0.5 to 3.0.6
Bumps [prompt-toolkit](https://github.com/prompt-toolkit/python-prompt-toolkit) from 3.0.5 to 3.0.6.
- [Release notes](https://github.com/prompt-toolkit/python-prompt-toolkit/releases)
- [Changelog](https://github.com/prompt-toolkit/python-prompt-toolkit/blob/master/CHANGELOG)
- [Commits](https://github.com/prompt-toolkit/python-prompt-toolkit/compare/3.0.5...3.0.6)

Signed-off-by: dependabot[bot] <support@github.com>
2020-08-17 06:25:04 +00:00
dependabot[bot]
988bff9eae Bump ccxt from 1.32.88 to 1.33.18
Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.32.88 to 1.33.18.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/doc/exchanges-by-country.rst)
- [Commits](https://github.com/ccxt/ccxt/compare/1.32.88...1.33.18)

Signed-off-by: dependabot[bot] <support@github.com>
2020-08-17 06:24:54 +00:00
dependabot[bot]
7af7fb261b Bump pytest-cov from 2.10.0 to 2.10.1
Bumps [pytest-cov](https://github.com/pytest-dev/pytest-cov) from 2.10.0 to 2.10.1.
- [Release notes](https://github.com/pytest-dev/pytest-cov/releases)
- [Changelog](https://github.com/pytest-dev/pytest-cov/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest-cov/compare/v2.10.0...v2.10.1)

Signed-off-by: dependabot[bot] <support@github.com>
2020-08-17 06:24:50 +00:00
dependabot[bot]
da6672841a Bump mkdocs-material from 5.5.3 to 5.5.7
Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 5.5.3 to 5.5.7.
- [Release notes](https://github.com/squidfunk/mkdocs-material/releases)
- [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/docs/changelog.md)
- [Commits](https://github.com/squidfunk/mkdocs-material/compare/5.5.3...5.5.7)

Signed-off-by: dependabot[bot] <support@github.com>
2020-08-17 06:24:49 +00:00
Matthias
a6dac9acf3 Merge pull request #3667 from freqtrade/hyperopt_enable_dataprovider
Hyperopt enable dataprovider
2020-08-17 07:00:48 +02:00
Matthias
1f153f51ee Merge pull request #3660 from freqtrade/hyperopt_default_tests
Move DefaultHyperopt to tests
2020-08-17 06:49:55 +02:00
Fredrik81
d6ea442588 Update stoploss.md 2020-08-17 02:10:56 +02:00
Fredrik81
2a6faaae64 Update stoploss.md 2020-08-17 02:07:32 +02:00
Fredrik81
4619a50097 Update configuration.md 2020-08-17 02:07:25 +02:00
Fredrik81
bd308889fc Update docs/stoploss.md
Co-authored-by: Matthias <xmatthias@outlook.com>
2020-08-16 14:58:06 +02:00
Fredrik81
f8efb87a67 Update docs/stoploss.md
Co-authored-by: Matthias <xmatthias@outlook.com>
2020-08-16 14:57:53 +02:00
Fredrik81
ddba999fe2 Update stoploss.md 2020-08-16 13:44:32 +02:00
Fredrik81
81a75c97cf Update docs/stoploss.md
Co-authored-by: Matthias <xmatthias@outlook.com>
2020-08-16 13:17:11 +02:00
Fredrik81
5091767276 Update docs/stoploss.md
Co-authored-by: Matthias <xmatthias@outlook.com>
2020-08-16 13:17:01 +02:00
Fredrik81
8b348fc247 Update docs/stoploss.md
Co-authored-by: Matthias <xmatthias@outlook.com>
2020-08-16 13:16:35 +02:00
Fredrik81
67e9721274 Update docs/stoploss.md
Co-authored-by: Matthias <xmatthias@outlook.com>
2020-08-16 13:14:50 +02:00
Fredrik81
4a0c988b67 Update docs/stoploss.md
Co-authored-by: Matthias <xmatthias@outlook.com>
2020-08-16 13:13:54 +02:00
Fredrik81
e30a38932f Update docs/stoploss.md
Co-authored-by: Matthias <xmatthias@outlook.com>
2020-08-16 13:13:40 +02:00
Fredrik81
902d40a32a Update docs/stoploss.md
Co-authored-by: Matthias <xmatthias@outlook.com>
2020-08-16 13:13:27 +02:00
Fredrik81
4ade3daa1e Update docs/stoploss.md
Co-authored-by: Matthias <xmatthias@outlook.com>
2020-08-16 13:09:19 +02:00
Fredrik81
1ce392f652 Update docs/stoploss.md
Co-authored-by: Matthias <xmatthias@outlook.com>
2020-08-16 13:05:38 +02:00
Fredrik81
c60192e4bd Update docs/stoploss.md
Co-authored-by: Matthias <xmatthias@outlook.com>
2020-08-16 13:05:07 +02:00
Fredrik81
bae8e5ed1a Update docs/stoploss.md
Co-authored-by: Matthias <xmatthias@outlook.com>
2020-08-16 13:03:56 +02:00
Matthias
cffac3f7b6 Merge pull request #3619 from hroff-1902/cleanup_agefilter
Cleanup AgeFilter, PriceFilter
2020-08-16 09:13:11 +02:00
Fredrik81
b9e46a3c5a Update stoploss.md
Updated documentation to simplify examples
2020-08-16 03:02:10 +02:00
Matthias
56ca37fd8b Also provide stacktrace via log endpoints 2020-08-15 20:15:02 +02:00
Matthias
c2573c998b Remove Hyperopt note about windows 2020-08-15 16:26:47 +02:00
Matthias
cc91d51389 Fix wording in configuration.md 2020-08-15 09:18:00 +02:00
Matthias
142f87b68c Adjust tests to new wordings 2020-08-15 09:11:46 +02:00
Matthias
1cb10d8f8e Merge branch 'develop' into pr/hroff-1902/3619 2020-08-15 09:08:59 +02:00
Matthias
9dd2800b98 Apply some review changes 2020-08-15 09:08:50 +02:00
Matthias
89b9a8cb1f Merge pull request #3396 from freqtrade/fix/broken_getpairs
Use dict for symbol_is_pair
2020-08-15 08:58:53 +02:00
Matthias
f3d4b114bb Skip windows test failure 2020-08-15 08:47:09 +02:00
Matthias
1ffa3d1ae0 Improve telegram message formatting 2020-08-15 08:31:36 +02:00
Matthias
f5863a1c6f Fix mypy errors 2020-08-15 08:15:47 +02:00
Matthias
9659e516c8 Remove queue import
Improve tests
2020-08-14 20:35:15 +02:00
Matthias
c4f78203ab Initialize streamhandler early to have it apply to all logs 2020-08-14 20:08:55 +02:00
Matthias
cdfcdb86c9 Increase logfile size 2020-08-14 20:00:09 +02:00
Matthias
251eb5aa96 Test for bufferingHandler too 2020-08-14 19:51:50 +02:00
Matthias
122c0e8ddc Readd accidentally dropped StreamHandler 2020-08-14 19:50:56 +02:00
Matthias
200de312fe Merge pull request #3677 from Blackhawke/develop
improve Edge documentation
2020-08-14 19:43:10 +02:00
Matthias
9ad8e74247 Add tests for log-endpoints 2020-08-14 19:41:27 +02:00
Matthias
5d691b5ee3 Fix warning box typo 2020-08-14 19:34:22 +02:00
Blackhawke
f3cedc849a Update docs/edge.md
Co-authored-by: Matthias <xmatthias@outlook.com>
2020-08-14 09:27:04 -07:00
Blackhawke
a14ce9d7d9 Update docs/edge.md
Co-authored-by: Matthias <xmatthias@outlook.com>
2020-08-14 09:26:28 -07:00
Blackhawke
47b215fe0a Update docs/edge.md
Co-authored-by: Matthias <xmatthias@outlook.com>
2020-08-14 09:25:53 -07:00
Matthias
904c4ecc23 Document /logs endpoints 2020-08-14 15:44:52 +02:00
Matthias
5f79caa307 Implement /logs endpoints in telegram and restAPI 2020-08-14 15:44:36 +02:00
Matthias
b989ba0f82 Simplify setup of handlers 2020-08-14 14:53:21 +02:00
Matthias
48944fd4cb Logging with queueHandler 2020-08-14 14:41:46 +02:00
Matthias
06125df10c Remove unused import 2020-08-14 11:31:02 +02:00
Matthias
d8fdd32b54 FIx migrations 2020-08-14 11:25:40 +02:00
Matthias
cfa352ecf2 Disable refind_lost_order for now 2020-08-14 11:25:20 +02:00
Matthias
b25267ad3d Build docker image for db_keep_orders branch 2020-08-14 11:13:55 +02:00
Matthias
552aaf7945 add refind order logic 2020-08-14 10:59:55 +02:00
Matthias
22af82631a Introduce InsufficientFundsError exception 2020-08-14 09:57:13 +02:00
Matthias
a6fc922f28 Introduce insufficientFunds Exception 2020-08-14 09:56:48 +02:00
Matthias
8458a380b8 Improve order catchup 2020-08-14 09:52:47 +02:00
Matthias
95efc0d688 Add open_order_updater 2020-08-14 09:52:47 +02:00
Matthias
c4d7aff5c3 Order should have a "is_open" flag 2020-08-14 09:52:47 +02:00
Matthias
da2a515d0b Add delete cascade to alchemy model 2020-08-14 09:52:46 +02:00
Matthias
1a305ea8b0 Fix migrations to use unique key 2020-08-14 09:52:46 +02:00
Matthias
2ca6547baf Update tests to have unique ordernumbers 2020-08-14 09:52:46 +02:00
Matthias
4434a54d59 Add unique key to order-Model 2020-08-14 09:52:46 +02:00
Matthias
ebd755e36a Improve order handling 2020-08-14 09:52:46 +02:00
Matthias
0af9e913d4 Timestamps are in ms 2020-08-14 09:52:46 +02:00
Matthias
73182bb2dd Update migrations to populate Orders table for open orders 2020-08-14 09:52:46 +02:00
Matthias
396e781bf4 Update orders 2020-08-14 09:52:46 +02:00
Matthias
4924d8487e Extract "update order from ccxt" to it's onw function 2020-08-14 09:52:46 +02:00
Matthias
ee7b235cdc Improve tests to use open_order mock where applicable 2020-08-14 09:52:46 +02:00
Matthias
420a8c2b1c Improve tests for rpc/forcebuy 2020-08-14 09:52:46 +02:00
Matthias
a66a3d047f Remove unneeded mocks 2020-08-14 09:52:46 +02:00
Matthias
ed87abd93a Allow selecting only a certain table range in migration 2020-08-14 09:52:46 +02:00
Matthias
171a52b21a Introduce Order database model 2020-08-14 09:52:46 +02:00
Matthias
7d03a067ee Extract migrations ot seperate module 2020-08-14 09:52:46 +02:00
Matthias
044df880e6 Move persistence into it's own submodule 2020-08-14 09:52:46 +02:00
Matthias
93717cfef1 Merge pull request #3008 from yazeed/more_info_hyperopt_fixed
Wins/draws/losses/median profit in hyperopt output
2020-08-14 09:25:12 +02:00
Matthias
b98107375e Improve formatting of result string to be a bit conciser 2020-08-14 07:31:14 +02:00
Matthias
d76ee43246 Show wins / draws / losses in hyperopt table 2020-08-14 07:14:10 +02:00
Matthias
22f6e884ed Merge pull request #3676 from freqtrade/stoploss_remove_unused_argument
[minor] Cleanup and exception hierarchy documentation
2020-08-14 07:11:56 +02:00
Matthias
05bd099f51 Merge branch 'develop' into pr/yazeed/3008 2020-08-14 06:58:09 +02:00
Matthias
4109b31dac Update wording in documentation 2020-08-14 06:46:34 +02:00
Matthias
067d1fd72a Merge pull request #3553 from qkum/patch-3
Update faq.md
2020-08-13 08:20:03 +02:00
Matthias
6b85b1a34d Don't only recommend pycharm, but keep it open to other editors too. 2020-08-13 08:06:57 +02:00
Matthias
e45e41adb4 Improve docs test to catch !!! errors 2020-08-13 08:05:05 +02:00
Matthias
1dabade883 small rewording of FAQ documentation 2020-08-13 08:02:36 +02:00
Matthias
c6741ea6c3 Merge branch 'develop' into fix/broken_getpairs 2020-08-12 20:13:06 +02:00
Matthias
5d61c56650 Merge pull request #3597 from freqtrade/fix/3579
consistently use filled before amount from orders
2020-08-12 19:56:57 +02:00
Blackhawke
827c31d4bc Re-arranged the introduction to better explain the theory of operation and the limitations of Edge. Added paragraphs at the bottom of "running edge independently" to better explain Edge's order of operations processing and potential differences between historical output and live/dry-run operation. 2020-08-12 09:42:16 -07:00
Matthias
3afd5b631e Remove erroneous import 2020-08-12 15:34:29 +02:00
Matthias
815d88fd4a Fix test after merge, fix forgotten 'amount' 2020-08-12 15:32:56 +02:00
Matthias
9999d0ffb5 Merge branch 'develop' into fix/3579 2020-08-12 15:28:51 +02:00
Matthias
faa2bbb555 Document exception hierarchy 2020-08-12 14:29:14 +02:00
Matthias
6dfa159a91 Small comment adjustments in exchange class 2020-08-12 14:11:19 +02:00
Matthias
7cf3e15e54 Merge pull request #3091 from yazeed/min-max-objective
--min-objective and --max-objective for hyperopt-list
2020-08-12 14:05:05 +02:00
Matthias
1f1a819b29 Remove unused 3rd argument to create_stoploss call 2020-08-12 11:21:00 +02:00
Matthias
2fed066e76 Simplify objective code formatting 2020-08-12 10:40:44 +02:00
Matthias
2dc36bb79e Remove inversion of min/max objective selection 2020-08-11 20:52:18 +02:00
Matthias
56655b97cf Refactor hyperopt_filter method 2020-08-11 20:37:01 +02:00
Matthias
f51c03aa86 Revert changes to color using --no-color 2020-08-11 20:29:47 +02:00
Matthias
77541935a8 Fix small merge mistake 2020-08-11 20:18:49 +02:00
Matthias
688d657fe2 Merge branch 'develop' into pr/yazeed/3091 2020-08-11 20:04:43 +02:00
Matthias
dda78677a0 Merge pull request #3649 from freqtrade/improve_cancel_order_handling
Better handle cancelled buy orders
2020-08-11 19:58:05 +02:00
Matthias
d77c53960d Show API backoff in logs to better investigate eventual problems) 2020-08-11 19:27:25 +02:00
Matthias
c9c43d2f0b Move log-message of retrying before decrementing count
Otherwise the message is always one round "late".
2020-08-11 15:27:41 +02:00
Matthias
064928a0eb Merge branch 'develop' into improve_cancel_order_handling 2020-08-11 15:25:47 +02:00
Matthias
52eae04945 Merge pull request #3670 from freqtrade/dependabot/pip/develop/ccxt-1.32.88
Bump ccxt from 1.32.45 to 1.32.88
2020-08-10 20:37:40 +02:00
Matthias
0d96a311f7 Merge pull request #3669 from freqtrade/dependabot/pip/develop/mkdocs-material-5.5.3
Bump mkdocs-material from 5.5.1 to 5.5.3
2020-08-10 20:23:02 +02:00
dependabot[bot]
1afe4df7be Bump ccxt from 1.32.45 to 1.32.88
Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.32.45 to 1.32.88.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/doc/exchanges-by-country.rst)
- [Commits](https://github.com/ccxt/ccxt/compare/1.32.45...1.32.88)

Signed-off-by: dependabot[bot] <support@github.com>
2020-08-10 06:17:36 +00:00
dependabot[bot]
17613f203a Bump mkdocs-material from 5.5.1 to 5.5.3
Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 5.5.1 to 5.5.3.
- [Release notes](https://github.com/squidfunk/mkdocs-material/releases)
- [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/docs/changelog.md)
- [Commits](https://github.com/squidfunk/mkdocs-material/compare/5.5.1...5.5.3)

Signed-off-by: dependabot[bot] <support@github.com>
2020-08-10 06:17:04 +00:00
Matthias
2663aede24 Update test to reflect new column naming 2020-08-09 10:28:11 +02:00
Matthias
b576e1d463 Merge branch 'develop' into bt_add_maxdrawdown 2020-08-09 10:25:57 +02:00
Matthias
87e4a82041 Merge branch 'develop' into bt_add_maxdrawdown 2020-08-09 08:34:36 +02:00
Matthias
fca41a44bb Also logg timeframe 2020-08-08 20:20:58 +02:00
Matthias
3670be5dd2 Merge pull request #3641 from freqtrade/fix/edgeremovebumps
Fix edge with removebumps enabled
2020-08-08 17:33:08 +02:00
Matthias
2afe1d5b11 Add link to full sample 2020-08-08 17:30:31 +02:00
Matthias
09aa954b68 Update strategy-customization documentation 2020-08-08 17:24:19 +02:00
Matthias
5e1032c4af Simplify strategy documentation, move "substrategies" to advanced page 2020-08-08 17:08:38 +02:00
Matthias
dd430455e4 Enable dataprovier for hyperopt 2020-08-08 17:04:32 +02:00
Matthias
e2643103b6 Merge pull request #3611 from thopd88/telegram-delete-command
Add telegram /delete command
2020-08-08 15:19:40 +02:00
Matthias
f3ce54150e Simplify Telegram table 2020-08-08 15:06:13 +02:00
Matthias
02810adcf7 Merge pull request #3662 from freqtrade/Fredrik81-patch-1
Update strategy_methods_advanced.j2
2020-08-07 06:23:22 +02:00
Fredrik81
eba73307e4 Update strategy_methods_advanced.j2
Fix def confirm_trade_exit arguments
2020-08-07 01:13:36 +02:00
Matthias
d01070dba8 Increase coverage of edge_cli 2020-08-06 09:22:41 +02:00
Matthias
995d3e1ed5 Don't search internal path for Hyperopt files 2020-08-06 09:07:48 +02:00
Matthias
59370672b8 Fix more tests 2020-08-06 09:00:28 +02:00
Matthias
081625c5dc Have hyperopt tests use new hyperopt location 2020-08-06 08:51:01 +02:00
Matthias
8b6d10daf1 Move DefaultHyperopt to test folder (aligned to strategy) 2020-08-06 08:50:41 +02:00
Matthias
5082acc33f Fix typos in documentation 2020-08-06 07:54:54 +02:00
Matthias
767332405e Merge pull request #3642 from freqtrade/new_release
New release 2020.7
2020-08-06 06:50:08 +02:00
Matthias
8ed3b81c61 Implement /delete in rest client 2020-08-04 19:57:28 +02:00
Matthias
075c73b9e3 Improve formatting of telegram message 2020-08-04 19:56:49 +02:00
Matthias
817f5289db /delete should Cancel open orders (and stoploss orders) 2020-08-04 19:43:22 +02:00
Matthias
9163c7f3d3 Improve api response 2020-08-04 19:43:05 +02:00
Matthias
b954af33cf Fix type erorr in callable 2020-08-04 16:01:41 +02:00
Matthias
4b0164770c Add test for /delete 2020-08-04 14:49:59 +02:00
Matthias
26c7341b7d Add test for api-server DELETE trade 2020-08-04 14:41:38 +02:00
Matthias
215972c68f Implement /delete for api-server 2020-08-04 14:41:22 +02:00
Matthias
c0083c4244 Merge branch 'develop' into pr/thopd88/3611 2020-08-04 07:00:54 +02:00
Matthias
b22fabe1f3 Merge pull request #3651 from freqtrade/dependabot/pip/develop/pytest-6.0.1
Bump pytest from 5.4.3 to 6.0.1
2020-08-03 21:31:31 +02:00
Matthias
a3688b159f Improve formatting 2020-08-03 19:28:57 +02:00
Matthias
a33346c6b6 Fix testing errors - which surfaced with pytest 6.0.1 2020-08-03 19:22:07 +02:00
Matthias
55233db07e Merge pull request #3654 from freqtrade/dependabot/pip/develop/ccxt-1.32.45
Bump ccxt from 1.32.7 to 1.32.45
2020-08-03 09:42:57 +02:00
Matthias
54bee1d183 Merge pull request #3653 from freqtrade/dependabot/pip/develop/pandas-1.1.0
Bump pandas from 1.0.5 to 1.1.0
2020-08-03 09:40:24 +02:00
Matthias
45256763ca Merge pull request #3652 from freqtrade/dependabot/pip/develop/mkdocs-material-5.5.1
Bump mkdocs-material from 5.5.0 to 5.5.1
2020-08-03 09:36:01 +02:00
dependabot[bot]
b3f04d89d2 Bump ccxt from 1.32.7 to 1.32.45
Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.32.7 to 1.32.45.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/doc/exchanges-by-country.rst)
- [Commits](https://github.com/ccxt/ccxt/compare/1.32.7...1.32.45)

Signed-off-by: dependabot[bot] <support@github.com>
2020-08-03 07:17:50 +00:00
dependabot[bot]
1855a444fa Bump pandas from 1.0.5 to 1.1.0
Bumps [pandas](https://github.com/pandas-dev/pandas) from 1.0.5 to 1.1.0.
- [Release notes](https://github.com/pandas-dev/pandas/releases)
- [Changelog](https://github.com/pandas-dev/pandas/blob/master/RELEASE.md)
- [Commits](https://github.com/pandas-dev/pandas/compare/v1.0.5...v1.1.0)

Signed-off-by: dependabot[bot] <support@github.com>
2020-08-03 07:17:32 +00:00
dependabot[bot]
809b3ddafc Bump mkdocs-material from 5.5.0 to 5.5.1
Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 5.5.0 to 5.5.1.
- [Release notes](https://github.com/squidfunk/mkdocs-material/releases)
- [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/docs/changelog.md)
- [Commits](https://github.com/squidfunk/mkdocs-material/compare/5.5.0...5.5.1)

Signed-off-by: dependabot[bot] <support@github.com>
2020-08-03 07:17:31 +00:00
dependabot[bot]
5ff09a06c7 Bump pytest from 5.4.3 to 6.0.1
Bumps [pytest](https://github.com/pytest-dev/pytest) from 5.4.3 to 6.0.1.
- [Release notes](https://github.com/pytest-dev/pytest/releases)
- [Changelog](https://github.com/pytest-dev/pytest/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest/compare/5.4.3...6.0.1)

Signed-off-by: dependabot[bot] <support@github.com>
2020-08-03 07:17:30 +00:00
Matthias
3915101d2d Add more backoff to fetch_order endpoint 2020-08-02 10:32:17 +02:00
Matthias
6c77feee85 Improve some exchange logs 2020-08-02 10:18:19 +02:00
Matthias
99bfa839eb Improve logging for sell exception 2020-08-02 10:12:15 +02:00
Matthias
071e82043a Better handle cancelled buy orders 2020-08-01 15:59:50 +02:00
Matthias
7263f83f78 Version bump 2020.7 2020-07-28 19:53:05 +02:00
Matthias
653bbc292b Merge branch 'master' into new_release 2020-07-28 19:52:44 +02:00
Matthias
d1cbc567e4 Fix filtering for bumped pairs 2020-07-28 13:41:09 +02:00
Matthias
14cb29aae1 Add test for remove_pumps in edge 2020-07-28 08:16:55 +02:00
Matthias
f3af02c06f Merge pull request #3635 from freqtrade/dependabot/pip/develop/ccxt-1.32.7
Bump ccxt from 1.32.3 to 1.32.7
2020-07-27 09:23:23 +02:00
dependabot[bot]
7318d02ebc Bump ccxt from 1.32.3 to 1.32.7
Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.32.3 to 1.32.7.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/doc/exchanges-by-country.rst)
- [Commits](https://github.com/ccxt/ccxt/compare/1.32.3...1.32.7)

Signed-off-by: dependabot[bot] <support@github.com>
2020-07-27 07:05:17 +00:00
Matthias
aab5596fa6 Convert trade open / close to timestamp
(to allow uniform analysis of backtest and real trade data - while
giving control of date-formatting to the endsystem.
2020-07-27 07:20:40 +02:00
Matthias
977a6d4e9c Add profit_total to results line 2020-07-26 16:10:48 +02:00
Matthias
454046f745 Add stake_currency and max_opeN_trades to backtest result 2020-07-26 15:55:54 +02:00
Matthias
8d0f338bf2 Timestamps should be in ms 2020-07-26 15:23:21 +02:00
Matthias
9ed5fed887 Fix output format to be of an identical type 2020-07-26 15:17:54 +02:00
Matthias
902e8fa62f Fix wrong spelling in one subcomponent 2020-07-26 14:39:00 +02:00
Matthias
65755989b4 Merge pull request #3631 from freqtrade/dependabot/pip/develop/mkdocs-material-5.5.0
Bump mkdocs-material from 5.4.0 to 5.5.0
2020-07-26 14:00:00 +02:00
Matthias
7a51bfbaba Merge pull request #3628 from freqtrade/dependabot/pip/develop/scipy-1.5.2
Bump scipy from 1.5.1 to 1.5.2
2020-07-26 13:28:42 +02:00
Matthias
fe27d2c10d Merge pull request #3629 from freqtrade/dependabot/pip/develop/urllib3-1.25.10
Bump urllib3 from 1.25.9 to 1.25.10
2020-07-26 13:27:42 +02:00
Matthias
90034a8e5e Merge pull request #3632 from freqtrade/dependabot/pip/develop/ccxt-1.32.3
Bump ccxt from 1.31.37 to 1.32.3
2020-07-26 11:23:26 +02:00
Matthias
1cfbbfb433 Merge pull request #3633 from freqtrade/dependabot/pip/develop/plotly-4.9.0
Bump plotly from 4.8.2 to 4.9.0
2020-07-26 11:11:54 +02:00
Matthias
73042781f4 Merge pull request #3630 from freqtrade/dependabot/pip/develop/numpy-1.19.1
Bump numpy from 1.19.0 to 1.19.1
2020-07-26 11:11:23 +02:00
dependabot[bot]
dbcccac6cd Bump ccxt from 1.31.37 to 1.32.3
Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.31.37 to 1.32.3.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/doc/exchanges-by-country.rst)
- [Commits](https://github.com/ccxt/ccxt/compare/1.31.37...1.32.3)

Signed-off-by: dependabot[bot] <support@github.com>
2020-07-26 08:53:51 +00:00
dependabot[bot]
b4d22f1000 Bump urllib3 from 1.25.9 to 1.25.10
Bumps [urllib3](https://github.com/urllib3/urllib3) from 1.25.9 to 1.25.10.
- [Release notes](https://github.com/urllib3/urllib3/releases)
- [Changelog](https://github.com/urllib3/urllib3/blob/master/CHANGES.rst)
- [Commits](https://github.com/urllib3/urllib3/compare/1.25.9...1.25.10)

Signed-off-by: dependabot[bot] <support@github.com>
2020-07-26 08:53:36 +00:00
Matthias
364295d2b3 Merge pull request #3627 from freqtrade/dependabot/pip/develop/arrow-0.15.8
Bump arrow from 0.15.7 to 0.15.8
2020-07-26 10:52:50 +02:00
dependabot[bot]
63e7490a55 Bump plotly from 4.8.2 to 4.9.0
Bumps [plotly](https://github.com/plotly/plotly.py) from 4.8.2 to 4.9.0.
- [Release notes](https://github.com/plotly/plotly.py/releases)
- [Changelog](https://github.com/plotly/plotly.py/blob/master/CHANGELOG.md)
- [Commits](https://github.com/plotly/plotly.py/compare/v4.8.2...v4.9.0)

Signed-off-by: dependabot[bot] <support@github.com>
2020-07-26 08:37:45 +00:00
dependabot[bot]
838743bf01 Bump mkdocs-material from 5.4.0 to 5.5.0
Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 5.4.0 to 5.5.0.
- [Release notes](https://github.com/squidfunk/mkdocs-material/releases)
- [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/docs/changelog.md)
- [Commits](https://github.com/squidfunk/mkdocs-material/compare/5.4.0...5.5.0)

Signed-off-by: dependabot[bot] <support@github.com>
2020-07-26 08:37:25 +00:00
dependabot[bot]
2ff03e173d Bump numpy from 1.19.0 to 1.19.1
Bumps [numpy](https://github.com/numpy/numpy) from 1.19.0 to 1.19.1.
- [Release notes](https://github.com/numpy/numpy/releases)
- [Changelog](https://github.com/numpy/numpy/blob/master/doc/HOWTO_RELEASE.rst.txt)
- [Commits](https://github.com/numpy/numpy/compare/v1.19.0...v1.19.1)

Signed-off-by: dependabot[bot] <support@github.com>
2020-07-26 08:37:17 +00:00
dependabot[bot]
d1d6f69e43 Bump scipy from 1.5.1 to 1.5.2
Bumps [scipy](https://github.com/scipy/scipy) from 1.5.1 to 1.5.2.
- [Release notes](https://github.com/scipy/scipy/releases)
- [Commits](https://github.com/scipy/scipy/compare/v1.5.1...v1.5.2)

Signed-off-by: dependabot[bot] <support@github.com>
2020-07-26 08:37:13 +00:00
dependabot[bot]
6ce4fd7aff Bump arrow from 0.15.7 to 0.15.8
Bumps [arrow](https://github.com/arrow-py/arrow) from 0.15.7 to 0.15.8.
- [Release notes](https://github.com/arrow-py/arrow/releases)
- [Changelog](https://github.com/arrow-py/arrow/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/arrow-py/arrow/compare/0.15.7...0.15.8)

Signed-off-by: dependabot[bot] <support@github.com>
2020-07-26 08:37:10 +00:00
Matthias
bad89307dd Fix mypy error 2020-07-25 17:19:41 +02:00
Matthias
119bf2a8ea Document hdf5 dataformat 2020-07-25 17:06:58 +02:00
Matthias
db8f3a9e9b Merge pull request #3609 from thopd88/develop
Add telegram /trades command
2020-07-25 16:45:09 +02:00
Matthias
edb582e522 Add more tests 2020-07-24 20:40:07 +02:00
Matthias
ae1c99bdd0 more tests 2020-07-24 20:36:30 +02:00
Matthias
ed33d4781d Add more hdf5 tests 2020-07-24 20:19:34 +02:00
Matthias
d9b339ee18 Add some more tests for hdf5 2020-07-24 20:09:59 +02:00
Matthias
0a28818b46 Add some tests for hdf5 2020-07-24 19:37:37 +02:00
Matthias
e26e658f99 Improve a few tests 2020-07-24 19:33:27 +02:00
Matthias
6a0c84b649 Add tests for hdf5 2020-07-24 19:23:56 +02:00
Matthias
861e7099cc Rename hdf5handler to hdf5DataHandler 2020-07-24 19:23:37 +02:00
Matthias
3171ad33b7 Add blosc compression 2020-07-24 17:44:29 +02:00
Matthias
0f08addfbe Don't store empty arrays 2020-07-24 17:37:07 +02:00
Matthias
31df42e737 Implement get_available_data 2020-07-24 17:31:43 +02:00
Matthias
d4540c846a Add trades_load method 2020-07-23 19:33:23 +02:00
Matthias
55591e287c First version of hdf5handler - no proper support for trades yet 2020-07-23 19:33:23 +02:00
Matthias
0614e59966 Add tables dependency 2020-07-23 19:33:23 +02:00
Matthias
e0c14e6214 Add /trades to help (so users know about it) 2020-07-23 07:56:05 +02:00
Matthias
fdc84eef59 /trades shall only return closed trades 2020-07-23 07:50:45 +02:00
Matthias
8300eb59d4 Extend create_mock_trades to create 4 trades
2 closed, and 2 open trades
2020-07-23 07:50:28 +02:00
Matthias
0f18b2a0d4 Add test and fix case where no trades were closed yet 2020-07-23 07:12:14 +02:00
thopd88
0bad55637e fix flake8 indent error 2020-07-23 10:12:52 +07:00
thopd88
a3daf8e41c Fix line too long 2020-07-23 09:47:53 +07:00
thopd88
0502fe0496 New /trades 3 columns and exclude open trades 2020-07-23 09:36:05 +07:00
hroff-1902
f48250b414 Make flake happy 2020-07-22 22:56:24 +03:00
hroff-1902
50767cd569 Adjust tests for AgeFilter 2020-07-22 22:48:29 +03:00
hroff-1902
5c2481082e Add tests for PriceFilter 2020-07-22 22:46:30 +03:00
hroff-1902
c78199d3d9 Add checks for parameters of PriceFilter 2020-07-22 22:45:46 +03:00
hroff-1902
a1e292f56a Improve docs 2020-07-22 22:09:30 +03:00
hroff-1902
daee414d7a Fix docs formatting 2020-07-22 21:51:25 +03:00
hroff-1902
5213abf510 AgeFilter is always enabled 2020-07-22 21:44:39 +03:00
hroff-1902
f6bde8bd9c Improve exception message wordings 2020-07-22 21:43:15 +03:00
Matthias
7e980037a4 Merge pull request #3554 from jblestang/Fix_#3544
Adding a dataprovider to the strategy before plotting
2020-07-22 15:56:16 +02:00
Matthias
f5f529cace Use correct initialization of DataProvider 2020-07-22 15:17:45 +02:00
Matthias
b060164b1f Merge pull request #3618 from freqtrade/dependabot/docker/python-3.8.5-slim-buster
Bump python from 3.8.4-slim-buster to 3.8.5-slim-buster
2020-07-22 08:41:26 +02:00
dependabot[bot]
2a5f8d8895 Bump python from 3.8.4-slim-buster to 3.8.5-slim-buster
Bumps python from 3.8.4-slim-buster to 3.8.5-slim-buster.

Signed-off-by: dependabot[bot] <support@github.com>
2020-07-22 06:22:45 +00:00
hroff-1902
dbf4d1a694 Merge pull request #3616 from freqtrade/fix/pairfilter
Fix pairfilter crash
2020-07-21 23:09:06 +03:00
Matthias
6a10c715fa Fix 0 division (if last = 0, something went wrong!) 2020-07-21 20:34:29 +02:00
Matthias
939f91734f Test confirming 0 division ... 2020-07-21 20:34:19 +02:00
hroff-1902
d8fa17cee8 Merge pull request #3614 from freqtrade/info_message_hyperopt
[minor] Reduce severity of hyperopt "does not provide" messages
2020-07-21 00:14:18 +03:00
hroff-1902
844ff1e068 Merge pull request #3613 from freqtrade/webhook/trade_id
Add trade_id to webhooks
2020-07-21 00:10:53 +03:00
Matthias
7d6708fc6a Reduce severity of hyperopt "does not provide" messages
closes #3371
2020-07-20 20:04:23 +02:00
Matthias
21dcef1134 Add trade_id to webhooks
allowing for easier corelation of different messages
2020-07-20 19:57:05 +02:00
Matthias
4774896169 Evaluate average before price in order returns 2020-07-20 19:39:12 +02:00
Matthias
4c97527b04 FIx failing test 2020-07-20 19:11:15 +02:00
hroff-1902
22c8f845ec Merge pull request #3606 from freqtrade/docs/informative
Improve informative pair sample
2020-07-20 19:22:48 +03:00
hroff-1902
b7c6f868b2 Merge pull request #3478 from hroff-1902/exchange-cosmetics-5
Minor: Exchange cosmetics
2020-07-20 18:58:46 +03:00
Matthias
3955fc6190 Merge pull request #3612 from freqtrade/fix-doc-sqlrequest
missing coma in sql request
2020-07-20 08:58:13 +02:00
gautier pialat
811028ae92 missing coma in sql request 2020-07-20 07:17:34 +02:00
thopd88
eaa7370174 add /delete command 2020-07-20 11:08:18 +07:00
thopd88
28f4a1101e Revert "Add telegram /delete command to delete tradeid"
This reverts commit 08fdd7d863.
2020-07-20 10:54:17 +07:00
Matthias
263dcd221d Merge pull request #3608 from thopd88/patch-1
Fix SQL syntax error when compare pair strings in rpc_forcebuy
2020-07-19 19:28:08 +02:00
Matthias
772473e93e Merge pull request #3610 from pan-long/develop
Correct a typo in stop loss doc.
2020-07-19 19:20:24 +02:00
Pan Long
37a9edfa35 Correct a typo in stop loss doc. 2020-07-20 00:37:06 +08:00
thopd88
08fdd7d863 Add telegram /delete command to delete tradeid
code inspired from _rpc_forcesell
2020-07-19 22:10:59 +07:00
thopd88
dd3a2675b5 Add telegram trades command to list recent trades 2020-07-19 22:02:53 +07:00
Alex Pham
3271c773a7 Fix SQL syntax error when compare pair strings
First happens in Postgres
2020-07-19 21:30:55 +07:00
Matthias
49395601e9 Improve informative pair sample 2020-07-19 10:02:06 +02:00
Matthias
ea1ddeb87d Merge pull request #3570 from gambcl/develop
Added range checks to min_days_listed in AgeFilter
2020-07-19 09:37:17 +02:00
Matthias
d849b32a02 Merge pull request #3601 from freqtrade/dependabot/pip/develop/ccxt-1.31.37
Bump ccxt from 1.30.93 to 1.31.37
2020-07-16 09:46:31 +02:00
dependabot[bot]
cd7ba99528 Bump ccxt from 1.30.93 to 1.31.37
Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.30.93 to 1.31.37.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/doc/exchanges-by-country.rst)
- [Commits](https://github.com/ccxt/ccxt/compare/1.30.93...1.31.37)

Signed-off-by: dependabot[bot] <support@github.com>
2020-07-16 07:23:16 +00:00
Matthias
288a2bdbb0 Merge pull request #3599 from freqtrade/dependabot/add-v2-config-file
Update Dependabot config file
2020-07-16 09:22:29 +02:00
dependabot-preview[bot]
eaf2b53d59 Update Dependabot config file 2020-07-16 05:10:46 +00:00
Matthias
de46744aa9 Use filled before amount for order data
closes #3579
2020-07-15 21:08:16 +02:00
Matthias
98f2e79f27 Adjust tests to use correctly trimmed amount 2020-07-15 20:55:33 +02:00
Matthias
3721736aaf Convert to real amount before placing order
to keep the correct amount in the database
2020-07-15 20:28:07 +02:00
Matthias
c1c018d8fe Fix tests that require amount_requested 2020-07-15 20:27:00 +02:00
Matthias
eafab38db3 Complete implementation of amount_requested 2020-07-15 20:20:14 +02:00
Matthias
c826f7a707 Add amount_requested to database 2020-07-15 20:15:29 +02:00
hroff-1902
18a5822a33 Merge pull request #3596 from freqtrade/fix/0fee
Allow 0 fee value by correctly checking for None
2020-07-15 20:52:32 +03:00
Matthias
d13cb4c055 Introduce safe_value_fallback_2 2020-07-15 19:50:09 +02:00
Matthias
5cebc9f39d Move stoploss_on_exchange_limit_ratio to configuration schema 2020-07-15 19:28:40 +02:00
Matthias
c1191400a4 Allow 0 fee value by correctly checking for None 2020-07-15 19:20:20 +02:00
gambcl
1051ab917a Replaced logging with OperationalException when AgeFilter given invalid parameters 2020-07-15 12:40:54 +01:00
Matthias
82c68f07cd Add stoploss-distance (to current price) to /status output 2020-07-14 20:16:18 +02:00
Matthias
bdf611352e Update summary-metrics output 2020-07-14 19:34:01 +02:00
Matthias
2417898d00 Apply documentation suggestions from code review
Co-authored-by: hroff-1902 <47309513+hroff-1902@users.noreply.github.com>
2020-07-14 19:27:52 +02:00
hroff-1902
0f4fc67b83 Merge pull request #3582 from freqtrade/data/list
List available backtesting data
2020-07-14 19:38:32 +03:00
Matthias
0228b63418 Don't print empty table 2020-07-14 16:42:47 +02:00
Matthias
0ca81480d4 Merge pull request #3590 from freqtrade/dependabot/docker/python-3.8.4-slim-buster
Bump python from 3.8.3-slim-buster to 3.8.4-slim-buster
2020-07-14 09:48:51 +02:00
dependabot-preview[bot]
ae55d54967 Bump python from 3.8.3-slim-buster to 3.8.4-slim-buster
Bumps python from 3.8.3-slim-buster to 3.8.4-slim-buster.

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-07-14 06:33:57 +00:00
Matthias
62c55b1863 Enhance formatting, Add pair filter 2020-07-14 06:55:34 +02:00
hroff-1902
43a1fe6d08 Merge pull request #3589 from freqtrade/api/timeframe_ms
[minor] Send timeframe min and ms in show_config response
2020-07-13 23:24:30 +03:00
Matthias
01f325a9e4 Send timeframe min and ms in show_config response 2020-07-13 21:15:33 +02:00
Matthias
0b36693acc Add filter for stoploss_on_exchange_limit_ratio to constants 2020-07-13 19:48:21 +02:00
Matthias
c2acf4bb82 Merge pull request #3584 from freqtrade/dependabot/pip/develop/pytest-mock-3.2.0
Bump pytest-mock from 3.1.1 to 3.2.0
2020-07-13 12:22:51 +02:00
Matthias
89c634c70d Merge pull request #3586 from freqtrade/dependabot/pip/develop/ccxt-1.30.93
Bump ccxt from 1.30.64 to 1.30.93
2020-07-13 12:22:21 +02:00
Matthias
e4b5bbe117 Merge pull request #3587 from freqtrade/dependabot/pip/develop/coveralls-2.1.1
Bump coveralls from 2.0.0 to 2.1.1
2020-07-13 12:21:53 +02:00
Matthias
b0b76091c8 Merge pull request #3585 from freqtrade/dependabot/pip/develop/pycoingecko-1.3.0
Bump pycoingecko from 1.2.0 to 1.3.0
2020-07-13 12:21:26 +02:00
dependabot-preview[bot]
50573bd397 Bump coveralls from 2.0.0 to 2.1.1
Bumps [coveralls](https://github.com/coveralls-clients/coveralls-python) from 2.0.0 to 2.1.1.
- [Release notes](https://github.com/coveralls-clients/coveralls-python/releases)
- [Changelog](https://github.com/coveralls-clients/coveralls-python/blob/master/CHANGELOG.md)
- [Commits](https://github.com/coveralls-clients/coveralls-python/compare/2.0.0...2.1.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-07-13 09:02:07 +00:00
dependabot-preview[bot]
d1e4e463ae Bump ccxt from 1.30.64 to 1.30.93
Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.30.64 to 1.30.93.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/doc/exchanges-by-country.rst)
- [Commits](https://github.com/ccxt/ccxt/compare/1.30.64...1.30.93)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-07-13 09:01:58 +00:00
dependabot-preview[bot]
58eb26d73a Bump pycoingecko from 1.2.0 to 1.3.0
Bumps [pycoingecko](https://github.com/man-c/pycoingecko) from 1.2.0 to 1.3.0.
- [Release notes](https://github.com/man-c/pycoingecko/releases)
- [Changelog](https://github.com/man-c/pycoingecko/blob/master/CHANGELOG.md)
- [Commits](https://github.com/man-c/pycoingecko/compare/1.2.0...1.3.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-07-13 09:01:14 +00:00
dependabot-preview[bot]
79af6180bd Bump pytest-mock from 3.1.1 to 3.2.0
Bumps [pytest-mock](https://github.com/pytest-dev/pytest-mock) from 3.1.1 to 3.2.0.
- [Release notes](https://github.com/pytest-dev/pytest-mock/releases)
- [Changelog](https://github.com/pytest-dev/pytest-mock/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest-mock/compare/v3.1.1...v3.2.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-07-13 09:00:50 +00:00
Matthias
6ee6e51ab4 Merge branch 'develop' into pr/hroff-1902/3478 2020-07-13 07:22:43 +02:00
Matthias
3811f4692b Merge pull request #3577 from freqtrade/fix/doctypo
[minor] Fix typo in docs, install sqlite3 in docker image
2020-07-12 12:50:04 +02:00
Matthias
ed2e35ba5d Update docs/sql_cheatsheet.md
Co-authored-by: hroff-1902 <47309513+hroff-1902@users.noreply.github.com>
2020-07-12 12:36:16 +02:00
Matthias
b035d9e267 Update return type comment 2020-07-12 10:23:09 +02:00
Matthias
33c3990972 Add documentation for list-data command 2020-07-12 10:05:47 +02:00
Matthias
5bb81abce2 Add test for start_list_data 2020-07-12 10:01:51 +02:00
Matthias
02afde857d Add list-data command 2020-07-12 09:57:00 +02:00
Matthias
d4fc52d2d5 Add tests for ohlcv_get_available_data 2020-07-12 09:56:46 +02:00
Matthias
422825ea1b Add ohlcv_get_available_data to find available data 2020-07-12 09:50:53 +02:00
hroff-1902
a4b0e8117a Merge pull request #3580 from BlueSkyTrading/patch-2
removed duplicate
2020-07-11 22:37:52 +03:00
HumanBot
f0a1a1720f removed duplicate
removed duplicate word using using
2020-07-11 15:21:54 -04:00
Matthias
ecbca3fab0 Add sqlite3 to dockerfile 2020-07-11 09:13:39 +02:00
Matthias
588043af86 Fix documentation brackets, add delete trade hints 2020-07-11 07:29:11 +02:00
Matthias
40bdc93653 Add test for short_desc of priceFilter 2020-07-10 20:28:29 +02:00
gambcl
14eab9be04 Added min_price, max_price to PriceFilter 2020-07-08 22:02:04 +01:00
gambcl
091285ba43 Fix flake8 error in test_pairlist.py 2020-07-08 18:32:14 +01:00
gambcl
2e45859aef Added range checks to min_days_listed in AgeFilter 2020-07-08 18:06:30 +01:00
Matthias
86cf6201c8 Merge pull request #3560 from freqtrade/dependabot/pip/develop/scipy-1.5.1
Bump scipy from 1.5.0 to 1.5.1
2020-07-07 21:54:01 +02:00
Matthias
e0c767614f Merge pull request #3561 from freqtrade/dependabot/pip/develop/ccxt-1.30.64
Bump ccxt from 1.30.48 to 1.30.64
2020-07-07 21:53:31 +02:00
dependabot-preview[bot]
deb34d2879 Bump scipy from 1.5.0 to 1.5.1
Bumps [scipy](https://github.com/scipy/scipy) from 1.5.0 to 1.5.1.
- [Release notes](https://github.com/scipy/scipy/releases)
- [Commits](https://github.com/scipy/scipy/compare/v1.5.0...v1.5.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-07-06 19:58:28 +00:00
Matthias
779a8401a8 Merge pull request #3563 from freqtrade/dependabot/pip/develop/joblib-0.16.0
Bump joblib from 0.15.1 to 0.16.0
2020-07-06 21:57:14 +02:00
Matthias
087a38ab78 Merge pull request #3562 from freqtrade/dependabot/pip/develop/mkdocs-material-5.4.0
Bump mkdocs-material from 5.3.3 to 5.4.0
2020-07-06 21:53:47 +02:00
dependabot-preview[bot]
93dd70c77d Bump joblib from 0.15.1 to 0.16.0
Bumps [joblib](https://github.com/joblib/joblib) from 0.15.1 to 0.16.0.
- [Release notes](https://github.com/joblib/joblib/releases)
- [Changelog](https://github.com/joblib/joblib/blob/master/CHANGES.rst)
- [Commits](https://github.com/joblib/joblib/compare/0.15.1...0.16.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-07-06 09:13:05 +00:00
dependabot-preview[bot]
4c8bee1e5d Bump mkdocs-material from 5.3.3 to 5.4.0
Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 5.3.3 to 5.4.0.
- [Release notes](https://github.com/squidfunk/mkdocs-material/releases)
- [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG)
- [Commits](https://github.com/squidfunk/mkdocs-material/compare/5.3.3...5.4.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-07-06 09:12:15 +00:00
dependabot-preview[bot]
f63045b0e9 Bump ccxt from 1.30.48 to 1.30.64
Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.30.48 to 1.30.64.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/doc/exchanges-by-country.rst)
- [Commits](https://github.com/ccxt/ccxt/compare/1.30.48...1.30.64)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-07-06 09:11:49 +00:00
hroff-1902
839b3340e6 Merge pull request #3497 from freqtrade/keep_dataframe_noapi
Analyze dataframe and keep it until the next analysis
2020-07-05 13:46:02 +03:00
Matthias
75318525a9 Update docs/strategy-advanced.md
Co-authored-by: hroff-1902 <47309513+hroff-1902@users.noreply.github.com>
2020-07-04 16:41:19 +02:00
Matthias
c4a9a79be0 Apply suggested documentation changes from code review
Co-authored-by: hroff-1902 <47309513+hroff-1902@users.noreply.github.com>
2020-07-04 09:43:49 +02:00
Matthias
1fc4451d2f Avoid \ linebreak 2020-07-03 20:32:04 +02:00
Matthias
ea5e47657a Remove ticker_interval from jupyter notebook 2020-07-03 20:27:32 +02:00
Matthias
0d15a87af8 Remove old store_backtest method 2020-07-03 20:21:32 +02:00
Matthias
523437d970 Add tst for daily stats 2020-07-03 20:03:33 +02:00
Matthias
987188e41f Add avgduration for winners and losers 2020-07-03 19:58:02 +02:00
Matthias
8e0ff4bd86 Add Win / draw / losing days 2020-07-03 19:45:45 +02:00
Matthias
42868ad24a Add best / worst day to statistics 2020-07-03 19:30:29 +02:00
Matthias
804c42933d Document summary-statistics 2020-07-03 08:02:27 +02:00
Matthias
d56f9655e2 Update notebook with new statistics example 2020-07-03 07:20:43 +02:00
Matthias
619eb183fe Allow strategy for plot-profit
to allow loading of multi-backtest files
2020-07-03 07:03:43 +02:00
Matthias
16a842f9f6 Have plotting support folder-based exportfilename 2020-07-03 06:58:27 +02:00
Matthias
d999fa2a7e Test autogetting result filename 2020-07-03 06:58:27 +02:00
Matthias
7c5587aeaa exportfilename can be a file or directory 2020-07-03 06:58:27 +02:00
Matthias
2ed808da1f Extract .last_result.json to constant 2020-07-03 06:58:27 +02:00
Matthias
59e0ca0aaa Add pairlist to backtest-result 2020-07-03 06:58:27 +02:00
Matthias
59ac4b9c9a Test writing statistics 2020-07-03 06:58:27 +02:00
Matthias
5b1a7ba00f Test multistrat loading 2020-07-03 06:58:27 +02:00
Matthias
f952f74bf1 Add test for new format 2020-07-03 06:58:27 +02:00
Matthias
573502d972 Update test for load_trades_from_db 2020-07-03 06:58:27 +02:00
Matthias
afefe92523 Add multi-strategy loading logic 2020-07-03 06:58:27 +02:00
Matthias
c13ec4a1d4 implement fallback loading for load_backtest_data 2020-07-03 06:58:27 +02:00
Matthias
1339479882 Have sell_type stringify correctly 2020-07-03 06:58:27 +02:00
Matthias
04eaf2c39c Add test for get_last_backtest_Result 2020-07-03 06:58:27 +02:00
Matthias
7727292861 Rename duration to trade_duration 2020-07-03 06:58:27 +02:00
Matthias
f368aabcc7 Add amount to backtest-result 2020-07-03 06:58:27 +02:00
Matthias
6e94734678 Add fee to backtestresult 2020-07-03 06:58:27 +02:00
Matthias
03ab61959b Add test for generate_backtest_stats 2020-07-03 06:58:27 +02:00
Matthias
af9a9592b7 Remove unnecessary statement 2020-07-03 06:58:27 +02:00
Matthias
075eb0a161 Fix sequence of saving 2020-07-03 06:58:27 +02:00
Matthias
dacb40a976 Add get_latest_backtest_filename 2020-07-03 06:58:27 +02:00
Matthias
0fa56be9d2 remove openIndex and closeIndex from backtest-report 2020-07-03 06:58:27 +02:00
Matthias
04cbc2cde5 Shorten variable 2020-07-03 06:58:27 +02:00
Matthias
2881718733 Adapt tests for new column names 2020-07-03 06:58:27 +02:00
Matthias
b068e7c564 Rename open_time and close_time to *date 2020-07-03 06:58:27 +02:00
Matthias
415853583b Save backtest-stats 2020-07-03 06:58:27 +02:00
Matthias
81c8e8677d use 0 as profit mean, not nan 2020-07-03 06:58:27 +02:00
Matthias
480c5117f1 Handle empty return strings 2020-07-03 06:58:27 +02:00
Matthias
5fce7f3b22 Add market Change
closes #2524 and #3518
2020-07-03 06:58:27 +02:00
Matthias
cf044d166e Tests should use new Datetime format too 2020-07-03 06:58:27 +02:00
Matthias
fbddfaeacf Introduce DatetimePrintFormat 2020-07-03 06:58:27 +02:00
Matthias
cbcf3dbb43 Add more metrics to summarytable 2020-07-03 06:58:27 +02:00
Matthias
6922fbc3aa Add max_drawdown error handler 2020-07-03 06:58:27 +02:00
Matthias
455b26ea48 Add max drawdown to backtesting 2020-07-03 06:58:27 +02:00
Matthias
5a189ae202 Merge pull request #3552 from Theagainmen/Minor_issues
API server FIAT init fix
2020-07-03 06:30:42 +02:00
Jean-Baptiste LE STANG
da1b37b917 Merge branch 'Fix_#3544' of https://github.com/jblestang/freqtrade into Fix_#3544 2020-07-02 21:16:30 +02:00
Jean-Baptiste LE STANG
20e8a29262 Adding a dataprovider to the strategy before plotting
Fix flake8
2020-07-02 21:14:31 +02:00
Jean-Baptiste LE STANG
23c0db925e Adding a dataprovider to the strategy before plotting 2020-07-02 20:55:16 +02:00
Theagainmen
f32e522bd7 Update API test, removed 'ANY' 2020-07-02 20:03:15 +02:00
Theagainmen
39fa589735 Update API test, currently just with 'ANY' 2020-07-02 13:39:02 +02:00
Theagainmen
db965332b9 Update tests for AgeFilter message 2020-07-02 11:38:38 +02:00
Theagainmen
99ac2659f3 Init FIAT converter in api_server.py 2020-07-02 11:27:33 +02:00
Theagainmen
81850b5fdf AgeFilter add actual amount of days in log message (debug info) 2020-07-02 11:26:52 +02:00
Matthias
d9d999eaea Merge pull request #3545 from BlueSkyTrading/patch-1
fixed --export trades command
2020-06-30 19:45:48 +02:00
HumanBot
61ae471eef fixed --export trades command
refers to issue 3413 @ https://github.com/freqtrade/freqtrade/issues/3413
2020-06-30 10:13:27 -04:00
Matthias
d0d634260f Merge pull request #3543 from freqtrade/new_Release
New release 2020.6
2020-06-30 16:00:11 +02:00
Confucius-The-Great
2f759825e4 Update faq.md
Major changes :)
2020-06-30 11:01:00 +02:00
Matthias
cf1bbb1afb Merge pull request #3517 from freqtrade/rpc/winlossratio
Show winning vs. losing trades
2020-06-30 07:48:18 +02:00
Matthias
cf26ab1dd8 Merge pull request #3527 from Theagainmen/Warning_message2
Warning message bot is stopped and left open trades
2020-06-30 07:48:02 +02:00
Matthias
c2a6f70b4c Merge branch 'develop' into keep_dataframe_noapi 2020-06-30 07:46:52 +02:00
Matthias
efd6e4a875 Add test for check_for_open_trades 2020-06-30 07:16:27 +02:00
hroff-1902
8a2f631ddd Merge pull request #3531 from freqtrade/exchange_errorhandling
Improve exchange errorhandling and API backoff
2020-06-30 07:53:09 +03:00
Matthias
e41392a73f Version bump to 2020.6 2020-06-30 06:44:40 +02:00
Matthias
a6c0a488f5 Merge branch 'master' into new_Release 2020-06-30 06:44:35 +02:00
hroff-1902
02c0488d45 Merge pull request #3453 from freqtrade/fix/3363
Backtesting should load pairlists after the strategy
2020-06-29 21:53:33 +03:00
Matthias
b95065d701 Log backoff 2020-06-29 20:00:42 +02:00
Matthias
ff4ff22f87 Merge pull request #3541 from freqtrade/dependabot/pip/develop/ccxt-1.30.48
Bump ccxt from 1.30.34 to 1.30.48
2020-06-29 15:09:35 +02:00
dependabot-preview[bot]
a9064117a5 Bump ccxt from 1.30.34 to 1.30.48
Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.30.34 to 1.30.48.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/doc/exchanges-by-country.rst)
- [Commits](https://github.com/ccxt/ccxt/compare/1.30.34...1.30.48)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-29 12:53:58 +00:00
Matthias
5bf6635b22 Merge pull request #3535 from freqtrade/dependabot/pip/develop/mypy-0.782
Bump mypy from 0.781 to 0.782
2020-06-29 14:53:53 +02:00
Matthias
5d69ea5e6d Merge pull request #3534 from freqtrade/dependabot/pip/develop/cachetools-4.1.1
Bump cachetools from 4.1.0 to 4.1.1
2020-06-29 14:52:48 +02:00
dependabot-preview[bot]
8fb1683bdc Bump cachetools from 4.1.0 to 4.1.1
Bumps [cachetools](https://github.com/tkem/cachetools) from 4.1.0 to 4.1.1.
- [Release notes](https://github.com/tkem/cachetools/releases)
- [Changelog](https://github.com/tkem/cachetools/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/tkem/cachetools/compare/v4.1.0...v4.1.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-29 12:32:42 +00:00
Matthias
0b5fa9f149 Merge pull request #3536 from freqtrade/dependabot/pip/develop/python-telegram-bot-12.8
Bump python-telegram-bot from 12.7 to 12.8
2020-06-29 14:31:20 +02:00
Matthias
fc5c63de96 Merge pull request #3533 from freqtrade/dependabot/pip/develop/progressbar2-3.51.4
Bump progressbar2 from 3.51.3 to 3.51.4
2020-06-29 14:22:00 +02:00
Matthias
8dad665c98 Merge pull request #3538 from freqtrade/dependabot/pip/develop/mkdocs-material-5.3.3
Bump mkdocs-material from 5.3.2 to 5.3.3
2020-06-29 14:14:38 +02:00
dependabot-preview[bot]
c06b280288 Bump mypy from 0.781 to 0.782
Bumps [mypy](https://github.com/python/mypy) from 0.781 to 0.782.
- [Release notes](https://github.com/python/mypy/releases)
- [Commits](https://github.com/python/mypy/compare/v0.781...v0.782)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-29 12:14:27 +00:00
dependabot-preview[bot]
449d462533 Bump python-telegram-bot from 12.7 to 12.8
Bumps [python-telegram-bot](https://github.com/python-telegram-bot/python-telegram-bot) from 12.7 to 12.8.
- [Release notes](https://github.com/python-telegram-bot/python-telegram-bot/releases)
- [Changelog](https://github.com/python-telegram-bot/python-telegram-bot/blob/master/CHANGES.rst)
- [Commits](https://github.com/python-telegram-bot/python-telegram-bot/compare/v12.7...v12.8)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-29 12:12:58 +00:00
Matthias
95c7ccbf19 Merge pull request #3537 from freqtrade/dependabot/pip/develop/plotly-4.8.2
Bump plotly from 4.8.1 to 4.8.2
2020-06-29 14:12:46 +02:00
Matthias
b8452c36da Merge pull request #3539 from freqtrade/dependabot/pip/develop/pytest-asyncio-0.14.0
Bump pytest-asyncio from 0.12.0 to 0.14.0
2020-06-29 14:12:10 +02:00
Matthias
0014958c05 Merge pull request #3540 from freqtrade/dependabot/pip/develop/sqlalchemy-1.3.18
Bump sqlalchemy from 1.3.17 to 1.3.18
2020-06-29 14:11:32 +02:00
dependabot-preview[bot]
9e1ce0c67a Bump sqlalchemy from 1.3.17 to 1.3.18
Bumps [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) from 1.3.17 to 1.3.18.
- [Release notes](https://github.com/sqlalchemy/sqlalchemy/releases)
- [Changelog](https://github.com/sqlalchemy/sqlalchemy/blob/master/CHANGES)
- [Commits](https://github.com/sqlalchemy/sqlalchemy/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-29 09:04:12 +00:00
dependabot-preview[bot]
be2b326a6e Bump pytest-asyncio from 0.12.0 to 0.14.0
Bumps [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio) from 0.12.0 to 0.14.0.
- [Release notes](https://github.com/pytest-dev/pytest-asyncio/releases)
- [Commits](https://github.com/pytest-dev/pytest-asyncio/compare/v0.12.0...v0.14.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-29 09:03:58 +00:00
dependabot-preview[bot]
4e5910afba Bump mkdocs-material from 5.3.2 to 5.3.3
Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 5.3.2 to 5.3.3.
- [Release notes](https://github.com/squidfunk/mkdocs-material/releases)
- [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG)
- [Commits](https://github.com/squidfunk/mkdocs-material/compare/5.3.2...5.3.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-29 09:03:19 +00:00
dependabot-preview[bot]
e06b009214 Bump plotly from 4.8.1 to 4.8.2
Bumps [plotly](https://github.com/plotly/plotly.py) from 4.8.1 to 4.8.2.
- [Release notes](https://github.com/plotly/plotly.py/releases)
- [Changelog](https://github.com/plotly/plotly.py/blob/master/CHANGELOG.md)
- [Commits](https://github.com/plotly/plotly.py/compare/v4.8.1...v4.8.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-29 09:02:57 +00:00
dependabot-preview[bot]
fe0b17c70c Bump progressbar2 from 3.51.3 to 3.51.4
Bumps [progressbar2](https://github.com/WoLpH/python-progressbar) from 3.51.3 to 3.51.4.
- [Release notes](https://github.com/WoLpH/python-progressbar/releases)
- [Changelog](https://github.com/WoLpH/python-progressbar/blob/develop/CHANGES.rst)
- [Commits](https://github.com/WoLpH/python-progressbar/compare/v3.51.3...v3.51.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-29 09:01:20 +00:00
Matthias
4d9ecf137b Fix failing test in python 3.7
can't use Magicmock in 3.7 (works in 3.8 though).
2020-06-28 20:38:28 +02:00
Matthias
c6124180fe Fix bug when fetching orders fails 2020-06-28 19:45:42 +02:00
Matthias
6362bfc36e Fix calculate_backoff implementation 2020-06-28 19:41:21 +02:00
Matthias
cbcbb4bdb5 Rename get_stoploss_order to fetch_stoploss_order (align with fetch_order) 2020-06-28 16:30:24 +02:00
Matthias
92c70fb903 Rename get_order to fetch_order (to align to ccxt naming) 2020-06-28 16:27:35 +02:00
Matthias
e040c518ca Dynamic backoff on DDos errors 2020-06-28 16:19:12 +02:00
Matthias
29d3ff1bc9 Adjust tests to work with ExchangeError 2020-06-28 16:04:04 +02:00
Matthias
bf61bc9d83 Introduce ExchangeError 2020-06-28 16:01:40 +02:00
Matthias
e74d2af857 Have TemporaryError a subCategory of DependencyException
so it's safe to raise out of the exchange
2020-06-28 15:44:58 +02:00
Matthias
5bd4798ed0 Add retrier to stoploss calls (but without retrying) 2020-06-28 11:56:29 +02:00
Matthias
2c45114a64 Implement DDos backoff (1s) 2020-06-28 11:17:06 +02:00
Theagainmen
118f051171 Added message in cleanup and fixes 2020-06-28 11:02:50 +02:00
Theagainmen
e5676867a8 Trying to fix flake8 errors 2020-06-27 21:53:12 +02:00
Theagainmen
b938c536fa Trying to fix flake8 errors 2020-06-27 21:46:53 +02:00
Theagainmen
48289e8ca7 Added exchange name, removed capital letters 2020-06-27 20:24:50 +02:00
Theagainmen
0642ab76bf Added information to the new function 2020-06-27 18:40:44 +02:00
Theagainmen
e813573f27 Warning message for open trades when stopping bot 2020-06-27 18:35:46 +02:00
Matthias
baaf7f1c54 Merge pull request #3523 from freqtrade/doc/faq
Add missing data fillup to FAQ
2020-06-27 15:48:09 +02:00
Matthias
865b73a456 Merge pull request #3520 from freqtrade/rpc/cors_setting
Fix RPC Cors
2020-06-27 15:38:40 +02:00
Matthias
e11d22a6a2 Apply suggestions from code review
Co-authored-by: hroff-1902 <47309513+hroff-1902@users.noreply.github.com>
2020-06-27 15:31:37 +02:00
Matthias
185fab7b57 Change some wordings in documentation
Co-authored-by: hroff-1902 <47309513+hroff-1902@users.noreply.github.com>
2020-06-27 15:26:55 +02:00
hroff-1902
cc24f44636 Merge pull request #3519 from freqtrade/fix/trades_download_older
dl-trades should also support increasing download span
2020-06-27 00:08:10 +03:00
Matthias
da8e87660e Add missing data fillup to FAQ 2020-06-26 06:39:47 +02:00
Matthias
6734269bfc Use >= to compare for winning trades 2020-06-25 19:22:50 +02:00
Matthias
c10545ef89 Merge pull request #3521 from gambcl/develop
AgeFilter for filtering out newly listed pairs
2020-06-25 09:56:34 +02:00
gambcl
ab7f5a2bcf Added pairslist AgeFilter 2020-06-24 23:58:12 +01:00
Matthias
5423d8588e Test for cors settings 2020-06-24 20:32:35 +02:00
Matthias
b77a105778 Add CORS_origins key to configuration 2020-06-24 20:32:19 +02:00
Matthias
676006b99c --dl-trades should also support increasing download span
(by downloading the whole dataset again to avoid missing data in the
middle).
2020-06-24 17:40:23 +02:00
gambcl
3624aec059 Typos 2020-06-24 15:21:28 +01:00
Matthias
0509b9a8fc Show winning vs. losing trades 2020-06-24 06:43:19 +02:00
Matthias
112906458f Merge pull request #3511 from freqtrade/dependabot/pip/develop/ccxt-1.30.34
Bump ccxt from 1.30.2 to 1.30.34
2020-06-22 15:45:29 +02:00
Matthias
7abd59e09e Merge pull request #3505 from freqtrade/dependabot/pip/develop/requests-2.24.0
Bump requests from 2.23.0 to 2.24.0
2020-06-22 15:15:56 +02:00
Matthias
cfcda81fca Merge branch 'develop' into dependabot/pip/develop/ccxt-1.30.34 2020-06-22 15:15:14 +02:00
dependabot-preview[bot]
f2807143c6 Bump ccxt from 1.30.2 to 1.30.34
Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.30.2 to 1.30.34.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/doc/exchanges-by-country.rst)
- [Commits](https://github.com/ccxt/ccxt/compare/1.30.2...1.30.34)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-22 12:10:52 +00:00
Matthias
a7f5ab76c7 Merge pull request #3510 from freqtrade/dependabot/pip/develop/ccxt-1.30.31
Bump ccxt from 1.30.2 to 1.30.31
2020-06-22 14:04:39 +02:00
Matthias
925d51ab54 Merge pull request #3509 from freqtrade/dependabot/pip/develop/numpy-1.19.0
Bump numpy from 1.18.5 to 1.19.0
2020-06-22 13:58:13 +02:00
Matthias
b204e905c6 Merge pull request #3508 from freqtrade/dependabot/pip/develop/scipy-1.5.0
Bump scipy from 1.4.1 to 1.5.0
2020-06-22 13:57:45 +02:00
dependabot-preview[bot]
1854e30538 Bump requests from 2.23.0 to 2.24.0
Bumps [requests](https://github.com/psf/requests) from 2.23.0 to 2.24.0.
- [Release notes](https://github.com/psf/requests/releases)
- [Changelog](https://github.com/psf/requests/blob/master/HISTORY.md)
- [Commits](https://github.com/psf/requests/compare/v2.23.0...v2.24.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-22 11:56:51 +00:00
Matthias
edc49e85ad Merge pull request #3506 from freqtrade/dependabot/pip/develop/arrow-0.15.7
Bump arrow from 0.15.6 to 0.15.7
2020-06-22 13:55:33 +02:00
Matthias
8a3bc8fc9b Merge pull request #3507 from freqtrade/dependabot/pip/develop/mkdocs-material-5.3.2
Bump mkdocs-material from 5.3.0 to 5.3.2
2020-06-22 13:54:19 +02:00
Matthias
00b9dfcb95 Merge pull request #3503 from freqtrade/dependabot/pip/develop/mypy-0.781
Bump mypy from 0.780 to 0.781
2020-06-22 13:54:01 +02:00
dependabot-preview[bot]
9af1dae53e Bump numpy from 1.18.5 to 1.19.0
Bumps [numpy](https://github.com/numpy/numpy) from 1.18.5 to 1.19.0.
- [Release notes](https://github.com/numpy/numpy/releases)
- [Changelog](https://github.com/numpy/numpy/blob/master/doc/HOWTO_RELEASE.rst.txt)
- [Commits](https://github.com/numpy/numpy/compare/v1.18.5...v1.19.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-22 09:48:54 +00:00
Matthias
926fd21caf Merge pull request #3504 from freqtrade/dependabot/pip/develop/pandas-1.0.5
Bump pandas from 1.0.4 to 1.0.5
2020-06-22 11:29:21 +02:00
dependabot-preview[bot]
6d82e41dd1 Bump ccxt from 1.30.2 to 1.30.31
Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.30.2 to 1.30.31.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/doc/exchanges-by-country.rst)
- [Commits](https://github.com/ccxt/ccxt/compare/1.30.2...1.30.31)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-22 09:17:07 +00:00
dependabot-preview[bot]
b29f12bfad Bump scipy from 1.4.1 to 1.5.0
Bumps [scipy](https://github.com/scipy/scipy) from 1.4.1 to 1.5.0.
- [Release notes](https://github.com/scipy/scipy/releases)
- [Commits](https://github.com/scipy/scipy/compare/v1.4.1...v1.5.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-22 09:16:00 +00:00
dependabot-preview[bot]
dcc95d0933 Bump mkdocs-material from 5.3.0 to 5.3.2
Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 5.3.0 to 5.3.2.
- [Release notes](https://github.com/squidfunk/mkdocs-material/releases)
- [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG)
- [Commits](https://github.com/squidfunk/mkdocs-material/compare/5.3.0...5.3.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-22 09:15:33 +00:00
dependabot-preview[bot]
432c1b54bf Bump arrow from 0.15.6 to 0.15.7
Bumps [arrow](https://github.com/crsmithdev/arrow) from 0.15.6 to 0.15.7.
- [Release notes](https://github.com/crsmithdev/arrow/releases)
- [Changelog](https://github.com/crsmithdev/arrow/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/crsmithdev/arrow/compare/0.15.6...0.15.7)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-22 09:14:57 +00:00
dependabot-preview[bot]
993333a61c Bump pandas from 1.0.4 to 1.0.5
Bumps [pandas](https://github.com/pandas-dev/pandas) from 1.0.4 to 1.0.5.
- [Release notes](https://github.com/pandas-dev/pandas/releases)
- [Changelog](https://github.com/pandas-dev/pandas/blob/master/RELEASE.md)
- [Commits](https://github.com/pandas-dev/pandas/compare/v1.0.4...v1.0.5)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-22 09:14:25 +00:00
dependabot-preview[bot]
dbf14ccf13 Bump mypy from 0.780 to 0.781
Bumps [mypy](https://github.com/python/mypy) from 0.780 to 0.781.
- [Release notes](https://github.com/python/mypy/releases)
- [Commits](https://github.com/python/mypy/compare/v0.780...v0.781)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-22 09:13:36 +00:00
Matthias
f976905728 Fix more exchange message typos 2020-06-18 20:00:18 +02:00
Matthias
45ffb26910 Merge branch 'develop' into pr/hroff-1902/3478 2020-06-18 19:54:46 +02:00
Matthias
eef3c01da7 Fix function header formatting 2020-06-18 19:49:05 +02:00
Matthias
f1993fb2f4 Pass analyzed dataframe to get_signal 2020-06-18 08:09:52 +02:00
Matthias
48225e0d80 Improve interface docstrings for analyze functions 2020-06-18 07:54:00 +02:00
Matthias
f2a778d294 Combine tests for empty dataframe 2020-06-18 07:03:30 +02:00
Matthias
8472fcfff9 Add empty to documentation 2020-06-18 06:50:06 +02:00
Matthias
ab9382434f Add test for get_analyzed_dataframe 2020-06-18 06:50:06 +02:00
Matthias
e5f7610b5d Add bot basics documentation 2020-06-18 06:50:06 +02:00
Matthias
8b186dbe0e Add additional test scenarios 2020-06-18 06:50:06 +02:00
Matthias
1c1a7150ae ensure confirm_trade_entry is called and has the desired effect 2020-06-18 06:50:06 +02:00
Matthias
7c3fb111f2 Confirm execute_sell calls confirm_trade_exit 2020-06-18 06:50:06 +02:00
Matthias
6d6e7196f4 Test trade entry / exit is called correctly 2020-06-18 06:50:06 +02:00
Matthias
84329ad2ca Add confirm_trade* methods to abort buying or selling 2020-06-18 06:50:06 +02:00
Matthias
de676bcaba Document get_analyzed_dataframe for dataprovider 2020-06-18 06:50:06 +02:00
Matthias
910100f1c8 Improve docstring comment 2020-06-18 06:50:06 +02:00
Matthias
dea7e3db01 Use supress_errors in strategy wrapper - ensure it's called once 2020-06-18 06:50:06 +02:00
Matthias
c047e48a47 Add errorsupression to safe wrapper 2020-06-18 06:50:06 +02:00
Matthias
bc821c7c20 Add documentation for bot_loop_start 2020-06-18 06:50:06 +02:00
Matthias
77056a3119 Add bot_loop_start callback 2020-06-18 06:50:06 +02:00
Matthias
7da955556d Add test for empty pair case 2020-06-18 06:50:06 +02:00
Matthias
8166b37253 Explicitly check if dp is available 2020-06-18 06:50:06 +02:00
Matthias
55fa514ec9 Adapt most tests 2020-06-18 06:50:05 +02:00
Matthias
273aaaff12 Introduce .analyze() function for Strategy
Fixing a few tests along the way
2020-06-18 06:50:05 +02:00
Matthias
95f3ac08d4 Update some comments 2020-06-18 06:50:05 +02:00
Matthias
9794914838 store dataframe updated as tuple 2020-06-18 06:50:05 +02:00
Matthias
fd97ad9b76 Cache analyzed dataframe 2020-06-18 06:50:05 +02:00
hroff-1902
79933060e5 Merge pull request #3487 from freqtrade/fix-doc-typo
Fix documentation typo
2020-06-17 23:38:20 +03:00
Matthias
9ab5d2b5dd Merge pull request #3495 from freqtrade/hroff-1902-patch-1
Improve advanced-setup.md
2020-06-17 22:02:57 +02:00
hroff-1902
0b8cac68be Improve advanced-setup.md 2020-06-17 22:49:01 +03:00
hroff-1902
3d3e6e1b5a Merge pull request #3493 from freqtrade/fix/2876
Also reload async markets
2020-06-17 21:11:43 +03:00
Matthias
0fc7e76ea1 Merge pull request #3481 from muletman/patch-1
Docs: Run multiple instances for new users
2020-06-17 09:55:30 +02:00
Matthias
e2465f979b Correctly mock out async_reload 2020-06-17 08:33:53 +02:00
Matthias
d4fb5af456 Also reload async markets
fixes #2876 - Logs and Empty ticker history  for new pair
2020-06-17 07:23:20 +02:00
Matthias
5e99be0a32 Merge pull request #3490 from freqtrade/fix/timeframe_collision
Fix bug in timeframe deprecation
2020-06-17 06:14:32 +02:00
Matthias
3517c86fa2 Fail if both ticker_interval and timeframe are present in a
configuration

Otherwise the wrong might be used, as it's unclear which one the intend
of the user is
2020-06-16 16:02:38 +02:00
Matthias
0b2982caed Merge branch 'develop' into hyperopt_colorama_init 2020-06-16 10:16:41 +02:00
Matthias
9dba2a34f9 Add note for hyperopt color support on windows 2020-06-16 10:16:23 +02:00
Matthias
9cc04c929f Fix documentation typo 2020-06-16 07:17:15 +02:00
Matthias
5e4dd44155 Fix formatting 2020-06-15 20:55:06 +02:00
Matthias
61ce18a4ab Slightly reword certain things - add link in FAQ 2020-06-15 19:35:57 +02:00
Matthias
e24ffebe69 Move Multiple instances section to advanced-setup.md 2020-06-15 19:24:33 +02:00
Matthias
761407f74d Merge pull request #3430 from freqtrade/timeframe
ticker_interval -> timeframe
2020-06-15 13:47:26 +02:00
Matthias
fad4723eae Merge pull request #3483 from freqtrade/dependabot/pip/develop/flake8-3.8.3
Bump flake8 from 3.8.2 to 3.8.3
2020-06-15 13:35:03 +02:00
dependabot-preview[bot]
df90d631fb Bump flake8 from 3.8.2 to 3.8.3
Bumps [flake8](https://gitlab.com/pycqa/flake8) from 3.8.2 to 3.8.3.
- [Release notes](https://gitlab.com/pycqa/flake8/tags)
- [Commits](https://gitlab.com/pycqa/flake8/compare/3.8.2...3.8.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-15 10:05:20 +00:00
Matthias
811ef01fc0 Merge pull request #3482 from freqtrade/dependabot/pip/develop/mkdocs-material-5.3.0
Bump mkdocs-material from 5.2.3 to 5.3.0
2020-06-15 12:05:05 +02:00
Matthias
af610a1720 Merge pull request #3484 from freqtrade/dependabot/pip/develop/ccxt-1.30.2
Bump ccxt from 1.29.52 to 1.30.2
2020-06-15 12:04:20 +02:00
Matthias
17753f1afd Merge pull request #3485 from freqtrade/dependabot/pip/develop/pytest-cov-2.10.0
Bump pytest-cov from 2.9.0 to 2.10.0
2020-06-15 12:04:07 +02:00
dependabot-preview[bot]
f38f3643f5 Bump pytest-cov from 2.9.0 to 2.10.0
Bumps [pytest-cov](https://github.com/pytest-dev/pytest-cov) from 2.9.0 to 2.10.0.
- [Release notes](https://github.com/pytest-dev/pytest-cov/releases)
- [Changelog](https://github.com/pytest-dev/pytest-cov/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest-cov/compare/v2.9.0...v2.10.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-15 09:02:34 +00:00
dependabot-preview[bot]
d66050522c Bump ccxt from 1.29.52 to 1.30.2
Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.29.52 to 1.30.2.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/doc/exchanges-by-country.rst)
- [Commits](https://github.com/ccxt/ccxt/compare/1.29.52...1.30.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-15 09:02:14 +00:00
dependabot-preview[bot]
1853350c7d Bump mkdocs-material from 5.2.3 to 5.3.0
Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 5.2.3 to 5.3.0.
- [Release notes](https://github.com/squidfunk/mkdocs-material/releases)
- [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG)
- [Commits](https://github.com/squidfunk/mkdocs-material/compare/5.2.3...5.3.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-15 09:01:05 +00:00
Matthias
dfc44e5b32 Merge pull request #3461 from felpasl/format_minimal_roi_opt
change hyperopt output to print ready to copy to strategy
2020-06-15 10:03:28 +02:00
Matthias
a3506f4d8e Merge branch 'develop' into timeframe 2020-06-15 06:35:55 +02:00
Matthias
d337fb6c6a Update some comments 2020-06-15 06:35:31 +02:00
muletman
837aedb0c7 Docs: Run multiple instances for new users
This is my proposition of contribution for how new users could get up and running with multiple instances of the bot, based on the conversation I had on Slack with @hroff-1902 
It appeared to me that the transparent creation and usage of the sqlite databases, and the necessity to create other databases to run multiple bots at the same time was not so straightforward to me in the first place, despite browsing through the docs. It is evident now ;) but that will maybe save time for devs if any other new user come on slack with the same issue.

Thanks
2020-06-14 17:03:18 +01:00
Matthias
f80b5f9410 Merge pull request #3438 from freqtrade/ftx_stoploss
Ftx stoploss
2020-06-14 07:02:15 +02:00
Matthias
534c242d1b Apply typography to test too 2020-06-14 06:33:08 +02:00
Matthias
f6f7c99b9c Adjust typography and add missing space
Co-authored-by: hroff-1902 <47309513+hroff-1902@users.noreply.github.com>
2020-06-14 06:31:05 +02:00
hroff-1902
de36f3d850 Cosmetics in freqtradebot 2020-06-14 01:42:45 +03:00
hroff-1902
4660909e95 Validate stoploss_on_exchange_limit_ratio at startup time 2020-06-14 01:07:00 +03:00
hroff-1902
1bf333d320 Minor: fix test 2020-06-14 00:57:13 +03:00
hroff-1902
be03c22dba Minor: Fix exception message 2020-06-14 00:35:58 +03:00
hroff-1902
ea77edce05 Make flake happy 2020-06-13 18:54:54 +03:00
Matthias
d52198d15e Merge pull request #3468 from hroff-1902/cleanup_async_markets
Cleanup async markets
2020-06-13 17:28:11 +02:00
hroff-1902
3d9b107761 Changes after review 2020-06-13 17:12:37 +03:00
hroff-1902
37bc2d28ad Revert "Remove _load_async_markets"
This reverts commit 6744f8f052.
2020-06-13 13:34:29 +03:00
hroff-1902
e5363185a5 Merge pull request #3476 from tehnuge/develop
fix SQL cheatsheet query (#3475)
2020-06-13 11:25:01 +03:00
John Duong
9890e26aeb fix SQL cheatsheet query (#3475) 2020-06-12 22:10:18 -07:00
Matthias
a0a00b74e2 Merge pull request #3474 from codaxe/develop
Documentation fixes
2020-06-12 19:26:02 +02:00
CoDaXe
9615614e48 Update hyperopt.md
Wrong flag name
2020-06-12 13:13:10 -04:00
hroff-1902
12d3a234c1 Merge pull request #3471 from freqtrade/fix/3465
Fix exception with stacktrace in test-pairlist
2020-06-12 07:57:37 +03:00
CoDaXe
ab2f5579d8 Update strategy-customization.md
Fix typo "the an"
2020-06-11 20:34:14 -04:00
Matthias
1e7826f392 Explicitly raise OperationalException if markets are not loaded
correctly
2020-06-10 19:57:59 +02:00
Matthias
c66ca957d9 Add test verifying this behaviour 2020-06-10 19:57:47 +02:00
Matthias
06799b13cf Merge pull request #3470 from Theagainmen/Telegram_emojis_V2
reload_conf -> reload_config both supported
2020-06-10 19:55:12 +02:00
Matthias
a7cd68121b Have rest-client use new reload_config endpoint 2020-06-10 19:44:34 +02:00
Felipe Lambert
69ac5c1ac7 change hyperopt return to better copy to strategy file 2020-06-10 14:35:31 -03:00
Theagainmen
4f643f8481 Fix Flake8 error: line too long 2020-06-10 19:28:02 +02:00
Theagainmen
8c9dea988c Now supports both commands & fixed test 2020-06-10 19:28:02 +02:00
Theagainmen
043397c5d7 reload_conf & reload_config now both accepted, code is more consistent now 2020-06-10 19:28:02 +02:00
Theagainmen
04fa597695 Test with multiple commands in one line 2020-06-10 19:28:02 +02:00
Theagainmen
ac92834693 reload_conf & reload_config now both accepted, code is more consistent now 2020-06-10 19:28:02 +02:00
Matthias
9380cf484a Merge pull request #3467 from freqtrade/market_order_docs
Add documentation about pricing related to market orders
2020-06-10 06:46:59 +02:00
Matthias
a198b91b87 align Spaces in commented config section
Co-authored-by: hroff-1902 <47309513+hroff-1902@users.noreply.github.com>
2020-06-10 06:36:35 +02:00
hroff-1902
0067a3ab7c Change logging level 2020-06-10 06:30:29 +03:00
hroff-1902
7d451638a8 Make _reload_markets() public 2020-06-10 01:39:23 +03:00
hroff-1902
6744f8f052 Remove _load_async_markets 2020-06-10 01:22:55 +03:00
Matthias
bd942992ef Add documentation about pricing related to market orders 2020-06-09 20:47:52 +02:00
hroff-1902
843119303b Merge pull request #3466 from misterr8472/patch-2
Fixed typo and missing {
2020-06-09 19:32:17 +03:00
Mister Render
05deb5ba05 Fixed typo and missing {
This should help with copy pasting the pairlists code block.
Also fixed minor typo on line 594 (was: "I selects" and is now: "It selects")
2020-06-09 16:08:20 +00:00
Matthias
ab0003f565 fix #3463 by explicitly failing if no stoploss is defined 2020-06-09 14:33:57 +02:00
Matthias
10ed0d117e Merge pull request #3456 from freqtrade/dependabot/pip/develop/mypy-0.780
Bump mypy from 0.770 to 0.780
2020-06-08 12:49:19 +02:00
dependabot-preview[bot]
6029593c43 Bump mypy from 0.770 to 0.780
Bumps [mypy](https://github.com/python/mypy) from 0.770 to 0.780.
- [Release notes](https://github.com/python/mypy/releases)
- [Commits](https://github.com/python/mypy/compare/v0.770...v0.780)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-08 09:49:08 +00:00
Matthias
d77c9b9551 Merge pull request #3457 from freqtrade/dependabot/pip/develop/pytest-5.4.3
Bump pytest from 5.4.2 to 5.4.3
2020-06-08 11:47:47 +02:00
Matthias
47deaaf495 Merge pull request #3458 from freqtrade/dependabot/pip/develop/ccxt-1.29.52
Bump ccxt from 1.29.5 to 1.29.52
2020-06-08 11:39:40 +02:00
Matthias
c3df9063c3 Merge pull request #3460 from freqtrade/dependabot/pip/develop/mkdocs-material-5.2.3
Bump mkdocs-material from 5.2.2 to 5.2.3
2020-06-08 11:39:15 +02:00
Matthias
3bbfeebcbd Merge pull request #3459 from freqtrade/dependabot/pip/develop/numpy-1.18.5
Bump numpy from 1.18.4 to 1.18.5
2020-06-08 11:38:58 +02:00
dependabot-preview[bot]
4b5aee7d1c Bump pytest from 5.4.2 to 5.4.3
Bumps [pytest](https://github.com/pytest-dev/pytest) from 5.4.2 to 5.4.3.
- [Release notes](https://github.com/pytest-dev/pytest/releases)
- [Changelog](https://github.com/pytest-dev/pytest/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest/compare/5.4.2...5.4.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-08 09:21:08 +00:00
Matthias
03a64af7f2 Merge pull request #3455 from freqtrade/dependabot/pip/develop/pytest-mock-3.1.1
Bump pytest-mock from 3.1.0 to 3.1.1
2020-06-08 11:19:52 +02:00
dependabot-preview[bot]
81ed1d6f35 Bump mkdocs-material from 5.2.2 to 5.2.3
Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 5.2.2 to 5.2.3.
- [Release notes](https://github.com/squidfunk/mkdocs-material/releases)
- [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG)
- [Commits](https://github.com/squidfunk/mkdocs-material/compare/5.2.2...5.2.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-08 09:10:29 +00:00
dependabot-preview[bot]
1c8243e9b3 Bump numpy from 1.18.4 to 1.18.5
Bumps [numpy](https://github.com/numpy/numpy) from 1.18.4 to 1.18.5.
- [Release notes](https://github.com/numpy/numpy/releases)
- [Changelog](https://github.com/numpy/numpy/blob/master/doc/HOWTO_RELEASE.rst.txt)
- [Commits](https://github.com/numpy/numpy/compare/v1.18.4...v1.18.5)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-08 09:10:07 +00:00
dependabot-preview[bot]
9f482d598e Bump ccxt from 1.29.5 to 1.29.52
Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.29.5 to 1.29.52.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/doc/exchanges-by-country.rst)
- [Commits](https://github.com/ccxt/ccxt/compare/1.29.5...1.29.52)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-08 09:09:38 +00:00
dependabot-preview[bot]
bb07746bd5 Bump pytest-mock from 3.1.0 to 3.1.1
Bumps [pytest-mock](https://github.com/pytest-dev/pytest-mock) from 3.1.0 to 3.1.1.
- [Release notes](https://github.com/pytest-dev/pytest-mock/releases)
- [Changelog](https://github.com/pytest-dev/pytest-mock/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest-mock/compare/v3.1.0...v3.1.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-08 09:08:19 +00:00
hroff-1902
143197c5d2 Merge pull request #3452 from freqtrade/bt_report_sorting
Optimize sorting, rename column when loading backtest data
2020-06-08 05:09:03 +03:00
Matthias
72ae4b1500 Load pairlist after strategy to use strategy-config
fail in certain conditions when using strategy-list

Fix #3363
2020-06-07 16:15:26 +02:00
Matthias
54226b45b1 Add test verifying failure 2020-06-07 16:02:54 +02:00
Matthias
a75b94f143 use bracket notation for dataframe access 2020-06-07 15:40:00 +02:00
Matthias
68395d2745 Use bracket notation to query results in hyperopt 2020-06-07 15:39:59 +02:00
Matthias
0f373e6bb9 Update unrelated tests 2020-06-07 15:39:59 +02:00
Matthias
3f9ab0846d Rename profitperc to profit_percent 2020-06-07 15:39:59 +02:00
Matthias
04779411f5 Add docstring to backtest_stats 2020-06-07 15:39:59 +02:00
Matthias
070913f327 Rename text_table generation 2020-06-07 11:35:02 +02:00
Matthias
499c6772d1 Rename tabulate methods
they don't "generate" anything
2020-06-07 11:31:33 +02:00
Matthias
a6f6724752 Reorder functions in optimize_report 2020-06-07 11:29:14 +02:00
Matthias
b291853ade Merge pull request #3451 from freqtrade/use_json_for_askstrategydump
Use json for *strategy dump
2020-06-07 10:24:34 +02:00
Matthias
db4576c50b Use json for *strategy dump 2020-06-07 10:09:39 +02:00
hroff-1902
9adb4d0084 Merge pull request #3444 from freqtrade/kraken_download_docs
Add rate-limiting note for Kraken datadownload
2020-06-06 21:10:45 +03:00
Matthias
6df981b5b6 Merge pull request #3449 from freqtrade/ask_strategy_verbosity
Ask strategy verbosity
2020-06-06 17:38:58 +02:00
Matthias
8d8cf5a2fd Improve code formatting of telegram 2020-06-06 17:28:00 +02:00
Matthias
ed1268cf39 Merge branch 'develop' into ask_strategy_verbosity 2020-06-06 17:23:19 +02:00
Matthias
6aed16c146 Merge pull request #3448 from Theagainmen/Telegram_emojis_V2
Added emoji's to the Telegram RPC
2020-06-06 17:22:56 +02:00
Matthias
3bd38171f8 DOn't use json.dumps - it's not necessary 2020-06-06 17:19:44 +02:00
Theagainmen
d20762aa01 Fixed typo 'emoij' in test file too 2020-06-06 17:11:47 +02:00
Theagainmen
172ca761f2 Fixed typo 'emoij' 2020-06-06 17:11:47 +02:00
Matthias
b2316cdd00 Extract sell_smoij logic into it's own function 2020-06-06 17:11:47 +02:00
Matthias
1a5cd85900 Fix typo
Co-authored-by: hroff-1902 <47309513+hroff-1902@users.noreply.github.com>
2020-06-06 13:15:01 +02:00
hroff-1902
a86863c032 Merge pull request #3440 from freqtrade/rpc_status_fields
Rpc status fields
2020-06-05 23:59:01 +03:00
hroff-1902
8fc2dc4409 Merge pull request #3437 from freqtrade/rpc/display_profit
Display cumulative profit in /profit calls too
2020-06-05 23:45:00 +03:00
Matthias
8c32d691c7 Add information about bid and ask strategy to /showconfig 2020-06-05 20:31:40 +02:00
Matthias
5f9994c9ed Reduce verbosity of sell-rate fetching 2020-06-05 20:24:21 +02:00
Theagainmen
f34bcc5fd3 Splitted a line that was too long, resulting in error for flake8 2020-06-05 20:15:22 +02:00
Theagainmen
6694ac5077 Splitted a line that was too long, resulting in flake8 error 2020-06-05 20:10:52 +02:00
Theagainmen
08b9abed3a Removed '.encode', unecessary 2020-06-05 20:05:55 +02:00
Theagainmen
4c6a7a354d Removed '.encode' lines, unessecary 2020-06-05 20:04:11 +02:00
Theagainmen
080efd1102 Added unicoded emoji's to Telegram messages 2020-06-05 19:09:49 +02:00
Theagainmen
ff289a7177 Updated tests to work with Telegram emojis 2020-06-05 19:08:54 +02:00
Matthias
b27348490d Add rate-limiting note for Kraken datadownload 2020-06-05 13:59:00 +02:00
Matthias
6a88eb603b Update failing test 2020-06-04 07:20:50 +02:00
Matthias
7bd55aa2f1 Use correct calcuation for "locked in profit" 2020-06-04 07:04:32 +02:00
Matthias
412b50dac5 Add current stoploss calculations 2020-06-04 06:59:48 +02:00
Matthias
5c5dc6fffe Update test to reflect real trade after one cycle 2020-06-04 06:56:30 +02:00
Matthias
2f07d21629 Update documentation with FTX Stoploss on exchange 2020-06-03 20:20:39 +02:00
Matthias
6997524a04 Fix tests for additional info 2020-06-03 19:40:49 +02:00
Matthias
0dc1a8e037 Add profit sum to api response 2020-06-03 19:40:30 +02:00
Matthias
f0eb0bc350 Support limit orders 2020-06-03 06:11:34 +02:00
Matthias
77a62b845a Fix some comments 2020-06-03 06:11:34 +02:00
Matthias
1d9aeef792 Support stop order in persistence 2020-06-03 06:11:34 +02:00
Matthias
b58fd179f2 Don't hardcode pair ... 2020-06-03 06:11:34 +02:00
Matthias
11ebdefd09 Fix bug after rebase 2020-06-03 06:11:34 +02:00
Matthias
3174f37b41 adapt tests to use stoploss_* methods 2020-06-03 06:11:34 +02:00
Matthias
cf50c1cb7b Add tests for new exchange methods 2020-06-03 06:11:34 +02:00
Matthias
f83c1c5abf Use get_stoploss_order and cancel_stoploss_order
This allows exchanges to use stoploss which don't have the same
endpoints
2020-06-03 06:11:34 +02:00
Matthias
d90d6ed5d0 Add ftx to tested exchanges 2020-06-03 06:11:34 +02:00
Matthias
a808fb3b10 versionbump ccxt to first version that has FTX implemented correctly 2020-06-03 06:11:34 +02:00
Matthias
68a59fd26d Add Hint to suggest this is still broken 2020-06-03 06:11:34 +02:00
Matthias
78dea19ffb Implement first version of FTX stop 2020-06-03 06:11:34 +02:00
hroff-1902
04a2fb16aa Merge pull request #3433 from freqtrade/fix/cost_calc_crash
Free trades should not crash the bot
2020-06-02 22:20:29 +03:00
Matthias
ad61673d6f Fix missing key in test order 2020-06-02 21:10:12 +02:00
Matthias
a2551daf12 Fix ZeroDivision problem where cost is 0.0 2020-06-02 20:55:12 +02:00
Matthias
ea954b4338 Add failing test with testcase from incident
Full problem in #3431
2020-06-02 20:54:14 +02:00
Matthias
08049d23b4 Use "market_is_tradable" for whitelist validation 2020-06-02 20:41:29 +02:00
Matthias
b74a3addc6 Update tests 2020-06-02 20:30:31 +02:00
Matthias
b22e3a67d8 rename symbol_is_pair to market_is_tradable
Make it part of the exchange class, so subclasses can override this
2020-06-02 20:29:50 +02:00
Matthias
8550c3e43f Merge pull request #3409 from hroff-1902/exchange_logging
Minor: Better exchange debug logging
2020-06-02 20:27:53 +02:00
hroff-1902
48117666fe Update freqtrade/exchange/exchange.py
Co-authored-by: Matthias <xmatthias@outlook.com>
2020-06-02 21:09:23 +03:00
Matthias
02fca141a0 Readd ticker_interval to trade api response 2020-06-02 19:43:15 +02:00
Matthias
1a5dba9a79 Revert "Fix tests after merge"
This reverts commit edf8e39bc1.
2020-06-02 19:39:17 +02:00
Matthias
ca2352921f Merge pull request #3432 from hroff-1902/fix/3404
Fix crash in #3404
2020-06-02 19:13:58 +02:00
hroff-1902
f4c2bb1346 Fix crash in #3404 2020-06-02 19:37:08 +03:00
hroff-1902
85fedf95e8 Make mypy happy 2020-06-02 18:43:37 +03:00
hroff-1902
edf8e39bc1 Fix tests after merge 2020-06-02 17:57:45 +03:00
hroff-1902
9995a5899f Fix merge 2020-06-02 16:25:22 +03:00
hroff-1902
64881a94e2 Merge branch 'develop' into timeframe 2020-06-02 15:56:34 +03:00
hroff-1902
4c82f127b3 Merge pull request #3419 from freqtrade/api_trade_response
Api trade response
2020-06-02 15:53:58 +03:00
hroff-1902
2cc47f651d Merge pull request #3408 from freqtrade/apiserver_logging
Apiserver logging
2020-06-02 14:32:44 +03:00
Matthias
b106c88630 Add test case for strategy overwriting 2020-06-02 13:08:21 +02:00
Matthias
a8005819c9 Add class-level attributes to hyperopt and strategy 2020-06-02 10:19:27 +02:00
Matthias
8e1a664a48 Add test for deprecation updating 2020-06-02 10:11:50 +02:00
Matthias
33b7046260 Update more documentation 2020-06-02 10:06:42 +02:00
Matthias
febc95dcdf Update documentation to remove ticker_interval 2020-06-02 10:03:23 +02:00
Matthias
f9bb1a7f22 Update more occurances of ticker_interval 2020-06-02 10:02:55 +02:00
Matthias
af0f29e6b7 Update persistence to use timeframe 2020-06-02 10:02:36 +02:00
Matthias
09fe3c6f5e create compatibility code 2020-06-02 09:52:30 +02:00
Matthias
3e895ae74a Some more replacements of ticker_interval 2020-06-02 09:41:42 +02:00
Matthias
947903a4ac Use timeframe from within strategy 2020-06-02 09:36:04 +02:00
hroff-1902
aff80d7331 Merge pull request #3417 from freqtrade/bt_result_store_metrics
Refactor result store metrics
2020-06-02 04:31:37 +03:00
hroff-1902
5435df84bd Merge pull request #3387 from freqtrade/rpc_blacklist
Improve RPC Blacklist by adding feedback
2020-06-02 04:10:33 +03:00
hroff-1902
4c2228a2da Merge pull request #3399 from freqtrade/fix_sell_rate_caching
[minor] Fix sell rate caching
2020-06-02 04:04:16 +03:00
hroff-1902
7b9bb5ba3d Merge pull request #3425 from freqtrade/sell_rate_raise_empty
Verify sell-rate returns a value.
2020-06-02 02:22:56 +03:00
hroff-1902
2928687acf Merge pull request #3426 from freqtrade/percent_ratio
Remove deprecated setting
2020-06-02 02:17:23 +03:00
Matthias
388573800c Update configuration messages 2020-06-01 20:52:33 +02:00
Matthias
cadc50ce9b Replace more occurances of ticker_interval with timeframe 2020-06-01 20:49:40 +02:00
Matthias
18913db992 Replace ticker_interval with timeframe in sample configs 2020-06-01 20:47:36 +02:00
Matthias
950f358982 Replace occurances in test files 2020-06-01 20:47:27 +02:00
Matthias
b2c241e607 Replace ticker_interval in all rpc files 2020-06-01 20:43:20 +02:00
Matthias
898def7f6c Remove ticker_interval from exchange 2020-06-01 20:39:01 +02:00
Matthias
009ea0639f Exchange some occurances of ticker_interval 2020-06-01 20:33:26 +02:00
Matthias
b2025597aa Build-commands should write timeframe instead of ticker interval 2020-06-01 20:16:22 +02:00
Matthias
67a3c32373 Remove some occurances of percentage 2020-06-01 20:02:12 +02:00
Matthias
3139343946 Remove capital_available_percentage and raise instead 2020-06-01 19:58:28 +02:00
Matthias
f6f75072ba Fix linelength 2020-06-01 19:54:05 +02:00
Matthias
c35f9f8d39 Verify sell-rate got a value - otherwise downstream code does not work.
Using PricingException here will cease operation for this pair for this
iteration - postponing handling to the next iteration - where hopefully
a price is again present.
2020-06-01 19:45:37 +02:00
Matthias
65c5bba189 Fix typo in docs
Co-authored-by: hroff-1902 <47309513+hroff-1902@users.noreply.github.com>
2020-06-01 12:45:59 +02:00
Matthias
7e10ebc848 Merge pull request #3421 from freqtrade/dependabot/pip/develop/plotly-4.8.1
Bump plotly from 4.7.1 to 4.8.1
2020-06-01 11:39:13 +02:00
Matthias
e4ace5ac1b Merge pull request #3422 from freqtrade/dependabot/pip/develop/ccxt-1.29.5
Bump ccxt from 1.28.49 to 1.29.5
2020-06-01 11:36:56 +02:00
Matthias
0ed47abe5a Merge pull request #3420 from freqtrade/dependabot/pip/develop/mkdocs-material-5.2.2
Bump mkdocs-material from 5.2.1 to 5.2.2
2020-06-01 11:35:16 +02:00
dependabot-preview[bot]
005addf0a5 Bump ccxt from 1.28.49 to 1.29.5
Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.28.49 to 1.29.5.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/doc/exchanges-by-country.rst)
- [Commits](https://github.com/ccxt/ccxt/compare/1.28.49...1.29.5)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-01 09:20:47 +00:00
dependabot-preview[bot]
74088ba438 Bump plotly from 4.7.1 to 4.8.1
Bumps [plotly](https://github.com/plotly/plotly.py) from 4.7.1 to 4.8.1.
- [Release notes](https://github.com/plotly/plotly.py/releases)
- [Changelog](https://github.com/plotly/plotly.py/blob/master/CHANGELOG.md)
- [Commits](https://github.com/plotly/plotly.py/compare/v4.7.1...v4.8.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-01 09:20:01 +00:00
dependabot-preview[bot]
b06c1daddb Bump mkdocs-material from 5.2.1 to 5.2.2
Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 5.2.1 to 5.2.2.
- [Release notes](https://github.com/squidfunk/mkdocs-material/releases)
- [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG)
- [Commits](https://github.com/squidfunk/mkdocs-material/compare/5.2.1...5.2.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-01 09:19:38 +00:00
Matthias
d2b7016dff Add stop_loss_abs ... 2020-06-01 11:05:37 +02:00
Matthias
6dec508c5e Add new fields to tests 2020-06-01 10:57:29 +02:00
Matthias
adde1cfee2 Add stoplosss_ratio and initial_stoploss_ratio 2020-06-01 10:53:02 +02:00
Matthias
f6edb32a33 Run hyperopt with --print-all 2020-06-01 09:55:52 +02:00
Matthias
d9afef8fe1 Move colorama_init to where it was 2020-06-01 09:37:10 +02:00
Matthias
ffa93377b4 Test colorama init again (after the fixes done to progressbar) 2020-06-01 09:34:03 +02:00
Matthias
091693308a Correctly call show_backtest_results 2020-06-01 09:25:26 +02:00
Matthias
ceaf32d304 Extract backtesting report generation from show_backtest_Results 2020-06-01 09:24:05 +02:00
Matthias
f202e09b10 Extract conversion to trades list to it's own function 2020-06-01 08:57:31 +02:00
Matthias
bf53d037b5 Merge pull request #3395 from freqtrade/new_release
New release 2020.5
2020-06-01 06:24:14 +02:00
hroff-1902
123a556ec8 Better exchange logging 2020-05-31 13:05:58 +03:00
Matthias
4087161d2b fix broken test 2020-05-31 10:16:56 +02:00
Matthias
dc7f0f1187 Add api-server to default config samples 2020-05-31 09:57:31 +02:00
Matthias
7ad1c7e817 Allow lower verbosity level for api server
Not logging all calls makes sense when running the UI
otherwise this is VERY verbose, clogging up the log.
2020-05-31 09:51:45 +02:00
hroff-1902
84c50bf16c Merge pull request #3390 from freqtrade/rpc/profit
improve /profit to not raise an exception if no trade is closed
2020-05-30 22:06:22 +03:00
hroff-1902
96aab86e45 Merge pull request #3405 from freqtrade/remove_internals_ref
Disabledataframecheck is not in internals and does not belong there
2020-05-30 22:02:49 +03:00
hroff-1902
a162b911b6 Merge pull request #3398 from freqtrade/ccxt_config_combine
combine CCXT configurations ...
2020-05-30 21:49:44 +03:00
Matthias
cc90e7b413 Show "No trades yet." when no trade happened yet 2020-05-30 19:49:16 +02:00
Matthias
91f84f1a43 Fix typo in close trade message 2020-05-30 19:28:30 +02:00
Matthias
a0d6a72bc8 Update docs/configuration.md
Co-authored-by: hroff-1902 <47309513+hroff-1902@users.noreply.github.com>
2020-05-30 19:26:47 +02:00
Matthias
e03bde9109 Merge pull request #3403 from freqtrade/hroff-1902-patch-2
minor: Fix docs
2020-05-30 19:21:39 +02:00
Matthias
e505a1b840 Merge pull request #3402 from freqtrade/hroff-1902-patch-1
Docs: fix #3401
2020-05-30 19:18:40 +02:00
Matthias
908449640a Disabledataframecheck is not in internals and does not belong there 2020-05-30 19:17:17 +02:00
hroff-1902
48915d7945 minor: Fix docs 2020-05-30 19:35:44 +03:00
hroff-1902
36c7089a03 Merge pull request #3394 from freqtrade/disable_dataframechecks
Allow changing severity of strategy-validations to log only.
2020-05-30 19:28:38 +03:00
hroff-1902
fe40e8305d fix #3401 2020-05-30 18:58:11 +03:00
Matthias
376c536dd1 Revert "Add disable_dataframe_checks to strategy templates"
This reverts commit a9c57e5147.
2020-05-30 16:23:33 +02:00
hroff-1902
b1e6662c11 Merge pull request #3400 from freqtrade/add_stoplossid_tojson
[minor] Add missing fields to to_json output of trade
2020-05-30 12:59:31 +03:00
Matthias
a9c57e5147 Add disable_dataframe_checks to strategy templates 2020-05-30 11:47:09 +02:00
Matthias
97905f86be Add missing fields to to_json output of trade 2020-05-30 11:34:39 +02:00
Matthias
28b35178e9 Update doc wording
Co-authored-by: hroff-1902 <47309513+hroff-1902@users.noreply.github.com>
2020-05-30 11:24:29 +02:00
Matthias
57e951dbce Add orderbook sell rate to sell_rate_cache 2020-05-30 11:08:56 +02:00
hroff-1902
a867fa669c Merge pull request #3397 from freqtrade/bump_pandas
Version bump pandas to 1.0.4
2020-05-30 12:02:07 +03:00
Matthias
6f870e980d Version bump Pandas to 1.0.4 2020-05-30 10:55:00 +02:00
Matthias
76ce2c6653 Document FTX subaccount configuration 2020-05-30 10:46:04 +02:00
Matthias
f187753f8f Add ccxt_sync_config to simplify ccxt configuration 2020-05-30 10:45:50 +02:00
Matthias
6b5947392e Version bump pandas to 1.0.4 2020-05-30 09:47:09 +02:00
Matthias
7ea59b6d8e Update comment
(to trigger CI)
2020-05-30 09:43:50 +02:00
Matthias
f3824d970b Use dict for symbol_is_pair 2020-05-29 20:20:06 +02:00
Matthias
95780cb4a1 Version bump to 2020.5 2020-05-29 19:41:53 +02:00
Matthias
3e5eef1c0d Merge branch 'master' into new_release 2020-05-29 19:41:40 +02:00
Matthias
2ed10aeb9b Add to missing point in documentation 2020-05-29 19:39:13 +02:00
Matthias
ea5daee505 Allow changing severity of strategy-validations to log only. 2020-05-29 19:37:18 +02:00
Matthias
9f8b21de4a Merge pull request #3358 from hroff-1902/refactor_generate_pairlist
Split the pairlist generation logic and filtering
2020-05-29 14:16:15 +02:00
hroff-1902
a4cf9ba85b Move check for position for StaticPairList to init 2020-05-29 12:40:05 +03:00
hroff-1902
43225cfdcf Update docs/developer.md
Co-authored-by: Matthias <xmatthias@outlook.com>
2020-05-29 11:28:09 +03:00
Matthias
46456516bb Remove exception handler 2020-05-29 10:11:23 +02:00
Matthias
1d6e3fea85 Update /profit telegram message to support non-closed trades 2020-05-29 09:38:12 +02:00
Matthias
6261aef314 Return /profit even if no trade is closed 2020-05-29 09:03:48 +02:00
hroff-1902
909b812550 Update developer.md 2020-05-29 00:28:24 +03:00
hroff-1902
003724e400 Merge pull request #3388 from freqtrade/plotting_fixplot
[minor] Plotting should not fail if one pair didn't produce any trades
2020-05-28 21:53:26 +03:00
Matthias
7df786994d Plotting should not fail if one pair didn't produce any trades 2020-05-28 19:36:10 +02:00
Matthias
7399c7e70c Provide blacklist feedback to telegram 2020-05-28 07:04:06 +02:00
Matthias
0e8f95effd Improve blacklist adding with proper feedback 2020-05-28 06:51:53 +02:00
hroff-1902
62ac5a9914 Merge pull request #3385 from freqtrade/3rd_issuetemplate
Add question template ...
2020-05-27 23:00:22 +03:00
hroff-1902
0234e4d293 Merge pull request #3369 from freqtrade/align_trade_outputs
Improve some api results
2020-05-27 22:56:15 +03:00
Matthias
cb40e850e9 Add question template ... 2020-05-27 19:38:21 +02:00
Matthias
04eb11bb5d Merge pull request #3377 from freqtrade/btreport_refactor
Refactor BTReport
2020-05-27 19:33:08 +02:00
Matthias
18a5787a2c Reorder typing imports
Co-authored-by: hroff-1902 <47309513+hroff-1902@users.noreply.github.com>
2020-05-27 19:17:15 +02:00
Matthias
b2125bd6ee check for None to allow 0.0 profit 2020-05-27 19:15:56 +02:00
hroff-1902
e0dc7fedf5 Merge pull request #3380 from freqtrade/rpi_crosscompile
Raspberry Docker image - fix and correctly crosscompile
2020-05-27 14:31:24 +03:00
hroff-1902
a0556689ea Merge pull request #3381 from freqtrade/fix/orderbook_keyerror
Fix orderbook keyerror
2020-05-27 11:52:29 +03:00
Matthias
f4af4cc2b2 Small formatting improvement 2020-05-27 07:11:59 +02:00
Matthias
8c87fcdae3 Rename PricingException to PricingError 2020-05-26 20:35:11 +02:00
Matthias
16cd1f06b2 Rename get_order_book to fetch_l2_order_book (aligning to ccxt) 2020-05-26 20:27:35 +02:00
Matthias
d09a347853 Add tests for pricingexception 2020-05-26 20:24:44 +02:00
Matthias
7a7b26e840 Add exception handlers for orderbook logic 2020-05-26 20:14:05 +02:00
Matthias
76e4e5897f Introduce pricing exception 2020-05-26 20:08:01 +02:00
Matthias
bdf795b8b0 final cleanup - use different cache image for now 2020-05-26 19:40:27 +02:00
Matthias
3e3cce4559 Use pct instead of _perc 2020-05-26 19:25:03 +02:00
Matthias
448546b0a4 Some cleanup in script 2020-05-26 19:16:44 +02:00
Matthias
e370d635bf Merge pull request #3379 from hroff-1902/fix-3378
Fix #3378
2020-05-26 17:16:11 +02:00
Matthias
2f596f739d Use cache correctly 2020-05-26 17:14:52 +02:00
Matthias
27e0c2604c Add comment to ensure we're not accidentally removing this again 2020-05-26 16:58:29 +02:00
Matthias
500ce50153 Switch to docker experimental ... 2020-05-26 16:45:42 +02:00
Matthias
7f5feab5cf Fix notifications, build ... 2020-05-26 16:45:19 +02:00
Matthias
571d61de84 Cancel previous automatically? 2020-05-26 16:45:15 +02:00
Matthias
4fbd2deb37 Use correct image 2020-05-26 16:45:15 +02:00
Matthias
a7c0e86bfd Test rpi using buildx and dockerfile.armhf
Uses piwheels for pi image
2020-05-26 16:44:49 +02:00
hroff-1902
9f573481a8 Fix #3378 2020-05-26 13:54:45 +03:00
Matthias
18d2587800 Address feedback 2020-05-26 06:12:25 +02:00
hroff-1902
a484124272 Raise exception if StaticPairList on a non-first position 2020-05-25 23:14:51 +03:00
hroff-1902
c3206d72cb Adjust docstring for IPairList.gen_pairlist() 2020-05-25 22:49:57 +03:00
Matthias
abf79e4ab4 Use temporary variable to clean up code 2020-05-25 20:47:48 +02:00
Matthias
6a9a8f927e Rename some methods, improve some testing 2020-05-25 20:46:31 +02:00
Matthias
462c35cf75 Move stats generation to the top 2020-05-25 20:22:22 +02:00
Matthias
46f1470e28 Fix failing test 2020-05-25 20:00:05 +02:00
Matthias
027ea64d48 Fix docstrings, extract strategy-list results 2020-05-25 19:55:02 +02:00
Matthias
db257e9f7f Rename method to be public 2020-05-25 19:50:23 +02:00
Matthias
18a2dad684 Extract data generation from generate_text_table 2020-05-25 19:35:32 +02:00
Matthias
0917b17efd Refactor result_line to return dict 2020-05-25 19:21:01 +02:00
Matthias
9c76450f59 Merge pull request #3373 from freqtrade/dependabot/pip/develop/flake8-3.8.2
Bump flake8 from 3.8.1 to 3.8.2
2020-05-25 11:48:48 +02:00
dependabot-preview[bot]
5c5dce5260 Bump flake8 from 3.8.1 to 3.8.2
Bumps [flake8](https://gitlab.com/pycqa/flake8) from 3.8.1 to 3.8.2.
- [Release notes](https://gitlab.com/pycqa/flake8/tags)
- [Commits](https://gitlab.com/pycqa/flake8/compare/3.8.1...3.8.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-25 09:32:33 +00:00
Matthias
8742126e99 Merge pull request #3375 from freqtrade/dependabot/pip/develop/mkdocs-material-5.2.1
Bump mkdocs-material from 5.1.7 to 5.2.1
2020-05-25 11:31:39 +02:00
Matthias
b587b58852 Merge pull request #3374 from freqtrade/dependabot/pip/develop/pytest-cov-2.9.0
Bump pytest-cov from 2.8.1 to 2.9.0
2020-05-25 11:31:12 +02:00
Matthias
9a97bd3327 Merge pull request #3376 from freqtrade/dependabot/pip/develop/ccxt-1.28.49
Bump ccxt from 1.27.91 to 1.28.49
2020-05-25 11:30:49 +02:00
hroff-1902
c22b790a36 Merge pull request #3366 from freqtrade/issue_template
Update issue template
2020-05-25 12:27:55 +03:00
dependabot-preview[bot]
1c9103a13e Bump ccxt from 1.27.91 to 1.28.49
Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.27.91 to 1.28.49.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/doc/exchanges-by-country.rst)
- [Commits](https://github.com/ccxt/ccxt/compare/1.27.91...1.28.49)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-25 09:04:03 +00:00
dependabot-preview[bot]
781de767ed Bump mkdocs-material from 5.1.7 to 5.2.1
Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 5.1.7 to 5.2.1.
- [Release notes](https://github.com/squidfunk/mkdocs-material/releases)
- [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG)
- [Commits](https://github.com/squidfunk/mkdocs-material/compare/5.1.7...5.2.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-25 09:02:46 +00:00
dependabot-preview[bot]
6eba718680 Bump pytest-cov from 2.8.1 to 2.9.0
Bumps [pytest-cov](https://github.com/pytest-dev/pytest-cov) from 2.8.1 to 2.9.0.
- [Release notes](https://github.com/pytest-dev/pytest-cov/releases)
- [Changelog](https://github.com/pytest-dev/pytest-cov/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest-cov/compare/v2.8.1...v2.9.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-25 09:02:03 +00:00
Matthias
e1362755d2 Add test for sell_reason_stats 2020-05-25 07:14:21 +02:00
Matthias
876a9e4f44 finish refactor of sell_reason table 2020-05-25 07:08:15 +02:00
Matthias
d17300fd84 Refactor sell reason stats to return a dict 2020-05-25 07:02:24 +02:00
Matthias
9d1ad70bb7 Split optimize generation from printing 2020-05-25 06:44:51 +02:00
Matthias
8217d92ab3 UPdate version question 2020-05-25 06:24:40 +02:00
Matthias
e138f9b23c Apply suggestions from code review
Co-authored-by: hroff-1902 <47309513+hroff-1902@users.noreply.github.com>
2020-05-24 20:15:10 +02:00
Matthias
aa004fa842 Fix typo in label 2020-05-24 19:20:24 +02:00
Matthias
c5480c2514 Split issue-tempaltes 2020-05-24 19:18:28 +02:00
Matthias
bbd7579aa8 Fix more tests 2020-05-24 09:07:24 +02:00
Matthias
811e23e3da Have profit return time in timestamp 2020-05-24 08:58:26 +02:00
Matthias
859b619a0b Align tests to new output 2020-05-24 08:47:10 +02:00
Matthias
110b5a2521 Add timestamp to trade output 2020-05-24 08:46:50 +02:00
Matthias
73914169e4 Update issue template 2020-05-23 19:21:14 +02:00
hroff-1902
b50d072d82 Merge pull request #3359 from freqtrade/fix_typing
Fix typing circular dependency
2020-05-23 11:56:36 +03:00
Matthias
046202fdda Fix typing circular dependency 2020-05-22 20:56:34 +02:00
Matthias
f1ab1835f1 Merge pull request #3355 from freqtrade/reorder_subcommands
Reorder subcommands
2020-05-22 17:20:24 +02:00
hroff-1902
0e416dc4f5 Simplify tests 2020-05-22 16:42:02 +03:00
hroff-1902
8e89802b2d Split the generation logic and filtering 2020-05-22 15:03:49 +03:00
Matthias
073d9d3853 Update readme.md with adjusted sequence 2020-05-22 13:47:11 +02:00
Matthias
98db1d52c6 Reorder new commands 2020-05-22 07:04:36 +02:00
Matthias
43e2bce6f8 Update readme with current command list 2020-05-22 07:00:57 +02:00
Matthias
1663a67959 Reorder list-arguments 2020-05-22 07:00:09 +02:00
Matthias
33b270b81f reorder more arguments 2020-05-22 06:57:20 +02:00
Matthias
fcae48d5a0 Some reordering of subcommands 2020-05-22 06:55:20 +02:00
Matthias
74056e768a Merge pull request #3352 from hroff-1902/improve_pairlist_tests
Improve pairlist tests
2020-05-21 15:06:22 +02:00
hroff-1902
ea13071308 Merge pull request #3351 from freqtrade/fix/notradesplot
[minor] Fix crash when no trades are found in plot-profit
2020-05-21 13:14:41 +03:00
hroff-1902
cd0bf96c0e Improve pairlist tests 2020-05-21 12:52:10 +03:00
Matthias
d31a091d12 Merge pull request #3346 from hroff-1902/refactor_pairlists2
Refactor filter_pairlists()
2020-05-21 07:25:43 +02:00
Matthias
1f386c570d Don't start plotting profit without trades
plotting profit only makes sense when trades are available
2020-05-21 07:13:08 +02:00
Matthias
1a984ac677 Explicitly raise ValueError if trades are empty 2020-05-21 07:12:53 +02:00
Matthias
7bf5e5ba6d Merge pull request #3327 from freqtrade/dependabot/pip/develop/scikit-learn-0.23.0
Bump scikit-learn from 0.22.2.post1 to 0.23.0
2020-05-21 06:24:31 +02:00
hroff-1902
22bcb58716 Merge pull request #3348 from freqtrade/fix_doc_link
[minor] Fix documentation link
2020-05-20 23:40:40 +03:00
hroff-1902
ff7bcb5aae Merge pull request #3344 from freqtrade/fix_cors_policy
CORS - allow authenticated responses
2020-05-20 21:44:30 +03:00
Matthias
3b5ccf2efe Fix documentation link 2020-05-20 19:48:25 +02:00
Matthias
a11651ae67 Correctly test cors 2020-05-20 19:43:52 +02:00
hroff-1902
bfa55f31c0 Remove wrong comment 2020-05-20 17:45:27 +03:00
hroff-1902
8bf38443c2 Merge branch 'develop' into verify_date_on_new_candle_on_get_signal 2020-05-20 14:05:21 +03:00
hroff-1902
4f0d928145 Introduce self._enabled in pairlist handlers 2020-05-20 13:41:00 +03:00
hroff-1902
7e43574382 Refactor filter_pairlist() 2020-05-20 13:27:07 +03:00
Matthias
cd3900549c Merge pull request #3341 from hroff-1902/cleanup_get_signal
Minor: cleanup in get_signal()
2020-05-20 07:07:39 +02:00
Matthias
2fbd31f5e0 CORS - allow authenticated responses 2020-05-20 07:04:48 +02:00
Matthias
3c86043235 Merge pull request #3343 from hroff-1902/refactor_verify_blacklist
Refactor verify_blacklist()
2020-05-20 06:34:42 +02:00
Matthias
2498fa5a47 Bump scikit-learn from 0.22.2.post1 to 0.23.1 2020-05-20 06:29:17 +02:00
hroff-1902
696c7e87f2 Use proper logging (using the Filter's logger) 2020-05-19 23:51:39 +03:00
hroff-1902
e96e28df07 Refactor verify_blacklist() 2020-05-19 23:13:51 +03:00
hroff-1902
a8b1dcf3c8 Minor: cleanup in get_signal() 2020-05-19 22:20:53 +03:00
hroff-1902
7b2bb73a12 Merge branch 'develop' into verify_date_on_new_candle_on_get_signal 2020-05-19 21:34:58 +03:00
Matthias
d438af342c Merge pull request #3339 from hroff-1902/cleanup-pairlistmanager
Cleanup in pairlistmanager
2020-05-19 14:04:39 +02:00
Matthias
43862d30b9 Merge pull request #3322 from hroff-1902/pairlists-shuffle
Add ShuffleFilter
2020-05-19 14:03:20 +02:00
hroff-1902
4c4fb0c9be Cleanup in pairlistmanager 2020-05-19 03:56:31 +03:00
hroff-1902
d8352bd632 Fix tests for SpreadFilter 2020-05-18 23:48:06 +03:00
hroff-1902
30d1a85895 Adjust docs 2020-05-18 23:46:23 +03:00
hroff-1902
e1e8293a67 Merge remote-tracking branch 'upstream/develop' into pairlists-shuffle 2020-05-18 23:18:41 +03:00
Matthias
63b6f171f9 Merge pull request #3331 from freqtrade/hroff-1902-patch-1
Improve Pairlist docs
2020-05-18 22:02:18 +02:00
Matthias
76bd97d510 Merge pull request #3317 from hroff-1902/refactor-informative
Refactor informative pairs
2020-05-18 21:57:16 +02:00
hroff-1902
2c6c287c4b Address comments made in review 2020-05-18 22:24:38 +03:00
hroff-1902
115586a50f Introduce freqtrade.typing 2020-05-18 21:59:50 +03:00
Matthias
839ca28604 Merge pull request #3334 from hroff-1902/retrier-dependency-exceptions
Do not throttle with DependencyException in Exchange retrier
2020-05-18 19:49:24 +02:00
Matthias
0070bc6666 Merge pull request #3333 from hroff-1902/fix-kraken-import
Minor: correct import of retrier
2020-05-18 19:24:49 +02:00
hroff-1902
6951b20aa0 Do not throttle with DependencyException in retrier 2020-05-18 17:31:34 +03:00
hroff-1902
8bdd5e7121 Minor: correct import of retrier 2020-05-18 15:20:51 +03:00
hroff-1902
0c8aff98e0 Make flake happy 2020-05-18 15:03:36 +03:00
dependabot-preview[bot]
a0c9f7bac8 Bump scikit-learn from 0.22.2.post1 to 0.23.0
Bumps [scikit-learn](https://github.com/scikit-learn/scikit-learn) from 0.22.2.post1 to 0.23.0.
- [Release notes](https://github.com/scikit-learn/scikit-learn/releases)
- [Commits](https://github.com/scikit-learn/scikit-learn/compare/0.22.2.post1...0.23.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-18 11:32:03 +00:00
Matthias
5858f3a845 Merge pull request #3328 from freqtrade/dependabot/pip/develop/joblib-0.15.1
Bump joblib from 0.14.1 to 0.15.1
2020-05-18 13:30:47 +02:00
Matthias
1ed40b77dc Merge pull request #3326 from freqtrade/dependabot/pip/develop/mkdocs-material-5.1.7
Bump mkdocs-material from 5.1.6 to 5.1.7
2020-05-18 13:30:13 +02:00
hroff-1902
6fa8750fea Merge branch 'develop' into refactor-informative 2020-05-18 14:00:09 +03:00
hroff-1902
ba26f3a73a Merge branch 'refactor-informative' of ssh://github.com/hroff-1902/freqtrade into refactor-informative 2020-05-18 13:55:09 +03:00
hroff-1902
627c5059f0 Move create_pair_list to pairlistmanager 2020-05-18 13:54:21 +03:00
hroff-1902
f54dc7affd Make flake happy 2020-05-18 13:18:05 +03:00
Matthias
20d75e4a8d Merge pull request #3325 from freqtrade/dependabot/pip/develop/flake8-3.8.1
Bump flake8 from 3.7.9 to 3.8.1
2020-05-18 11:58:08 +02:00
hroff-1902
cc28aae5cb Fix the links again 2020-05-18 12:44:20 +03:00
Matthias
3e3a0164bf Merge pull request #3329 from freqtrade/dependabot/pip/develop/ccxt-1.27.91
Bump ccxt from 1.27.49 to 1.27.91
2020-05-18 11:40:55 +02:00
Matthias
5a9a31351a Adjust empty f-strings to be non-fstrings 2020-05-18 11:40:25 +02:00
hroff-1902
d57ef6a2a6 Pairlist Section reworked 2020-05-18 12:39:52 +03:00
dependabot-preview[bot]
601cbd1231 Bump ccxt from 1.27.49 to 1.27.91
Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.27.49 to 1.27.91.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/doc/exchanges-by-country.rst)
- [Commits](https://github.com/ccxt/ccxt/compare/1.27.49...1.27.91)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-18 09:23:03 +00:00
Matthias
849d3cfd0c Merge pull request #3330 from freqtrade/dependabot/pip/develop/sqlalchemy-1.3.17
Bump sqlalchemy from 1.3.16 to 1.3.17
2020-05-18 11:21:40 +02:00
dependabot-preview[bot]
ff8e85f2f5 Bump sqlalchemy from 1.3.16 to 1.3.17
Bumps [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) from 1.3.16 to 1.3.17.
- [Release notes](https://github.com/sqlalchemy/sqlalchemy/releases)
- [Changelog](https://github.com/sqlalchemy/sqlalchemy/blob/master/CHANGES)
- [Commits](https://github.com/sqlalchemy/sqlalchemy/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-18 09:02:29 +00:00
hroff-1902
7d80f8d25c Fix links in docs 2020-05-18 12:02:16 +03:00
dependabot-preview[bot]
37a10d1d30 Bump joblib from 0.14.1 to 0.15.1
Bumps [joblib](https://github.com/joblib/joblib) from 0.14.1 to 0.15.1.
- [Release notes](https://github.com/joblib/joblib/releases)
- [Changelog](https://github.com/joblib/joblib/blob/master/CHANGES.rst)
- [Commits](https://github.com/joblib/joblib/compare/0.14.1...0.15.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-18 09:01:37 +00:00
dependabot-preview[bot]
a447efbe57 Bump mkdocs-material from 5.1.6 to 5.1.7
Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 5.1.6 to 5.1.7.
- [Release notes](https://github.com/squidfunk/mkdocs-material/releases)
- [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG)
- [Commits](https://github.com/squidfunk/mkdocs-material/compare/5.1.6...5.1.7)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-18 09:00:45 +00:00
dependabot-preview[bot]
37fd675aac Bump flake8 from 3.7.9 to 3.8.1
Bumps [flake8](https://gitlab.com/pycqa/flake8) from 3.7.9 to 3.8.1.
- [Release notes](https://gitlab.com/pycqa/flake8/tags)
- [Commits](https://gitlab.com/pycqa/flake8/compare/3.7.9...3.8.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-18 09:00:23 +00:00
hroff-1902
51c0639e6d Update tests/pairlist/test_pairlist.py
Co-authored-by: Matthias <xmatthias@outlook.com>
2020-05-18 11:54:52 +03:00
hroff-1902
18e38a3fe3 Merge pull request #3323 from freqtrade/simplify_sdnotify
[minor] Simplify sd_notify usage
2020-05-18 11:29:18 +03:00
Matthias
503a8a8243 Simplify sd_notify usage 2020-05-18 07:02:57 +02:00
hroff-1902
287e8bafce Add/adjust tests 2020-05-18 02:37:03 +03:00
hroff-1902
4bfab5e222 Add ShuffleFilter 2020-05-18 02:36:40 +03:00
hroff-1902
fd7fa3116a Merge pull request #3321 from freqtrade/rpc/improve_daily
Improve daily API format
2020-05-18 01:29:28 +03:00
hroff-1902
889d07900a Merge pull request #3320 from freqtrade/fix_sell_spamming
Fix sell spamming
2020-05-17 21:54:08 +03:00
Matthias
64b8d8c7bd Use correct Return hint 2020-05-17 20:18:35 +02:00
Matthias
9d63fada24 Merge pull request #3313 from hroff-1902/refactor-pairlists
Cleanup in pairlists
2020-05-17 20:15:39 +02:00
Matthias
943a2a08f8 Improve daily API format 2020-05-17 20:12:01 +02:00
hroff-1902
16622bbfad Cosmetics in pair lists 2020-05-17 14:44:32 +03:00
hroff-1902
ae69d31095 Cosmetics in IPairList 2020-05-17 14:13:26 +03:00
hroff-1902
97c50f86e9 Cleanup pairlistmanager 2020-05-17 14:10:11 +03:00
Matthias
285bc2511e Improve testcov for default check_*_timeout methods 2020-05-17 11:23:55 +02:00
Matthias
2074d986a6 Update test to verify we're not spamming messages 2020-05-17 11:12:30 +02:00
Matthias
dd55d2eea3 Reduce spammyness of parcial cancel orders 2020-05-17 10:53:07 +02:00
Matthias
1e76bff1bd Add sell_order_status to keep track of cancellations 2020-05-17 10:52:20 +02:00
hroff-1902
ce185a3b19 Remove pairs with no ticker available when it's needed 2020-05-17 11:39:18 +03:00
hroff-1902
d457542d96 Fix PrecisionFilter 2020-05-17 11:11:49 +03:00
hroff-1902
318e435a8f Merge branch 'develop' into refactor-informative 2020-05-16 22:14:50 +03:00
hroff-1902
15ef6df950 Merge pull request #3210 from jpribyl/Cancel_open_orders_on_shutdown
Cancel open orders during shutdown
2020-05-16 21:45:02 +03:00
hroff-1902
baf5f4f29c Update freqtrade/constants.py 2020-05-16 21:28:54 +03:00
hroff-1902
5f2a871637 Add missing module 2020-05-16 17:15:58 +03:00
Matthias
fed75d8718 remove --cancel_open_orders cli switch 2020-05-16 13:23:40 +02:00
Matthias
7a11219b61 Reword some documentation strings
Co-authored-by: hroff-1902 <47309513+hroff-1902@users.noreply.github.com>
2020-05-16 13:17:48 +02:00
Matthias
2a1fcc0f06 Merge branch 'develop' into pr/jpribyl/3210-1 2020-05-16 13:09:38 +02:00
Matthias
22a08768f7 Add test for cancel_open_order 2020-05-16 12:40:25 +02:00
hroff-1902
e7c11ed2cf Fix fetching timeframe (failed in backtesting) 2020-05-16 12:27:56 +03:00
hroff-1902
facaaabc1e Rename _refresh_whitelist() 2020-05-16 12:27:56 +03:00
hroff-1902
f8b01f5a43 Make flake happy 2020-05-16 12:27:56 +03:00
hroff-1902
035a12ce61 Move _create_pair_whitelist to dataprovider 2020-05-16 12:27:56 +03:00
hroff-1902
bf25746965 Introduce datatype for informative pairs 2020-05-16 12:27:56 +03:00
Matthias
c3f3242f28 Add tests for cancel_open_orders_on_exit 2020-05-16 11:05:34 +02:00
hroff-1902
1b3864ebf8 Make flake happy 2020-05-16 09:21:36 +03:00
hroff-1902
9d6a41aa7a Merge pull request #3315 from freqtrade/flask_cors
Add cors support - needed for UI
2020-05-16 09:07:38 +03:00
Matthias
61f6acb5c9 Add cors support - needed for UI 2020-05-16 07:07:24 +02:00
hroff-1902
72165a1926 Merge pull request #3238 from hroff-1902/dataprovider-add-ticker
Add ticker to dataprovider
2020-05-15 22:03:01 +03:00
hroff-1902
ac076ee0af Update docs/strategy-customization.md
Co-authored-by: Matthias <xmatthias@outlook.com>
2020-05-15 21:51:33 +03:00
hroff-1902
d84cb3be77 Improve test 2020-05-15 19:19:52 +03:00
hroff-1902
06b12c0a70 Add warning to docs for ticker data 2020-05-15 18:46:28 +03:00
hroff-1902
323b491962 Add description and example for dp.ticker() to the docs 2020-05-15 16:35:48 +03:00
Matthias
788d75572b Merge pull request #3309 from freqtrade/dependabot/docker/python-3.8.3-slim-buster
Bump python from 3.8.2-slim-buster to 3.8.3-slim-buster
2020-05-15 10:14:25 +02:00
dependabot-preview[bot]
33091f95c2 Bump python from 3.8.2-slim-buster to 3.8.3-slim-buster
Bumps python from 3.8.2-slim-buster to 3.8.3-slim-buster.

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-15 06:24:54 +00:00
Matthias
ba68c42aae Merge pull request #3297 from bmoulkaf/develop
Fix stoploss on binance bug
2020-05-15 08:23:18 +02:00
Matthias
a7b469e83d Add test verifying correct price reduction on limit stoploss orders 2020-05-15 08:09:53 +02:00
Matthias
92b6d3e2fa Adjust test to reflect correct behaviour 2020-05-15 08:04:14 +02:00
hroff-1902
143e6f52af Simplify SpreadFilter 2020-05-15 05:14:06 +03:00
hroff-1902
cbb2ce3708 Simplify PriceFilter 2020-05-15 04:55:28 +03:00
hroff-1902
2aa80f915d Cosmetics: improve readability 2020-05-15 04:24:18 +03:00
hroff-1902
794ed304b1 Make stoploss an attribute 2020-05-15 04:17:23 +03:00
hroff-1902
afa7a5846b Simplify PriceFilter 2020-05-15 04:05:31 +03:00
hroff-1902
f0c3a0d2f8 Simplify VolumePairList 2020-05-15 03:59:13 +03:00
hroff-1902
2924b70fd7 Cosmetics in tests/pairlist/ 2020-05-15 03:41:41 +03:00
hroff-1902
481f9ba6d6 Use list comprehension instead of filter() 2020-05-15 03:00:55 +03:00
hroff-1902
8e4ffea52b Merge pull request #3239 from freqtrade/feat/fee_handling
Improve fee handling
2020-05-14 18:48:48 +03:00
Matthias
cc3c141f89 Merge pull request #3307 from freqtrade/xmatthias-pi_docs
Add note about PI and docker
2020-05-14 16:13:58 +02:00
Matthias
fb92300cfa Update docs/docker.md
Co-authored-by: hroff-1902 <47309513+hroff-1902@users.noreply.github.com>
2020-05-14 15:48:23 +02:00
hroff-1902
78b81bac48 Add test for dp.ticker() 2020-05-14 16:43:16 +03:00
Matthias
38fd361c68 Add note about PI and docker 2020-05-14 14:40:40 +02:00
hroff-1902
aae096c6ae Handle fetching ticker for non-existing pair safe way 2020-05-14 13:36:48 +03:00
hroff-1902
3079e18239 Merge branch 'develop' into dataprovider-add-ticker 2020-05-14 13:22:52 +03:00
Matthias
d957f3dd2d Merge pull request #3303 from freqtrade/hroff-1902-patch-1
Minor fix in the strategy docs
2020-05-14 06:13:59 +02:00
hroff-1902
ced812660b Minor fix in the strategy docs 2020-05-13 22:37:50 +03:00
Matthias
255ff6cd06 Should return False if it's not been cancelled empty 2020-05-13 20:52:40 +02:00
hroff-1902
b4d2433fc1 Merge pull request #3267 from GrilledChickenThighs/develop
Method for accessing current pairlist inside strategy.
2020-05-13 21:29:39 +03:00
Matthias
60f26ba501 use update_trade_state also for closed stoploss orders 2020-05-13 20:25:32 +02:00
Matthias
5f0d5a302d Merge pull request #3301 from freqtrade/hroff-1902-patch-1
minor: fix typo in configuration.md
2020-05-13 19:12:19 +02:00
hroff-1902
b3dd0a68d5 minor: fix typo in configuration.md 2020-05-13 18:51:38 +03:00
Matthias
7307ebd1f4 Merge pull request #3300 from Corfucinas/patch-1
Update doc Ta_lib
2020-05-13 15:56:15 +02:00
Pedro Torres
6ff457e391 Update doc Ta_lib
Update the document with the latest Ta_lib-0.4.18. 👍 
The requirements-common.txt has been updated previously on commit a379e68cf4
2020-05-13 20:50:11 +08:00
Paul D. Mendes
6e86a47764 updated docs 2020-05-13 14:49:16 +04:00
Matthias
d86855f2f3 Merge pull request #3129 from freqtrade/trades_to_list
convert dl-trades datadownload to list
2020-05-13 09:41:26 +02:00
bmoulkaf
fe3ea8e7ec Fix stoploss on binance bug 2020-05-13 05:15:18 +00:00
Matthias
0c3bdd66ac Update sql cheatsheet iwth current table structure 2020-05-13 06:50:52 +02:00
Paul D. Mendes
87d9388a9c Merge branch 'develop' of https://github.com/freqtrade/freqtrade into develop 2020-05-13 00:32:46 +04:00
Paul D. Mendes
63dfe3669f Updated docs for #3267 2020-05-13 00:25:57 +04:00
hroff-1902
ed7209f910 Merge pull request #3290 from freqtrade/show_forcebuy
[minor] Show forcebuy status so it's visible before calling forcebuy.
2020-05-12 15:05:56 +03:00
hroff-1902
4c9131bd64 Merge pull request #3291 from hroff-1902/minor-fix-docs2
Docs: Fix samples in strategy-advanced.md
2020-05-12 15:05:07 +03:00
hroff-1902
f1367b38a4 Docs: Fix the fix 2020-05-12 14:42:33 +03:00
Matthias
77c9334c50 Use available config object
Co-authored-by: hroff-1902 <47309513+hroff-1902@users.noreply.github.com>
2020-05-12 13:39:24 +02:00
hroff-1902
e2b9c24856 Docs: Fix sample in strategy-advanced 2020-05-12 13:54:13 +03:00
Matthias
aa25461e88 Show forcebuy status so it's visible before calling forcebuy. 2020-05-12 07:20:59 +02:00
Matthias
e864db1843 Update test for dp.current_whitelist 2020-05-12 06:38:14 +02:00
Matthias
1aa1fada6a Merge pull request #3289 from prashanthsandela/patch-1
Correct log path in doc.
2020-05-12 06:17:50 +02:00
prashanthsandela
258071928f Correct log path in doc. 2020-05-11 17:21:04 -07:00
hroff-1902
caac562b6b Merge pull request #3246 from flomerz/develop
hyperopt csv export - add params
2020-05-12 00:50:25 +03:00
hroff-1902
7e9998083f Merge pull request #3287 from hroff-1902/tests-suppress-deprecationwarning
Minor: Add filterwarning for DeprecationWarning in test
2020-05-11 22:00:02 +03:00
hroff-1902
c8f3ef884b Minor: Add filterwarning for DeprecationWarning in test 2020-05-11 20:22:19 +03:00
Paul D. Mendes
41bd2c815d Merge branch 'develop' of https://github.com/GrilledChickenThighs/freqtrade into develop 2020-05-11 20:17:24 +04:00
Paul D. Mendes
9fbe135790 attached pairlist manager onto dataprovider init for unified access to dynamic whitelist 2020-05-11 20:17:03 +04:00
Paul D. Mendes
a5bfa5515c Fix flake8 mypy 2020-05-11 20:13:06 +04:00
Paul D. Mendes
bc9efc31ad Added Method for accessing current pair list on initialization for dynamic informative pairs
moved import into function to avoid circular import with hyperopt
2020-05-11 19:45:15 +04:00
Paul D. Mendes
a8f523adae attached pairlist manager onto dataprovider init for unified access to dynamic whitelist 2020-05-11 19:45:15 +04:00
Matthias
20c3d6644c Merge pull request #3283 from freqtrade/dependabot/pip/develop/ta-lib-0.4.18
Bump ta-lib from 0.4.17 to 0.4.18
2020-05-11 14:33:27 +02:00
Matthias
a379e68cf4 Add new ta-lib wheels 2020-05-11 14:02:39 +02:00
Matthias
c351b7848e Merge pull request #3286 from freqtrade/dependabot/pip/develop/mkdocs-material-5.1.6
Bump mkdocs-material from 5.1.5 to 5.1.6
2020-05-11 13:32:32 +02:00
Matthias
e0ea37829b Merge pull request #3285 from freqtrade/dependabot/pip/develop/plotly-4.7.1
Bump plotly from 4.6.0 to 4.7.1
2020-05-11 11:35:42 +02:00
Matthias
265838403e Merge pull request #3284 from freqtrade/dependabot/pip/develop/ccxt-1.27.49
Bump ccxt from 1.27.20 to 1.27.49
2020-05-11 11:29:35 +02:00
Matthias
e1d3cafd80 Merge pull request #3282 from freqtrade/dependabot/pip/develop/pytest-5.4.2
Bump pytest from 5.4.1 to 5.4.2
2020-05-11 11:21:59 +02:00
dependabot-preview[bot]
96710d42f5 Bump mkdocs-material from 5.1.5 to 5.1.6
Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 5.1.5 to 5.1.6.
- [Release notes](https://github.com/squidfunk/mkdocs-material/releases)
- [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG)
- [Commits](https://github.com/squidfunk/mkdocs-material/compare/5.1.5...5.1.6)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-11 09:13:06 +00:00
dependabot-preview[bot]
e38581c19f Bump plotly from 4.6.0 to 4.7.1
Bumps [plotly](https://github.com/plotly/plotly.py) from 4.6.0 to 4.7.1.
- [Release notes](https://github.com/plotly/plotly.py/releases)
- [Changelog](https://github.com/plotly/plotly.py/blob/master/CHANGELOG.md)
- [Commits](https://github.com/plotly/plotly.py/compare/v4.6.0...v4.7.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-11 09:12:38 +00:00
dependabot-preview[bot]
43ab814f30 Bump ccxt from 1.27.20 to 1.27.49
Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.27.20 to 1.27.49.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/doc/exchanges-by-country.rst)
- [Commits](https://github.com/ccxt/ccxt/compare/1.27.20...1.27.49)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-11 09:12:11 +00:00
dependabot-preview[bot]
3849b68b8f Bump ta-lib from 0.4.17 to 0.4.18
Bumps [ta-lib](https://github.com/mrjbq7/ta-lib) from 0.4.17 to 0.4.18.
- [Release notes](https://github.com/mrjbq7/ta-lib/releases)
- [Changelog](https://github.com/mrjbq7/ta-lib/blob/master/CHANGELOG)
- [Commits](https://github.com/mrjbq7/ta-lib/compare/TA_Lib-0.4.17...TA_Lib-0.4.18)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-11 09:11:22 +00:00
dependabot-preview[bot]
306eae6da3 Bump pytest from 5.4.1 to 5.4.2
Bumps [pytest](https://github.com/pytest-dev/pytest) from 5.4.1 to 5.4.2.
- [Release notes](https://github.com/pytest-dev/pytest/releases)
- [Changelog](https://github.com/pytest-dev/pytest/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest/compare/5.4.1...5.4.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-11 09:10:48 +00:00
hroff-1902
bbb609c927 Merge pull request #3278 from freqtrade/api/jwt
API server - support JWT
2020-05-10 21:33:41 +03:00
Matthias
9eca268a49 Fix test 2020-05-10 20:00:19 +02:00
Matthias
d291ca0071 Simplify code section 2020-05-10 19:43:16 +02:00
Matthias
21c2af2b92 Load jwt_key from config 2020-05-10 19:42:06 +02:00
Matthias
c3f0b5d4eb Rename methods to match endpoints 2020-05-10 19:37:41 +02:00
hroff-1902
f64209e426 Merge pull request #3281 from freqtrade/sell_order_cancel_exception
Sell order cancel exception
2020-05-10 19:22:14 +03:00
Matthias
b163bb7650 Apply suggestions from code review
Co-authored-by: hroff-1902 <47309513+hroff-1902@users.noreply.github.com>
2020-05-10 17:48:29 +02:00
Matthias
c2224ed6b7 Fix doc typos
Co-authored-by: hroff-1902 <47309513+hroff-1902@users.noreply.github.com>
2020-05-10 17:47:43 +02:00
Matthias
73a1496318 Catch exception on cancel_order 2020-05-10 17:44:45 +02:00
Matthias
2406e20be2 Update docs/rest-api.md
Co-authored-by: hroff-1902 <47309513+hroff-1902@users.noreply.github.com>
2020-05-10 17:36:43 +02:00
Matthias
80faa5feb1 Add test to cancel sell order 2020-05-10 16:24:00 +02:00
Matthias
d9e4f41a35 Add documentation for JWt 2020-05-10 16:14:35 +02:00
hroff-1902
a2ec18680e Merge pull request #3279 from meauxt/develop
Fix Typo in telegram Plugin
2020-05-10 12:24:15 +03:00
Mohamad Tarbin
570c51b0b0 Fix Typo in telegram Plugin 2020-05-10 05:07:49 -04:00
Matthias
f246336943 Merge pull request #3277 from hroff-1902/edge-fix-fee
Fix fee usage in Edge
2020-05-10 10:58:57 +02:00
hroff-1902
51d2b817ae Use self.fee 2020-05-10 11:51:33 +03:00
Matthias
bc64619f30 Tests for JWT implementation 2020-05-10 10:43:13 +02:00
Matthias
8139058fcc Implement token/login and token/refresh endpoints 2020-05-10 10:35:38 +02:00
Matthias
0bd2fca40b Update tests/test_integration.py
Co-authored-by: hroff-1902 <47309513+hroff-1902@users.noreply.github.com>
2020-05-10 09:55:41 +02:00
hroff-1902
b6a2c38941 Adjust tests 2020-05-10 02:39:22 +03:00
hroff-1902
7e08fa2631 Fix usage of fee value in Edge 2020-05-10 02:22:16 +03:00
Matthias
b72997fc2b Add flask-jwt-extended dependency 2020-05-09 20:16:04 +02:00
Matthias
37439b836b Merge pull request #3275 from hroff-1902/exchange-cosmetics-2
Minor: improve exception handling in exchange
2020-05-09 19:25:35 +02:00
hroff-1902
d4362ed357 Minor: improve exception handling in exchange 2020-05-09 09:29:40 +03:00
hroff-1902
2307495f28 Update docs/configuration.md
Co-authored-by: Matthias <xmatthias@outlook.com>
2020-05-08 20:10:16 +03:00
hroff-1902
18ec65e05f Merge pull request #3269 from freqtrade/improve_exceptionlogging
[minor] Improve exception handling on critical errors
2020-05-08 15:39:54 +03:00
Matthias
80d367fa08 Add test for keyboardinterrupt 2020-05-08 14:24:30 +02:00
Matthias
5272ec85ea Add additional test 2020-05-08 12:34:24 +02:00
Matthias
c560de4111 Improve exception handling on critical errors 2020-05-08 11:44:24 +02:00
hroff-1902
5b92387732 Merge pull request #3259 from freqtrade/fix/filled
Fix handling of partially or non-filled timedout orders
2020-05-07 09:58:26 +03:00
Matthias
1ba2df79c6 Ause isclose for comparison, assign filled to variable
add some comments
2020-05-07 06:51:02 +02:00
hroff-1902
06313cdddf Merge pull request #3264 from freqtrade/api_improvements
Api improvements
2020-05-07 00:05:36 +03:00
Matthias
a62d7495ca FIx typo in telegram method 2020-05-05 21:28:59 +02:00
Matthias
593d13ebdd Show new values also in Telegram 2020-05-05 21:21:20 +02:00
Matthias
e4023a6567 Add some minor things to show_config 2020-05-05 21:19:35 +02:00
hroff-1902
77d889beff Merge pull request #3262 from freqtrade/humanize_show_trades_error
Humanize show-trades error when no database is specified
2020-05-05 21:28:14 +03:00
Matthias
ffef4bc474 Humanize show-trades error when no database is specified 2020-05-05 19:48:28 +02:00
hroff-1902
1b448f57b9 Merge pull request #3242 from freqtrade/feat/trade_show
New subcommand show-trades
2020-05-05 19:26:59 +03:00
hroff-1902
0340d7bf37 Merge pull request #3249 from freqtrade/increase_rate_cache
[minor] Increase cache for rate limit to avoid delays
2020-05-05 19:08:31 +03:00
Matthias
d3a0ab8096 Change mock-status to be open when testing unfilled... 2020-05-05 07:12:49 +02:00
Matthias
981976681a Use filled, it's the safer choice when determining the filled amount. 2020-05-05 07:09:12 +02:00
Matthias
b4aeb93a18 Add test testing the different ways exchanges may return data 2020-05-05 07:07:42 +02:00
Matthias
f040c20688 Use filled in tests 2020-05-05 06:41:01 +02:00
Matthias
648723fb83 Use 30min rate cache 2020-05-05 06:32:03 +02:00
Matthias
06aee85398 Merge pull request #3253 from freqtrade/dependabot/pip/develop/progressbar2-3.51.3
Bump progressbar2 from 3.51.0 to 3.51.3
2020-05-04 15:13:21 +02:00
Matthias
3ad9df66ad Merge pull request #3252 from freqtrade/dependabot/pip/develop/pytest-asyncio-0.12.0
Bump pytest-asyncio from 0.11.0 to 0.12.0
2020-05-04 15:06:43 +02:00
Matthias
e6c83b802f Merge pull request #3256 from freqtrade/dependabot/pip/develop/python-telegram-bot-12.7
Bump python-telegram-bot from 12.6.1 to 12.7
2020-05-04 15:03:51 +02:00
dependabot-preview[bot]
5dde6d3fac Bump python-telegram-bot from 12.6.1 to 12.7
Bumps [python-telegram-bot](https://github.com/python-telegram-bot/python-telegram-bot) from 12.6.1 to 12.7.
- [Release notes](https://github.com/python-telegram-bot/python-telegram-bot/releases)
- [Changelog](https://github.com/python-telegram-bot/python-telegram-bot/blob/master/CHANGES.rst)
- [Commits](https://github.com/python-telegram-bot/python-telegram-bot/compare/v12.6.1...v12.7)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-04 12:40:24 +00:00
Matthias
7ad6e03e5a Merge pull request #3250 from freqtrade/dependabot/pip/develop/numpy-1.18.4
Bump numpy from 1.18.3 to 1.18.4
2020-05-04 14:39:06 +02:00
Matthias
a0fe49ede6 Merge pull request #3251 from freqtrade/dependabot/pip/develop/arrow-0.15.6
Bump arrow from 0.15.5 to 0.15.6
2020-05-04 13:56:23 +02:00
Matthias
e5cc0640f6 Merge pull request #3254 from freqtrade/dependabot/pip/develop/ccxt-1.27.20
Bump ccxt from 1.27.1 to 1.27.20
2020-05-04 13:55:26 +02:00
Matthias
f7020bdc10 Merge pull request #3255 from freqtrade/dependabot/pip/develop/mkdocs-material-5.1.5
Bump mkdocs-material from 5.1.3 to 5.1.5
2020-05-04 13:46:10 +02:00
dependabot-preview[bot]
32eb1c5705 Bump mkdocs-material from 5.1.3 to 5.1.5
Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 5.1.3 to 5.1.5.
- [Release notes](https://github.com/squidfunk/mkdocs-material/releases)
- [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG)
- [Commits](https://github.com/squidfunk/mkdocs-material/compare/5.1.3...5.1.5)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-04 09:19:26 +00:00
dependabot-preview[bot]
611b9c88d1 Bump ccxt from 1.27.1 to 1.27.20
Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.27.1 to 1.27.20.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/doc/exchanges-by-country.rst)
- [Commits](https://github.com/ccxt/ccxt/compare/1.27.1...1.27.20)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-04 09:18:49 +00:00
dependabot-preview[bot]
2c352e6b82 Bump progressbar2 from 3.51.0 to 3.51.3
Bumps [progressbar2](https://github.com/WoLpH/python-progressbar) from 3.51.0 to 3.51.3.
- [Release notes](https://github.com/WoLpH/python-progressbar/releases)
- [Changelog](https://github.com/WoLpH/python-progressbar/blob/develop/CHANGES.rst)
- [Commits](https://github.com/WoLpH/python-progressbar/compare/v3.51.0...v3.51.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-04 09:18:02 +00:00
dependabot-preview[bot]
68f0b105a9 Bump pytest-asyncio from 0.11.0 to 0.12.0
Bumps [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio) from 0.11.0 to 0.12.0.
- [Release notes](https://github.com/pytest-dev/pytest-asyncio/releases)
- [Commits](https://github.com/pytest-dev/pytest-asyncio/compare/v0.11.0...v0.12.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-04 09:17:23 +00:00
dependabot-preview[bot]
a14e027ad4 Bump arrow from 0.15.5 to 0.15.6
Bumps [arrow](https://github.com/crsmithdev/arrow) from 0.15.5 to 0.15.6.
- [Release notes](https://github.com/crsmithdev/arrow/releases)
- [Changelog](https://github.com/crsmithdev/arrow/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/crsmithdev/arrow/compare/0.15.5...0.15.6)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-04 09:16:50 +00:00
dependabot-preview[bot]
f7a3bb82da Bump numpy from 1.18.3 to 1.18.4
Bumps [numpy](https://github.com/numpy/numpy) from 1.18.3 to 1.18.4.
- [Release notes](https://github.com/numpy/numpy/releases)
- [Changelog](https://github.com/numpy/numpy/blob/master/doc/HOWTO_RELEASE.rst.txt)
- [Commits](https://github.com/numpy/numpy/compare/v1.18.3...v1.18.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-04 09:16:28 +00:00
hroff-1902
b88724ed9e Merge pull request #3248 from freqtrade/fallback_amoutn
[minor] Improve logmessage when falling back to wallet amount
2020-05-04 05:22:20 +03:00
Matthias
b38f9ed5e7 Increase cache for rate limit to avoid delays
Helps when calling /status or /status table frequently on slowish
exchanges
2020-05-03 20:44:18 +02:00
Matthias
2a4c9bf3d3 Improve logmessage when falling back to wallet amount 2020-05-03 20:32:45 +02:00
Florian Merz
889a153731 fix PEP8 2020-05-03 17:29:56 +02:00
Florian Merz
690bb7646a hyperopt csv export - add params 2020-05-03 17:00:12 +02:00
Matthias
1c9c72937e Adjust trade-ids param 2020-05-03 15:32:09 +02:00
Matthias
e92d3867cf Fix failing test 2020-05-03 15:25:54 +02:00
Matthias
81397874eb Remove commented mock 2020-05-03 11:29:51 +02:00
Matthias
72282a2239 Add explicit test for fee_conditional 2020-05-03 11:28:29 +02:00
Matthias
58168336e1 Add test for apply_fee_conditional 2020-05-03 11:13:59 +02:00
Matthias
38c4949360 Align applying of fee when comming from orders or trades 2020-05-03 10:50:59 +02:00
Matthias
7dcef58f15 Add show-trades to documentation 2020-05-02 11:50:53 +02:00
Matthias
1066a4504b Add test for show_trades 2020-05-02 11:44:18 +02:00
Matthias
56bb5f7a11 Add show-trades command 2020-05-02 11:26:12 +02:00
Matthias
78b3d8487f Add typehint 2020-05-01 20:34:58 +02:00
Matthias
021e2b58ca Support partially cancelled orders for fee calculation 2020-05-01 20:24:26 +02:00
Matthias
737fc6d198 Fix bug when querying side 2020-05-01 20:05:13 +02:00
Matthias
71c90422ba Add explicit test for fee_updated 2020-05-01 20:02:38 +02:00
Matthias
6d620ba1f6 Verify if fee for this side has been updated 2020-05-01 19:54:16 +02:00
Matthias
6b33d5af1e Fix fee-calculation for dry-run orders 2020-05-01 19:51:35 +02:00
jpribyl
bd51cd332b Cancel all open orders after receiving /stop or ctrl+c 2020-05-01 10:36:11 -06:00
hroff-1902
0f50449196 Merge pull request #3241 from freqtrade/fix/deprecation
Use non-deprectated parameter for progressbar
2020-05-01 19:18:28 +03:00
Matthias
509f38d3aa Use non-deprectated parameter for progressbar 2020-05-01 17:59:24 +02:00
Matthias
40d4949f06 Don't handle trades if they've just been closed. 2020-05-01 17:46:01 +02:00
Matthias
7558e4bffe Split fee detection from trades from general logic 2020-05-01 16:13:07 +02:00
Matthias
371100a97c Update fee handling 2020-05-01 16:01:33 +02:00
Matthias
a2ff632647 Add update_fee method to persistence 2020-05-01 16:01:12 +02:00
Matthias
fdcc507f06 Fix integration tests 2020-05-01 15:50:02 +02:00
Matthias
b93d33a93a Fix mock order dicts 2020-05-01 15:50:02 +02:00
Matthias
db8fb39a38 don't use trade.update directly! 2020-05-01 15:50:02 +02:00
Matthias
59bafc8d02 Implement fee rate calculation 2020-05-01 15:50:02 +02:00
Matthias
45c97fde2d Use correct typehint for extract_cost_curr_rate 2020-05-01 15:50:02 +02:00
Matthias
f8f794a803 Simplify fee-related tests 2020-05-01 15:49:52 +02:00
hroff-1902
63b55658ac Add ticker to dataprovider 2020-05-01 05:11:30 +03:00
Matthias
e74ed0ba7b Add tests for fee extraction methods 2020-04-30 20:05:27 +02:00
Matthias
2e4dc6c253 Exchange should return fee dict for dry-run orders 2020-04-30 19:56:48 +02:00
Matthias
a867d40eac Move fee_methods to exchange 2020-04-30 19:33:27 +02:00
Matthias
d3b9f4d393 Add extract_cost_curr_rate 2020-04-30 19:28:36 +02:00
Matthias
6d7a3a0cc9 Extract more logic into order-has_fee 2020-04-30 07:12:08 +02:00
Matthias
b125dd3728 Extract order_has_fee method 2020-04-30 07:06:06 +02:00
Matthias
7936120afc Adapt tests to support new db fields 2020-04-30 06:58:55 +02:00
Matthias
dec1b10743 Add fee_cost and currency columns 2020-04-30 06:57:39 +02:00
Matthias
25d9001f88 Merge pull request #3234 from hroff-1902/hyperopt-use-model-queue-size
Use skopt model_queue_size instead of custom hack
2020-04-29 19:29:27 +02:00
hroff-1902
38c6ba6c08 Update setup.py
Co-Authored-By: Matthias <xmatthias@outlook.com>
2020-04-29 13:54:47 +03:00
hroff-1902
9152e76966 Add skopt version check into setup.py 2020-04-29 13:54:47 +03:00
hroff-1902
fb0dfee3eb Merge pull request #3235 from freqtrade/xmatthias-patch-1
Be clear on evaluation logic during backtesting
2020-04-29 12:08:41 +03:00
Matthias
69b44234a4 Update docs/backtesting.md
Co-Authored-By: hroff-1902 <47309513+hroff-1902@users.noreply.github.com>
2020-04-29 10:47:53 +02:00
Matthias
74281a16fd Move to the last point and clarify further 2020-04-29 10:39:55 +02:00
Matthias
1a6ddfcaeb Be clear on evaluation logic during backtesting 2020-04-29 10:37:48 +02:00
hroff-1902
726e52aaa7 Use skopt model_queue_size instead of custom hack 2020-04-29 10:49:25 +03:00
Matthias
32eaca9970 Merge pull request #3231 from hroff-1902/hyperopt-cleanup6
Cleanup in Hyperopt
2020-04-29 06:11:17 +02:00
hroff-1902
c6787d7e9f Do not use 'trials' in commands 2020-04-28 23:14:02 +03:00
hroff-1902
c26835048c Hyperopt cleanup, do not use 'trials' 2020-04-28 22:56:19 +03:00
hroff-1902
09e488a693 Merge pull request #3229 from hroff-1902/hyperopt-improve-logging
Improve hyperopt-list logging
2020-04-28 17:42:56 +03:00
hroff-1902
a01ed170f5 Improve hyperopt-list logging 2020-04-28 17:33:07 +03:00
hroff-1902
2a9653cd4e Merge pull request #3228 from freqtrade/new_release2020.4
New release 2020.4
2020-04-28 12:18:54 +03:00
Matthias
fa6fe618ac Version bump 2020.4 2020-04-28 10:55:27 +02:00
Matthias
ce3fa533ae Merge branch 'master' into new_release2020.4 2020-04-28 07:51:05 +02:00
hroff-1902
fedcf1db52 Merge pull request #3217 from freqtrade/remove_deprecation
Remove deprecated pairlist and binary
2020-04-27 19:41:54 +03:00
Matthias
3754bf46ed Change wording in deprecation messages
Co-Authored-By: hroff-1902 <47309513+hroff-1902@users.noreply.github.com>
2020-04-27 17:13:30 +02:00
hroff-1902
9ebc997e9d Merge pull request #3215 from freqtrade/backtest_use_pairlists
Backtest use pairlists
2020-04-27 13:34:06 +03:00
Matthias
5870d9dfc0 Merge pull request #3226 from freqtrade/dependabot/pip/develop/mkdocs-material-5.1.3
Bump mkdocs-material from 5.1.1 to 5.1.3
2020-04-27 11:25:48 +02:00
Matthias
73185471df Merge pull request #3225 from freqtrade/dependabot/pip/develop/pytest-asyncio-0.11.0
Bump pytest-asyncio from 0.10.0 to 0.11.0
2020-04-27 11:19:25 +02:00
Matthias
1d55514991 Merge pull request #3224 from freqtrade/dependabot/pip/develop/progressbar2-3.51.0
Bump progressbar2 from 3.50.1 to 3.51.0
2020-04-27 11:16:31 +02:00
Matthias
5b84e92b2e Merge pull request #3223 from freqtrade/dependabot/pip/develop/ccxt-1.27.1
Bump ccxt from 1.26.53 to 1.27.1
2020-04-27 11:15:16 +02:00
dependabot-preview[bot]
abbb3254b2 Bump mkdocs-material from 5.1.1 to 5.1.3
Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 5.1.1 to 5.1.3.
- [Release notes](https://github.com/squidfunk/mkdocs-material/releases)
- [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG)
- [Commits](https://github.com/squidfunk/mkdocs-material/compare/5.1.1...5.1.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-27 09:03:59 +00:00
dependabot-preview[bot]
52c92a19e3 Bump pytest-asyncio from 0.10.0 to 0.11.0
Bumps [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio) from 0.10.0 to 0.11.0.
- [Release notes](https://github.com/pytest-dev/pytest-asyncio/releases)
- [Commits](https://github.com/pytest-dev/pytest-asyncio/compare/v0.10.0...v0.11.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-27 09:03:30 +00:00
dependabot-preview[bot]
2122384ec1 Bump progressbar2 from 3.50.1 to 3.51.0
Bumps [progressbar2](https://github.com/WoLpH/python-progressbar) from 3.50.1 to 3.51.0.
- [Release notes](https://github.com/WoLpH/python-progressbar/releases)
- [Changelog](https://github.com/WoLpH/python-progressbar/blob/develop/CHANGES.rst)
- [Commits](https://github.com/WoLpH/python-progressbar/compare/v3.50.1...v3.51.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-27 09:02:49 +00:00
dependabot-preview[bot]
77a2ff8917 Bump ccxt from 1.26.53 to 1.27.1
Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.26.53 to 1.27.1.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/doc/exchanges-by-country.rst)
- [Commits](https://github.com/ccxt/ccxt/compare/1.26.53...1.27.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-27 09:02:21 +00:00
hroff-1902
9ed627091b Merge pull request #3216 from freqtrade/hyperopt_docs
Hyperopt should mention that a strategy is mandatory.
2020-04-27 10:13:14 +03:00
Matthias
fb8a85da01 Disallow VolumePairList from backtesting for now 2020-04-27 07:56:17 +02:00
Matthias
e928c5fdaf Update docs/hyperopt.md
Co-Authored-By: hroff-1902 <47309513+hroff-1902@users.noreply.github.com>
2020-04-27 07:15:37 +02:00
hroff-1902
485e324d36 Merge pull request #2872 from freqtrade/interface_ordertimeoutcallback
Buy order timeout callback
2020-04-25 19:02:15 +03:00
Matthias
255a43c98e Update price timeout example 2020-04-25 17:25:18 +02:00
Matthias
927a7ee330 Merge pull request #3218 from freqtrade/setup_sh
[minor] Update "final" message in setup.sh
2020-04-25 17:05:34 +02:00
Matthias
e1a347df90 Use subcommand, add 3rd line 2020-04-25 16:55:13 +02:00
Matthias
deb14e0c85 Update "final" message in setup.sh
closes #2773
2020-04-25 16:32:11 +02:00
Matthias
9fa21628d7 Deprecate keys other than quoteVolume
fixes #2981
2020-04-25 16:29:17 +02:00
Matthias
d1a24db6b7 Remove deprecated pairlist and binary 2020-04-25 16:04:10 +02:00
Matthias
a3a045dbd4 Add small section noting that a strategy file is always necessary
fix #3047
2020-04-25 15:54:46 +02:00
Matthias
e8530c36d3 Remove pairlists from hyperopt too (it holds a reference to exchange) 2020-04-25 15:46:20 +02:00
Matthias
57345476ab Document pairlists for backtesting 2020-04-25 15:39:27 +02:00
Matthias
8987859044 Enable pairlist parsing for backtesting and hyperopt 2020-04-25 15:37:13 +02:00
Matthias
1761f5af1a Merge pull request #3214 from hroff-1902/hyperopt-best-asterisk
Better handling and description of asterisk in Hyperopt output
2020-04-25 15:28:02 +02:00
hroff-1902
d9f255a6c0 Fix asterisk printing for csv output 2020-04-25 12:49:14 +03:00
Yazeed Al Oyoun
c9711678fd fixed indent 2020-04-25 11:31:51 +02:00
Yazeed Al Oyoun
181b12b3a8 added wins/draws/losses 2020-04-25 11:31:51 +02:00
Yazeed Al Oyoun
72b088d85f added test 2020-04-25 11:31:51 +02:00
Yazeed Al Oyoun
6147498fd4 fixed indent 2020-04-25 11:31:51 +02:00
Yazeed Al Oyoun
2fb3d94938 added wins/draws/losses 2020-04-25 11:31:51 +02:00
hroff-1902
c230a94d55 Fix #3065 2020-04-25 11:23:54 +03:00
hroff-1902
2d994f6feb Better printing of asterisk 2020-04-24 21:57:29 +03:00
Matthias
a19ea0f46f Merge pull request #3207 from hroff-1902/hyperopt-cleanup5
Minor: Remove unused methods in hyperopt
2020-04-24 19:17:40 +02:00
hroff-1902
6e5f0869b3 Remove another unused method 2020-04-24 18:39:08 +03:00
hroff-1902
5c012d79eb Remove unused method 2020-04-24 18:14:07 +03:00
hroff-1902
c5b204ea87 Merge pull request #3205 from freqtrade/fix/ftx_dynamic_crash
fix crash with Dynamic whitelist with pairfilter on FTX
2020-04-24 15:51:38 +03:00
Matthias
9627604ec3 change wording of log message 2020-04-24 07:58:18 +02:00
Matthias
f4995780e5 Verify last is not None - to avoid crashing
fix #3117
2020-04-23 20:04:36 +02:00
Matthias
461b0ef738 Add test verifying we're not reintroducing this in the future
Tests case of FTX, which returns mostly empty ticker info
2020-04-23 20:04:14 +02:00
Matthias
e6d3e2e7d3 Merge pull request #3203 from jpribyl/update_expectancy_docs
Update wording in expectancy docs and add example
2020-04-23 19:44:02 +02:00
jpribyl
662ec1cd60 Update wording in expectancy docs and add example 2020-04-22 18:45:33 -06:00
hroff-1902
1057c4e4ba Merge pull request #3202 from freqtrade/docs/sqlhelper
Update sql cheatsheet to allow manual closing trades correctly
2020-04-22 09:01:19 +03:00
Matthias
adf0bb69b8 Update sql cheatsheet to allow manual closing trades correctly 2020-04-22 06:39:03 +02:00
hroff-1902
5138b83afd Merge pull request #3200 from freqtrade/docker_log_location
Docker log location
2020-04-21 23:43:41 +03:00
Matthias
6b53197dfc Fix documentation to use --logfile, not --logfilename (which does not
exist)
2020-04-21 20:42:58 +02:00
Matthias
87f1060abc Default docker to log into log-dir 2020-04-21 19:47:49 +02:00
Matthias
102c4cf261 Merge pull request #3197 from freqtrade/dependabot/pip/develop/ccxt-1.26.53
Bump ccxt from 1.26.32 to 1.26.53
2020-04-20 13:45:14 +02:00
Matthias
6ea671ea0e Merge pull request #3192 from freqtrade/dependabot/pip/develop/pytest-mock-3.1.0
Bump pytest-mock from 3.0.0 to 3.1.0
2020-04-20 13:44:03 +02:00
Matthias
9a34deb4ea Merge pull request #3193 from freqtrade/dependabot/pip/develop/urllib3-1.25.9
Bump urllib3 from 1.25.8 to 1.25.9
2020-04-20 13:43:18 +02:00
Matthias
cdb91f00ff Merge pull request #3195 from freqtrade/dependabot/pip/develop/questionary-1.5.2
Bump questionary from 1.5.1 to 1.5.2
2020-04-20 13:24:57 +02:00
Matthias
f35c51f69c Merge pull request #3196 from freqtrade/dependabot/pip/develop/numpy-1.18.3
Bump numpy from 1.18.2 to 1.18.3
2020-04-20 13:23:47 +02:00
Matthias
f1fb22202e Merge pull request #3194 from freqtrade/dependabot/pip/develop/mkdocs-material-5.1.1
Bump mkdocs-material from 5.1.0 to 5.1.1
2020-04-20 13:23:21 +02:00
dependabot-preview[bot]
a7249f3865 Bump ccxt from 1.26.32 to 1.26.53
Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.26.32 to 1.26.53.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/doc/exchanges-by-country.rst)
- [Commits](https://github.com/ccxt/ccxt/compare/1.26.32...1.26.53)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-20 09:28:19 +00:00
dependabot-preview[bot]
597f053ae3 Bump numpy from 1.18.2 to 1.18.3
Bumps [numpy](https://github.com/numpy/numpy) from 1.18.2 to 1.18.3.
- [Release notes](https://github.com/numpy/numpy/releases)
- [Changelog](https://github.com/numpy/numpy/blob/master/doc/HOWTO_RELEASE.rst.txt)
- [Commits](https://github.com/numpy/numpy/compare/v1.18.2...v1.18.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-20 09:27:37 +00:00
dependabot-preview[bot]
84d09eb96d Bump questionary from 1.5.1 to 1.5.2
Bumps [questionary](https://github.com/tmbo/questionary) from 1.5.1 to 1.5.2.
- [Release notes](https://github.com/tmbo/questionary/releases)
- [Commits](https://github.com/tmbo/questionary/compare/1.5.1...1.5.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-20 09:27:16 +00:00
dependabot-preview[bot]
d395d7ac7d Bump mkdocs-material from 5.1.0 to 5.1.1
Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 5.1.0 to 5.1.1.
- [Release notes](https://github.com/squidfunk/mkdocs-material/releases)
- [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG)
- [Commits](https://github.com/squidfunk/mkdocs-material/compare/5.1.0...5.1.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-20 09:26:31 +00:00
dependabot-preview[bot]
4742fc6657 Bump urllib3 from 1.25.8 to 1.25.9
Bumps [urllib3](https://github.com/urllib3/urllib3) from 1.25.8 to 1.25.9.
- [Release notes](https://github.com/urllib3/urllib3/releases)
- [Changelog](https://github.com/urllib3/urllib3/blob/master/CHANGES.rst)
- [Commits](https://github.com/urllib3/urllib3/compare/1.25.8...1.25.9)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-20 09:26:09 +00:00
dependabot-preview[bot]
76dd388b3c Bump pytest-mock from 3.0.0 to 3.1.0
Bumps [pytest-mock](https://github.com/pytest-dev/pytest-mock) from 3.0.0 to 3.1.0.
- [Release notes](https://github.com/pytest-dev/pytest-mock/releases)
- [Changelog](https://github.com/pytest-dev/pytest-mock/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest-mock/compare/v3.0.0...v3.1.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-20 09:25:17 +00:00
Matthias
431b244f43 Merge branch 'develop' into interface_ordertimeoutcallback 2020-04-19 06:58:44 +02:00
hroff-1902
4bbade245c Merge pull request #3181 from freqtrade/fix/cancel_problems
Fix several cancel order problems
2020-04-18 11:16:59 +03:00
hroff-1902
def8635b6d Merge pull request #3184 from freqtrade/fix/hyperopt_randfailure
Fix random test failure in hyperopt
2020-04-18 09:49:09 +03:00
Matthias
a6bdf686ae Merge pull request #3183 from freqtrade/hroff-1902-patch-1
minor: fix typo in the docs
2020-04-18 06:56:45 +02:00
Matthias
c775d65126 Update typehint for cancel_order 2020-04-18 06:55:25 +02:00
hroff-1902
2f60d9cad4 minor: fix typo in the docs 2020-04-17 23:23:22 +03:00
hroff-1902
e3e38ba68f Merge pull request #3182 from freqtrade/hyperopt_install
document to install hyperopt dependencies
2020-04-17 23:22:18 +03:00
Matthias
506781f410 Reword hyperopt install docs 2020-04-17 20:48:27 +02:00
Matthias
0273539f06 Remove exceptionhandler, this exception is handled in
cancel_with_response
2020-04-17 19:55:53 +02:00
Matthias
55af8bf26f document to install hyperopt dependencies 2020-04-17 19:49:43 +02:00
Matthias
1069cb3616 Use cancel_order_with_result when cancelling orders after timeout 2020-04-17 17:53:56 +02:00
Matthias
5e3e0e819f Add tests for cancel_order_with_result 2020-04-17 17:53:18 +02:00
Matthias
800891a475 Add tests for cancel_order_with_result 2020-04-17 07:18:46 +02:00
Matthias
fc684b0091 Ensure deleting filled is not raising an error if filled does not exist 2020-04-17 06:59:52 +02:00
Matthias
7aba9bc62a Update freqtrade/data/converter.py
Co-Authored-By: hroff-1902 <47309513+hroff-1902@users.noreply.github.com>
2020-04-17 06:22:25 +02:00
hroff-1902
68be239a0e Merge pull request #3146 from freqtrade/buy_order_timeout_logging
Improve handling for buy order cancels
2020-04-16 23:41:45 +03:00
Matthias
1f70fcfa2d Update logmessage 2020-04-16 20:19:34 +02:00
hroff-1902
9364a9c4c4 Merge pull request #3168 from freqtrade/fix_pairlist_caching
Fix pairlist caching
2020-04-16 18:39:00 +03:00
hroff-1902
df79011aba Merge pull request #3112 from freqtrade/trade_state_updates
Trade state updates
2020-04-16 12:05:19 +03:00
Matthias
d36e2cf6ab Fix random test failure in hyperopt 2020-04-16 07:06:47 +02:00
hroff-1902
b07d61f3d9 Merge pull request #3169 from freqtrade/fix_pricefilter
Fix pricefilter
2020-04-15 20:53:59 +03:00
Matthias
05c9a9b530 Merge pull request #3172 from freqtrade/dependabot/pip/develop/ccxt-1.26.32
Bump ccxt from 1.26.12 to 1.26.32
2020-04-15 14:34:38 +02:00
Matthias
9e69287740 Merge pull request #3173 from freqtrade/dependabot/pip/develop/jinja2-2.11.2
Bump jinja2 from 2.11.1 to 2.11.2
2020-04-15 14:25:16 +02:00
dependabot-preview[bot]
16a810a0f6 Bump jinja2 from 2.11.1 to 2.11.2
Bumps [jinja2](https://github.com/pallets/jinja) from 2.11.1 to 2.11.2.
- [Release notes](https://github.com/pallets/jinja/releases)
- [Changelog](https://github.com/pallets/jinja/blob/master/CHANGES.rst)
- [Commits](https://github.com/pallets/jinja/compare/2.11.1...2.11.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-15 12:14:53 +00:00
dependabot-preview[bot]
8314759228 Bump ccxt from 1.26.12 to 1.26.32
Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.26.12 to 1.26.32.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/doc/exchanges-by-country.rst)
- [Commits](https://github.com/ccxt/ccxt/compare/1.26.12...1.26.32)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-15 12:14:35 +00:00
hroff-1902
8b6a7e685e Merge pull request #3133 from freqtrade/backtesting_filenameexpanding
[minor] Fix filename handling with --strategy-list
2020-04-15 12:02:19 +03:00
Matthias
99f3e9ed77 Remove wrong comment 2020-04-15 07:55:15 +02:00
Matthias
33b6c7de5b Add tests for price_one_pip 2020-04-15 07:53:31 +02:00
Matthias
36e714a7b2 Add price_get_one_pip filter 2020-04-15 07:19:27 +02:00
Matthias
ac008a4758 Remove obsolete comment in tests 2020-04-15 06:58:54 +02:00
Matthias
2b7376f6f3 Implement log-filtering for all pairlists 2020-04-14 20:45:30 +02:00
Matthias
1b2bf2c9b6 Add test for cached log method 2020-04-14 20:39:54 +02:00
Matthias
ceca0a659c Simplify cached stuff to only what's needed 2020-04-14 20:25:58 +02:00
Matthias
13ee7a55c4 Fix #3166
Always call _gen_pair_whitelist if volumepairlist is not the first in
the list.
2020-04-14 20:21:30 +02:00
Matthias
5d876ca0a3 Use log-spamprevention methods 2020-04-14 20:21:10 +02:00
Matthias
7c15375f5d Add log_on_refresh - using TTL caching to avoid spamming logs 2020-04-14 20:20:36 +02:00
Matthias
cfe1e4876a Improve testcase for cancel_order_empty 2020-04-14 19:20:47 +02:00
Matthias
c8ccdbcb9a Merge pull request #3150 from freqtrade/version_docker
[minor] have version-detection fall back to freqtrade_commit
2020-04-14 15:53:05 +02:00
hroff-1902
f2b1802666 Merge pull request #3137 from freqtrade/fix_maxdrawdown
[minor] Fix maxdrawdown
2020-04-14 16:03:25 +03:00
Matthias
55a052bcf6 fix typo in comment
Co-Authored-By: hroff-1902 <47309513+hroff-1902@users.noreply.github.com>
2020-04-14 08:05:46 +02:00
Matthias
ddf37ef059 Add test to demonstrate that the dataframe is not changed 2020-04-14 08:02:42 +02:00
hroff-1902
4d80f52db4 Merge pull request #3134 from freqtrade/backtesting_memory
Backtesting memory and dataframe
2020-04-13 23:08:45 +03:00
Matthias
9239c00866 Merge pull request #3159 from freqtrade/dependabot/pip/develop/ccxt-1.26.12
Bump ccxt from 1.25.81 to 1.26.12
2020-04-13 19:25:52 +02:00
dependabot-preview[bot]
a1d2124e45 Bump ccxt from 1.25.81 to 1.26.12
Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.25.81 to 1.26.12.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/doc/exchanges-by-country.rst)
- [Commits](https://github.com/ccxt/ccxt/compare/1.25.81...1.26.12)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-13 12:29:38 +00:00
Matthias
e333716635 Merge pull request #3156 from freqtrade/dependabot/pip/develop/python-telegram-bot-12.6.1
Bump python-telegram-bot from 12.5.1 to 12.6.1
2020-04-13 14:28:25 +02:00
Matthias
3d74bdf039 Merge pull request #3154 from freqtrade/dependabot/pip/develop/cachetools-4.1.0
Bump cachetools from 4.0.0 to 4.1.0
2020-04-13 14:28:13 +02:00
Matthias
afc48782b7 Merge pull request #3155 from freqtrade/dependabot/pip/develop/coveralls-2.0.0
Bump coveralls from 1.11.1 to 2.0.0
2020-04-13 13:47:15 +02:00
dependabot-preview[bot]
a166fc887f Bump python-telegram-bot from 12.5.1 to 12.6.1
Bumps [python-telegram-bot](https://github.com/python-telegram-bot/python-telegram-bot) from 12.5.1 to 12.6.1.
- [Release notes](https://github.com/python-telegram-bot/python-telegram-bot/releases)
- [Changelog](https://github.com/python-telegram-bot/python-telegram-bot/blob/master/CHANGES.rst)
- [Commits](https://github.com/python-telegram-bot/python-telegram-bot/compare/v12.5.1...v12.6.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-13 11:47:14 +00:00
dependabot-preview[bot]
fb0d76b94a Bump cachetools from 4.0.0 to 4.1.0
Bumps [cachetools](https://github.com/tkem/cachetools) from 4.0.0 to 4.1.0.
- [Release notes](https://github.com/tkem/cachetools/releases)
- [Changelog](https://github.com/tkem/cachetools/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/tkem/cachetools/compare/v4.0.0...v4.1.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-13 11:47:12 +00:00
Matthias
e4ec0a9e0c Merge pull request #3158 from freqtrade/dependabot/pip/develop/mkdocs-material-5.1.0
Bump mkdocs-material from 4.6.3 to 5.1.0
2020-04-13 13:46:45 +02:00
Matthias
8885a3b866 Merge pull request #3153 from freqtrade/dependabot/pip/develop/sqlalchemy-1.3.16
Bump sqlalchemy from 1.3.15 to 1.3.16
2020-04-13 13:45:54 +02:00
dependabot-preview[bot]
cfcce0e657 Bump mkdocs-material from 4.6.3 to 5.1.0
Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 4.6.3 to 5.1.0.
- [Release notes](https://github.com/squidfunk/mkdocs-material/releases)
- [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG)
- [Commits](https://github.com/squidfunk/mkdocs-material/compare/4.6.3...5.1.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-13 08:32:29 +00:00
dependabot-preview[bot]
350b4d5e7d Bump coveralls from 1.11.1 to 2.0.0
Bumps [coveralls](https://github.com/coveralls-clients/coveralls-python) from 1.11.1 to 2.0.0.
- [Release notes](https://github.com/coveralls-clients/coveralls-python/releases)
- [Changelog](https://github.com/coveralls-clients/coveralls-python/blob/master/CHANGELOG.md)
- [Commits](https://github.com/coveralls-clients/coveralls-python/compare/1.11.1...2.0.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-13 08:31:00 +00:00
dependabot-preview[bot]
eac4dbcd28 Bump sqlalchemy from 1.3.15 to 1.3.16
Bumps [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) from 1.3.15 to 1.3.16.
- [Release notes](https://github.com/sqlalchemy/sqlalchemy/releases)
- [Changelog](https://github.com/sqlalchemy/sqlalchemy/blob/master/CHANGES)
- [Commits](https://github.com/sqlalchemy/sqlalchemy/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-13 08:30:31 +00:00
Matthias
4ee0cbb575 Reset index to correctly gather index 2020-04-12 10:40:02 +02:00
Matthias
952d2f7513 have version-detection fall back to freqtrade_commit
this allows freqtrade --version to work in docker too.

sample command:
`docker-compose run --rm freqtrade -version`
2020-04-12 09:55:21 +02:00
Matthias
18a6c98a82 Merge pull request #3054 from Fredrik81/progress-bar
Hyperopt: Progressbar during hyperopt
2020-04-12 09:32:52 +02:00
Fredrik81
2c1c1c7f16 Update freqtrade/optimize/hyperopt.py
nice find

Co-Authored-By: Matthias <xmatthias@outlook.com>
2020-04-11 17:42:32 +02:00
Fredrik81
d9e54ab7a4 Update freqtrade/optimize/hyperopt.py
nice find

Co-Authored-By: Matthias <xmatthias@outlook.com>
2020-04-11 17:42:19 +02:00
Matthias
c03f637f5b Improve safe_value_fallback test 2020-04-09 20:01:21 +02:00
Matthias
f39706cabd Fix #3130 - when corder['remaining'] contains none-type 2020-04-09 19:35:27 +02:00
Matthias
cbf5bf6735 Add safe_value_fallback function 2020-04-09 19:34:48 +02:00
Matthias
346e09fed1 Add test verifying that cancel_order with empty remaining is causing the
bug
2020-04-09 19:32:10 +02:00
Fredrik81
4707484a4c Fix issue with colring enabled + styling 2020-04-09 11:42:13 +02:00
Matthias
5cff72a42e Improve logging to ensure which branch is used for buy order cancels 2020-04-09 09:22:38 +02:00
Matthias
68a5e0c51b Merge pull request #3138 from orkblutt/develop
trades history RPC
2020-04-08 08:23:13 +02:00
Matthias
02192f28cd Small stylistic updates 2020-04-08 07:56:21 +02:00
Fredrik81
cdc774549e Merge branch 'develop' into progress-bar 2020-04-08 01:56:43 +02:00
Matthias
492c2799dc Rename rest-client script history to trades 2020-04-07 19:52:34 +02:00
Matthias
296c616ce7 Add test for api-trades call 2020-04-07 19:50:13 +02:00
Matthias
bdc85ec89b Move create_mock_tests to conftest and add test for test_trade-history 2020-04-07 19:42:16 +02:00
Fredrik81
132f5f73f5 Update hyperopt.py 2020-04-07 10:44:18 +02:00
Fredrik81
c95906cfcf Update hyperopt.py 2020-04-07 10:42:15 +02:00
Matthias
9387585756 Merge pull request #3127 from orehunt/max_drawdown_fix_db_plot
use equality instead of index for row lookups
2020-04-06 20:10:23 +02:00
Ork Blutt
200111fef6 fix method return value 2020-04-06 16:07:43 +02:00
Ork Blutt
2444fb9cd6 fix broken tests: remove duplicated value 2020-04-06 15:56:57 +02:00
orehunt
20abb379aa trim trades to the available ohlcv data before plotting profits 2020-04-06 15:54:17 +02:00
Ork Blutt
c1f9595086 fix broken tests 2020-04-06 15:49:24 +02:00
Fredrik81
d5609d4997 Changed back to progressbar2 for better handling of logger.
Coloring still needs some work (bug + what colors to use)
2020-04-06 13:12:32 +02:00
Matthias
4a85422ce0 Merge pull request #3143 from freqtrade/dependabot/pip/develop/pytest-mock-3.0.0
Bump pytest-mock from 2.0.0 to 3.0.0
2020-04-06 11:56:15 +02:00
Matthias
56d22675bc Merge pull request #3142 from freqtrade/dependabot/pip/develop/python-telegram-bot-12.5.1
Bump python-telegram-bot from 12.5 to 12.5.1
2020-04-06 11:55:52 +02:00
Matthias
f72db44bd7 Merge pull request #3141 from freqtrade/dependabot/pip/develop/flask-1.1.2
Bump flask from 1.1.1 to 1.1.2
2020-04-06 11:55:27 +02:00
Ork Blutt
815660c070 fix tests 2020-04-06 11:32:00 +02:00
dependabot-preview[bot]
be76e3c554 Bump python-telegram-bot from 12.5 to 12.5.1
Bumps [python-telegram-bot](https://github.com/python-telegram-bot/python-telegram-bot) from 12.5 to 12.5.1.
- [Release notes](https://github.com/python-telegram-bot/python-telegram-bot/releases)
- [Changelog](https://github.com/python-telegram-bot/python-telegram-bot/blob/master/CHANGES.rst)
- [Commits](https://github.com/python-telegram-bot/python-telegram-bot/compare/v12.5...v12.5.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-06 09:23:21 +00:00
Matthias
914303a7c5 Merge pull request #3140 from freqtrade/dependabot/pip/develop/plotly-4.6.0
Bump plotly from 4.5.4 to 4.6.0
2020-04-06 11:22:39 +02:00
Matthias
27a6787a77 Merge pull request #3139 from freqtrade/dependabot/pip/develop/ccxt-1.25.81
Bump ccxt from 1.25.38 to 1.25.81
2020-04-06 11:21:53 +02:00
dependabot-preview[bot]
0b30cb7f8f Bump pytest-mock from 2.0.0 to 3.0.0
Bumps [pytest-mock](https://github.com/pytest-dev/pytest-mock) from 2.0.0 to 3.0.0.
- [Release notes](https://github.com/pytest-dev/pytest-mock/releases)
- [Changelog](https://github.com/pytest-dev/pytest-mock/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest-mock/compare/v2.0.0...v3.0.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-06 09:11:33 +00:00
dependabot-preview[bot]
144d252e19 Bump flask from 1.1.1 to 1.1.2
Bumps [flask](https://github.com/pallets/flask) from 1.1.1 to 1.1.2.
- [Release notes](https://github.com/pallets/flask/releases)
- [Changelog](https://github.com/pallets/flask/blob/master/CHANGES.rst)
- [Commits](https://github.com/pallets/flask/compare/1.1.1...1.1.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-06 09:10:30 +00:00
dependabot-preview[bot]
5de7ee3bdb Bump plotly from 4.5.4 to 4.6.0
Bumps [plotly](https://github.com/plotly/plotly.py) from 4.5.4 to 4.6.0.
- [Release notes](https://github.com/plotly/plotly.py/releases)
- [Changelog](https://github.com/plotly/plotly.py/blob/master/CHANGELOG.md)
- [Commits](https://github.com/plotly/plotly.py/compare/v4.5.4...v4.6.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-06 09:10:07 +00:00
dependabot-preview[bot]
a1e81a51ef Bump ccxt from 1.25.38 to 1.25.81
Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.25.38 to 1.25.81.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/doc/exchanges-by-country.rst)
- [Commits](https://github.com/ccxt/ccxt/compare/1.25.38...1.25.81)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-06 09:09:54 +00:00
Ork Blutt
6256025c73 various adjustement from PR discussion 2020-04-06 11:00:31 +02:00
Ork Blutt
8555c5b211 fix return value 2020-04-05 17:03:51 +02:00
Ork Blutt
15c45b984d removing whitespace 2020-04-05 16:47:46 +02:00
Ork Blutt
0a14d5ec46 trades history RPC 2020-04-05 16:14:02 +02:00
Matthias
41d5c40f10 Correctly test drawdown plot 2020-04-05 14:44:44 +02:00
Matthias
4e907e2304 Use timeframe_to_prev_date to move trade-date to candle 2020-04-05 14:35:53 +02:00
Matthias
e204170eb6 Fix max_drawdown bug finding low before high! 2020-04-05 14:29:40 +02:00
Matthias
a99c53f1ec Add test showing that high is before low 2020-04-05 14:29:03 +02:00
Matthias
d4dde01140 Add test 2020-04-02 20:23:20 +02:00
Matthias
c465552df4 Update comment to mention .copy() usage 2020-04-02 20:17:54 +02:00
Matthias
de47186263 Use .loc for assignments 2020-04-02 19:31:48 +02:00
Matthias
3fcd531eac Copy dataframe in interfac.py (reduces memory consumption) 2020-04-02 19:30:59 +02:00
Matthias
cf6e6488c7 Fix filename handling with --strategy-list 2020-04-02 17:29:18 +02:00
Matthias
46f1d1f39f Failing test might be incompatibility 2020-04-02 11:54:30 +02:00
Matthias
9d7ad23d42 Fix test leakage 2020-04-02 08:20:50 +02:00
Matthias
eab6c9c5f2 Fix message 2020-04-01 20:50:00 +02:00
Matthias
0d51383b57 Format logmessages correctly 2020-04-01 20:31:21 +02:00
Matthias
5739ee6e15 Add test for trades data conversation 2020-04-01 20:12:28 +02:00
Matthias
437d4cda5d Add test data for trades 2020-04-01 20:12:13 +02:00
Matthias
ba03d96961 Test 5s offset on since 2020-04-01 20:04:36 +02:00
Matthias
ff9caf790b remove trade duplicates in datahandler 2020-04-01 19:45:46 +02:00
Matthias
0506caf986 Implement trades_remove_dulicates 2020-04-01 19:45:38 +02:00
Matthias
59f1a061f7 adapt exchange tests to use lists instead of dicts 2020-04-01 19:45:38 +02:00
Matthias
b95e9fe351 Fix mocks to return correct things 2020-04-01 19:45:38 +02:00
Matthias
bac0eaab03 fix convert to ohlcv 2020-04-01 19:45:35 +02:00
Matthias
d76bb1ccf4 Use List of Lists instead of list of Dicts for trades data 2020-04-01 19:45:21 +02:00
Matthias
1659ddcc5d Add conversion function from fetch_trades to list 2020-04-01 19:45:21 +02:00
Matthias
8bfbbac748 Add default trades columns 2020-04-01 19:45:00 +02:00
hroff-1902
2915917680 Merge pull request #3107 from orehunt/check_dataframe_after_signals
check that the strategy dataframe matches the one given by the bot
2020-03-31 20:08:03 +03:00
orehunt
45fb4d25ab use equality instead of index for row lookups 2020-03-31 18:47:53 +02:00
hroff-1902
92bd550851 Merge pull request #3126 from freqtrade/max_drawdown_percent
[minor] Plot percent correctly
2020-03-30 21:37:23 +03:00
Matthias
54d20cb81c Plot percent correctly 2020-03-30 20:08:07 +02:00
Matthias
9e1f7cb71c Merge pull request #3122 from freqtrade/dependabot/pip/develop/prompt-toolkit-3.0.5
Bump prompt-toolkit from 3.0.4 to 3.0.5
2020-03-30 12:00:47 +02:00
Matthias
f93cc52dcc Merge pull request #3124 from freqtrade/dependabot/pip/develop/ccxt-1.25.38
Bump ccxt from 1.24.83 to 1.25.38
2020-03-30 11:55:26 +02:00
Matthias
372f7f3e88 Merge pull request #3125 from freqtrade/dependabot/pip/develop/python-telegram-bot-12.5
Bump python-telegram-bot from 12.4.2 to 12.5
2020-03-30 11:55:03 +02:00
Matthias
e0861b9381 Merge pull request #3123 from freqtrade/dependabot/pip/develop/flake8-tidy-imports-4.1.0
Bump flake8-tidy-imports from 4.0.0 to 4.1.0
2020-03-30 11:54:19 +02:00
dependabot-preview[bot]
d8d6fe3574 Bump python-telegram-bot from 12.4.2 to 12.5
Bumps [python-telegram-bot](https://github.com/python-telegram-bot/python-telegram-bot) from 12.4.2 to 12.5.
- [Release notes](https://github.com/python-telegram-bot/python-telegram-bot/releases)
- [Changelog](https://github.com/python-telegram-bot/python-telegram-bot/blob/master/CHANGES.rst)
- [Commits](https://github.com/python-telegram-bot/python-telegram-bot/compare/v12.4.2...v12.5)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-30 08:58:54 +00:00
dependabot-preview[bot]
2de10d4c56 Bump ccxt from 1.24.83 to 1.25.38
Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.24.83 to 1.25.38.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/doc/exchanges-by-country.rst)
- [Commits](https://github.com/ccxt/ccxt/compare/1.24.83...1.25.38)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-30 08:58:21 +00:00
dependabot-preview[bot]
7e60e0549a Bump flake8-tidy-imports from 4.0.0 to 4.1.0
Bumps [flake8-tidy-imports](https://github.com/adamchainz/flake8-tidy-imports) from 4.0.0 to 4.1.0.
- [Release notes](https://github.com/adamchainz/flake8-tidy-imports/releases)
- [Changelog](https://github.com/adamchainz/flake8-tidy-imports/blob/master/HISTORY.rst)
- [Commits](https://github.com/adamchainz/flake8-tidy-imports/compare/4.0.0...4.1.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-30 08:57:16 +00:00
dependabot-preview[bot]
7e1719cfc7 Bump prompt-toolkit from 3.0.4 to 3.0.5
Bumps [prompt-toolkit](https://github.com/prompt-toolkit/python-prompt-toolkit) from 3.0.4 to 3.0.5.
- [Release notes](https://github.com/prompt-toolkit/python-prompt-toolkit/releases)
- [Changelog](https://github.com/prompt-toolkit/python-prompt-toolkit/blob/master/CHANGELOG)
- [Commits](https://github.com/prompt-toolkit/python-prompt-toolkit/compare/3.0.4...3.0.5)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-30 08:56:50 +00:00
hroff-1902
3a7199834d Merge pull request #3121 from freqtrade/remove_defaultstrategy
[minor] Remove defaultstrategy occurance from docs
2020-03-30 09:22:02 +03:00
Matthias
f1b92e2569 Improve wording of documentation 2020-03-30 08:11:38 +02:00
Matthias
a5d00ce717 Remove defaultstrategy occurance from docs 2020-03-30 07:56:17 +02:00
Matthias
83cc121b70 Add tsts for assert_df (ensuring it raises when it should) 2020-03-29 11:44:36 +02:00
Matthias
cd2e738e35 Add test for assert error 2020-03-29 11:40:13 +02:00
Matthias
0887a0212c Adjust tests to pass validation 2020-03-29 11:29:31 +02:00
Matthias
78aa658255 Remove unnecessary test (it's a copy of the remaining test) 2020-03-29 11:27:40 +02:00
Matthias
9abfdaaaa2 Merge pull request #3119 from freqtrade/new_release
New release 2020.3
2020-03-28 19:49:39 +01:00
Matthias
da191e4ac8 Version bump 2020.3 2020-03-28 17:45:44 +01:00
Matthias
75de96ae6d Merge branch 'master' into new_release 2020-03-28 17:45:17 +01:00
Yazeed Al Oyoun
ef4426a65c added comma 2020-03-27 03:01:51 +01:00
orehunt
3ef568029f different exception messages 2020-03-26 07:05:30 +01:00
hroff-1902
39ea126698 Merge pull request #3090 from freqtrade/remove_partial_candle_docs
Remove partial candle documentation
2020-03-25 19:55:44 +03:00
Matthias
95011919d3 Remove questionable handling of orders 2020-03-25 11:18:33 +01:00
Matthias
3c1b155e9f Remove filled if amount is modified to suit fee structure 2020-03-25 09:43:04 +01:00
Matthias
1e2fadbc02 Fix failing test 2020-03-25 09:43:04 +01:00
Matthias
f04f606b70 Updateing order amount should use filled - not amount if possible 2020-03-25 09:43:04 +01:00
Matthias
19e5dbddc6 Add filled to all orders 2020-03-25 09:43:04 +01:00
Matthias
f3103be15c Fix test 2020-03-25 09:43:04 +01:00
Matthias
700cedc573 Unify handling of open orders to update_trade_state 2020-03-25 09:43:04 +01:00
Matthias
7c47c6e3bd check for timeouts before exiting positions 2020-03-25 09:43:04 +01:00
Matthias
270ac2e8c1 Add check_order_cancelled_empty method to exchange 2020-03-25 09:43:04 +01:00
Matthias
9c351007f5 Provide reason for cancelled sell order 2020-03-25 09:43:04 +01:00
Matthias
1817e6fbdf Combine real_amount updating into one method 2020-03-25 09:43:04 +01:00
Matthias
91b058cf11 Fix typo in tests 2020-03-25 09:43:04 +01:00
Matthias
53efc56b8a Merge pull request #3096 from freqtrade/max_open_trades
Update max_open_trades documentation
2020-03-25 09:37:40 +01:00
Matthias
6f687c97ce Update docs/configuration.md
Co-Authored-By: hroff-1902 <47309513+hroff-1902@users.noreply.github.com>
2020-03-25 09:24:37 +01:00
hroff-1902
be5b68627c Merge pull request #3093 from freqtrade/trades_abs_profit
Add close_profit_abs column
2020-03-25 11:13:56 +03:00
Matthias
dfac7448d1 fix typo
Co-Authored-By: hroff-1902 <47309513+hroff-1902@users.noreply.github.com>
2020-03-25 08:33:22 +01:00
Matthias
4ea6f9d7eb Merge pull request #3110 from freqtrade/fix_random_test
[minor] Test warnings with filter always on
2020-03-25 08:32:45 +01:00
Matthias
d9a5e1cd48 Update docs/exchanges.md
Co-Authored-By: hroff-1902 <47309513+hroff-1902@users.noreply.github.com>
2020-03-25 08:30:18 +01:00
hroff-1902
65f19fde40 Merge pull request #3097 from freqtrade/parse_config_error
Improve config parse error handling
2020-03-25 09:18:16 +03:00
Matthias
be41981ef0 Test warnings with filter always on 2020-03-24 20:10:15 +01:00
orehunt
0f53e646fd check that the strategy dataframe matches the one given by the bot 2020-03-24 14:08:34 +01:00
Yazeed Al Oyoun
0a87fe76a3 unified language 2020-03-23 11:17:56 +01:00
Matthias
030c487d6b Merge pull request #3100 from freqtrade/dependabot/pip/develop/pandas-1.0.3
Bump pandas from 1.0.2 to 1.0.3
2020-03-23 10:41:06 +01:00
Matthias
51edddcaf6 Merge pull request #3101 from freqtrade/dependabot/pip/develop/ccxt-1.24.83
Bump ccxt from 1.24.31 to 1.24.83
2020-03-23 10:21:46 +01:00
dependabot-preview[bot]
cb1bc5d5ab Bump pandas from 1.0.2 to 1.0.3
Bumps [pandas](https://github.com/pandas-dev/pandas) from 1.0.2 to 1.0.3.
- [Release notes](https://github.com/pandas-dev/pandas/releases)
- [Changelog](https://github.com/pandas-dev/pandas/blob/master/RELEASE.md)
- [Commits](https://github.com/pandas-dev/pandas/compare/v1.0.2...v1.0.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-23 09:15:43 +00:00
Matthias
9b43d9d75e Merge pull request #3099 from freqtrade/dependabot/pip/develop/tabulate-0.8.7
Bump tabulate from 0.8.6 to 0.8.7
2020-03-23 10:15:31 +01:00
Matthias
c3787afa2e Merge pull request #3098 from freqtrade/dependabot/pip/develop/numpy-1.18.2
Bump numpy from 1.18.1 to 1.18.2
2020-03-23 10:14:25 +01:00
dependabot-preview[bot]
98dc4b4ca3 Bump ccxt from 1.24.31 to 1.24.83
Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.24.31 to 1.24.83.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/doc/exchanges-by-country.rst)
- [Commits](https://github.com/ccxt/ccxt/compare/1.24.31...1.24.83)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-23 09:06:41 +00:00
dependabot-preview[bot]
de91e169bc Bump tabulate from 0.8.6 to 0.8.7
Bumps [tabulate](https://github.com/astanin/python-tabulate) from 0.8.6 to 0.8.7.
- [Release notes](https://github.com/astanin/python-tabulate/releases)
- [Changelog](https://github.com/astanin/python-tabulate/blob/master/CHANGELOG)
- [Commits](https://github.com/astanin/python-tabulate/compare/v0.8.6...v0.8.7)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-23 09:05:12 +00:00
dependabot-preview[bot]
f4a69ba5a7 Bump numpy from 1.18.1 to 1.18.2
Bumps [numpy](https://github.com/numpy/numpy) from 1.18.1 to 1.18.2.
- [Release notes](https://github.com/numpy/numpy/releases)
- [Changelog](https://github.com/numpy/numpy/blob/master/doc/HOWTO_RELEASE.rst.txt)
- [Commits](https://github.com/numpy/numpy/compare/v1.18.1...v1.18.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-23 09:04:50 +00:00
Yazeed Al Oyoun
7143cac64f fixed wording of all in cli_options 2020-03-23 09:41:01 +01:00
Matthias
d581b7e2d7 Add fallback if no error could be determined 2020-03-23 07:57:30 +01:00
Matthias
8f7e113d79 Add additional test 2020-03-23 07:54:27 +01:00
Matthias
6c55b40fe0 Add test verifying config printing 2020-03-22 20:15:33 +01:00
Matthias
45aaa8c09d Parse and show relevant configuration section 2020-03-22 20:09:01 +01:00
Matthias
acd402187a Update max_open_trades documentation 2020-03-22 19:39:36 +01:00
hroff-1902
e079d36f84 Merge pull request #3094 from freqtrade/gitignore
[minor] Add example notebook to gitignore again
2020-03-22 18:38:33 +03:00
Matthias
f14c496ce9 Remove calc_close_profit from RPC
This is now possible - but only for closed trades, so certain occurances
need to remain.
2020-03-22 11:28:18 +01:00
Matthias
efd94c84de Add example notebook to gitignore again 2020-03-22 11:22:49 +01:00
Matthias
2c434e9b11 Add close_proit_abs column 2020-03-22 11:16:23 +01:00
Yazeed Al Oyoun
bf96ef08e0 added # flake8: noqa C901 2020-03-22 09:39:38 +01:00
Yazeed Al Oyoun
1976aaf13e initial push 2020-03-22 02:22:06 +01:00
Matthias
e30faf8c8c Remove partial candle documentation
It wasn't working 100% correctly - see #2993
2020-03-21 20:04:05 +01:00
hroff-1902
fb4e9b3938 Merge pull request #3025 from yazeed/minor_create_trade_optimization
minor create_trade() optimization
2020-03-21 10:36:39 +03:00
Matthias
f320c0a410 Merge pull request #3087 from hroff-1902/edge-cosmetics-1
minor: Edge cosmetics
2020-03-20 08:12:21 +01:00
Yazeed Al Oyoun
942792f123 updated as suggested 2020-03-20 05:48:53 +01:00
hroff-1902
3e0ffdce75 Adjust tests 2020-03-20 04:21:17 +03:00
hroff-1902
5f9479b39f Edge import cosmetics 2020-03-20 02:10:44 +03:00
hroff-1902
d1bfe12bde Merge pull request #3086 from freqtrade/ftx_cancel_order
Ftx cancel order
2020-03-19 23:43:29 +03:00
Matthias
5e702f6891 Verify cancel_order returnvalue is a dictionary 2020-03-19 19:44:14 +01:00
Matthias
ecf3a3e070 Add test validating different return values 2020-03-19 19:44:10 +01:00
Matthias
ac6eef6922 Merge pull request #3062 from Fredrik81/plot-trades
Plotting: Fix if no file exists and new skip option
2020-03-18 20:00:50 +01:00
Matthias
3e1bef888a Fix flake8 error 2020-03-18 19:40:13 +01:00
Fredrik81
0920d6fce4 Update freqtrade/data/btanalysis.py
Co-Authored-By: Matthias <xmatthias@outlook.com>
2020-03-18 11:01:09 +01:00
Fredrik81
05250ba661 Update docs/plotting.md
Co-Authored-By: Matthias <xmatthias@outlook.com>
2020-03-18 11:00:33 +01:00
hroff-1902
961ad07dba Merge pull request #3079 from freqtrade/fix_pypi_install
Add template and jupyter files to release
2020-03-18 01:07:53 +03:00
Matthias
4f46fb9bf5 Add template and jupyter files to release 2020-03-17 19:33:18 +01:00
Matthias
50e348b81c Merge pull request #3069 from freqtrade/dependabot/pip/develop/sqlalchemy-1.3.15
Bump sqlalchemy from 1.3.13 to 1.3.15
2020-03-16 10:19:32 +01:00
Matthias
84b27585e6 Merge pull request #3074 from freqtrade/dependabot/pip/develop/mypy-0.770
Bump mypy from 0.761 to 0.770
2020-03-16 10:19:05 +01:00
dependabot-preview[bot]
62d449251c Bump mypy from 0.761 to 0.770
Bumps [mypy](https://github.com/python/mypy) from 0.761 to 0.770.
- [Release notes](https://github.com/python/mypy/releases)
- [Commits](https://github.com/python/mypy/compare/v0.761...v0.770)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-16 08:54:12 +00:00
dependabot-preview[bot]
7a7530d57d Bump sqlalchemy from 1.3.13 to 1.3.15
Bumps [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) from 1.3.13 to 1.3.15.
- [Release notes](https://github.com/sqlalchemy/sqlalchemy/releases)
- [Changelog](https://github.com/sqlalchemy/sqlalchemy/blob/master/CHANGES)
- [Commits](https://github.com/sqlalchemy/sqlalchemy/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-16 08:53:20 +00:00
Matthias
7fb266671d Merge pull request #3073 from freqtrade/dependabot/pip/develop/pytest-5.4.1
Bump pytest from 5.3.5 to 5.4.1
2020-03-16 09:52:58 +01:00
Matthias
addb4b5f8f Merge pull request #3071 from freqtrade/dependabot/pip/develop/ccxt-1.24.31
Bump ccxt from 1.23.81 to 1.24.31
2020-03-16 09:52:10 +01:00
Matthias
d2ab7633ef Merge pull request #3072 from freqtrade/dependabot/pip/develop/plotly-4.5.4
Bump plotly from 4.5.3 to 4.5.4
2020-03-16 09:51:35 +01:00
Matthias
ba1bd2d5a4 Merge pull request #3070 from freqtrade/dependabot/pip/develop/pandas-1.0.2
Bump pandas from 1.0.1 to 1.0.2
2020-03-16 09:51:21 +01:00
dependabot-preview[bot]
3eee0c43a7 Bump pytest from 5.3.5 to 5.4.1
Bumps [pytest](https://github.com/pytest-dev/pytest) from 5.3.5 to 5.4.1.
- [Release notes](https://github.com/pytest-dev/pytest/releases)
- [Changelog](https://github.com/pytest-dev/pytest/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest/compare/5.3.5...5.4.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-16 08:18:33 +00:00
dependabot-preview[bot]
8cfff40fcf Bump plotly from 4.5.3 to 4.5.4
Bumps [plotly](https://github.com/plotly/plotly.py) from 4.5.3 to 4.5.4.
- [Release notes](https://github.com/plotly/plotly.py/releases)
- [Changelog](https://github.com/plotly/plotly.py/blob/master/CHANGELOG.md)
- [Commits](https://github.com/plotly/plotly.py/compare/v4.5.3...v4.5.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-16 08:18:07 +00:00
dependabot-preview[bot]
0b34175752 Bump ccxt from 1.23.81 to 1.24.31
Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.23.81 to 1.24.31.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/doc/exchanges-by-country.rst)
- [Commits](https://github.com/ccxt/ccxt/compare/1.23.81...1.24.31)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-16 08:17:53 +00:00
dependabot-preview[bot]
e8a92cb313 Bump pandas from 1.0.1 to 1.0.2
Bumps [pandas](https://github.com/pandas-dev/pandas) from 1.0.1 to 1.0.2.
- [Release notes](https://github.com/pandas-dev/pandas/releases)
- [Changelog](https://github.com/pandas-dev/pandas/blob/master/RELEASE.md)
- [Commits](https://github.com/pandas-dev/pandas/compare/v1.0.1...v1.0.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-16 08:17:21 +00:00
Fredrik81
06198c0028 Missed configuration.py 2020-03-15 21:27:45 +01:00
Fredrik81
8c33e07dc6 Update based on comments 2020-03-15 21:20:32 +01:00
hroff-1902
0847652df0 Merge pull request #3066 from freqtrade/backtest_small_improvements
Backtest small improvements
2020-03-15 20:20:15 +03:00
Matthias
3d4664c2a6 Remove unnecessary import 2020-03-15 15:40:12 +01:00
Matthias
e1b08ad76c Add docstring to store_backtest_result 2020-03-15 15:38:26 +01:00
Matthias
fe50a0f3a1 Move test for store_bt_results to optimize_reports 2020-03-15 15:36:53 +01:00
Matthias
e95665ceca Make backtestresult storing independent from printing 2020-03-15 15:36:23 +01:00
Matthias
a13d581658 Move backtest-result visualization out of backtesting class 2020-03-15 15:17:53 +01:00
Matthias
6106d59e1a Move store_backtest_results to optimize_reports 2020-03-15 15:17:35 +01:00
Matthias
328dbd3930 Remove unnecessary parameter to generate_text_table_sell_reason 2020-03-15 15:04:48 +01:00
Matthias
a1bbeaa668 Merge branch 'develop' into interface_ordertimeoutcallback 2020-03-15 14:56:14 +01:00
hroff-1902
57ff3ff450 Merge branch 'develop' into plot-trades 2020-03-15 13:31:00 +03:00
hroff-1902
3b89e7d393 Merge pull request #3064 from freqtrade/exportfilename_path
convert exportfilename to Path when config parsing
2020-03-15 13:12:19 +03:00
Matthias
0f1640bed4 convert exportfilename to Path when config parsing 2020-03-15 09:39:45 +01:00
Fredrik81
2c0980aa3a Tests 2020-03-15 00:09:08 +01:00
Fredrik81
cf7e80f45d Docs and logging 2020-03-14 23:55:13 +01:00
Fredrik81
27faf12fde Fix if no file exists 2020-03-14 22:15:03 +01:00
hroff-1902
5d1b1573b7 Merge pull request #3061 from freqtrade/edge_test_warning
Edge test warning
2020-03-14 13:51:05 +03:00
Matthias
308d8fe2a9 Remove deprecation warnings due to date conversion 2020-03-14 10:44:46 +01:00
Matthias
c56cbc21b1 Remove indexing warning in edge 2020-03-14 10:42:01 +01:00
hroff-1902
5bfbf92e69 Merge pull request #3032 from hroff-1902/no-ticker-2
Do not use "ticker" where it's not a ticker
2020-03-13 21:10:29 +03:00
hroff-1902
59fadabb5b Fix merging 2020-03-13 20:26:14 +03:00
hroff-1902
51f52c8609 Merge branch 'develop' into no-ticker-2 2020-03-13 16:43:52 +03:00
hroff-1902
a7ed51c642 return back the name of the hyperopt data file 2020-03-13 04:04:23 +03:00
hroff-1902
ddfe5b5f1c dataframe -> df_analyzed in plotting 2020-03-13 04:00:24 +03:00
hroff-1902
b2952cd42a remove redundant dict 2020-03-13 03:58:16 +03:00
hroff-1902
ebb0187f40 dataframe -> df_analyzed in backtesting and edge 2020-03-13 03:54:56 +03:00
hroff-1902
c6bb32d419 Merge pull request #3045 from orehunt/jsondatahandler-ohlc-respect-timerange
check again for emptiness after trimming dataframe
2020-03-12 22:46:31 +03:00
Matthias
6f67b8d9b9 iCheck after clean_dataframe, too 2020-03-12 19:50:46 +01:00
Fredrik81
5737139979 Small fix 2020-03-12 16:47:09 +01:00
Fredrik81
1a59fc11be doh 2020-03-12 02:36:18 +01:00
Fredrik81
df1ae565dc clean-up 2020-03-12 02:26:41 +01:00
Fredrik81
9387ed923c fix for empty lines 2020-03-12 02:07:50 +01:00
Fredrik81
40a413c524 More remove of progressbar2 2020-03-11 22:50:23 +01:00
Fredrik81
755763ec42 Update requirements 2020-03-11 22:43:27 +01:00
Fredrik81
81cbb92556 Switch to TQDM 2020-03-11 22:30:36 +01:00
Matthias
129a88d5da Extract emptyness check to it's own method 2020-03-11 19:53:28 +01:00
Yazeed Al Oyoun
d752586b32 added test 2020-03-11 17:44:03 +01:00
Yazeed Al Oyoun
1395f65872 meh 2020-03-11 17:29:22 +01:00
Yazeed Al Oyoun
c442913feb final 2020-03-11 17:28:03 +01:00
Yazeed Al Oyoun
ba596af636 final? 2020-03-11 17:26:57 +01:00
Yazeed Al Oyoun
65a305c9ef fixed log message 2020-03-11 17:24:15 +01:00
Yazeed Al Oyoun
d25cf1395b fixed log message 2020-03-11 17:23:22 +01:00
Yazeed Al Oyoun
2e679ee2eb fixed log message 2020-03-11 17:22:21 +01:00
Yazeed Al Oyoun
dbe3c8654e fixed all, i hope 2020-03-11 17:16:21 +01:00
Yazeed Al Oyoun
7754742459 fix tests 2020-03-11 17:13:39 +01:00
Yazeed Al Oyoun
d667acb308 fixed typo 2020-03-11 17:10:57 +01:00
Yazeed Al Oyoun
a82cdf0add fixed test 2020-03-11 17:04:51 +01:00
Yazeed Al Oyoun
a85d17327b fix 2020-03-11 16:54:27 +01:00
Yazeed Al Oyoun
d239e99904 removed old code from create_trade 2020-03-11 16:49:37 +01:00
Yazeed Al Oyoun
4e45abbf13 added return false, false 2020-03-11 16:44:45 +01:00
Yazeed Al Oyoun
54bde6ac11 verify date on new candle before producing signal 2020-03-11 16:34:23 +01:00
hroff-1902
ed5b0ee36b Merge pull request #3053 from freqtrade/hyperopt_default_volume
Hyperopt - add default volume > 0 filter
2020-03-11 08:17:54 +03:00
Fredrik81
3a8b68c0fd Initial work on progressbar 2020-03-10 20:30:36 +01:00
Matthias
2b1c146940 Add default volume > 0 filter 2020-03-10 16:05:33 +01:00
Matthias
84f0bb9a5d Merge pull request #3051 from hroff-1902/fix-sortino
Adjust handling of zero stdev in loss functions
2020-03-10 13:10:39 +01:00
Matthias
14e7f0bb13 Merge pull request #3049 from hroff-1902/hyperopt-no-unlimited
Do not allow unlimited stake_amount for hyperopt
2020-03-10 11:46:22 +01:00
hroff-1902
73c19da4b9 Adjust handling of zero stdev in loss functions 2020-03-10 13:44:16 +03:00
hroff-1902
1b6e77649a Add test for hyperopt 2020-03-10 12:42:31 +03:00
hroff-1902
81b6a950ac Adjust test for backtesting 2020-03-10 12:42:11 +03:00
hroff-1902
f7ad6c20c7 Do not allow unlimited stake_amount for hyperopt 2020-03-10 12:41:23 +03:00
hroff-1902
c49fefc94d Merge pull request #3044 from freqtrade/default_max_order_book
order_book_max - change example setting
2020-03-10 11:17:27 +03:00
Matthias
a046c4829c Apply suggestions from code review
Co-Authored-By: hroff-1902 <47309513+hroff-1902@users.noreply.github.com>
2020-03-10 09:03:44 +01:00
hroff-1902
52d89eadde Merge pull request #3021 from Fredrik81/print-csv
Hyperopt: Add export CSV-file option
2020-03-10 10:46:58 +03:00
hroff-1902
f148b5f734 cosmetics in lambdas 2020-03-10 10:38:37 +03:00
hroff-1902
19a9782a40 Merge pull request #3040 from freqtrade/pairlist_message
reduce Pairlist message warning level
2020-03-10 10:26:19 +03:00
Matthias
42038da7f1 Update docs/configuration.md
Co-Authored-By: hroff-1902 <47309513+hroff-1902@users.noreply.github.com>
2020-03-10 07:57:25 +01:00
Fredrik81
bd158eefd2 Fixed loggin 2020-03-10 03:02:52 +01:00
hroff-1902
df2c8b5f32 Merge pull request #3042 from freqtrade/hyperopt_sample_comment
Update hyperopt samples docstring
2020-03-09 23:25:36 +03:00
Fredrik81
2f5fc731bb Removed overwrite option 2020-03-09 18:53:30 +01:00
orehunt
3eaae4661d check again for emptiness after trimming dataframe 2020-03-09 17:51:21 +01:00
Matthias
e0afbcd4af Additional warning about order_book-max 2020-03-09 17:41:44 +01:00
Matthias
74a17c7b7b Clarify warning in the documentation 2020-03-09 17:38:35 +01:00
Matthias
5da63d399b Reduce default order_book_max to 1 2020-03-09 17:38:25 +01:00
Matthias
856ba203d9 Update hyperopt samples docstring 2020-03-09 15:46:46 +01:00
Matthias
c049651784 whitelist_for_active_markets should not remove blacklisted items 2020-03-09 11:30:28 +01:00
Matthias
5cbf325fda Allow different loglevels for message 2020-03-09 11:30:13 +01:00
Matthias
bf2dc90c3c Merge pull request #3039 from freqtrade/dependabot/pip/develop/plotly-4.5.3
Bump plotly from 4.5.2 to 4.5.3
2020-03-09 09:58:46 +01:00
Matthias
964d97da17 Merge pull request #3038 from freqtrade/dependabot/pip/develop/scikit-learn-0.22.2.post1
Bump scikit-learn from 0.22.2 to 0.22.2.post1
2020-03-09 09:57:46 +01:00
Matthias
5c190f82e4 Merge pull request #3035 from freqtrade/dependabot/pip/develop/wrapt-1.12.1
Bump wrapt from 1.12.0 to 1.12.1
2020-03-09 09:54:23 +01:00
Matthias
f125709954 Merge pull request #3037 from freqtrade/dependabot/pip/develop/prompt-toolkit-3.0.4
Bump prompt-toolkit from 3.0.3 to 3.0.4
2020-03-09 09:53:53 +01:00
Matthias
a3b0b8a7c5 Merge pull request #3036 from freqtrade/dependabot/pip/develop/ccxt-1.23.81
Bump ccxt from 1.23.30 to 1.23.81
2020-03-09 09:45:49 +01:00
dependabot-preview[bot]
4cc0d3dbc4 Bump plotly from 4.5.2 to 4.5.3
Bumps [plotly](https://github.com/plotly/plotly.py) from 4.5.2 to 4.5.3.
- [Release notes](https://github.com/plotly/plotly.py/releases)
- [Changelog](https://github.com/plotly/plotly.py/blob/master/CHANGELOG.md)
- [Commits](https://github.com/plotly/plotly.py/compare/v4.5.2...v4.5.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-09 08:35:16 +00:00
dependabot-preview[bot]
23127b8da0 Bump scikit-learn from 0.22.2 to 0.22.2.post1
Bumps [scikit-learn](https://github.com/scikit-learn/scikit-learn) from 0.22.2 to 0.22.2.post1.
- [Release notes](https://github.com/scikit-learn/scikit-learn/releases)
- [Commits](https://github.com/scikit-learn/scikit-learn/compare/0.22.2...0.22.2.post1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-09 08:34:33 +00:00
dependabot-preview[bot]
46763e148b Bump prompt-toolkit from 3.0.3 to 3.0.4
Bumps [prompt-toolkit](https://github.com/prompt-toolkit/python-prompt-toolkit) from 3.0.3 to 3.0.4.
- [Release notes](https://github.com/prompt-toolkit/python-prompt-toolkit/releases)
- [Changelog](https://github.com/prompt-toolkit/python-prompt-toolkit/blob/master/CHANGELOG)
- [Commits](https://github.com/prompt-toolkit/python-prompt-toolkit/compare/3.0.3...3.0.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-09 08:33:59 +00:00
dependabot-preview[bot]
09c25faa51 Bump ccxt from 1.23.30 to 1.23.81
Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.23.30 to 1.23.81.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ccxt/ccxt/compare/1.23.30...1.23.81)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-09 08:33:37 +00:00
dependabot-preview[bot]
c7b2f173eb Bump wrapt from 1.12.0 to 1.12.1
Bumps [wrapt](https://github.com/GrahamDumpleton/wrapt) from 1.12.0 to 1.12.1.
- [Release notes](https://github.com/GrahamDumpleton/wrapt/releases)
- [Changelog](https://github.com/GrahamDumpleton/wrapt/blob/develop/docs/changes.rst)
- [Commits](https://github.com/GrahamDumpleton/wrapt/compare/1.12.0...1.12.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-09 08:32:42 +00:00
Fredrik81
cb419614cd Spelling miss 2020-03-08 23:00:21 +01:00
Fredrik81
4ad93ed6bb Changed output for null columns 2020-03-08 22:41:05 +01:00
hroff-1902
3208faf7ed Do not use ticker where it's not a ticker 2020-03-08 20:47:02 +03:00
hroff-1902
77944175e2 Merge pull request #3030 from freqtrade/coingekko
Coingekko replacing coinmarketcap
2020-03-07 20:42:08 +03:00
Matthias
281cf577d1 Remove unsupported FIAT 2020-03-07 17:03:31 +01:00
Matthias
d51bb9acfb Update conda environment file 2020-03-07 13:11:36 +01:00
Matthias
1b3038390a Update comment 2020-03-07 13:05:46 +01:00
Matthias
acea49beaf Fix tests / test mocks 2020-03-07 13:01:26 +01:00
Matthias
df5adb6ca5 Exchange coingekko for coinmarketcap 2020-03-07 11:53:08 +01:00
Matthias
93fc14d726 Exchange dependencies to coingekko 2020-03-07 11:52:02 +01:00
Matthias
847df7b70c Merge pull request #3026 from yazeed/add_default_to_ignore_roi_if_buy_signal
default for ignore_roi_if_buy_signal in freqtradebot.py
2020-03-06 19:35:41 +01:00
Matthias
bbdbc59fd1 Merge pull request #3024 from yazeed/unifying_get_buy_sell_rate_msgs
consistency between get_sell_rate with get_buy_rate
2020-03-06 19:32:31 +01:00
hroff-1902
7b0009b38d Merge pull request #3029 from freqtrade/travis_failure
Fix travis build failure
2020-03-06 18:20:19 +03:00
Matthias
78908e2496 Fix travis build failure 2020-03-06 15:57:26 +01:00
Yazeed Al Oyoun
b8d05d8751 found instance of config get without default 2020-03-05 22:14:05 +01:00
Yazeed Al Oyoun
0587256733 minor create_trade() optimization 2020-03-05 21:57:01 +01:00
Yazeed Al Oyoun
4474482307 unifying get_sell_rate with get_buy_rate 2020-03-05 20:44:29 +01:00
Fredrik81
f0d56e23a3 PEP8 fix 2020-03-05 19:58:01 +01:00
Fredrik81
91db75a707 Added tests and updated doc 2020-03-05 19:43:43 +01:00
Matthias
459f1aa130 Merge pull request #2989 from hroff-1902/no-percent-1
No "percent" where "ratio" is to be used
2020-03-05 16:20:13 +01:00
hroff-1902
eee5727426 Adjust webhook docs 2020-03-05 17:44:38 +03:00
hroff-1902
7a3660cd6b Adjust webhook tests 2020-03-05 17:44:21 +03:00
hroff-1902
34093d1208 Merge branch 'develop' into no-percent-1 2020-03-05 14:27:12 +03:00
hroff-1902
bcec46c2aa Merge pull request #3019 from freqtrade/fix_testfailure
Fix random CI failure
2020-03-05 10:56:25 +03:00
Matthias
97b194a454 Throttle may take longer than .10s on slow machines
This made this test fluky on windows CI ...
2020-03-05 06:20:36 +01:00
Fredrik81
7606d814fa Initial work on csv-file export. Missing docs and tests 2020-03-05 01:58:33 +01:00
hroff-1902
57523d58df Merge pull request #2994 from Fredrik81/hyperopt-table
Added dynamic print table function to hyperopt
2020-03-04 23:44:53 +03:00
Fredrik81
090d1e8a70 Alignment and cleanups 2020-03-04 20:51:09 +01:00
hroff-1902
33c1c8f726 Merge pull request #3018 from freqtrade/max_drawdown
Max drawdown in plot-profit
2020-03-04 20:42:57 +03:00
hroff-1902
dea4ef957e Merge pull request #2982 from freqtrade/rate_side_optional
Rate side configurable
2020-03-04 16:07:08 +03:00
Matthias
2f54aff0ce Improve documentation wording for price sides 2020-03-04 06:44:59 +01:00
Matthias
8de35e1c83 Documentation suggestions from Review
Co-Authored-By: hroff-1902 <47309513+hroff-1902@users.noreply.github.com>
2020-03-04 06:40:19 +01:00
Fredrik81
7652a2bb95 Updated table layout and aligning better for hyperopt 2020-03-04 00:10:47 +01:00
Matthias
9d8970a76b Add test and formatting to drawdown 2020-03-03 20:23:44 +01:00
Matthias
53dcb5d5ed Fix logging expression 2020-03-03 19:36:03 +01:00
hroff-1902
4513edf450 Merge pull request #3017 from freqtrade/ci_windows_38
CI on windows with python 3.8
2020-03-03 17:21:55 +03:00
Matthias
9bebc9ba76 Fix powershell comparison 2020-03-03 09:40:41 +01:00
Matthias
720ed0eddd Remove flucky test assert 2020-03-03 09:36:04 +01:00
Matthias
d9e83cc4e2 Run CI on windows python 3.8 2020-03-03 09:33:08 +01:00
Matthias
33a63562cb make drawdown function less restrictive 2020-03-03 07:23:38 +01:00
Matthias
88e7cab5b9 Add max_drawdown to profit plot 2020-03-03 07:21:14 +01:00
Matthias
e050511ddc Add test for max_drawdown calculation 2020-03-03 07:20:41 +01:00
Matthias
3479f7d986 Add max_drawdown function 2020-03-03 07:15:03 +01:00
Fredrik81
4aca8d7fcc PEP8 fix 2020-03-03 01:35:18 +01:00
Fredrik81
399c419163 Changed table formating. Adding some code to align hyperopt table generation. WIP 2020-03-03 01:14:56 +01:00
hroff-1902
82bdd01843 Merge pull request #3003 from Fredrik81/cores-and-arguments
Hyperopt: fix number of CPU cores, jobs and total epochs
2020-03-03 02:12:21 +03:00
hroff-1902
52cd5f9127 Better use enumerate: more correct and more pythonic 2020-03-03 01:42:25 +03:00
hroff-1902
45c9496792 Do not run optimizer for 'jobs' epochs for the last iteration 2020-03-03 01:33:11 +03:00
hroff-1902
a7d4755859 optimize calculation of current_jobs 2020-03-03 01:20:14 +03:00
hroff-1902
92425642da Fix config_jobs 2020-03-03 01:00:24 +03:00
Fredrik81
0e4862b0c8 Added logging if argument is miss-configured 2020-03-02 22:58:54 +01:00
Fredrik81
7713cfeb79 Corrected logic for -j + and - argument 2020-03-02 21:02:32 +01:00
Matthias
6e2290c4f0 Allow last to be empty -
closes #3005
2020-03-02 20:05:54 +01:00
Matthias
35ef065d7b Merge pull request #3012 from freqtrade/dependabot/pip/develop/scikit-learn-0.22.2
Bump scikit-learn from 0.22.1 to 0.22.2
2020-03-02 10:54:20 +01:00
Matthias
dae04e2752 Merge pull request #3011 from freqtrade/dependabot/pip/develop/ccxt-1.23.30
Bump ccxt from 1.22.95 to 1.23.30
2020-03-02 10:50:25 +01:00
Matthias
4605bdad29 Merge pull request #3013 from freqtrade/dependabot/pip/develop/plotly-4.5.2
Bump plotly from 4.5.1 to 4.5.2
2020-03-02 10:49:55 +01:00
dependabot-preview[bot]
a17f3fb8be Bump plotly from 4.5.1 to 4.5.2
Bumps [plotly](https://github.com/plotly/plotly.py) from 4.5.1 to 4.5.2.
- [Release notes](https://github.com/plotly/plotly.py/releases)
- [Changelog](https://github.com/plotly/plotly.py/blob/master/CHANGELOG.md)
- [Commits](https://github.com/plotly/plotly.py/compare/v4.5.1...v4.5.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-02 08:39:25 +00:00
dependabot-preview[bot]
485075b8f2 Bump scikit-learn from 0.22.1 to 0.22.2
Bumps [scikit-learn](https://github.com/scikit-learn/scikit-learn) from 0.22.1 to 0.22.2.
- [Release notes](https://github.com/scikit-learn/scikit-learn/releases)
- [Commits](https://github.com/scikit-learn/scikit-learn/compare/0.22.1...0.22.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-02 08:38:36 +00:00
dependabot-preview[bot]
e204e3277b Bump ccxt from 1.22.95 to 1.23.30
Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.22.95 to 1.23.30.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ccxt/ccxt/compare/1.22.95...1.23.30)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-02 08:37:58 +00:00
hroff-1902
db1227f279 Merge pull request #3007 from yazeed/hyperopt_interface_sort
hyperopt_interface.py code styling
2020-03-02 02:22:44 +03:00
Yazeed Al Oyoun
77b7f95efb simple code styling fixes 2020-03-02 00:14:01 +01:00
hroff-1902
8475baba4e Merge pull request #2995 from freqtrade/stake_curr_empty
Allow Stake currency empty when using download-data
2020-03-02 00:53:09 +03:00
hroff-1902
e20b06408c Merge pull request #3000 from freqtrade/fix/jupyter_example
[minor] Fix jupyter notebook example
2020-03-02 00:49:21 +03:00
Fredrik81
f08c7eedf1 Changed jobs to be dynamic for last loop 2020-03-01 14:35:13 +01:00
Fredrik81
75b4f1a442 Fix alignment of higher values 2020-03-01 14:12:27 +01:00
Matthias
0f2d771634 update docs 2020-03-01 09:46:12 +01:00
Matthias
4d8430c687 Use string typehints to avoid import errors 2020-03-01 09:43:20 +01:00
Matthias
cd54875f03 Add documentation link to advanced functions 2020-03-01 09:40:07 +01:00
Matthias
791148176c Add callback functions to new-strategy --template advanced 2020-03-01 09:35:53 +01:00
Matthias
7736f8d018 Add tests for fallkback 2020-03-01 09:34:42 +01:00
Matthias
eda77aeec8 Add render_template fallback 2020-03-01 09:30:30 +01:00
Fredrik81
379275e2d6 Updated tests 2020-03-01 03:24:04 +01:00
Fredrik81
267416eced Changed test for new table printing 2020-03-01 03:11:00 +01:00
Fredrik81
e89fd33229 Fix for more arguments 2020-02-29 23:57:15 +01:00
Fredrik81
7a4edb1cd8 Fix: When total epochs is less than cpu cores 2020-02-29 23:41:59 +01:00
hroff-1902
0a2f854302 Merge pull request #3001 from freqtrade/doc-nonce
[minor] Add note about InvalidNonce to documentation
2020-03-01 01:28:34 +03:00
Fredrik81
23ae0653bd Changed table output to match hyperopt-list command 2020-02-29 23:24:08 +01:00
Matthias
60f04cff4d Simplify expression 2020-02-29 20:41:03 +01:00
Matthias
54c07e5e62 Merge pull request #2997 from freqtrade/new_release
New release 2020.02
2020-02-29 19:33:12 +01:00
Matthias
8fce82b412 Merge pull request #3002 from freqtrade/kraken_supported
Add official support for Kraken
2020-02-29 19:32:43 +01:00
Matthias
18d724f7a1 Adjust wording of supported exchanges 2020-02-29 19:22:36 +01:00
Matthias
d7373be553 Add official support for Kraken 2020-02-29 16:58:22 +01:00
Matthias
4c39f36084 Add note about InvalidNonce to documentation 2020-02-29 16:36:33 +01:00
hroff-1902
415f1dc25b Merge pull request #2999 from freqtrade/release_docs
[minor] improve and correct release documentation
2020-02-29 18:31:11 +03:00
hroff-1902
293d1fca5c Merge pull request #2998 from freqtrade/try_fix_randomfailure
Try fix random testfailure
2020-02-29 18:29:54 +03:00
Matthias
848054d140 Fix jupyter notebook example -
generate_candlestick_graph() needs a filtered pairlist, not a list
containing all pairs
2020-02-29 15:53:54 +01:00
Matthias
f25adf3b12 improve and correct release documentation 2020-02-29 15:48:36 +01:00
Matthias
9336d8ee02 Try fix random testfailure 2020-02-29 15:44:45 +01:00
Matthias
a6b48f7366 Version bump 2020.02 2020-02-29 15:16:55 +01:00
Matthias
c6fd6a0fbf Merge branch 'master' into new_release 2020-02-29 15:16:45 +01:00
Matthias
60579485e5 fix empty stake currency problem 2020-02-29 14:56:36 +01:00
Matthias
5277d71913 Add test for empty stake-currency 2020-02-29 14:56:04 +01:00
hroff-1902
0528af1700 Merge pull request #2879 from freqtrade/sortino_hyperopt_loss
Sortino hyperopt loss
2020-02-29 11:36:27 +03:00
Fredrik81
349aa2f957 Added dynamic print table function to hyperopt 2020-02-28 21:54:04 +01:00
hroff-1902
bee8e92f02 Final changes, use sqrt i.o. statistics.pstdev 2020-02-28 23:50:25 +03:00
hroff-1902
e411717de9 No percent where ratio is to be used 2020-02-28 12:36:39 +03:00
Matthias
ac7fa8252b Merge pull request #2985 from Fredrik81/pretty-backtesting
Changed table style of backtesting and alignment of headers
2020-02-28 06:20:34 +01:00
hroff-1902
866c51acc5 Merge pull request #2988 from freqtrade/fix/dryrun
run-mode not correctly set when using --dry-run
2020-02-27 22:09:18 +03:00
Matthias
a55964a622 we Must parse --dry-run before setting run-mode 2020-02-27 19:36:54 +01:00
Matthias
5a02026f82 Add test validating behaviour 2020-02-27 19:35:58 +01:00
hroff-1902
c0001fcb8c Merge pull request #2987 from Fredrik81/table-style
Minor change to standardize table style.
2020-02-27 18:30:14 +03:00
hroff-1902
c1c0b59223 Merge pull request #2974 from freqtrade/enhance_roi_doc
Add timeframe_to_minutes to ROI documentation
2020-02-27 18:18:24 +03:00
Fredrik81
15e59654d9 Minor change to standardize table style.
This PR will target commands.
2020-02-27 16:10:45 +01:00
Matthias
e5a9c81412 Add 0 entry to enhanced ROI example 2020-02-27 14:04:12 +01:00
Fredrik81
55d471190a Changed table style of backtesting and alignment of headers 2020-02-27 13:28:28 +01:00
hroff-1902
90065843a5 Merge pull request #2983 from freqtrade/runmode
Logging should be initialized first
2020-02-27 12:22:37 +03:00
Matthias
8623300d15 Merge pull request #2984 from freqtrade/dependabot/docker/python-3.8.2-slim-buster
Bump python from 3.8.1-slim-buster to 3.8.2-slim-buster
2020-02-27 08:26:20 +01:00
dependabot-preview[bot]
bbb438bd40 Bump python from 3.8.1-slim-buster to 3.8.2-slim-buster
Bumps python from 3.8.1-slim-buster to 3.8.2-slim-buster.

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-27 06:18:09 +00:00
Matthias
e5ec97495d Logging should be initialized first 2020-02-27 07:01:00 +01:00
hroff-1902
893d9cde8d Merge pull request #2943 from Fredrik81/add-print-table
Added function to print hyperopt-list as table using tabulate
2020-02-27 05:22:41 +03:00
Matthias
b6839289ec Add price_side to sample config files 2020-02-26 20:03:13 +01:00
Matthias
0fea3a7ea7 Some final polish to configurable_side 2020-02-26 19:50:17 +01:00
Matthias
3c5e716d8f Update some documentation regarding price_side 2020-02-26 19:39:12 +01:00
Matthias
8edc3eb5fb Use generator to generate sell price scaffold testing 2020-02-26 19:39:12 +01:00
Matthias
e1cb6f4ae3 fix and improve tests in test_freqtradebot 2020-02-26 19:39:12 +01:00
Matthias
e7b9891335 Adapt rpc tests to corrected price side 2020-02-26 19:39:12 +01:00
Matthias
e4b2949188 Change buy_rate calculation to use price_side 2020-02-26 19:39:12 +01:00
Matthias
5f71232038 Refactor get_buy_rate to use rate variable 2020-02-26 19:39:12 +01:00
Matthias
de48a697b0 Use price_side for get_sell_rate 2020-02-26 19:39:12 +01:00
Matthias
f91d7beaa1 Fix constants wrong parenteses 2020-02-26 19:39:12 +01:00
hroff-1902
30b0911645 Merge pull request #2976 from gaugau3000/doc_update_config_section
[Doc update config section] - [minor]
2020-02-26 12:45:06 +03:00
hroff-1902
e6d003f8f2 Merge pull request #2973 from freqtrade/support_non_pairs
Support non pairs
2020-02-26 12:20:45 +03:00
hroff-1902
297e63de0a Merge pull request #2970 from freqtrade/install_docs
simplify installation documentation
2020-02-26 11:48:51 +03:00
Matthias
8ae0f99a96 Remove duplicate section 2020-02-26 09:05:48 +01:00
Matthias
a29653b510 Wording changes to install docs
Co-Authored-By: hroff-1902 <47309513+hroff-1902@users.noreply.github.com>
2020-02-26 08:59:27 +01:00
Matthias
f38accb77b Return empty string if no quote / base currency can be found 2020-02-26 07:09:54 +01:00
Matthias
4e218be51d Don't use markets[pair]['quote'] 2020-02-26 07:08:09 +01:00
Matthias
1021ffa1c3 Apply suggestions from code review
Add suggested changes to comments

Co-Authored-By: hroff-1902 <47309513+hroff-1902@users.noreply.github.com>
2020-02-26 07:00:08 +01:00
Matthias
1e869b86f2 Update checkout aciton to v2
https://github.com/actions/checkout/issues/23 suggests that it's fixed in v2.
2020-02-26 06:54:04 +01:00
Matthias
af4469f073 Convert to str to avoid errors 2020-02-26 06:43:15 +01:00
Matthias
df49b98c25 Implement wording-changes
Co-Authored-By: hroff-1902 <47309513+hroff-1902@users.noreply.github.com>
2020-02-26 06:40:13 +01:00
hroff-1902
c9b6bb1229 Merge pull request #2954 from freqtrade/rate_caching
Improve and fix buy / sell Rate caching
2020-02-26 04:27:39 +03:00
hroff-1902
5a900858d8 Merge branch 'develop' into rate_caching 2020-02-26 04:04:20 +03:00
hroff-1902
ce2e039e5f Update docs/configuration.md 2020-02-26 01:58:32 +03:00
gaugau3000
76c449c0c2 volume_pair_list_extra_doc_infos 2020-02-25 19:45:23 +00:00
gaugau3000
7d7318a3ea fix_wrong_order_type 2020-02-25 19:41:20 +00:00
Matthias
a030ce9348 Reformat if condition 2020-02-25 20:22:59 +01:00
Matthias
d44f6651c4 Fix small parenteses bug 2020-02-25 19:55:23 +01:00
Matthias
cfc22577be Add timeframe_to_minutes to ROI documentation 2020-02-25 16:54:48 +01:00
Matthias
47e46bf205 Add second example using dataprovider and current price 2020-02-25 14:48:46 +01:00
Matthias
31ac4598ba Fix last occurances of pair splitting 2020-02-25 07:16:37 +01:00
Matthias
d34515a5de Remove constraint to have pairs in base/quote format 2020-02-25 07:04:20 +01:00
Matthias
e8eaa8920e Use get_base_currency instead of splitting by / 2020-02-25 07:01:31 +01:00
Matthias
e9448dc5e2 Add tsts for quote and base currency 2020-02-25 07:01:23 +01:00
Fredrik81
cd7efde6c0 Fixed coloring so it's only targeting the values not the table borders 2020-02-24 22:06:21 +01:00
Matthias
61037ab7b8 Implement get_pair_base_curr and get_pair_quote_curr 2020-02-24 21:50:27 +01:00
Matthias
3e4f663418 Move pairlist validation to exchange (we need to use .quote) from
markets
2020-02-24 21:33:42 +01:00
Matthias
6581ba56ca Use markets.quote to validate 2020-02-24 20:41:45 +01:00
Matthias
2f349e0504 Improve install documentation by streamlining the process 2020-02-24 20:21:25 +01:00
Matthias
23b47b66ec Update install-script documentation and reorder installation steps 2020-02-24 20:11:25 +01:00
Fredrik81
23bf135b8a Alignment of table content, changed coloring, changed 'Best' column to show if it's initial_point or best 2020-02-24 11:01:14 +01:00
Matthias
6c8b5ea38c Merge pull request #2964 from freqtrade/dependabot/pip/develop/scikit-optimize-0.7.4
Bump scikit-optimize from 0.7.2 to 0.7.4
2020-02-24 10:36:45 +01:00
Matthias
4d040f3123 Merge pull request #2962 from freqtrade/dependabot/pip/develop/requests-2.23.0
Bump requests from 2.22.0 to 2.23.0
2020-02-24 10:36:19 +01:00
Matthias
88121760e4 Merge pull request #2965 from freqtrade/dependabot/pip/develop/ccxt-1.22.95
Bump ccxt from 1.22.61 to 1.22.95
2020-02-24 10:32:12 +01:00
Matthias
ae7a12200c Merge pull request #2963 from freqtrade/dependabot/pip/develop/plotly-4.5.1
Bump plotly from 4.5.0 to 4.5.1
2020-02-24 10:31:40 +01:00
dependabot-preview[bot]
d63aaf3bfd Bump ccxt from 1.22.61 to 1.22.95
Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.22.61 to 1.22.95.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ccxt/ccxt/compare/1.22.61...1.22.95)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-24 08:05:15 +00:00
dependabot-preview[bot]
ff69b511e3 Bump scikit-optimize from 0.7.2 to 0.7.4
Bumps [scikit-optimize](https://github.com/scikit-optimize/scikit-optimize) from 0.7.2 to 0.7.4.
- [Release notes](https://github.com/scikit-optimize/scikit-optimize/releases)
- [Changelog](https://github.com/scikit-optimize/scikit-optimize/blob/master/CHANGELOG.md)
- [Commits](https://github.com/scikit-optimize/scikit-optimize/compare/v0.7.2...v0.7.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-24 08:04:44 +00:00
dependabot-preview[bot]
4054dec7a0 Bump plotly from 4.5.0 to 4.5.1
Bumps [plotly](https://github.com/plotly/plotly.py) from 4.5.0 to 4.5.1.
- [Release notes](https://github.com/plotly/plotly.py/releases)
- [Changelog](https://github.com/plotly/plotly.py/blob/master/CHANGELOG.md)
- [Commits](https://github.com/plotly/plotly.py/compare/v4.5.0...v4.5.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-24 08:04:32 +00:00
dependabot-preview[bot]
353f722dc5 Bump requests from 2.22.0 to 2.23.0
Bumps [requests](https://github.com/psf/requests) from 2.22.0 to 2.23.0.
- [Release notes](https://github.com/psf/requests/releases)
- [Changelog](https://github.com/psf/requests/blob/master/HISTORY.md)
- [Commits](https://github.com/psf/requests/compare/v2.22.0...v2.23.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-24 08:04:07 +00:00
Matthias
83959f0e56 Merge pull request #2959 from hroff-1902/throttling
Better throttling
2020-02-24 06:54:52 +01:00
Matthias
c657a1df2b Merge pull request #2960 from yazeed/sort_indicators_full
indicators_full.j2 and sample_strategy.py ordering and added indicators
2020-02-24 06:45:20 +01:00
Fredrik81
7eb62ed32e Remove old print option for hyperopt-list and made table as default 2020-02-24 00:33:01 +01:00
hroff-1902
e545ef563c Wording adjusted in helpstring 2020-02-23 22:50:58 +03:00
Yazeed Al Oyoun
0eeafcd157 matched commenting on previous sample_strategy.py 2020-02-23 16:56:55 +01:00
Yazeed Al Oyoun
f25d6224dd modified sample_strategy 2020-02-23 16:22:19 +01:00
Matthias
e37f055dad Improve some tests 2020-02-23 13:12:00 +01:00
Matthias
9301f81fc8 Add test for user-sell_timeout handling 2020-02-23 13:09:46 +01:00
Matthias
634e7cc34a Implement handle_buy_trade_customcallback 2020-02-23 13:08:11 +01:00
Yazeed Al Oyoun
e04c2dda2c fixed typo 2020-02-22 23:58:31 +01:00
hroff-1902
d2181bdd94 Adjust tests 2020-02-23 01:55:07 +03:00
Yazeed Al Oyoun
5ac6244465 added keltner channel and uo 2020-02-22 23:50:26 +01:00
Yazeed Al Oyoun
2957756275 final touches plus 2020-02-22 23:39:01 +01:00
Yazeed Al Oyoun
b49b9b515e final touches 2020-02-22 23:37:15 +01:00
Yazeed Al Oyoun
259dc75a30 some order and added weighted BB indicator to list 2020-02-22 23:10:46 +01:00
hroff-1902
ca8e52dc2c Show heartbeat message earlier after changing the state 2020-02-23 00:21:19 +03:00
Matthias
91ee48f3fb Merge pull request #2957 from hroff-1902/fix/2948-2
Fix #2948
2020-02-22 19:37:00 +01:00
hroff-1902
e2e6b940a3 copy=False does not make the changes inline anyway, so not needed 2020-02-22 19:54:19 +03:00
hroff-1902
c651e0ac82 Fix #2948 2020-02-22 19:46:40 +03:00
hroff-1902
430f53ca11 Merge pull request #2955 from freqtrade/fix/2948
Load ohlcv data as float
2020-02-22 17:16:54 +03:00
Matthias
3186add87b Use explicit column list for float parsing 2020-02-22 14:46:54 +01:00
Matthias
7ecc56fa44 Load ohlcv data as float 2020-02-22 13:10:41 +01:00
Matthias
8cd77b2e27 Add some tests for strategy_wrapper 2020-02-22 11:55:40 +01:00
Matthias
365fdf4c37 Add docstring to strategy wrapper 2020-02-22 11:41:22 +01:00
Matthias
4a188525ec Fix documentation note syntax 2020-02-22 11:28:13 +01:00
Matthias
2fe7b683cb Add tests for cached rates 2020-02-22 11:23:13 +01:00
Matthias
77ef3240cd Implement log messages 2020-02-22 11:20:19 +01:00
Matthias
97e6e5e976 Implement caching in the correct place 2020-02-22 11:12:33 +01:00
Matthias
f5b4a6d3d7 Remove fetch_ticker caching 2020-02-22 11:10:05 +01:00
Matthias
63502ed976 Add new advanced-strategy documentation file 2020-02-22 08:14:08 +01:00
Matthias
bc30162a31 Add some documentation 2020-02-21 20:54:21 +01:00
Matthias
135d9ddf7a Fix test due to changed dry-run cancel order 2020-02-21 20:35:54 +01:00
Matthias
bf556c8678 Merge branch 'develop' into interface_ordertimeoutcallback 2020-02-21 20:35:07 +01:00
Matthias
6c01542fed Ad check_sell_timeout 2020-02-21 20:27:13 +01:00
Matthias
8c1a933221 cancel_order should return a dict 2020-02-21 20:23:43 +01:00
hroff-1902
d9ecf3e4bf Add version and state to heartbeat message 2020-02-21 12:26:32 +03:00
hroff-1902
d2e20d86bb Align heartbeat to throttling logging 2020-02-21 05:31:21 +03:00
hroff-1902
269a669af8 Move heartbeat to worker 2020-02-21 05:07:31 +03:00
hroff-1902
881f602f91 Adjust methods params 2020-02-21 04:17:17 +03:00
hroff-1902
e0800b7c29 Make throttle start time an worker object attribute 2020-02-21 03:52:14 +03:00
hroff-1902
04aa74e5ad Better throttling 2020-02-21 03:37:38 +03:00
Fredrik81
09226fd5d5 PEP8 correction 2020-02-20 19:18:42 +01:00
Fredrik81
e7b12704de Added test for details 2020-02-20 19:12:55 +01:00
hroff-1902
43add0b159 Merge pull request #2947 from freqtrade/fix_failing_dockerbuild
Use correct strategy path for docker testing
2020-02-20 16:53:39 +03:00
Matthias
945ff09e27 Use correct strategy path for docker testing 2020-02-20 14:19:24 +01:00
hroff-1902
78ee36a8c6 Use _throttle() in stopped state instead of sleep() 2020-02-20 15:18:26 +03:00
hroff-1902
bee28a1061 Merge pull request #2944 from freqtrade/move_defaultstrategy
Move defaultstrategy
2020-02-20 08:52:24 +03:00
Matthias
10668bb249 Update tests/strategy/test_strategy.py
Co-Authored-By: hroff-1902 <47309513+hroff-1902@users.noreply.github.com>
2020-02-20 06:22:36 +01:00
hroff-1902
56a06cbd33 Update strings to f-strings 2020-02-20 08:19:22 +03:00
hroff-1902
bca5f804a8 Move divider log message 2020-02-20 08:17:24 +03:00
Yazeed Al Oyoun
09a1c9eed6 fixed docs description of hyperopts 2020-02-19 22:25:34 +01:00
Matthias
5adbe3c2d3 initial search path is optional ... 2020-02-19 19:50:01 +01:00
Matthias
751e2b2359 Merge pull request #2945 from freqtrade/fix/kraken_stoplosshit
Kraken stoploss bugfix
2020-02-19 19:43:29 +01:00
Matthias
a7342bd910 Fix non-existing strategy loading 2020-02-19 19:42:04 +01:00
hroff-1902
f2f2c281c0 Merge pull request #2719 from xmatthias/data_handler
Introduce Data handler
2020-02-19 21:22:08 +03:00
Matthias
d22384c7fb Full support for kraken stoploss 2020-02-19 19:21:48 +01:00
Matthias
29b369c65e Rename cli argument 2020-02-19 14:53:54 +01:00
hroff-1902
2d2fd968c8 Merge pull request #2941 from freqtrade/github_actions_tests
GitHub actions tests
2020-02-19 14:58:12 +03:00
Matthias
882d0a5933 implement documentation feedback after review 2020-02-19 12:55:08 +01:00
Matthias
09d89fbfb3 Fix last test 2020-02-19 07:15:55 +01:00
Yazeed Al Oyoun
41b4fa3b7f fixed two more typos 2020-02-19 02:59:51 +01:00
Yazeed Al Oyoun
3fb6818bd8 Merge branch 'develop' into sortino_hyperopt_loss 2020-02-19 02:37:25 +01:00
Yazeed Al Oyoun
df26c357d2 doc updates 2020-02-19 01:31:25 +01:00
Fredrik Rydin
585545405d Changed tests 2020-02-19 00:51:44 +01:00
Fredrik Rydin
2058b492eb Added function to print hyperopt-list as table using tabulate 2020-02-18 22:46:53 +01:00
Matthias
d91b9d1253 Fix some tests, don't default to freqtrade/strategy for imports 2020-02-18 20:26:20 +01:00
Matthias
1634297685 Move strategies to test subfolder 2020-02-18 20:12:10 +01:00
hroff-1902
16cbd441ce Merge pull request #2931 from freqtrade/status_badge
Add github actions badge
2020-02-18 10:55:34 +03:00
Matthias
e6dd463ca3 Revert versioning 2020-02-17 20:17:36 +01:00
Matthias
1172c95817 Use different versioning scheme 2020-02-17 20:17:08 +01:00
Matthias
0b33b798e4 Add pypi build step 2020-02-17 20:16:24 +01:00
Matthias
4c41da2ea4 Merge pull request #2934 from freqtrade/dependabot/pip/develop/python-telegram-bot-12.4.2
Bump python-telegram-bot from 12.4.1 to 12.4.2
2020-02-17 10:12:28 +01:00
Matthias
9b58b4c54d Merge pull request #2939 from freqtrade/dependabot/pip/develop/scikit-optimize-0.7.2
Bump scikit-optimize from 0.7.1 to 0.7.2
2020-02-17 09:49:45 +01:00
Matthias
a8e0526d87 Merge pull request #2937 from freqtrade/dependabot/pip/develop/wrapt-1.12.0
Bump wrapt from 1.11.2 to 1.12.0
2020-02-17 09:48:58 +01:00
Matthias
90fbf70bcc Merge pull request #2936 from freqtrade/dependabot/pip/develop/coveralls-1.11.1
Bump coveralls from 1.10.0 to 1.11.1
2020-02-17 09:47:47 +01:00
dependabot-preview[bot]
582b59044c Bump python-telegram-bot from 12.4.1 to 12.4.2
Bumps [python-telegram-bot](https://github.com/python-telegram-bot/python-telegram-bot) from 12.4.1 to 12.4.2.
- [Release notes](https://github.com/python-telegram-bot/python-telegram-bot/releases)
- [Changelog](https://github.com/python-telegram-bot/python-telegram-bot/blob/master/CHANGES.rst)
- [Commits](https://github.com/python-telegram-bot/python-telegram-bot/compare/v12.4.1...v12.4.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-17 08:47:39 +00:00
Matthias
df955b8104 Merge pull request #2935 from freqtrade/dependabot/pip/develop/ccxt-1.22.61
Bump ccxt from 1.22.39 to 1.22.61
2020-02-17 09:46:24 +01:00
Matthias
e7d687ee11 Merge pull request #2938 from freqtrade/dependabot/pip/develop/mkdocs-material-4.6.3
Bump mkdocs-material from 4.6.2 to 4.6.3
2020-02-17 09:45:51 +01:00
dependabot-preview[bot]
0fd3d74fc4 Bump scikit-optimize from 0.7.1 to 0.7.2
Bumps [scikit-optimize](https://github.com/scikit-optimize/scikit-optimize) from 0.7.1 to 0.7.2.
- [Release notes](https://github.com/scikit-optimize/scikit-optimize/releases)
- [Changelog](https://github.com/scikit-optimize/scikit-optimize/blob/master/CHANGELOG.md)
- [Commits](https://github.com/scikit-optimize/scikit-optimize/compare/v0.7.1...v0.7.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-17 08:05:00 +00:00
dependabot-preview[bot]
9435950fc9 Bump mkdocs-material from 4.6.2 to 4.6.3
Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 4.6.2 to 4.6.3.
- [Release notes](https://github.com/squidfunk/mkdocs-material/releases)
- [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG)
- [Commits](https://github.com/squidfunk/mkdocs-material/compare/4.6.2...4.6.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-17 08:04:40 +00:00
dependabot-preview[bot]
500e1c77de Bump wrapt from 1.11.2 to 1.12.0
Bumps [wrapt](https://github.com/GrahamDumpleton/wrapt) from 1.11.2 to 1.12.0.
- [Release notes](https://github.com/GrahamDumpleton/wrapt/releases)
- [Changelog](https://github.com/GrahamDumpleton/wrapt/blob/develop/docs/changes.rst)
- [Commits](https://github.com/GrahamDumpleton/wrapt/compare/1.11.2...1.12.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-17 08:04:21 +00:00
dependabot-preview[bot]
c6a3038f52 Bump coveralls from 1.10.0 to 1.11.1
Bumps [coveralls](https://github.com/coveralls-clients/coveralls-python) from 1.10.0 to 1.11.1.
- [Release notes](https://github.com/coveralls-clients/coveralls-python/releases)
- [Changelog](https://github.com/coveralls-clients/coveralls-python/blob/master/CHANGELOG.md)
- [Commits](https://github.com/coveralls-clients/coveralls-python/compare/1.10.0...1.11.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-17 08:03:57 +00:00
dependabot-preview[bot]
212d20ed08 Bump ccxt from 1.22.39 to 1.22.61
Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.22.39 to 1.22.61.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ccxt/ccxt/compare/1.22.39...1.22.61)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-17 08:03:37 +00:00
Matthias
bec86b1325 Add github actions badge 2020-02-16 15:42:41 +01:00
Matthias
6335d81ceb Merge branch 'develop' into data_handler 2020-02-16 15:12:14 +01:00
hroff-1902
7b9bd70d97 Merge pull request #2930 from freqtrade/ftx_fix_ohlcv
increment limit to adjust to FTX defaults (1500 candles)
2020-02-16 15:53:27 +03:00
hroff-1902
674898bd32 Fix usage of vars in the commented out line 2020-02-16 15:26:40 +03:00
Matthias
3787ac7b98 increment limit to adjust to FTX defaults (1500 candles) 2020-02-16 13:20:11 +01:00
hroff-1902
42dfda9231 Adjust docstring 2020-02-16 13:46:07 +03:00
hroff-1902
fbe5cc44da Use statistics.pstdev 2020-02-16 13:43:23 +03:00
hroff-1902
1e84b2770c Fix values of downside_returns 2020-02-16 04:10:53 +03:00
hroff-1902
161dd1a3e6 Rename risk_free_return to minumum_accepted_return 2020-02-16 03:55:16 +03:00
hroff-1902
36670fb5d9 Merge pull request #2929 from yazeed/fix_status_table
/status table quick fix
2020-02-15 23:09:50 +03:00
Yazeed Al Oyoun
180939a962 winner, readability, with brackets as fix 2020-02-15 21:01:45 +01:00
Yazeed Al Oyoun
6e71f2f166 my fix 2020-02-15 20:55:12 +01:00
Matthias
44ac2409ff Merge pull request #2923 from hroff-1902/status-strategies
Add printing statuses for enlisted strategies and hyperopts
2020-02-15 19:43:02 +01:00
hroff-1902
6139239b86 Address points stated in comments 2020-02-15 20:43:11 +03:00
hroff-1902
9d09a67dea Merge pull request #2925 from freqtrade/fix_edgedocs
Fix edge documentation rendering
2020-02-15 19:41:59 +03:00
Matthias
87b506972f Fix edge documentation rendering 2020-02-15 13:12:29 +01:00
hroff-1902
c453969235 Merge pull request #2922 from freqtrade/config_userdir
default to loading config.json from userdir if it exists
2020-02-15 08:00:04 +03:00
hroff-1902
fdd362299f Docs adjusted 2020-02-15 07:34:39 +03:00
hroff-1902
42a5d78e60 Wording (duplicate, not duplicated) 2020-02-15 07:19:24 +03:00
hroff-1902
ddea4b9300 Fix test 2020-02-15 06:54:18 +03:00
hroff-1902
e8c0a0bcd3 Make mypy happy 2020-02-15 06:18:00 +03:00
hroff-1902
1cf19133f4 Added missing failing strategy 2020-02-15 05:41:58 +03:00
hroff-1902
29d9b6a46a Add test for enum failed 2020-02-15 04:32:10 +03:00
hroff-1902
93f9ff1b63 Fix existing test 2020-02-15 04:22:21 +03:00
hroff-1902
06b84b4086 Remove redundant code 2020-02-14 23:13:49 +03:00
hroff-1902
bba7a38144 Merge pull request #2906 from freqtrade/fix/jupyterexample
Update data-analysis documentation to properly initialize configuration
2020-02-14 22:36:35 +03:00
hroff-1902
47a91c9d8e Remove green color 2020-02-14 22:32:46 +03:00
hroff-1902
e598c769d4 Add colorization 2020-02-14 22:28:49 +03:00
Matthias
f024cc40d3 Fix windows test failure 2020-02-14 20:21:09 +01:00
Matthias
ecca7164d9 Fix small issue 2020-02-14 20:13:36 +01:00
Matthias
d5a298bbb7 Add sentence from suggestion 2020-02-14 20:12:26 +01:00
Matthias
5efbdd25a7 Properly default to user_data/config.json if it exists 2020-02-14 20:04:05 +01:00
Matthias
ab27d2c720 Merge pull request #2921 from hroff-1902/adjust-buy-notification
Move rpc send to be after db session add/flash
2020-02-14 20:02:56 +01:00
hroff-1902
c92e1d97d6 Attempt to make mypy happy 2020-02-14 21:52:02 +03:00
hroff-1902
1bc26fd07a Add printing statuses for list-hyperopts 2020-02-14 21:46:22 +03:00
Matthias
be4a9b5f4b Lowercase freqtrade 2020-02-14 19:37:20 +01:00
Matthias
9dafc2f3c8 Load config.json from user_data first 2020-02-14 19:33:10 +01:00
hroff-1902
a2d7f8a70d Split tabular printing into sep. helper function 2020-02-14 21:24:30 +03:00
hroff-1902
9cbf8c5f00 Add status for listed strategies 2020-02-14 21:15:36 +03:00
Matthias
3312fd34f3 Merge pull request #2920 from hroff-1902/remove-delete-trades
Get rid of delete_trade method in Freqtradebot
2020-02-14 07:27:52 +01:00
Matthias
ee92e8dbf4 Merge pull request #2919 from hroff-1902/adjust-main
Minor: Adjust message in main.py
2020-02-14 07:27:19 +01:00
Matthias
ec5d2d78dd Merge pull request #2918 from hroff-1902/bittrex-config
Add order_types into Bittrex config subtemplate
2020-02-14 07:26:49 +01:00
hroff-1902
20c21b42d5 Move rpc send to be after db session add/flash 2020-02-14 06:23:03 +03:00
hroff-1902
36ef5c6bdf Get rid of delete_trades method in Freqtradebot 2020-02-14 04:05:17 +03:00
hroff-1902
2dea362eda Merge pull request #2887 from yazeed/rpc_notification_fixes
Wide RPC notifications fixes
2020-02-14 03:51:23 +03:00
hroff-1902
749463e4b7 Adjust message in main.py 2020-02-14 03:05:07 +03:00
hroff-1902
a0a14a1078 freqtrade/templates/subtemplates/exchange_bittrex.j2 2020-02-14 01:08:17 +03:00
hroff-1902
4cdcf00ddc Merge branch 'develop' into rpc_notification_fixes 2020-02-14 00:10:50 +03:00
hroff-1902
0631fc937a Merge pull request #2915 from freqtrade/documentation_test
fix configuration table
2020-02-13 17:27:54 +03:00
Matthias
02148a1df2 Fix datatype styling issues 2020-02-13 15:09:09 +01:00
Matthias
a93bc74eff Update documentation ... 2020-02-13 07:04:37 +01:00
Matthias
ccc9239751 Reduce indentation of help 2020-02-13 07:02:12 +01:00
Matthias
86592c3ba1 Fix /help from telegram 2020-02-13 06:51:52 +01:00
Matthias
81f849811f Initcap Freqtrade 2020-02-13 06:30:59 +01:00
Matthias
3e6209def2 Merge pull request #2914 from freqtrade/hroff-1902-patch-1
Docs: Fix checking of runmode
2020-02-13 06:28:50 +01:00
hroff-1902
b2328cdf4f Do not subtract risk_free_ratio twice 2020-02-13 07:07:35 +03:00
hroff-1902
634bf2b15c Docs: Fix checking of runmode 2020-02-13 01:44:46 +03:00
Yazeed Al Oyoun
007cc94474 fixed tests to send refresh, since its no longer defaulted 2020-02-12 22:03:56 +01:00
Yazeed Al Oyoun
f09af888b1 modified get_buy/sell_rate refresh to true on notify_sell_cancel and notify_buy_cancel 2020-02-12 21:55:38 +01:00
Yazeed Al Oyoun
2e3b8cdba7 fixed flake8 issues on /help output 2020-02-12 21:51:58 +01:00
Yazeed Al Oyoun
f6db784a85 removed default to refresh argument in get_buy_rate and get_sell_rate 2020-02-12 21:50:33 +01:00
Yazeed Al Oyoun
47874a4527 added logic to differentiate sell orders with double asterisk 2020-02-12 21:45:55 +01:00
Matthias
2efa1c164f Revert data-location section 2020-02-12 21:43:43 +01:00
Matthias
483cba453a Fix last occurence of data_location 2020-02-12 19:58:23 +01:00
Matthias
d6b9397579 Fix typo in datadir key 2020-02-12 06:40:13 +01:00
Matthias
9a22ce69bd Merge pull request #2908 from hroff-1902/tests_load_default_strategy
Do not instantiate directly DefaultStrategy in tests
2020-02-12 06:37:19 +01:00
hroff-1902
4f3376e2a1 Do not instantiate directly DefaultStrategy in tests 2020-02-12 01:39:15 +03:00
hroff-1902
e73dac8d91 Merge pull request #2905 from Fredrik81/hyperopt-more-filters
Adding --min-trades, --max-trades, --max-avg-profit, --max-total-profit for hyperopt-list
2020-02-11 23:46:48 +03:00
Fredrik Rydin
539343b20d Adding 2 more filter options for completeness 2020-02-11 21:29:55 +01:00
Matthias
7be9f0067e Update data-analysis documentation to properly initialize configuration 2020-02-11 20:51:39 +01:00
Matthias
64fb8e28ec Merge pull request #2886 from freqtrade/docker_docs
Docker docs
2020-02-11 19:41:42 +01:00
Matthias
c35fe2c386 Add link to quick-start-guide 2020-02-11 19:29:43 +01:00
Fredrik Rydin
d1c3eabb87 Changed commands to use "check_int_positive" 2020-02-11 18:08:30 +01:00
Yazeed Al Oyoun
899de8b27c modified tests for double partial call 2020-02-11 16:50:18 +01:00
Yazeed Al Oyoun
cde1b2b56c readded rpc status message for partial buys 2020-02-11 16:28:48 +01:00
Yazeed Al Oyoun
5f4c209fca fixed one more occurence of executed buy, and test 2020-02-11 16:14:49 +01:00
Yazeed Al Oyoun
4fedf1e564 default refresh TRUE on get_buy_rate and get_sell_Rate 2020-02-11 16:05:44 +01:00
Fredrik Rydin
5b4d8d69ef Adding --min-trades and --max-trades for hyperopt-list 2020-02-11 16:02:08 +01:00
Yazeed Al Oyoun
fc29564974 Fixed messages and readability 2020-02-11 15:58:40 +01:00
Yazeed Al Oyoun
867b736b84 Fixed to Executing Buys & Sells 2020-02-11 15:50:21 +01:00
Yazeed Al Oyoun
7f4b90c68f fixed actual open_rate in notify_buy_cancel 2020-02-11 15:45:35 +01:00
Yazeed Al Oyoun
f99d1c3829 fixed open_rate instead of open_rate_requested 2020-02-11 15:44:47 +01:00
Matthias
59a576ef3e Merge pull request #2903 from hroff-1902/fix/tests_history-2
Minor: Fix tests_history.py
2020-02-11 07:14:13 +01:00
Matthias
81997cba8a Merge pull request #2902 from hroff-1902/fix/tests_hyperopt_loss
Minor: Fix tests for hyperopt_loss
2020-02-11 07:13:29 +01:00
Matthias
57fcca9696 Merge pull request #2904 from hroff-1902/fix/tests_backtesting_container
Minor: Fix usage of an item from BTContainer in tests
2020-02-11 07:02:28 +01:00
hroff-1902
29f7c5071b Fix usage of an item from BTContainer in tests 2020-02-11 04:17:10 +03:00
hroff-1902
62bcb3d766 Fix tests in test_history.py 2020-02-11 03:43:20 +03:00
hroff-1902
2bcce33f23 Merge pull request #2888 from Fredrik81/hyperopt-filters
Added filter options to "hyperopt-list" in order to easier find epochs.
2020-02-10 23:59:40 +03:00
Fredrik Rydin
f2520c11e7 Used wrong utils.md as base 2020-02-10 21:19:25 +01:00
Fredrik Rydin
c924e4d519 Updated based on feedback:
- Profit commands now use float
- Compatible with --best
- Corrected wrong information in docs
2020-02-10 20:54:31 +01:00
Matthias
d442b31f84 Merge pull request #2894 from freqtrade/hroff-1902-patch-2
Minor: Adjust mypy and flake commands
2020-02-10 19:03:09 +01:00
hroff-1902
df8a27fba6 Merge pull request #2900 from freqtrade/rem_bin
Break the old binary file so users are forced to reinstall
2020-02-10 20:52:13 +03:00
hroff-1902
05128d21a8 Suggest to run flake for scripts 2020-02-10 20:48:49 +03:00
Matthias
faf19eda86 Break the old binary file so users are forced to reinstall
Note:
This should not be relevant anymore - this binary has been deprecated
and is not being used by new installations since July 2019.
2020-02-10 17:31:49 +01:00
hroff-1902
d07c69809d Fix tests for hyperopt_loss 2020-02-10 18:32:41 +03:00
hroff-1902
da03c36875 Merge pull request #2899 from freqtrade/mypy_tests
Fix mypy type errors in tests
2020-02-10 15:43:57 +03:00
hroff-1902
0ac0ca74b5 return back hint for running mypy 2020-02-10 15:41:09 +03:00
Yazeed Al Oyoun
d69ddd2ac3 Apply suggestions from code review
Committed 1 code suggestion in code review.

Co-Authored-By: hroff-1902 <47309513+hroff-1902@users.noreply.github.com>
2020-02-10 11:54:12 +01:00
Matthias
1a544be828 Merge pull request #2898 from freqtrade/dependabot/pip/develop/mkdocs-material-4.6.2
Bump mkdocs-material from 4.6.0 to 4.6.2
2020-02-10 11:03:10 +01:00
Matthias
bfccb2e96a Merge pull request #2896 from freqtrade/dependabot/pip/develop/pandas-1.0.1
Bump pandas from 1.0.0 to 1.0.1
2020-02-10 11:02:54 +01:00
Matthias
7bb02d0cc6 Update docker-docs wording 2020-02-10 11:01:33 +01:00
Matthias
f220e0f6ca Merge pull request #2897 from freqtrade/dependabot/pip/develop/python-telegram-bot-12.4.1
Bump python-telegram-bot from 12.3.0 to 12.4.1
2020-02-10 10:40:37 +01:00
Matthias
83644ce5d8 Fix mypy type errors in tests 2020-02-10 10:35:48 +01:00
dependabot-preview[bot]
550f9fc891 Bump python-telegram-bot from 12.3.0 to 12.4.1
Bumps [python-telegram-bot](https://github.com/python-telegram-bot/python-telegram-bot) from 12.3.0 to 12.4.1.
- [Release notes](https://github.com/python-telegram-bot/python-telegram-bot/releases)
- [Changelog](https://github.com/python-telegram-bot/python-telegram-bot/blob/master/CHANGES.rst)
- [Commits](https://github.com/python-telegram-bot/python-telegram-bot/compare/v12.3.0...v12.4.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-10 08:45:27 +00:00
Matthias
c7167c83cd Merge pull request #2895 from freqtrade/dependabot/pip/develop/ccxt-1.22.39
Bump ccxt from 1.22.30 to 1.22.39
2020-02-10 09:44:08 +01:00
dependabot-preview[bot]
6b4094fd92 Bump mkdocs-material from 4.6.0 to 4.6.2
Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 4.6.0 to 4.6.2.
- [Release notes](https://github.com/squidfunk/mkdocs-material/releases)
- [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG)
- [Commits](https://github.com/squidfunk/mkdocs-material/compare/4.6.0...4.6.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-10 08:02:45 +00:00
dependabot-preview[bot]
88f2ad1eae Bump pandas from 1.0.0 to 1.0.1
Bumps [pandas](https://github.com/pandas-dev/pandas) from 1.0.0 to 1.0.1.
- [Release notes](https://github.com/pandas-dev/pandas/releases)
- [Changelog](https://github.com/pandas-dev/pandas/blob/master/RELEASE.md)
- [Commits](https://github.com/pandas-dev/pandas/compare/v1.0.0...v1.0.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-10 08:02:07 +00:00
dependabot-preview[bot]
90ee82ac43 Bump ccxt from 1.22.30 to 1.22.39
Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.22.30 to 1.22.39.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ccxt/ccxt/compare/1.22.30...1.22.39)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-10 08:01:42 +00:00
Matthias
db0475f9c3 Merge pull request #2890 from freqtrade/hroff-1902-patch-1
Add tip on running order types for Bittrex
2020-02-10 08:33:24 +01:00
hroff-1902
4af25ec315 Adjust mypy and flake commands 2020-02-10 05:52:07 +03:00
hroff-1902
0ba8d13de9 Merge pull request #2831 from xmatthias/feat/new_config
introduce new-config subcommand
2020-02-09 22:11:37 +03:00
hroff-1902
f7c74e551f Fix wording 2020-02-09 21:56:59 +03:00
Fredrik81
5bf4c5869b Update hyperopt_commands.py
Missed a debug print
2020-02-09 19:32:09 +01:00
hroff-1902
9ec9a7b124 Fix t_index to be normalized 2020-02-09 21:20:15 +03:00
hroff-1902
cc3f65d069 Fix typo 2020-02-09 19:45:04 +03:00
hroff-1902
c83da7cadb Add section about order types into Bittrex Exchange-specific chapter 2020-02-09 19:11:06 +03:00
Matthias
7c91c77fd9 Merge pull request #2891 from freqtrade/hroff-1902-patch-2
Fix SharpeHyperOptLossDaily
2020-02-09 17:06:22 +01:00
hroff-1902
40abdd2608 Suggest changing strategy 2020-02-09 18:54:04 +03:00
hroff-1902
c89a32224c Fix SharpeHyperOptLossDaily 2020-02-09 18:40:19 +03:00
Matthias
d65a06947d Merge branch 'develop' into data_handler 2020-02-09 15:16:43 +01:00
Fredrik Rydin
eb3783dc00 Fixed a blank line issue :-( 2020-02-09 14:30:29 +01:00
Fredrik Rydin
c648ec7c0c Added test cases and fixed a minor bug 2020-02-09 14:18:56 +01:00
hroff-1902
c7ba85c2e6 Add tip on running order types for Bittrex 2020-02-09 14:19:13 +03:00
Matthias
b536d50194 Address PR Review 2020-02-09 11:41:29 +01:00
Matthias
f41de38498 Merge pull request #2884 from freqtrade/fix/stakecurr_validation
fix download-data validation problems
2020-02-09 11:07:39 +01:00
Fredrik Rydin
c96acd6ca0 Fixed to pass PEP8 2020-02-09 00:16:11 +01:00
Yazeed Al Oyoun
2796d3d8a0 added missing tests to increase coverage 2020-02-09 00:11:58 +01:00
Fredrik Rydin
636bd5acb5 Added filter options to "hyperopt-list" in order to easier find epochs.
--profitable
	Select only profitable epochs.
  --min-avg-time INT
	Select epochs on above average time.
  --max-avg-time INT
	Select epochs on under average time.
  --min-avg-profit FLOAT
	Select epochs on above average profit.
  --min-total-profit FLOAT
	Select epochs on above total profit.
2020-02-08 23:21:42 +01:00
Matthias
1a9787ac76 Add validation for data-download relevant settings 2020-02-08 21:53:34 +01:00
Yazeed Al Oyoun
879b513822 enhanced method description 2020-02-08 21:31:36 +01:00
Yazeed Al Oyoun
4fad7a462c fixes in webhook-config docs 2020-02-08 21:19:07 +01:00
Yazeed Al Oyoun
f3b1161640 wide notifications fixes 2020-02-08 21:02:52 +01:00
Matthias
c4031761fe Don't validate exchange for data-download subcommand 2020-02-08 19:29:58 +01:00
Matthias
34f04668c1 Add template for bittrex 2020-02-08 14:02:51 +01:00
Matthias
52f4187129 Allow exchange templates to configure outside-options too 2020-02-08 13:51:55 +01:00
Matthias
f508324fc8 Update docker documentation to be easier to use 2020-02-08 13:38:45 +01:00
Matthias
a1fe3850e2 Improve docker-compose file to be ready to use 2020-02-08 13:34:04 +01:00
Matthias
fff8ced3b0 Merge pull request #2843 from hroff-1902/allow-derived-strategies
Allow derived strategies
2020-02-08 09:15:35 +01:00
Matthias
67e66a6c4a Merge pull request #2882 from hroff-1902/update_advanced_hyperopt_template
Update advanced hyperopt template
2020-02-08 09:07:18 +01:00
Matthias
5bae5a6a35 Merge pull request #2881 from hroff-1902/no_nxt_in_config_example
Minor: Replace NXT with XRP in config.json.example
2020-02-08 09:05:23 +01:00
hroff-1902
61ced5e926 Fix typo 2020-02-08 02:49:06 +03:00
hroff-1902
28184201e4 Align sample_hyperopt_advanced.py to hyperopt_interface.py 2020-02-08 02:47:50 +03:00
hroff-1902
a893f70e49 Replace NXT with XRP in config.json.example 2020-02-08 02:21:39 +03:00
hroff-1902
6990f6af25 Merge pull request #2870 from freqtrade/dry_run_docs
Add considerations for dry-run
2020-02-08 00:09:58 +03:00
hroff-1902
c501fd0a70 Merge pull request #2875 from yazeed/distinguish_draws_from_wins
Add draws column to backtesting tables
2020-02-07 22:55:12 +03:00
Matthias
abf10aec98 Merge branch 'develop' into feat/new_config 2020-02-07 17:02:14 +01:00
Yazeed Al Oyoun
6b279f297c fixed test 2020-02-07 16:45:07 +03:00
Yazeed Al Oyoun
e8b9d88eb6 moved line for total_downside 2020-02-07 16:44:55 +03:00
Yazeed Al Oyoun
a46b7bcd6d more fixes... 2020-02-07 16:44:43 +03:00
Yazeed Al Oyoun
951a19fb00 added tests for both sortino methods 2020-02-07 16:44:30 +03:00
Yazeed Al Oyoun
be34dc463b fixed bad commit 2020-02-07 16:44:01 +03:00
Yazeed Al Oyoun
9bcc5d2eed fixed downside_returns to read from profit_percent_after_slippage 2020-02-07 16:36:12 +03:00
Yazeed Al Oyoun
728ab0ff21 Added both SortinoHyperOptLoss and SortinoHyperOptLossDaily 2020-02-07 16:35:28 +03:00
Yazeed Al Oyoun
b56a1f0603 initial push of sortino, work not done, still need own tests 2020-02-07 16:34:20 +03:00
Yazeed Al Oyoun
deb0b7ad67 Added both SortinoHyperOptLoss and SortinoHyperOptLossDaily 2020-02-07 16:30:37 +03:00
Yazeed Al Oyoun
44d67389d2 initial push of sortino, work not done, still need own tests 2020-02-07 16:29:27 +03:00
Yazeed Al Oyoun
aa2cb937b1 flake8 :) 2020-02-07 03:54:47 +01:00
Yazeed Al Oyoun
ff819386e1 added draws to backtesting tables, reduced len of some labels to help fit this without increasing total width 2020-02-07 03:51:50 +01:00
Matthias
49dcc561b7 POC for check_buy_timeout 2020-02-06 20:30:17 +01:00
Matthias
2816b96650 Create strategy_wrapper to call user-defined code with 2020-02-06 20:26:04 +01:00
hroff-1902
f57bd6b616 Keep the docs clean for unexperienced users 2020-02-06 21:53:03 +03:00
hroff-1902
418e7adac1 Highlight syntax in advanced-hyperopt as well 2020-02-06 17:49:10 +03:00
hroff-1902
2034527faa Update docs/strategy-customization.md
Co-Authored-By: Matthias <xmatthias@outlook.com>
2020-02-06 17:45:15 +03:00
hroff-1902
412f5d68de Add description to hyperopt advanced doc chapter 2020-02-06 17:42:26 +03:00
hroff-1902
2846f9454f Add description in the docs 2020-02-06 17:02:11 +03:00
hroff-1902
739acaa475 Wordings improved 2020-02-06 13:54:51 +03:00
Matthias
97e48080e8 Merge pull request #2839 from hroff-1902/list-hyperopts-2
Add list-hyperopts subcommand
2020-02-06 07:06:36 +01:00
Yazeed Al Oyoun
5b00eaa42d Updated Strategy Summary table to match other backtesting tables (#2864) 2020-02-06 06:58:58 +01:00
Yazeed Al Oyoun
9639ffb140 added daily sharpe ratio hyperopt loss method, ty @djacky (#2826)
* more consistent backtesting tables and labels

* added rounding to Tot Profit % on Sell Reasosn table to be consistent with other percentiles on table.

* added daily sharpe ratio hyperopt loss method, ty @djacky

* removed commented code

* removed unused profit_abs

* added proper slippage to each trade

* replaced use of old value total_profit

* Align quotes in same area

* added daily sharpe ratio test and modified hyperopt_loss_sharpe_daily

* fixed some more line alignments

* updated docs to include SharpeHyperOptLossDaily

* Update dockerfile to 3.8.1

* Run tests against 3.8

* added daily sharpe ratio hyperopt loss method, ty @djacky

* removed commented code

* removed unused profit_abs

* added proper slippage to each trade

* replaced use of old value total_profit

* added daily sharpe ratio test and modified hyperopt_loss_sharpe_daily

* updated docs to include SharpeHyperOptLossDaily

* docs fixes

* missed one fix

* fixed standard deviation line

* fixed to bracket notation

* fixed to bracket notation

* fixed syntax error

* better readability, kept np.sqrt(365) which results in  annualized sharpe ratio

* fixed method arguments indentation

* updated commented out debug print line

* renamed after slippage profit_percent so it wont affect _calculate_results_metrics()

* Reworked to fill leading and trailing days

* No need for np; make flake happy

* Fix risk free rate

Co-authored-by: Matthias <xmatthias@outlook.com>
Co-authored-by: hroff-1902 <47309513+hroff-1902@users.noreply.github.com>
2020-02-06 06:49:08 +01:00
Matthias
586cbc750c Add considerations for dry-run 2020-02-06 06:45:11 +01:00
hroff-1902
b5ee4f17cb Merge pull request #2830 from orehunt/spreadfilter
- added spread filter
2020-02-04 23:37:09 +03:00
Matthias
6866f6389d Fix merge-error 2020-02-04 20:41:13 +01:00
hroff-1902
d2cac1d8fd Merge branch 'develop' into spreadfilter 2020-02-04 16:54:46 +03:00
untoreh
aa54fd2251 - added spread filter
- minimum value to volume pairlist
2020-02-04 14:49:59 +01:00
hroff-1902
f5fb129483 Merge pull request #2858 from freqtrade/fix/rolling_max
Fix implementation of rolling_max
2020-02-04 14:05:05 +03:00
Matthias
a707aeb3d0 Fix implementation of rolling_max 2020-02-04 07:00:53 +01:00
Matthias
f8bb6a3e06 Merge pull request #2855 from yazeed/text_mods_in_check_depth_of_market_buy
More consistency in check_depth_of_market_buy()
2020-02-04 06:24:58 +01:00
Yazeed Al Oyoun
91b4c9668c More consistency changes... 2020-02-04 01:57:24 +01:00
hroff-1902
d457d43999 Merge pull request #2833 from hroff-1902/type-hints
Add some type hints
2020-02-03 23:24:26 +03:00
hroff-1902
ffb53a6df5 get rid of typing.cast() 2020-02-03 23:08:35 +03:00
hroff-1902
82590657fb Merge pull request #2848 from freqtrade/dependabot/pip/develop/scikit-optimize-0.7.1
Bump scikit-optimize from 0.5.2 to 0.7.1
2020-02-03 22:53:01 +03:00
Matthias
54303880d3 Merge pull request #2849 from freqtrade/dependabot/pip/develop/pandas-1.0.0
Bump pandas from 0.25.3 to 1.0.0
2020-02-03 20:34:17 +01:00
Matthias
cbabc295c7 Don't convert to datetime - but convert to datetime64 instead 2020-02-03 20:25:43 +01:00
Matthias
b8aaf744e8 Merge pull request #2851 from hroff-1902/improve-logging-3
Add pair to exception messages in exchange module
2020-02-03 16:04:55 +01:00
hroff-1902
64f04845b6 Merge pull request #2850 from freqtrade/try_fix_randoM-test
make sure asyncio_loop is not initialized within ccxt code
2020-02-03 17:45:49 +03:00
hroff-1902
684cb54992 Add pair to exception msg 2020-02-03 17:17:46 +03:00
Matthias
f6c09160ab make sure asyncio_loop is not initialized within ccxt code 2020-02-03 15:17:36 +01:00
Matthias
221950cdc4 Merge pull request #2845 from freqtrade/dependabot/pip/develop/jinja2-2.11.1
Bump jinja2 from 2.10.3 to 2.11.1
2020-02-03 10:07:56 +01:00
Matthias
6e6c0757d6 Merge pull request #2847 from freqtrade/dependabot/pip/develop/ccxt-1.22.30
Bump ccxt from 1.21.91 to 1.22.30
2020-02-03 10:05:46 +01:00
Matthias
2ee99bde29 Merge pull request #2846 from freqtrade/dependabot/pip/develop/pytest-5.3.5
Bump pytest from 5.3.4 to 5.3.5
2020-02-03 09:58:04 +01:00
dependabot-preview[bot]
d5f704009f Bump pandas from 0.25.3 to 1.0.0
Bumps [pandas](https://github.com/pandas-dev/pandas) from 0.25.3 to 1.0.0.
- [Release notes](https://github.com/pandas-dev/pandas/releases)
- [Changelog](https://github.com/pandas-dev/pandas/blob/master/RELEASE.md)
- [Commits](https://github.com/pandas-dev/pandas/compare/v0.25.3...v1.0.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-03 08:03:45 +00:00
dependabot-preview[bot]
3938418ad5 Bump scikit-optimize from 0.5.2 to 0.7.1
Bumps [scikit-optimize](https://github.com/scikit-optimize/scikit-optimize) from 0.5.2 to 0.7.1.
- [Release notes](https://github.com/scikit-optimize/scikit-optimize/releases)
- [Changelog](https://github.com/scikit-optimize/scikit-optimize/blob/master/CHANGELOG.md)
- [Commits](https://github.com/scikit-optimize/scikit-optimize/compare/v0.5.2...v0.7.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-03 08:03:21 +00:00
dependabot-preview[bot]
401748e9a7 Bump ccxt from 1.21.91 to 1.22.30
Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.21.91 to 1.22.30.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ccxt/ccxt/compare/1.21.91...1.22.30)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-03 08:02:54 +00:00
dependabot-preview[bot]
bc2ae3e88d Bump pytest from 5.3.4 to 5.3.5
Bumps [pytest](https://github.com/pytest-dev/pytest) from 5.3.4 to 5.3.5.
- [Release notes](https://github.com/pytest-dev/pytest/releases)
- [Changelog](https://github.com/pytest-dev/pytest/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest/compare/5.3.4...5.3.5)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-03 08:02:21 +00:00
dependabot-preview[bot]
7b8e665323 Bump jinja2 from 2.10.3 to 2.11.1
Bumps [jinja2](https://github.com/pallets/jinja) from 2.10.3 to 2.11.1.
- [Release notes](https://github.com/pallets/jinja/releases)
- [Changelog](https://github.com/pallets/jinja/blob/master/CHANGES.rst)
- [Commits](https://github.com/pallets/jinja/compare/2.10.3...2.11.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-03 08:01:28 +00:00
hroff-1902
df249c7c03 Remove unclear comment 2020-02-03 09:37:50 +03:00
hroff-1902
5c20311768 Merge pull request #2844 from freqtrade/coveralls_twice
Only run coveralls once
2020-02-03 09:18:42 +03:00
Matthias
d0506a6435 Use correct matrix variable 2020-02-03 07:01:07 +01:00
Matthias
c8960ab628 Only run coveralls once 2020-02-03 06:50:07 +01:00
hroff-1902
537596001e Allow derived strategies 2020-02-03 06:20:01 +03:00
Matthias
d8c053573a Merge pull request #2840 from freqtrade/fix/testerrror
Fix failing stoploss CI test
2020-02-02 20:49:42 +01:00
Matthias
2b69e7830d Fix failing CI test 2020-02-02 20:08:50 +01:00
Matthias
e3cb5d26c0 Merge pull request #2835 from yazeed/reduce_noise_if_use_order_book_true
reduced noise without verbose mode if use_order_book is true
2020-02-02 19:42:50 +01:00
hroff-1902
84156879f6 Fix NO_CONF_REQUIRED for list-hyperopts 2020-02-02 20:11:42 +03:00
hroff-1902
d12e03e50d Fix test inconsistency in test_freqtradebot.py 2020-02-02 20:01:25 +03:00
hroff-1902
cd0534efcc Add test 2020-02-02 19:41:22 +03:00
hroff-1902
505648fb66 Adjust docs 2020-02-02 19:41:22 +03:00
hroff-1902
857eb5ff69 Add list-hyperopts command 2020-02-02 19:41:22 +03:00
hroff-1902
3fe39a3e1b Rename constant 2020-02-02 19:41:22 +03:00
hroff-1902
a5e670b402 Add USERPATH_NOTEBOOKS 2020-02-02 19:41:22 +03:00
hroff-1902
e8c1abc509 Merge pull request #2799 from freqtrade/fix_stoploss_recreated
Fix stoploss recreated
2020-02-02 16:59:45 +03:00
hroff-1902
6594679e52 Merge pull request #2779 from freqtrade/stoploss_market
Stoploss on exchange for Kraken
2020-02-02 14:48:45 +03:00
Matthias
c1897fbc48 Merge pull request #2834 from yazeed/consistent_main_sharpe_hyperopt_loss
better readability on sharpe ratio loss method
2020-02-02 11:12:56 +01:00
Yazeed Al Oyoun
aeabe1800b modified two lines from logger.info to logger.debug cause they're too spammy 2020-02-02 10:49:00 +01:00
Matthias
d64751687b Fix link and lowercase variable 2020-02-02 10:47:44 +01:00
Yazeed Al Oyoun
3499f1b85c better readability and more consistent with daily sharpe loss method 2020-02-02 08:47:33 +01:00
hroff-1902
f3d500085c Add some type hints 2020-02-02 07:00:40 +03:00
Matthias
aa8731d0fc Merge pull request #2832 from freqtrade/python_3.8
Python 3.8
2020-02-01 19:39:45 +01:00
Matthias
cbd2b265bb Fix small error 2020-02-01 15:16:44 +01:00
Matthias
321bc336ea Run tests against 3.8 2020-02-01 15:14:55 +01:00
Matthias
4459679c64 Update dockerfile to 3.8.1 2020-02-01 15:14:44 +01:00
Matthias
628b06927c Support python3.8 virtualenvs and remove config generation via SED 2020-02-01 14:59:14 +01:00
Matthias
12317b1c53 Add some rudimentary tests for questions 2020-02-01 14:46:43 +01:00
Matthias
d1a3a2d000 Add tests for build_config 2020-02-01 14:22:40 +01:00
Matthias
cfa6a3e3d3 Don't overwrite files 2020-02-01 14:12:21 +01:00
Matthias
c224c66978 Small edits to install.md 2020-02-01 14:06:31 +01:00
Matthias
929bbe3058 Link to docker installation from index.md 2020-02-01 14:01:19 +01:00
Matthias
8796ecb2a9 Ad example for new-config with answered questions 2020-02-01 13:56:57 +01:00
Matthias
54512a66ef Update help-strings for list-utils 2020-02-01 13:52:25 +01:00
Matthias
c40a4d77f8 Use exchange_mapping to determine correct exchange-template 2020-02-01 13:46:58 +01:00
Matthias
d69ef4380b Add basic documentation for new-config option 2020-02-01 13:44:04 +01:00
Matthias
8371003c05 Merge pull request #2827 from freqtrade/release/2020-01
new Release 2020.01
2020-02-01 12:54:32 +01:00
Matthias
19d4e1435c Merge pull request #2828 from yazeed/line_alignment_fixes
fixed some more line alignments
2020-02-01 11:19:28 +01:00
Matthias
4a80c47fd1 Merge pull request #2825 from yazeed/better_backtesting_tables
more consistent backtesting and sell reasons tables
2020-02-01 11:18:50 +01:00
Yazeed Al Oyoun
d038bcedb0 fixed some more line alignments 2020-01-31 22:37:05 +01:00
Matthias
c396ad4daa Align quotes in same area 2020-01-31 20:41:51 +01:00
Matthias
cff8498b42 Version bump 2020.01 2020-01-31 20:17:53 +01:00
Matthias
fdf6121b6e Merge branch 'master' into release/2020-01 2020-01-31 20:17:41 +01:00
Yazeed Al Oyoun
907a61152c added rounding to Tot Profit % on Sell Reasosn table to be consistent with other percentiles on table. 2020-01-31 04:53:37 +01:00
Yazeed Al Oyoun
e2b3907df5 more consistent backtesting tables and labels 2020-01-31 04:39:18 +01:00
Matthias
4be3f053ca Exclude trading against BNB bases on binance 2020-01-30 21:42:48 +01:00
Matthias
83baa6ee2e Add test stub 2020-01-29 22:47:15 +01:00
Matthias
cebf99b5d8 Implement validation 2020-01-29 22:46:47 +01:00
Matthias
acbf13e648 Fail gracefully if user interrupted question session 2020-01-29 21:47:05 +01:00
Matthias
2f0775fa1b Extract build-config tests to new file 2020-01-29 21:31:09 +01:00
Matthias
940bfbee96 Move start_config out of build_commands file 2020-01-29 21:28:01 +01:00
Matthias
e250c56829 Add Questionaire workflow 2020-01-29 21:21:38 +01:00
Matthias
49c9258a08 enhance test 2020-01-29 20:43:10 +01:00
Matthias
dd83cb1b95 Extract selection generation to a seperate method 2020-01-29 20:27:38 +01:00
Matthias
2396f35586 Merge pull request #2819 from hroff-1902/worker-delete-state
Remove state attribute from Worker class
2020-01-29 15:57:35 +01:00
hroff-1902
68771a7861 Remove state attr from Worker 2020-01-29 17:08:36 +03:00
hroff-1902
e1356fb80e Merge pull request #2800 from yazeed/enhanced_check_depth_of_market_logging
better logging on check_depth_of_market_buy()
2020-01-29 10:56:14 +03:00
Matthias
c80d8f432a Add exchange templates 2020-01-29 07:13:38 +01:00
Matthias
122c916356 Add first version of config_deploy 2020-01-29 07:03:22 +01:00
Matthias
9f29128205 Fix small json formatting issue 2020-01-29 07:01:17 +01:00
Matthias
b384ca8fd2 Create new-config command 2020-01-29 06:47:01 +01:00
Yazeed Al Oyoun
a0b92fe0b1 removed typo 2020-01-28 19:29:47 +01:00
Yazeed Al Oyoun
328a9ffafd fixed typo in false statement 2020-01-28 19:27:49 +01:00
Matthias
d40054b9d2 Merge pull request #2815 from hroff-1902/docs-gitclone
Minor: Advise to use https method for git clone instead of ssh
2020-01-28 06:25:08 +01:00
hroff-1902
4c0e586354 Advise to use https method for git clone i.o ssh 2020-01-27 22:39:04 +03:00
Matthias
3541f7bfce Merge pull request #2808 from freqtrade/dependabot/pip/develop/plotly-4.5.0
Bump plotly from 4.4.1 to 4.5.0
2020-01-27 19:45:01 +01:00
Matthias
3a2443b5fa Merge pull request #2811 from freqtrade/dependabot/pip/develop/sqlalchemy-1.3.13
Bump sqlalchemy from 1.3.12 to 1.3.13
2020-01-27 09:47:15 +01:00
Matthias
e488ce0d07 Merge pull request #2809 from freqtrade/dependabot/pip/develop/urllib3-1.25.8
Bump urllib3 from 1.25.7 to 1.25.8
2020-01-27 09:46:11 +01:00
Matthias
521e497ba3 Merge pull request #2812 from freqtrade/dependabot/pip/develop/pytest-5.3.4
Bump pytest from 5.3.3 to 5.3.4
2020-01-27 09:38:37 +01:00
dependabot-preview[bot]
c9ee678a52 Bump sqlalchemy from 1.3.12 to 1.3.13
Bumps [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) from 1.3.12 to 1.3.13.
- [Release notes](https://github.com/sqlalchemy/sqlalchemy/releases)
- [Changelog](https://github.com/sqlalchemy/sqlalchemy/blob/master/CHANGES)
- [Commits](https://github.com/sqlalchemy/sqlalchemy/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-27 08:36:41 +00:00
Matthias
078e25e383 Merge pull request #2810 from freqtrade/dependabot/pip/develop/ccxt-1.21.91
Bump ccxt from 1.21.76 to 1.21.91
2020-01-27 09:35:35 +01:00
dependabot-preview[bot]
a3b0f75289 Bump pytest from 5.3.3 to 5.3.4
Bumps [pytest](https://github.com/pytest-dev/pytest) from 5.3.3 to 5.3.4.
- [Release notes](https://github.com/pytest-dev/pytest/releases)
- [Changelog](https://github.com/pytest-dev/pytest/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest/compare/5.3.3...5.3.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-27 07:44:27 +00:00
dependabot-preview[bot]
66939bdcf6 Bump ccxt from 1.21.76 to 1.21.91
Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.21.76 to 1.21.91.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ccxt/ccxt/compare/1.21.76...1.21.91)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-27 07:43:41 +00:00
dependabot-preview[bot]
184a6005a6 Bump urllib3 from 1.25.7 to 1.25.8
Bumps [urllib3](https://github.com/urllib3/urllib3) from 1.25.7 to 1.25.8.
- [Release notes](https://github.com/urllib3/urllib3/releases)
- [Changelog](https://github.com/urllib3/urllib3/blob/master/CHANGES.rst)
- [Commits](https://github.com/urllib3/urllib3/compare/1.25.7...1.25.8)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-27 07:43:11 +00:00
dependabot-preview[bot]
161c06fd4e Bump plotly from 4.4.1 to 4.5.0
Bumps [plotly](https://github.com/plotly/plotly.py) from 4.4.1 to 4.5.0.
- [Release notes](https://github.com/plotly/plotly.py/releases)
- [Changelog](https://github.com/plotly/plotly.py/blob/master/CHANGELOG.md)
- [Commits](https://github.com/plotly/plotly.py/compare/v4.4.1...v4.5.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-27 07:42:52 +00:00
Matthias
5d7317ef77 Merge pull request #2807 from hroff-1902/refactor-freqtrade-2
Add notify_status() to FreqtradeBot
2020-01-27 06:44:20 +01:00
Matthias
aae14dd9fe Merge pull request #2806 from hroff-1902/minor-freqtrade-5
Minor cosmetics in start_trading
2020-01-27 06:37:47 +01:00
hroff-1902
30e3e434ab Add notify_status() to FreqtradeBot 2020-01-27 03:34:53 +03:00
hroff-1902
33645e45fd Minor cosmetics in start_trading 2020-01-27 02:49:25 +03:00
Matthias
1ef148317d Merge branch 'develop' into stoploss_market 2020-01-26 20:33:41 +01:00
Matthias
1b9af9d2d8 Merge branch 'develop' into data_handler 2020-01-26 20:31:13 +01:00
hroff-1902
27d46ed06f Merge pull request #2804 from freqtrade/utils_commands
Utils commands
2020-01-26 21:40:04 +03:00
Matthias
02563019fc move setup_utils_config to configuration module 2020-01-26 14:15:53 +01:00
Matthias
8c9119b471 Add docustring to commands module 2020-01-26 13:46:01 +01:00
Matthias
2d02c3f2a4 Split out pairlist_commands 2020-01-26 13:46:01 +01:00
Matthias
a3e9d04383 Adjust imports to new place for arguments 2020-01-26 13:46:01 +01:00
Matthias
7f851ad8d9 Move arguments and cli_options to commands module 2020-01-26 13:46:01 +01:00
Matthias
a1c684f67c Simplify noqa setup for module imports 2020-01-26 13:46:01 +01:00
Matthias
f347e5934a Small adjustments for moved commands 2020-01-26 13:46:01 +01:00
Matthias
e033df6a2f Move optimize_commands to commands module 2020-01-26 13:46:01 +01:00
Matthias
b254bdfea3 Move plot_utils to plot_commands 2020-01-26 13:46:01 +01:00
Matthias
70a0346b0a Move data-stuff to data-commands 2020-01-26 13:46:01 +01:00
Matthias
7e23304187 Adjust tests to new paths 2020-01-26 13:46:01 +01:00
Matthias
926bf07df1 Seperate a few commands into specific files 2020-01-26 13:46:01 +01:00
Matthias
6e85280467 Adjust imports 2020-01-26 13:46:01 +01:00
Matthias
80ed1c3e14 Move utils to commands 2020-01-26 13:46:01 +01:00
hroff-1902
1ae3fb4d2f Merge pull request #2803 from freqtrade/edge_no__init__
Move edge-module out of __init__.py
2020-01-26 15:21:21 +03:00
Matthias
3f2542fcbc Move edge-module out of __init__.py 2020-01-26 10:44:42 +01:00
hroff-1902
f6278da23f Merge pull request #2802 from freqtrade/try_fixrandomfailure
Fix missed mock
2020-01-25 16:05:22 +03:00
Matthias
a3ac05cc16 Fix missed mock 2020-01-25 13:38:13 +01:00
Matthias
a97bb10877 Merge pull request #2801 from freqtrade/backtest_arguments_2
Backtest arguments instead of dictionary
2020-01-25 13:11:23 +01:00
Matthias
bd4dd8403b Fix type-errors with stake_amount 2020-01-25 12:49:37 +01:00
hroff-1902
52f0ed5310 Adjust tests 2020-01-25 12:49:37 +01:00
hroff-1902
f4c7edf551 No args for backtest(), use arguments 2020-01-25 12:49:37 +01:00
Yazeed Al Oyoun
f8db7f1709 added ask price, bid price, immediate ask quantity, and immediate bid quantity to check_depth_of_market_buy. also added a line that mentions if delta condition was satisfied or not. 2020-01-25 04:17:41 +01:00
Matthias
72c273aaed Add test for closed trade case 2020-01-23 21:07:21 +01:00
Matthias
70b9bd9c0e Verify if trade is closed before acting on Stoploss_on_exchange 2020-01-23 20:36:48 +01:00
Matthias
ea5ac1efb5 Don't handle stoploss if there is an open regular order 2020-01-23 20:24:23 +01:00
Matthias
a83de241e4 Check for closed stoploss-orders first 2020-01-23 19:40:31 +01:00
Matthias
f5a44e4fc4 open_order_id should be None when handling stoploss orders 2020-01-23 19:38:35 +01:00
Matthias
1d141cd406 Merge branch 'develop' into stoploss_market 2020-01-23 19:35:05 +01:00
hroff-1902
82797e768f Merge pull request #2796 from freqtrade/update_wallets_after_foresell
update wallets after forcesell
2020-01-23 00:10:47 +03:00
hroff-1902
9176064047 Merge pull request #2795 from freqtrade/tests_buy_rate
Add parametrized tests for get_buy_rate
2020-01-23 00:05:40 +03:00
Matthias
bc4c469797 Merge branch 'develop' into stoploss_market 2020-01-22 20:51:52 +01:00
Matthias
aad10ceee3 Add threading lock object for /forcesell
Protects against stoploss_on_exchange order recreation
in case of /forcesell (it's a timing issue, so may or may not happen).
2020-01-22 20:50:09 +01:00
Matthias
58ceda4b90 update wallets after forcesell 2020-01-22 19:54:55 +01:00
Matthias
f36bc80ad1 Add parametrized tests for get_buy_rate 2020-01-22 19:43:02 +01:00
hroff-1902
2b4d821d30 Merge pull request #2794 from freqtrade/rename_get_target_bid
rename get_target_bid
2020-01-22 17:19:04 +03:00
Matthias
8a940eb0c1 Align price finding function name on buy side with get_sell_rate 2020-01-22 14:46:28 +01:00
Matthias
9c2f21b07e Merge pull request #2788 from drdux/develop
added missing word in hyperopt loss example
2020-01-22 12:47:08 +01:00
hroff-1902
055f3fd1fd Merge pull request #2790 from freqtrade/backtest_optimize
Fix typo in sell-reason table generation
2020-01-22 12:29:20 +03:00
hroff-1902
40843566d0 Merge pull request #2791 from freqtrade/windows_ci_fix
upgrade pip in windows environment
2020-01-22 12:16:04 +03:00
Matthias
e13045b599 upgrade pip in windows environment 2020-01-22 06:17:13 +01:00
Matthias
7d2d0235a0 Fix typo in sell-reason table generation 2020-01-22 06:08:34 +01:00
Daniel Goller
bff0a09537 line was too long 2020-01-21 16:14:19 +00:00
Daniel Goller
c1c2717bc9 added missing word in hyperopt loss example 2020-01-21 15:49:24 +00:00
Matthias
fc2970f41b Merge branch 'develop' into data_handler 2020-01-21 06:58:48 +01:00
hroff-1902
66415d48d4 Merge pull request #2787 from freqtrade/dry_run_optional
remove default value calls for dry_run
2020-01-20 23:08:17 +03:00
hroff-1902
d54b1dade3 Merge pull request #2786 from freqtrade/fix/stoploss_on_exchange_dryrun
Fix/stoploss on exchange dryrun
2020-01-20 22:50:38 +03:00
Matthias
1bf475fa1a Remove .get calls for dry_run - it's a mandatory property 2020-01-20 20:24:40 +01:00
Matthias
099bbc5c7f Fix bug when stoploss_on_exchange in combination with dry-run
does not sell orders
2020-01-20 20:14:40 +01:00
Matthias
6e3336cb30 Adapt test to verify behaviour of stoploss_on_exchange in dry-run 2020-01-20 20:10:06 +01:00
Matthias
eb6c7f8595 Merge pull request #2781 from freqtrade/dependabot/pip/develop/ccxt-1.21.76
Bump ccxt from 1.21.56 to 1.21.76
2020-01-20 14:44:11 +01:00
Matthias
10a706851a Merge pull request #2782 from freqtrade/dependabot/pip/develop/pytest-5.3.3
Bump pytest from 5.3.2 to 5.3.3
2020-01-20 11:40:57 +01:00
dependabot-preview[bot]
8d4515935a Bump pytest from 5.3.2 to 5.3.3
Bumps [pytest](https://github.com/pytest-dev/pytest) from 5.3.2 to 5.3.3.
- [Release notes](https://github.com/pytest-dev/pytest/releases)
- [Changelog](https://github.com/pytest-dev/pytest/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest/compare/5.3.2...5.3.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-20 07:49:18 +00:00
dependabot-preview[bot]
9474cb1792 Bump ccxt from 1.21.56 to 1.21.76
Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.21.56 to 1.21.76.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ccxt/ccxt/compare/1.21.56...1.21.76)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-20 07:48:46 +00:00
Matthias
10d9db72a8 Adjust tests slightly 2020-01-19 20:06:04 +01:00
Matthias
cf9331919f move exchange-specific order-parsing to exchange class
Related to stoploss_on_exchange in combination with trailing stoploss.

Binance contains stopPrice in the info, while kraken returns the same
value as "price".
2020-01-19 19:54:30 +01:00
Matthias
7a22aaa111 UPdate documentation to reflect that stoploss-on-exchange is also
available for kraken
2020-01-19 14:40:09 +01:00
Matthias
f1629c907a Implement stoploss for kraken 2020-01-19 14:40:09 +01:00
Matthias
e6f1912443 Use named arguments for stoploss create_order call 2020-01-19 14:40:09 +01:00
Matthias
16b34e11ca Complete rename of stoploss_limit to stoploss 2020-01-19 14:40:09 +01:00
Matthias
256fc2e78c Rename stoploss_limit to stoploss 2020-01-19 13:30:56 +01:00
Matthias
da0af489a2 Adjust tests to pass in order_types instead of rate 2020-01-19 13:25:41 +01:00
Matthias
8d2e0bfd62 Move rate-calcuation for stoploss-limit order to exchange 2020-01-19 13:13:09 +01:00
hroff-1902
2f82122fc4 Merge pull request #2763 from freqtrade/fix/precision_rounding
Fix/precision rounding
2020-01-17 01:25:30 +03:00
hroff-1902
889929f782 Merge pull request #2772 from freqtrade/safe_sell_amount_update_wallet
Safe sell amount update wallet
2020-01-16 00:15:34 +03:00
Matthias
fa1e9dd70d Adjust tests to allow updating within safe_sell_amount 2020-01-15 21:53:04 +01:00
Matthias
29a5e4fba1 Update wallets before getting amount 2020-01-15 21:52:54 +01:00
hroff-1902
a20f502159 Merge pull request #2771 from freqtrade/fix/2770
Fix bad bug in safe_sell_amount
2020-01-15 23:33:04 +03:00
Matthias
8bcfe4a6aa Up log level of safe_sell_amount message 2020-01-15 21:01:36 +01:00
hroff-1902
854bb0056b Merge pull request #2583 from gaugau3000/doc_feature_section
Doc feature section
2020-01-15 22:55:39 +03:00
Matthias
90ed4c665b Cover equal case via test 2020-01-15 19:59:08 +01:00
Matthias
d1bf388b0e Wallet amount must be compared with >= 2020-01-15 19:56:14 +01:00
Matthias
6feb68b18d Change feature sorting to tell more of a story 2020-01-15 19:51:33 +01:00
Matthias
09621b3ef1 Merge pull request #2769 from tejeshreddy/update-comments
Update comments on backtesting
2020-01-15 15:44:46 +01:00
Tejesh
f73f0b1653 Update comments on backtesting 2020-01-15 19:29:00 +05:30
hroff-1902
f7f56f5eda Merge pull request #2768 from freqtrade/rpc/refresh_balance
refresh wallets on /balance call
2020-01-15 16:34:09 +03:00
Matthias
c8806a16a1 Allow wallet update from /balance 2020-01-15 06:43:41 +01:00
Matthias
4013701bdb allow wallet update to be skipped if the value is fresh enough.
Value is NOT configurable, having this wrong can result in bans on the
exchange.
2020-01-15 06:42:53 +01:00
Matthias
4c823f12e3 Sort imports 2020-01-14 20:25:58 +01:00
Matthias
1e58cd70ad Adapt tests to round price up 2020-01-14 20:16:47 +01:00
Matthias
bea4ad8eff Revert price_to_precision to rounding up 2020-01-14 20:16:20 +01:00
Matthias
d7957bd791 add advanced tests for price_to_precision 2020-01-14 16:04:39 +01:00
Matthias
425ec53b28 Combine amount_to_precision tests into one 2020-01-14 16:01:35 +01:00
Matthias
797dc8a4da Add more detailed tests for amount_to_precision 2020-01-14 15:54:53 +01:00
Matthias
d12a2a5888 Merge pull request #2752 from freqtrade/plotting/indicator_strategy
Allow enhanced plot-dataframe configuration
2020-01-13 19:53:15 +01:00
Matthias
845e27542a Merge pull request #2765 from freqtrade/dependabot/pip/develop/ccxt-1.21.56
Bump ccxt from 1.21.32 to 1.21.56
2020-01-13 11:56:07 +01:00
dependabot-preview[bot]
c67b253099 Bump ccxt from 1.21.32 to 1.21.56
Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.21.32 to 1.21.56.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ccxt/ccxt/compare/1.21.32...1.21.56)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-13 10:38:34 +00:00
Matthias
154fff7d02 Merge pull request #2764 from freqtrade/dependabot/pip/develop/numpy-1.18.1
Bump numpy from 1.18.0 to 1.18.1
2020-01-13 11:37:31 +01:00
Matthias
82fd6e6fb3 Merge pull request #2766 from freqtrade/dependabot/pip/develop/python-telegram-bot-12.3.0
Bump python-telegram-bot from 12.2.0 to 12.3.0
2020-01-13 11:37:10 +01:00
dependabot-preview[bot]
b3938a86c3 Bump python-telegram-bot from 12.2.0 to 12.3.0
Bumps [python-telegram-bot](https://github.com/python-telegram-bot/python-telegram-bot) from 12.2.0 to 12.3.0.
- [Release notes](https://github.com/python-telegram-bot/python-telegram-bot/releases)
- [Changelog](https://github.com/python-telegram-bot/python-telegram-bot/blob/master/CHANGES.rst)
- [Commits](https://github.com/python-telegram-bot/python-telegram-bot/compare/v12.2.0...v12.3.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-13 07:56:20 +00:00
dependabot-preview[bot]
2f8ed7ed19 Bump numpy from 1.18.0 to 1.18.1
Bumps [numpy](https://github.com/numpy/numpy) from 1.18.0 to 1.18.1.
- [Release notes](https://github.com/numpy/numpy/releases)
- [Changelog](https://github.com/numpy/numpy/blob/master/doc/HOWTO_RELEASE.rst.txt)
- [Commits](https://github.com/numpy/numpy/compare/v1.18.0...v1.18.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-13 07:55:35 +00:00
hroff-1902
af36635769 Minor changes in the docs 2020-01-13 06:41:16 +03:00
hroff-1902
495728f502 Refine docs 2020-01-13 06:41:16 +03:00
Matthias
5dccd01fb7 Merge pull request #2760 from freqtrade/remove_hardcoded_exchange_stuff
Remove hardcoded exchange parameters
2020-01-12 19:47:44 +01:00
Matthias
5fcab1eee8 Align method names to internal ccxt names
These methods are reimplemented from ccxt so we can test their behaviour.
2020-01-12 14:55:05 +01:00
Matthias
b60d7ad42f Use ccxt.decimal_to_precision instead of our own calculation 2020-01-12 14:41:09 +01:00
Matthias
fa1f9bcdbd expose precisionMode from exchange class 2020-01-12 14:37:45 +01:00
Matthias
53abfdbcbf Use sorted on set instead of explicit list conversion 2020-01-12 12:48:29 +01:00
Matthias
3519cebf66 Add test for failing stake_validation 2020-01-11 13:14:19 +01:00
Matthias
a7246ba1ec No need to "fix" stake_currency enum anymore 2020-01-11 12:51:42 +01:00
Matthias
60b47b6eec Add tests for get_quote_currencies 2020-01-11 12:01:34 +01:00
Matthias
ca2880537d Modify tests to skip stake_currency validations 2020-01-11 11:54:11 +01:00
Matthias
13274964a9 Implement validation for valid stake currency 2020-01-11 11:54:00 +01:00
Matthias
235a10ab86 Don't suppport <1m timeframes 2020-01-11 11:36:28 +01:00
Matthias
5faebad863 Don't hardcode TimeFrames - they can differ by exchange. 2020-01-11 11:16:05 +01:00
Matthias
90a9052377 Merge pull request #2734 from freqtrade/relative_stake
Relative stake maximum tradable amount
2020-01-11 08:18:35 +01:00
hroff-1902
d3de398395 Docs adjusted 2020-01-10 23:43:09 +03:00
hroff-1902
83b88e7916 Remove Required marks for new settings 2020-01-10 23:14:17 +03:00
hroff-1902
3faa2d0eb9 Refine description for last_stake_amount_min_ratio 2020-01-10 22:59:02 +03:00
Matthias
fab19ae3a7 Implement last_stake_amount_min_ratio 2020-01-10 06:36:28 +01:00
Matthias
e94dfdeff2 UPdate documentation to remove inexisting setting 2020-01-09 20:13:14 +01:00
Matthias
9713dc8d94 Ensure wallets.update is called before buy
closes #2756
2020-01-09 20:09:21 +01:00
Matthias
b748ed3435 UPdate documentaiton wording 2020-01-09 19:59:13 +01:00
hroff-1902
7c7f7b9ece Merge pull request #2755 from freqtrade/backtest_mean
Add average profit to sell_reason stats
2020-01-09 20:35:35 +03:00
Matthias
785cd2a640 Rename test module 2020-01-09 06:53:51 +01:00
Matthias
c475729c13 Extract edge reporting to optimize_reports 2020-01-09 06:52:34 +01:00
Matthias
989ab646a9 Add profit % to sell_reason table 2020-01-09 06:46:39 +01:00
Matthias
7461b5dc02 Mention custom strategy in features 2020-01-09 06:37:18 +01:00
Matthias
135487b2c9 SPlit control and Analyse feature into 2 seperate points 2020-01-09 06:35:05 +01:00
Matthias
b25f28d1ad Merge pull request #2730 from freqtrade/extract_bt_reporting
Extract backtest reporting
2020-01-09 06:09:05 +01:00
hroff-1902
cee8f3349e rearrange features -- move Run to the top 2020-01-09 04:16:57 +03:00
hroff-1902
9559cb988e reworked 2020-01-09 04:12:43 +03:00
Matthias
db34cb1b75 Do some adjustments to the wording of the index.md section 2020-01-08 19:41:34 +01:00
Matthias
c9b0b4c7a4 Add plot_config to optional plot 2020-01-08 19:35:00 +01:00
Matthias
c3fd894a6c Regenerate plots with new settings 2020-01-07 07:16:31 +01:00
Matthias
9f2d397e1f Merge pull request #2746 from freqtrade/dependabot/pip/develop/arrow-0.15.5
Bump arrow from 0.15.4 to 0.15.5
2020-01-06 13:07:13 +01:00
Matthias
7719d8fbea Merge pull request #2748 from freqtrade/dependabot/pip/develop/coveralls-1.10.0
Bump coveralls from 1.9.2 to 1.10.0
2020-01-06 13:01:20 +01:00
Matthias
3883d18b8a Add bollinger note 2020-01-06 12:59:17 +01:00
Matthias
2b3f2e5fa8 Add first version of documentation 2020-01-06 12:55:12 +01:00
Matthias
5ae554bdff Merge pull request #2747 from freqtrade/dependabot/pip/develop/pytest-mock-2.0.0
Bump pytest-mock from 1.13.0 to 2.0.0
2020-01-06 12:50:04 +01:00
dependabot-preview[bot]
6ac7dcf5e9 Bump arrow from 0.15.4 to 0.15.5
Bumps [arrow](https://github.com/crsmithdev/arrow) from 0.15.4 to 0.15.5.
- [Release notes](https://github.com/crsmithdev/arrow/releases)
- [Changelog](https://github.com/crsmithdev/arrow/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/crsmithdev/arrow/compare/0.15.4...0.15.5)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-06 11:45:22 +00:00
dependabot-preview[bot]
6da97fafa8 Bump coveralls from 1.9.2 to 1.10.0
Bumps [coveralls](https://github.com/coveralls-clients/coveralls-python) from 1.9.2 to 1.10.0.
- [Release notes](https://github.com/coveralls-clients/coveralls-python/releases)
- [Changelog](https://github.com/coveralls-clients/coveralls-python/blob/master/CHANGELOG.md)
- [Commits](https://github.com/coveralls-clients/coveralls-python/compare/1.9.2...1.10.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-06 11:45:12 +00:00
Matthias
6d4fe94285 Merge pull request #2751 from freqtrade/dependabot/pip/develop/ccxt-1.21.32
Bump ccxt from 1.21.23 to 1.21.32
2020-01-06 12:44:13 +01:00
Matthias
b27f3b8f2c Merge pull request #2749 from freqtrade/dependabot/pip/develop/flake8-tidy-imports-4.0.0
Bump flake8-tidy-imports from 3.1.0 to 4.0.0
2020-01-06 12:44:02 +01:00
Matthias
ed29232478 Merge pull request #2750 from freqtrade/dependabot/pip/develop/scikit-learn-0.22.1
Bump scikit-learn from 0.22 to 0.22.1
2020-01-06 12:43:43 +01:00
dependabot-preview[bot]
3c0d184097 Bump ccxt from 1.21.23 to 1.21.32
Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.21.23 to 1.21.32.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ccxt/ccxt/compare/1.21.23...1.21.32)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-06 07:43:06 +00:00
dependabot-preview[bot]
d846114d3c Bump scikit-learn from 0.22 to 0.22.1
Bumps [scikit-learn](https://github.com/scikit-learn/scikit-learn) from 0.22 to 0.22.1.
- [Release notes](https://github.com/scikit-learn/scikit-learn/releases)
- [Commits](https://github.com/scikit-learn/scikit-learn/compare/0.22...0.22.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-06 07:42:44 +00:00
dependabot-preview[bot]
aabeece4c0 Bump flake8-tidy-imports from 3.1.0 to 4.0.0
Bumps [flake8-tidy-imports](https://github.com/adamchainz/flake8-tidy-imports) from 3.1.0 to 4.0.0.
- [Release notes](https://github.com/adamchainz/flake8-tidy-imports/releases)
- [Changelog](https://github.com/adamchainz/flake8-tidy-imports/blob/master/HISTORY.rst)
- [Commits](https://github.com/adamchainz/flake8-tidy-imports/compare/3.1.0...4.0.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-06 07:42:19 +00:00
dependabot-preview[bot]
b614964ba9 Bump pytest-mock from 1.13.0 to 2.0.0
Bumps [pytest-mock](https://github.com/pytest-dev/pytest-mock) from 1.13.0 to 2.0.0.
- [Release notes](https://github.com/pytest-dev/pytest-mock/releases)
- [Changelog](https://github.com/pytest-dev/pytest-mock/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest-mock/compare/v1.13.0...v2.0.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-06 07:41:39 +00:00
Matthias
888ea58df2 Add tests for new behaviour 2020-01-05 19:51:12 +01:00
Matthias
d0ccfa1925 Explicitly given indicators should override plot_config 2020-01-05 19:50:21 +01:00
Matthias
41945138ac Converting pairs from filename to pair corrected 2020-01-05 13:35:36 +01:00
Matthias
ca054799d0 Add tests for amend_last_stake_amount 2020-01-05 13:25:21 +01:00
Matthias
b37f34ff5b Implement amend_last_stake_amount 2020-01-05 13:25:11 +01:00
Matthias
a75420f75f Merge branch 'develop' into relative_stake 2020-01-05 12:55:55 +01:00
Matthias
7daa5bc338 Don't return None from unlimited_stake - 0 handles this just as well 2020-01-05 12:50:44 +01:00
Matthias
4eaaec9d1a Implement pair_to_filename to datahandler
includes tests - taken from #2744 and modified to adapt to new structure
2020-01-05 10:36:08 +01:00
hroff-1902
bc6a10353b Introduce pair_to_filename() 2020-01-05 10:22:07 +01:00
Matthias
f82c4346b6 data conversion, not data conversation
* we're not talking to the data yet ...
2020-01-05 09:55:02 +01:00
Matthias
53499e01de Clearly differentiate trade buys sells (positive and negative)
* Swap trade buys to cyan circles
* Show sell-reason description on buy too
* Green positive sells - red negative / 0 sells
2020-01-04 20:27:27 +01:00
Matthias
bdda620397 add plot_config to startegy interface properly 2020-01-04 12:56:46 +01:00
Matthias
2409261cb7 Merge branch 'develop' into data_handler 2020-01-04 11:36:27 +01:00
Matthias
b5a806dec7 Fix typo and add tests for create_plotconfig 2020-01-04 11:30:21 +01:00
Matthias
4628024de6 Adapt tests to new add_indicator methodology 2020-01-04 11:18:51 +01:00
Matthias
f04873b0b0 Add plot_config to interface 2020-01-04 11:14:00 +01:00
Matthias
5853b9904c make Plot_config the default approach 2020-01-04 11:13:45 +01:00
Matthias
5d5074ac9c Implement first working version of plot_config 2020-01-04 10:13:42 +01:00
Matthias
84ef588163 support dicts as indicators 2020-01-04 10:13:42 +01:00
Matthias
d1cda3991c Merge pull request #2742 from freqtrade/hroff-1902-patch-1
Minor: Refine fee example in the docs
2020-01-04 09:46:57 +01:00
hroff-1902
24aa596e3c Minor: Refine fee example in the docs
Taken from https://github.com/freqtrade/freqtrade/issues/2738#issuecomment-570687230. slightly reworded.
2020-01-04 01:08:37 +03:00
hroff-1902
3798f94d4c Merge pull request #2732 from freqtrade/config_validation_split
Config validation split
2020-01-03 23:41:44 +03:00
hroff-1902
75dcc369c0 Merge pull request #2740 from freqtrade/doc/backtest_typo
Update Backtesting fee documentation
2020-01-03 22:40:02 +03:00
Matthias
e1f89e3ad3 Reword Note in backtesting fee docs 2020-01-03 20:11:58 +01:00
Matthias
7e7c82cf4a Small adjustments to relative_stake PR 2020-01-03 11:34:17 +01:00
Matthias
71dd038664 add tradable_balance_ratio to to all config samples 2020-01-03 11:23:06 +01:00
Matthias
55041878ae Update Backtesting fee documentation 2020-01-03 11:20:08 +01:00
Matthias
0dd274917f Update documentation regarding configuration of stake_amount 2020-01-03 11:16:59 +01:00
Matthias
f3beaa3374 Deprecate capital_available_percentage 2020-01-03 10:58:31 +01:00
Matthias
6d01653bfe Adapt test to test more cases with reduced tradable_balance 2020-01-03 10:41:34 +01:00
Matthias
455838648d Apply get_available_balance logic to regular trades, too 2020-01-03 10:41:10 +01:00
Matthias
3c7981160c Extract get_available_stake_amount 2020-01-03 10:14:23 +01:00
Matthias
4ac1ac7ef5 Warn about tradable balance being applied to the current amount of the
balance
2020-01-03 09:56:06 +01:00
hroff-1902
776fc56265 Merge pull request #2735 from freqtrade/doc/macos_install
Add note about MacOS installation
2020-01-03 10:28:14 +03:00
Matthias
a8d56b2850 IMplement check for unlimited settings
verifying that either max_open_trades or stake_amount is set for
operations without edge
2020-01-03 07:07:59 +01:00
Matthias
11059e532b Fix missed default minimum in documentation 2020-01-03 06:39:47 +01:00
Matthias
da1fea6582 Minor correction to wording of MacOS Specific install doc 2020-01-03 06:37:43 +01:00
hroff-1902
3315f994b6 Merge pull request #2733 from hroff-1902/minor-freqtrade-4
Cleanup buy/sell notification in freqtradebot
2020-01-02 22:46:06 +03:00
Matthias
560aea876e Remove fiat_currency temporary variable 2020-01-02 20:20:29 +01:00
hroff-1902
b24d359a27 Merge pull request #2737 from freqtrade/plotting_percent
show percent in sell hover message.
2020-01-02 22:04:34 +03:00
Matthias
90744ff5ab show percent instead of ratio (!) 2020-01-02 19:36:31 +01:00
Matthias
b48bf035f6 Add note about MacOS installation 2020-01-02 14:54:07 +01:00
Matthias
c13c11cfa1 Type does not need to be a list 2020-01-02 14:41:28 +01:00
Matthias
6e615998c0 Fix documentation typo 2020-01-02 13:52:35 +01:00
Matthias
94afb7cb1d Improve integration test with a few additional tests 2020-01-02 13:45:03 +01:00
Matthias
bfef3cf497 Add additional test case for lower balance ratios 2020-01-02 13:38:08 +01:00
Matthias
cba156dfff Add offset calculation for relative stake maximum limit 2020-01-02 13:20:57 +01:00
Matthias
64db1f6736 Prepare tests to valiate reduced full amount. 2020-01-02 13:16:18 +01:00
hroff-1902
a47a25ca88 Refine passing msg params 2020-01-02 14:38:25 +03:00
hroff-1902
88efa4065b Align the name of a variable to be same for buy and sell parts 2020-01-02 13:56:16 +03:00
hroff-1902
f15e5e9d57 Add _notify_buy() 2020-01-02 13:51:25 +03:00
hroff-1902
2ccdb67e4d Merge pull request #2731 from freqtrade/btanalysis_align_columns
Btanalysis align columns
2020-01-02 13:03:51 +03:00
Matthias
1b8943ac54 Add documentation for tradable_balance_ratio 2020-01-02 10:59:41 +01:00
Matthias
9382b38c41 Fix mypy error 2020-01-02 10:56:00 +01:00
Matthias
22fcf7b4dc Allow empty stake currency in certain cases 2020-01-02 10:47:37 +01:00
Matthias
20fc3b7978 validate config for utils too 2020-01-02 10:41:10 +01:00
Matthias
9325880fe5 Split config-validation requires 2020-01-02 10:39:32 +01:00
Matthias
cac0e37b06 Merge pull request #2729 from hroff-1902/minor-freqtrade-3
Cosmetics in freqtradebot
2020-01-02 10:06:42 +01:00
Matthias
2c8e8d8ef6 Align columns for btanalysis loading 2020-01-02 09:51:47 +01:00
Matthias
6fbdd6bee9 Remove unused directory from user_data 2020-01-02 09:51:24 +01:00
hroff-1902
e89fa44680 Arrange common section for update trade state methods 2020-01-02 11:50:54 +03:00
Matthias
a9fbad0741 Improve docstrings 2020-01-02 09:37:54 +01:00
Matthias
8cc48cf4b0 Fix tests where mocks fail now 2020-01-02 09:31:53 +01:00
Matthias
10ee23622a Extract tests for backtest_reports to their own test module 2020-01-02 09:31:53 +01:00
Matthias
904e1647e1 Extract generate_text_table_strategy to seperate module 2020-01-02 09:31:53 +01:00
Matthias
caec345c0b Extract generate_text_table_sell_reason from backtesting class 2020-01-02 09:31:53 +01:00
Matthias
18a53f4467 Extract generate_text_table from backtesting class 2020-01-02 09:31:47 +01:00
Matthias
6dfde99cbe Merge pull request #2728 from hroff-1902/minor-setup-msg
Minor: Fix message in setup.sh
2020-01-02 06:59:44 +01:00
hroff-1902
21418e2988 Minor: fix comment 2020-01-02 03:16:18 +03:00
hroff-1902
4475110df8 Cosmetics in freqtradebot 2020-01-02 03:07:24 +03:00
hroff-1902
0ea44b0143 Fix message in setup.sh 2020-01-02 02:36:59 +03:00
Matthias
3327ebf2b1 Merge pull request #2720 from hroff-1902/refactor-create-trades
Refactor create trades
2019-12-31 15:34:12 +01:00
Matthias
26a2395aeb Include Pair name in exception log message 2019-12-31 07:11:09 +01:00
Matthias
9d518b9d29 Add comment and don't hardcode 4 in test 2019-12-31 07:05:21 +01:00
Matthias
6ebb9017c7 Improve test enter_positions 2019-12-31 07:03:57 +01:00
Matthias
a88464de3a Improve some test code 2019-12-31 07:01:58 +01:00
hroff-1902
fd7af587da Rename process_maybe_execute_buys() --> enter_positions() 2019-12-30 22:50:56 +03:00
hroff-1902
84918ad424 Rename process_maybe_execute_sells() --> exit_positions() 2019-12-30 22:08:36 +03:00
Matthias
699c0d6bc3 Merge branch 'develop' into data_handler 2019-12-30 19:40:43 +01:00
Matthias
2537b8cb0c Merge pull request #2725 from freqtrade/minor_fix
[Minor] Edge-cli should use exchangeresolver
2019-12-30 19:27:40 +01:00
hroff-1902
78883663a0 Merge pull request #2726 from freqtrade/exceptions_seperate_file
Refactor Exceptions to their own file
2019-12-30 21:21:14 +03:00
hroff-1902
b00406a7eb Make process_maybe_execute_*() returning integers 2019-12-30 21:09:35 +03:00
hroff-1902
4d56e3b36e Address some comments made in the review 2019-12-30 20:54:32 +03:00
Matthias
8e9a3e8fc8 Capture FtBaseException at the outermost level 2019-12-30 15:11:07 +01:00
Matthias
1ffda29fd2 Adjust improts to new exception location 2019-12-30 15:02:17 +01:00
Matthias
024aa3ab6b Move exceptions to seperate module 2019-12-30 14:57:26 +01:00
Matthias
20abf67779 Add Debug "code" for randomly failing test 2019-12-30 14:29:36 +01:00
Matthias
fb3a53b8af Use ExchangeResolver for edge_cli too 2019-12-30 14:28:34 +01:00
Matthias
4c9295fe2d Rename Bid-strategy helpervariable to something shorter
avoids unnecessary wrapping...
2019-12-30 14:00:34 +01:00
hroff-1902
6a7163d3a9 Merge pull request #2724 from freqtrade/improve_strattemplate
[minor] Add trailing_only_offset to template and sample
2019-12-30 15:32:24 +03:00
Matthias
de23f3928d Add trailing_only_offset to template and sample 2019-12-30 09:58:20 +01:00
Matthias
8975e38b1d Merge pull request #2723 from freqtrade/dependabot/pip/develop/ccxt-1.21.23
Bump ccxt from 1.21.12 to 1.21.23
2019-12-30 09:32:03 +01:00
dependabot-preview[bot]
20a132651f Bump ccxt from 1.21.12 to 1.21.23
Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.21.12 to 1.21.23.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ccxt/ccxt/compare/1.21.12...1.21.23)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-30 07:34:49 +00:00
hroff-1902
88ba7e467d Merge pull request #2722 from freqtrade/rpc/misinfo
[minor]Fix misinformation in /status table
2019-12-29 22:41:36 +03:00
Matthias
df7ceb4ccb Fix misinformation in /status table 2019-12-29 19:53:02 +01:00
Matthias
47bb8ad0d4 Merge pull request #2721 from freqtrade/jupyter_docs
Document usage of jupyter with venv kernel
2019-12-29 19:49:19 +01:00
Matthias
304d15e236 Small corrections 2019-12-29 19:35:42 +01:00
Matthias
d1c45cf3f8 Update analysis documentation to include kernel installation 2019-12-29 13:07:51 +01:00
hroff-1902
04f28ed9bc Refactor try/except: handle DependencyException for each pair separately 2019-12-29 05:03:10 +03:00
hroff-1902
ce84f74528 Adjust tests 2019-12-29 05:00:22 +03:00
hroff-1902
762604300f Refactor create_trades() 2019-12-29 04:37:44 +03:00
hroff-1902
433fd2a7c3 Merge pull request #2652 from freqtrade/safe_sell_amount
Safe sell amount
2019-12-29 00:09:21 +03:00
Matthias
814cc20c6b Remove potential circular import 2019-12-28 19:58:41 +01:00
Matthias
f4a532ef6d Pass format to load_data 2019-12-28 14:57:39 +01:00
Matthias
6b5983339d Require dataformat entries in configuration 2019-12-28 14:47:30 +01:00
Matthias
ae1b28aab7 Remove get_datahandlerclass from package exposes 2019-12-28 14:32:11 +01:00
hroff-1902
09b77d9f14 Merge pull request #2718 from hroff-1902/minor-freqtrade-2
Minor: code cleanup in freqtradebot
2019-12-28 14:55:42 +03:00
hroff-1902
5c39ebd0a0 Adjust logging 2019-12-28 13:59:40 +03:00
Matthias
e2a00c03d6 Document convert options 2019-12-28 11:24:37 +01:00
Matthias
66d18575a7 Implement abstract interface 2019-12-28 11:10:31 +01:00
Matthias
9e4fc00a0f Add test for convert_ohlcv 2019-12-28 11:03:06 +01:00
Matthias
70f3ff0461 Add test for convert_trades_Format 2019-12-28 11:03:06 +01:00
Matthias
e7054adc49 Add tests for start_convert_data 2019-12-28 11:03:06 +01:00
Matthias
28787a001c Move convert functions to convert module 2019-12-28 11:02:34 +01:00
Matthias
525550e4c7 Fix typo in parameter transition 2019-12-28 11:01:42 +01:00
Matthias
6860491189 Rename datahandler module to history module
Also move previous history.py into this module - so everything is
bundled
2019-12-28 11:01:42 +01:00
Matthias
b37b5c3d90 Remove Explicit datadir conversation 2019-12-28 11:01:42 +01:00
Matthias
9c5b94adf5 Pass data_format to methods 2019-12-28 11:01:42 +01:00
Matthias
65f539e9d8 More tests for datahandler 2019-12-28 11:01:42 +01:00
Matthias
d65c1eea7a Add some tests for datahandler 2019-12-28 11:01:42 +01:00
Matthias
8a030e7fc0 Use exists instead of is_file 2019-12-28 11:01:42 +01:00
Matthias
a3144cb2f0 remove trim_tickerlist 2019-12-28 11:01:42 +01:00
Matthias
baa942ff98 Don't use function to resolve pairname for test 2019-12-28 11:01:42 +01:00
Matthias
32c2ce146e Remove last usage of load_tickerlist 2019-12-28 11:01:42 +01:00
Matthias
4b277afc52 Remove test for load_tickerdata 2019-12-28 11:01:42 +01:00
Matthias
5479c67178 Clean up some codes which use list-based tests 2019-12-28 11:01:41 +01:00
Matthias
80dbba1280 Remove unnecessary mocks 2019-12-28 11:01:41 +01:00
Matthias
aa39f2160b Use load_data instead of a sequence of calls
in tests which don't test this
2019-12-28 11:01:41 +01:00
Matthias
a2567bea64 Remove unnecessary mock 2019-12-28 11:01:41 +01:00
Matthias
d1b52809ac Cleanup history 2019-12-28 11:01:41 +01:00
Matthias
d06777b8ce Remove old "load_cached_data" method 2019-12-28 11:01:41 +01:00
Matthias
7a6476c9ba Update tests 2019-12-28 11:01:41 +01:00
Matthias
e4f185f357 Remove 'line' from load_cached_data tests
Users are unable to use line anyway, it's only there for tests
2019-12-28 11:01:41 +01:00
Matthias
df085a6f15 Fix small bug and test 2019-12-28 11:01:41 +01:00
Matthias
c648d973c1 Implement new "load_data_for_updating" method based on dataframes 2019-12-28 11:01:41 +01:00
Matthias
ec8fb5f308 Make no-data warning optional 2019-12-28 11:01:41 +01:00
Matthias
b83487a70d Extract default dataframe columns to constant 2019-12-28 11:01:41 +01:00
Matthias
dbe8f727cb Fix typehint 2019-12-28 11:01:41 +01:00
Matthias
91c70a0e9c Change to use ohlcv_purge 2019-12-28 11:01:41 +01:00
Matthias
37c5b68987 Move dataframe validation to abstract class 2019-12-28 11:01:41 +01:00
Matthias
e861f05b75 Move dataframe trim to within jsondatahandler 2019-12-28 11:01:41 +01:00
Matthias
552c93abf0 Improve some docstrings 2019-12-28 11:01:41 +01:00
Matthias
b7c1d55491 Modify tests to point to datahandlers 2019-12-28 11:01:41 +01:00
Matthias
9876d126ca Use handler for trades 2019-12-28 11:01:41 +01:00
Matthias
9547d47ae2 Initialize datahandlers 2019-12-28 11:01:41 +01:00
Matthias
5fca17d7e1 Allow initializing handler-class just once 2019-12-28 11:01:41 +01:00
Matthias
416517b0c9 Move trim_dataframe from history to converter 2019-12-28 11:01:41 +01:00
Matthias
9d8ea2f13b Replace calls to load_tickerdata_file with DataHandler calls 2019-12-28 11:01:41 +01:00
Matthias
88fa7fc24c Simplify validate dataframe method 2019-12-28 11:01:41 +01:00
Matthias
53ee636fa0 Check if file exists before loading 2019-12-28 11:01:41 +01:00
Matthias
873f5dbe6b Revrite validate_pairdata to work with pandas 2019-12-28 11:01:41 +01:00
Matthias
db520a09ee Trim dataframe, not tickerlist 2019-12-28 11:01:41 +01:00
Matthias
866908d2ca Load and save using pandas internal function 2019-12-28 11:01:41 +01:00
Matthias
377d59abe7 Be selective how to load ohclv data for conversation 2019-12-28 11:01:41 +01:00
Matthias
d9e7d64f33 Split parse_ticker_dataframe some logic to clean_ohlcv_dataframe. 2019-12-28 11:01:41 +01:00
Matthias
1b90ec58b9 Use changed pair-handling for providers 2019-12-28 11:01:41 +01:00
Matthias
d923bab828 Remove abstract interface for now 2019-12-28 11:01:41 +01:00
Matthias
48728e2d66 Change DataProvider interface to accept pair per method 2019-12-28 11:01:41 +01:00
Matthias
e529a4c261 Fix typehint for get_datahandlerclass 2019-12-28 11:01:41 +01:00
Matthias
eff5cc0568 Add default to internals 2019-12-28 11:01:41 +01:00
Matthias
c6d6dbfdb1 Implement jsondatahandler file store 2019-12-28 11:01:41 +01:00
Matthias
8f214aec89 Fix "dumping" message to work correctly for .gz files 2019-12-28 11:01:41 +01:00
Matthias
abc6b9459a Add ohlcv_store call to convert_ohlcv 2019-12-28 11:01:41 +01:00
Matthias
d804372d74 Enhance ohlcv_convert method 2019-12-28 11:01:41 +01:00
Matthias
018e270336 Allow --pairs for convert arguments 2019-12-28 11:01:41 +01:00
Matthias
2a728ee68f fix bug in find-files 2019-12-28 11:01:41 +01:00
Matthias
3d4f62081e Allow timeframes for convert-data 2019-12-28 11:01:41 +01:00
Matthias
ef0fcb0e0f Make data-finding safe 2019-12-28 11:01:41 +01:00
Matthias
f8b8b9ac63 Convert to Path temporarily 2019-12-28 11:01:41 +01:00
Matthias
2a6b542b09 Add second subcommand to allow conversation of ohlcv and trades data
seprately
2019-12-28 11:01:41 +01:00
Matthias
c3064dfd2b Enhance validation constants 2019-12-28 11:00:45 +01:00
Matthias
cd4466a626 Add convert_* methods 2019-12-28 11:00:45 +01:00
Matthias
e5a61667dd Implement first version of jsondatahandler 2019-12-28 11:00:22 +01:00
Matthias
2496aa8e3f Add convert-data template subcommands 2019-12-28 10:59:30 +01:00
hroff-1902
004993583b Merge pull request #2712 from freqtrade/strategylist
add list-strategies subcommand
2019-12-28 12:32:06 +03:00
Matthias
443fd8f7dd Merge branch 'develop' into safe_sell_amount 2019-12-28 09:42:52 +01:00
Matthias
b2fb28453f Fix tests after changing output 2019-12-28 06:39:25 +01:00
Matthias
fc98cf0037 Address PR feedback - change output to show Filename only 2019-12-28 06:25:45 +01:00
hroff-1902
6db75bc244 Merge pull request #2706 from freqtrade/data_dir
Convert datadir within config to Path
2019-12-28 05:14:48 +03:00
hroff-1902
d6ca562b03 Make mypy happy and handle hypothetical case when stake_amount == 0 2019-12-28 04:05:03 +03:00
hroff-1902
3dbd83e35a Introduce get_free_open_trades() method 2019-12-28 03:46:42 +03:00
hroff-1902
8eeabd2372 Move warning to create_trades() 2019-12-28 03:22:50 +03:00
hroff-1902
ed9cb4219d Make mypy happy 2019-12-28 02:58:23 +03:00
hroff-1902
ef92fd775c Align behavior: check for available in all cases: edge, unlimited and fixed 2019-12-28 02:53:41 +03:00
hroff-1902
abaeab89aa Make _calculate_unlimited_stake_amount() a separate method 2019-12-28 02:36:32 +03:00
hroff-1902
243bcb2368 Make _check_available_stake_amount() a separate method 2019-12-28 02:25:43 +03:00
hroff-1902
86f2693040 cosmetics 2019-12-28 01:54:12 +03:00
hroff-1902
b6d1c5b17a _get_trade_stake_amount() is not private 2019-12-28 01:44:51 +03:00
hroff-1902
039dfc302c No need to convert pair name 2019-12-28 01:34:31 +03:00
hroff-1902
56fd714de2 Merge pull request #2717 from freqtrade/markets_info_nodict
Check if markets.info is a dict before using it
2019-12-27 19:47:56 +03:00
Matthias
e51ac2c973 Remove unavailable pair ... 2019-12-27 16:22:41 +01:00
Matthias
cadde3ab6d Check if markets.info is a dict before using it 2019-12-27 16:15:44 +01:00
hroff-1902
9987e64e8c Merge pull request #2711 from freqtrade/doc/formatting
Align Edge documentation to configuration page
2019-12-26 00:36:40 +03:00
Matthias
98647b490c Remove wrong "once per hour" listings 2019-12-25 19:27:08 +01:00
hroff-1902
32118cc1cb Merge pull request #2714 from freqtrade/sell_reason_counts
backtesting - Sell reason counts
2019-12-25 13:35:11 +03:00
Matthias
63f41cf1c6 Update documentation with new result 2019-12-25 09:44:23 +01:00
Matthias
e5aed098b5 Enhance backtest results with sell reason profit / loss table 2019-12-25 09:39:29 +01:00
hroff-1902
5e6e625694 Merge pull request #2710 from freqtrade/rpc_balance_output
/balance should not convert to BTC
2019-12-24 23:59:05 +03:00
hroff-1902
a95454d338 Merge pull request #2709 from freqtrade/dry_wallet_fix
Fix bug in dry-run wallet
2019-12-24 23:55:22 +03:00
Matthias
ad75048678 Fix testing with path in windows 2019-12-24 15:53:40 +01:00
Matthias
402c761a23 Change loglevel of Path output to debug 2019-12-24 15:44:04 +01:00
Matthias
66f9ece061 Add documentation for strategy-list 2019-12-24 15:35:53 +01:00
Matthias
27b8617077 Add tests 2019-12-24 15:35:38 +01:00
Matthias
2ab989e274 Cleanup some code and add option 2019-12-24 15:28:35 +01:00
Matthias
5a11ca86bb Move instanciation out of search_object 2019-12-24 14:01:28 +01:00
Matthias
25e6d6a7bf Combine load_object methods into one 2019-12-24 13:54:46 +01:00
Matthias
eb1040ddb7 Convert resolvers to classmethods 2019-12-24 13:34:37 +01:00
Matthias
a68445692b Add first steps for list-strategies 2019-12-24 12:44:41 +01:00
Matthias
48935d2932 Align edge documentation to configuration page 2019-12-24 07:25:18 +01:00
Matthias
83ed0b38c1 Wordwrap before keep it secret 2019-12-24 07:13:44 +01:00
Matthias
90670e7401 Merge pull request #2686 from freqtrade/doc/pricing_reasons
Document buy / sell order pricings
2019-12-24 07:05:35 +01:00
Matthias
a105e5664a Align /balance output to show everything in stake currency
the conversation to BTC does not make sense
2019-12-24 06:58:30 +01:00
Matthias
b8442d536a Update integration test to also test dry-run-wallets 2019-12-24 06:47:25 +01:00
Matthias
6688a2c112 Merge branch 'develop' into doc/pricing_reasons 2019-12-24 06:33:51 +01:00
Matthias
33cfeaf9b0 Remove i.e. where it doesn't fit 2019-12-24 06:31:05 +01:00
Matthias
f487dac047 FIx bug in dry-run wallets causing balances to stay there after trades
are sold
2019-12-24 06:27:11 +01:00
hroff-1902
690eb2a52b configuration.md reviewed 2019-12-24 07:19:35 +03:00
hroff-1902
20b52fcef9 Merge pull request #2705 from freqtrade/refactor_resolvers
Refactor resolvers to static resolvers
2019-12-24 00:35:52 +03:00
Matthias
0ac5e5035c Remove unused import 2019-12-23 20:43:31 +01:00
Matthias
c6b9c8eca0 Forgot to save 2019-12-23 19:32:31 +01:00
Matthias
ecbb77c17f Add forgotten option 2019-12-23 15:13:55 +01:00
Matthias
bb8acc61db Convert datadir within config to Path
(it's used as Path all the time!)
2019-12-23 15:11:29 +01:00
Matthias
90cabd7c21 Wrap line 2019-12-23 10:46:35 +01:00
Matthias
c6d2233978 Convert StrategyLoader to static loader 2019-12-23 10:23:48 +01:00
Matthias
6d5aca4f32 Convert hyperoptloss resolver to static loader 2019-12-23 10:09:08 +01:00
Matthias
248ef5a0ea Convert HyperoptResolver to static loader 2019-12-23 10:06:19 +01:00
Matthias
560acb7cea Convert ExchangeResolver to static loader class 2019-12-23 10:03:18 +01:00
Matthias
5fefa9e97c Convert PairlistResolver to static loader 2019-12-23 09:56:12 +01:00
Matthias
1c5f8070e5 Refactor build_paths to staticmethod 2019-12-23 09:53:55 +01:00
Matthias
506907ddc9 Merge pull request #2704 from freqtrade/dependabot/pip/develop/scipy-1.4.1
Bump scipy from 1.3.3 to 1.4.1
2019-12-23 09:48:35 +01:00
Matthias
84f0f451a0 Merge pull request #2703 from freqtrade/dependabot/pip/develop/sqlalchemy-1.3.12
Bump sqlalchemy from 1.3.11 to 1.3.12
2019-12-23 09:47:02 +01:00
Matthias
fa466a54cd Merge pull request #2701 from freqtrade/dependabot/pip/develop/numpy-1.18.0
Bump numpy from 1.17.4 to 1.18.0
2019-12-23 09:40:15 +01:00
Matthias
3c668c2f8e Merge pull request #2699 from freqtrade/dependabot/docker/python-3.7.6-slim-stretch
Bump python from 3.7.5-slim-stretch to 3.7.6-slim-stretch
2019-12-23 09:39:22 +01:00
dependabot-preview[bot]
779278ed50 Bump sqlalchemy from 1.3.11 to 1.3.12
Bumps [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) from 1.3.11 to 1.3.12.
- [Release notes](https://github.com/sqlalchemy/sqlalchemy/releases)
- [Changelog](https://github.com/sqlalchemy/sqlalchemy/blob/master/CHANGES)
- [Commits](https://github.com/sqlalchemy/sqlalchemy/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-23 08:28:05 +00:00
Matthias
96f70118ca Merge pull request #2702 from freqtrade/dependabot/pip/develop/mypy-0.761
Bump mypy from 0.750 to 0.761
2019-12-23 09:26:50 +01:00
Matthias
4e62b62add Merge pull request #2700 from freqtrade/dependabot/pip/develop/ccxt-1.21.12
Bump ccxt from 1.20.84 to 1.21.12
2019-12-23 09:26:35 +01:00
dependabot-preview[bot]
9cfbe98a23 Bump scipy from 1.3.3 to 1.4.1
Bumps [scipy](https://github.com/scipy/scipy) from 1.3.3 to 1.4.1.
- [Release notes](https://github.com/scipy/scipy/releases)
- [Commits](https://github.com/scipy/scipy/compare/v1.3.3...v1.4.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-23 07:39:25 +00:00
dependabot-preview[bot]
31a7e9feed Bump mypy from 0.750 to 0.761
Bumps [mypy](https://github.com/python/mypy) from 0.750 to 0.761.
- [Release notes](https://github.com/python/mypy/releases)
- [Commits](https://github.com/python/mypy/compare/v0.750...v0.761)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-23 07:38:10 +00:00
dependabot-preview[bot]
20ad8a379d Bump numpy from 1.17.4 to 1.18.0
Bumps [numpy](https://github.com/numpy/numpy) from 1.17.4 to 1.18.0.
- [Release notes](https://github.com/numpy/numpy/releases)
- [Changelog](https://github.com/numpy/numpy/blob/master/doc/HOWTO_RELEASE.rst.txt)
- [Commits](https://github.com/numpy/numpy/compare/v1.17.4...v1.18.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-23 07:38:05 +00:00
dependabot-preview[bot]
8f17b81329 Bump ccxt from 1.20.84 to 1.21.12
Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.20.84 to 1.21.12.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ccxt/ccxt/compare/1.20.84...1.21.12)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-23 07:37:04 +00:00
dependabot-preview[bot]
76a93fabc7 Bump python from 3.7.5-slim-stretch to 3.7.6-slim-stretch
Bumps python from 3.7.5-slim-stretch to 3.7.6-slim-stretch.

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-23 06:26:13 +00:00
hroff-1902
98eed4f2ed Merge pull request #2695 from freqtrade/custom_pairlock
Improve pairlocking mechanism to allow usage from within strategy
2019-12-22 15:03:24 +03:00
Matthias
2195ae59d6 Use different time offsets to avoid confusion 2019-12-22 12:49:01 +01:00
hroff-1902
4f88857442 Merge pull request #2694 from freqtrade/unfilled_strategy
Add unfilledtimeout to strategy overrides
2019-12-22 14:34:25 +03:00
hroff-1902
01d53c0160 Merge pull request #2697 from freqtrade/dry_run_db
persist Dry run db as default
2019-12-22 13:46:32 +03:00
hroff-1902
d98cd6f135 Merge pull request #2693 from freqtrade/doc/pypi
document how to do releases to pypi
2019-12-22 13:42:44 +03:00
Matthias
dc567f99d6 Update documentation to new handling of dry-mode database 2019-12-22 10:16:56 +01:00
Matthias
ffd7034c00 Persist dry-run trade per default 2019-12-22 10:16:16 +01:00
Matthias
43c25c8a32 add documentation for is_pair_locked 2019-12-22 09:59:25 +01:00
Matthias
a71deeda94 Document lock-pair implementation 2019-12-22 09:55:40 +01:00
Matthias
89b4f45fe3 Remove section about strategy template - use new-strategy intead 2019-12-22 09:47:37 +01:00
Matthias
9835312033 Improve pair_lock handling 2019-12-22 09:46:00 +01:00
Matthias
1ff0d0f1fa Add unfilledtimeout to strategy overrides 2019-12-22 09:35:06 +01:00
Matthias
1a73159200 Modify classifiers 2019-12-22 09:25:13 +01:00
Matthias
c417877eb8 sort pytest dependencies 2019-12-22 09:25:13 +01:00
Matthias
9ec4368c6f Add release documentation 2019-12-22 09:25:13 +01:00
Matthias
3f44d51355 Merge pull request #2691 from hroff-1902/cli-no-underscores
Minor: Please no underscores in cli options
2019-12-22 08:43:31 +01:00
hroff-1902
95bd9e8e0b No underscores in cli options 2019-12-22 00:17:51 +03:00
hroff-1902
bc92503c92 Merge pull request #2689 from freqtrade/edge_small_modifications
[minor] Edge small cleanup
2019-12-20 14:50:13 +03:00
hroff-1902
5ba106d96b Merge pull request #2687 from xmatthias/try_covsxxx
Try to get comment from forked repos
2019-12-20 14:26:22 +03:00
Matthias
fc5764f9df Edge small cleanup 2019-12-19 19:55:21 +01:00
Matthias
342f3f450b try with coveralls token in yml ... 2019-12-18 20:38:21 +01:00
Matthias
0c6b5e01fb Try with github-token 2019-12-18 20:30:42 +01:00
Matthias
6507a26cc1 Fix some tests after merge 2019-12-18 20:16:53 +01:00
Matthias
e72c6a0d94 use only first part of the currency to get wallet-amount (!!) 2019-12-18 20:02:15 +01:00
Matthias
834a0ed620 Merge branch 'develop' into safe_sell_amount 2019-12-18 19:45:31 +01:00
Matthias
1af962899d Fix note-box syntax error 2019-12-18 19:43:37 +01:00
Matthias
11e787c884 Finish depth_of_market documentation piece 2019-12-18 19:41:51 +01:00
Matthias
1c19856d26 add section about depth_of_market 2019-12-18 16:49:56 +01:00
Matthias
d73ba71ec6 Improve formatting of orderbook doc 2019-12-18 16:41:54 +01:00
Matthias
dc07037edf Add documentation for price finding 2019-12-18 16:38:57 +01:00
Matthias
21622ac313 Rename get_ticker to fetch_ticker 2019-12-18 16:34:30 +01:00
Matthias
ce190a7485 Merge pull request #2683 from hroff-1902/minor-data-history-4
Minor improvements in data.history
2019-12-18 06:26:06 +01:00
hroff-1902
cf4c3642ce Minor improvements in data.history 2019-12-18 01:06:03 +03:00
hroff-1902
021fa1ca1a Merge pull request #2678 from hroff-1902/dataprovider-history-split-refresh
Dataprovider history: split refresh part
2019-12-18 00:30:47 +03:00
hroff-1902
3a542bce62 Merge pull request #2674 from freqtrade/bt_trade_open_price
Pre-calculate open_trade_price
2019-12-17 21:51:13 +03:00
Matthias
c5e6a34f25 Remove unnecessary parenteses 2019-12-17 19:30:04 +01:00
hroff-1902
1537389617 Remove startup_candles argument in refresh_data 2019-12-17 18:23:31 +03:00
hroff-1902
b07d29b1af Merge pull request #2676 from freqtrade/investigate_random_test_fail
Fix random test failure.
2019-12-17 14:23:30 +03:00
hroff-1902
b2796f99b6 Remove redundant refresh_pair_history 2019-12-17 14:06:21 +03:00
Matthias
bbb05b5286 Remove fixed random order 2019-12-17 11:51:50 +01:00
hroff-1902
60f89c8c01 Split refresh from load_data/load_pair_history 2019-12-17 13:43:42 +03:00
Matthias
8513a5e2d6 Fix failures in test_main 2019-12-17 11:35:39 +01:00
hroff-1902
69f8738d00 Merge pull request #2675 from freqtrade/align_test_history
Align usage of history import in test
2019-12-17 13:13:40 +03:00
hroff-1902
c32507252e Merge pull request #2671 from freqtrade/doc/incompletecandle
Add documentation about ohlcv_partial_candle
2019-12-17 13:10:36 +03:00
Matthias
2e2f084f66 Try to clear caplog ... 2019-12-17 11:07:59 +01:00
Matthias
e1c0c6af7d fix random-seed to failing one 2019-12-17 10:51:49 +01:00
Matthias
86de88ed48 Align usage of history import in test 2019-12-17 09:36:26 +01:00
Matthias
1042f9847a Merge pull request #2672 from hroff-1902/minor-data-history-2
Minor: improvements in data/history.py
2019-12-17 09:22:56 +01:00
Matthias
a2964afd42 Rename profit_percent to profit_ratio to be consistent 2019-12-17 08:53:30 +01:00
Matthias
539b5627fd Fix typo 2019-12-17 08:31:44 +01:00
Matthias
cbd10309f5 Add mid-state test 2019-12-17 07:13:08 +01:00
Matthias
362a40db6f Update docstring 2019-12-17 07:09:56 +01:00
Matthias
861a7834fc Call calc_open_price() whenever necessary 2019-12-17 07:08:36 +01:00
Matthias
307ade6251 Cache open_trade_price 2019-12-17 07:02:02 +01:00
Matthias
0b5354f13d Add required arguments to Trade method 2019-12-17 06:58:10 +01:00
Matthias
707c5668a5 Fix typo 2019-12-17 06:11:44 +01:00
hroff-1902
0277cd82ea Make mypy happy 2019-12-16 23:25:57 +03:00
Matthias
9cea5cd442 Add documentation about ohlcv_partial_candle 2019-12-16 20:38:36 +01:00
hroff-1902
a6fc743d85 Align code in _download_*_history() 2019-12-16 22:12:26 +03:00
hroff-1902
fa968996ed Remove useless check 2019-12-16 22:01:26 +03:00
hroff-1902
4cd45b6535 Rename download_*_history as non-public 2019-12-16 21:57:03 +03:00
hroff-1902
2af9ffa7f2 Align refresh_backtest_ to each other 2019-12-16 21:43:33 +03:00
hroff-1902
39197458f4 Merge pull request #2661 from freqtrade/wallet_dry
Introduce Dry-Run Wallet
2019-12-16 14:00:11 +03:00
Matthias
35bbe12065 Merge pull request #2668 from freqtrade/dependabot/pip/develop/ccxt-1.20.84
Bump ccxt from 1.20.46 to 1.20.84
2019-12-16 11:08:45 +01:00
Matthias
9add86144c Merge pull request #2667 from freqtrade/dependabot/pip/develop/mkdocs-material-4.6.0
Bump mkdocs-material from 4.5.1 to 4.6.0
2019-12-16 10:50:47 +01:00
Matthias
03c8d65d07 Merge pull request #2666 from freqtrade/dependabot/pip/develop/plotly-4.4.1
Bump plotly from 4.3.0 to 4.4.1
2019-12-16 10:47:01 +01:00
dependabot-preview[bot]
75e6acd6ed Bump ccxt from 1.20.46 to 1.20.84
Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.20.46 to 1.20.84.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ccxt/ccxt/compare/1.20.46...1.20.84)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-16 09:46:17 +00:00
Matthias
95b4189d69 Merge pull request #2669 from freqtrade/dependabot/pip/develop/cachetools-4.0.0
Bump cachetools from 3.1.1 to 4.0.0
2019-12-16 10:45:02 +01:00
Matthias
22dd91fc21 Merge pull request #2665 from freqtrade/dependabot/pip/develop/joblib-0.14.1
Bump joblib from 0.14.0 to 0.14.1
2019-12-16 10:44:00 +01:00
Matthias
700370ac5c Merge pull request #2664 from freqtrade/dependabot/pip/develop/pytest-5.3.2
Bump pytest from 5.3.1 to 5.3.2
2019-12-16 10:43:35 +01:00
dependabot-preview[bot]
05de60a7fe Bump cachetools from 3.1.1 to 4.0.0
Bumps [cachetools](https://github.com/tkem/cachetools) from 3.1.1 to 4.0.0.
- [Release notes](https://github.com/tkem/cachetools/releases)
- [Changelog](https://github.com/tkem/cachetools/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/tkem/cachetools/compare/v3.1.1...v4.0.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-16 07:31:38 +00:00
dependabot-preview[bot]
cc41cdbf22 Bump mkdocs-material from 4.5.1 to 4.6.0
Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 4.5.1 to 4.6.0.
- [Release notes](https://github.com/squidfunk/mkdocs-material/releases)
- [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG)
- [Commits](https://github.com/squidfunk/mkdocs-material/compare/4.5.1...4.6.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-16 07:30:46 +00:00
dependabot-preview[bot]
c05af1b63c Bump plotly from 4.3.0 to 4.4.1
Bumps [plotly](https://github.com/plotly/plotly.py) from 4.3.0 to 4.4.1.
- [Release notes](https://github.com/plotly/plotly.py/releases)
- [Changelog](https://github.com/plotly/plotly.py/blob/master/CHANGELOG.md)
- [Commits](https://github.com/plotly/plotly.py/compare/v4.3.0...v4.4.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-16 07:30:27 +00:00
dependabot-preview[bot]
33db37a915 Bump joblib from 0.14.0 to 0.14.1
Bumps [joblib](https://github.com/joblib/joblib) from 0.14.0 to 0.14.1.
- [Release notes](https://github.com/joblib/joblib/releases)
- [Changelog](https://github.com/joblib/joblib/blob/master/CHANGES.rst)
- [Commits](https://github.com/joblib/joblib/compare/0.14.0...0.14.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-16 07:30:04 +00:00
dependabot-preview[bot]
e398c37526 Bump pytest from 5.3.1 to 5.3.2
Bumps [pytest](https://github.com/pytest-dev/pytest) from 5.3.1 to 5.3.2.
- [Release notes](https://github.com/pytest-dev/pytest/releases)
- [Changelog](https://github.com/pytest-dev/pytest/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest/compare/5.3.1...5.3.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-16 07:29:42 +00:00
Matthias
655672c957 Enhance documentation Note 2019-12-16 06:22:54 +01:00
hroff-1902
2282f4bd37 Merge pull request #2660 from freqtrade/release_doc-
[minor][doc] Add release section about collapsible section
2019-12-15 20:27:27 +03:00
Matthias
ce845ab092 Improve docstring for dry-run wallet method 2019-12-15 11:03:40 +01:00
Matthias
b5b6458f12 Add note about unlimited stake amount 2019-12-15 10:57:27 +01:00
Matthias
56e13c8919 Enhance documentation for dry-run wallet 2019-12-15 10:55:15 +01:00
Matthias
23d467eb0d Show simulation note also in restserver 2019-12-15 10:41:57 +01:00
Matthias
c741b67c3c Adjust tests for dry_run wallet simulation 2019-12-15 10:39:52 +01:00
Matthias
5a5741878c Improve dry-run calculations 2019-12-15 10:26:56 +01:00
Matthias
4463d58470 Add release section about collapsible section 2019-12-15 09:49:56 +01:00
Matthias
f0bbc75038 Combine dry_run wallet into original Wallets class 2019-12-15 09:48:35 +01:00
Matthias
7c53dcb0af Merge pull request #2656 from freqtrade/new_release
New release - 2019.11
2019-12-15 09:44:10 +01:00
Matthias
fda8f7e305 Introuce WalletDry - supporting dry-run wallets 2019-12-15 09:38:18 +01:00
Matthias
52b212db64 Fix tests after changing dry_run_wallet amount 2019-12-15 09:38:06 +01:00
Matthias
931d24b5a8 Have dry_run_wallet default to 1000 2019-12-15 09:26:17 +01:00
Matthias
18dfa56752 Merge pull request #2659 from hroff-1902/fix_mypy
[critical]: Fix mypy errors in develop
2019-12-15 09:20:36 +01:00
hroff-1902
26ab108890 Fix mypy errors in develop 2019-12-15 01:10:09 +03:00
hroff-1902
1cc174c007 Merge pull request #2624 from freqtrade/backtest_refactor
handle and document ROI=-1
2019-12-14 23:11:36 +03:00
hroff-1902
e26f563f4b Merge pull request #2655 from freqtrade/avoid_keyerror_backtest
Use first pair of pairlist to get fee
2019-12-14 23:10:40 +03:00
hroff-1902
ebd0a1722d Merge pull request #2657 from freqtrade/rpc_fixtypo
[minor] Fix typo causing a trailing "tic" in /show_config output
2019-12-14 22:43:37 +03:00
Matthias
f81c49ce6d Fix typo causing a trailing "tic" in /show_config output 2019-12-14 19:53:20 +01:00
Matthias
ded2d3c293 Version bump to 2019.11 2019-12-14 16:11:34 +01:00
Matthias
2f7181e236 Merge pull request #2648 from hroff-1902/hyperopt-random-state
Seed hyperopt random_state if not passed
2019-12-14 15:54:59 +01:00
Matthias
2275a1539e Remove default symbol from get_fee() 2019-12-14 13:22:42 +01:00
hroff-1902
f2266ea9f4 Use shorter range for seeded random-state 2019-12-14 15:17:45 +03:00
hroff-1902
82ff878e38 Fix typo in the docs 2019-12-14 15:15:20 +03:00
hroff-1902
7200bc3fba Merge pull request #2654 from freqtrade/rpc/show_config
improve show config when using trailing stop
2019-12-14 15:11:12 +03:00
Matthias
a48c0ad868 Use first pair of pairlist to get fee
Use this instead of hardcoded ETH/BTC - so backtesting works with
exchanges without ETH/BTC pair
2019-12-14 12:55:02 +01:00
Matthias
e4cc5c479f Test new show_config branch 2019-12-13 20:27:39 +01:00
Matthias
014c18ead2 Improve output from show_config when trailing_stop is active 2019-12-13 20:27:06 +01:00
hroff-1902
3bd873f3c6 Add notes on random-state to the docs 2019-12-13 13:59:18 +03:00
hroff-1902
6c4f424887 Merge pull request #2651 from freqtrade/dry_amount
Round amount to precision also for dry-runs
2019-12-13 13:13:20 +03:00
Matthias
04257d8ecc Add tests for safe_sell_amount 2019-12-13 07:06:54 +01:00
Matthias
b69f5afaaf Round amount to precision also for dry-runs 2019-12-13 06:59:10 +01:00
Matthias
5db883906a Try to verify available amount on the exchange 2019-12-13 06:52:33 +01:00
Matthias
703924d6c4 Merge pull request #2643 from freqtrade/mins
Remove min (plural) from codebase
2019-12-12 14:27:39 +01:00
Matthias
330b8cf8a1 space before unit ... 2019-12-12 14:08:44 +01:00
hroff-1902
6e778ad710 Seed hyperopt random_state if not passed 2019-12-12 03:12:28 +03:00
Matthias
f44e3dc319 Merge pull request #2642 from hroff-1902/fix-hyperopt-trailing
Fix generation of hyperopt trailing params
2019-12-11 19:53:42 +01:00
Matthias
d8b2d39f2f Merge pull request #2628 from freqtrade/rpc/sell_duration
Telegram / sell duration
2019-12-11 07:15:00 +01:00
Matthias
7c7ca1cb90 Remove min (plural) from codebase 2019-12-11 07:12:37 +01:00
Matthias
1058e5fb72 No plural for min 2019-12-11 06:48:40 +01:00
Matthias
b2a9b87be3 Merge pull request #2632 from freqtrade/dependabot/pip/develop/scikit-learn-0.22
Bump scikit-learn from 0.21.3 to 0.22
2019-12-10 16:20:39 +01:00
Matthias
3f9f29ba4e Fix Flake8 import error 2019-12-10 16:10:51 +01:00
Matthias
390db9503f Show humanized and minutes version of duration 2019-12-10 15:12:36 +01:00
hroff-1902
3448f86263 Suppress scikit-learn FutureWarnings from skopt imports 2019-12-10 15:46:29 +03:00
hroff-1902
3252654ed3 Test adjusted 2019-12-10 14:06:17 +03:00
Matthias
29745bb4ec Merge pull request #2641 from hroff-1902/hyperopt-list
minor: Fix documentation formatting
2019-12-10 06:00:44 +01:00
hroff-1902
641e3fdf7a Fix generation of hyperopt trailing params 2019-12-10 03:32:43 +03:00
hroff-1902
2f76eaf358 minor: Fix documentation formatting 2019-12-10 00:33:57 +03:00
hroff-1902
0e4ef33d6a Merge pull request #2581 from hroff-1902/hyperopt-list
Add hyperopt-list and hyperopt-show commands
2019-12-10 00:30:26 +03:00
hroff-1902
18c73ceb90 Add tests for the last commit 2019-12-10 00:22:11 +03:00
hroff-1902
8431b54b21 Fix index limits handling 2019-12-09 23:50:40 +03:00
hroff-1902
5fc357ee10 Fix typo 2019-12-09 23:43:50 +03:00
Matthias
de33ec4250 use sell_row.open also when the active ROI value just changed 2019-12-09 16:52:12 +01:00
hroff-1902
a9f7e9fb7a Fix NO_CONF; fix tests 2019-12-09 12:49:04 +03:00
Matthias
aa335d8485 Merge pull request #2634 from freqtrade/dependabot/pip/develop/ccxt-1.20.46
Bump ccxt from 1.20.22 to 1.20.46
2019-12-09 09:00:08 +01:00
Matthias
82f7798f48 Merge pull request #2635 from freqtrade/dependabot/pip/develop/colorama-0.4.3
Bump colorama from 0.4.1 to 0.4.3
2019-12-09 08:59:46 +01:00
Matthias
ce80bbe24c Merge pull request #2633 from freqtrade/dependabot/pip/develop/coveralls-1.9.2
Bump coveralls from 1.8.2 to 1.9.2
2019-12-09 08:59:35 +01:00
Matthias
da195d0272 Merge pull request #2631 from freqtrade/dependabot/pip/develop/mkdocs-material-4.5.1
Bump mkdocs-material from 4.5.0 to 4.5.1
2019-12-09 08:42:00 +01:00
Matthias
4eae02b723 Merge pull request #2630 from freqtrade/dependabot/pip/develop/pytest-mock-1.13.0
Bump pytest-mock from 1.12.1 to 1.13.0
2019-12-09 08:34:01 +01:00
dependabot-preview[bot]
081b21fe82 Bump colorama from 0.4.1 to 0.4.3
Bumps [colorama](https://github.com/tartley/colorama) from 0.4.1 to 0.4.3.
- [Release notes](https://github.com/tartley/colorama/releases)
- [Changelog](https://github.com/tartley/colorama/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/tartley/colorama/compare/0.4.1...0.4.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-09 07:26:53 +00:00
dependabot-preview[bot]
ed053d240e Bump ccxt from 1.20.22 to 1.20.46
Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.20.22 to 1.20.46.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ccxt/ccxt/compare/1.20.22...1.20.46)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-09 07:26:42 +00:00
dependabot-preview[bot]
0ca3157a8b Bump coveralls from 1.8.2 to 1.9.2
Bumps [coveralls](https://github.com/coveralls-clients/coveralls-python) from 1.8.2 to 1.9.2.
- [Release notes](https://github.com/coveralls-clients/coveralls-python/releases)
- [Changelog](https://github.com/coveralls-clients/coveralls-python/blob/master/CHANGELOG.md)
- [Commits](https://github.com/coveralls-clients/coveralls-python/compare/1.8.2...1.9.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-09 07:26:06 +00:00
dependabot-preview[bot]
25447329a0 Bump scikit-learn from 0.21.3 to 0.22
Bumps [scikit-learn](https://github.com/scikit-learn/scikit-learn) from 0.21.3 to 0.22.
- [Release notes](https://github.com/scikit-learn/scikit-learn/releases)
- [Commits](https://github.com/scikit-learn/scikit-learn/compare/0.21.3...0.22)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-09 07:25:44 +00:00
dependabot-preview[bot]
4934456751 Bump mkdocs-material from 4.5.0 to 4.5.1
Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 4.5.0 to 4.5.1.
- [Release notes](https://github.com/squidfunk/mkdocs-material/releases)
- [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG)
- [Commits](https://github.com/squidfunk/mkdocs-material/compare/4.5.0...4.5.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-09 07:25:28 +00:00
dependabot-preview[bot]
0f4dcaa403 Bump pytest-mock from 1.12.1 to 1.13.0
Bumps [pytest-mock](https://github.com/pytest-dev/pytest-mock) from 1.12.1 to 1.13.0.
- [Release notes](https://github.com/pytest-dev/pytest-mock/releases)
- [Changelog](https://github.com/pytest-dev/pytest-mock/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest-mock/compare/v1.12.1...v1.13.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-09 07:25:03 +00:00
hroff-1902
4b560880fd Add tests for hyperopt-list, hyperopt-show 2019-12-09 04:37:58 +03:00
Matthias
dc9fed4a5f Adjust documentation 2019-12-08 14:10:26 +01:00
Matthias
88a24da272 Adapt tests to sending open / close date 2019-12-08 14:10:04 +01:00
Matthias
e4655c9b07 include trade-duration with sell-notification 2019-12-08 14:07:46 +01:00
Matthias
1495c93083 Merge pull request #2627 from freqtrade/fix/dockerlatest
Docker: Build latest along with develop image
2019-12-08 11:42:27 +01:00
Matthias
21c6855705 Build latest along with develop image 2019-12-07 20:21:25 +01:00
hroff-1902
a7d6dc9d3a Merge pull request #2625 from freqtrade/validate_stakecurrency
Validate stake-currency against pairlist
2019-12-07 22:08:46 +03:00
Matthias
ed7207d4c8 Show pairs which are wrong ... 2019-12-07 19:31:15 +01:00
Matthias
bb9235c715 Validate stake-currency against pairlist - making sure only correct
pairs are in the whitelist
2019-12-07 15:42:47 +01:00
Matthias
45d12dbc83 Avoid a few calculations during backtesting 2019-12-07 15:28:56 +01:00
Matthias
189835b963 Add documentation for ROI-1 case 2019-12-07 15:26:10 +01:00
Matthias
3163cbdf8a Apply special case for negative ROI 2019-12-07 15:18:12 +01:00
Matthias
1e6f9f9fe2 Add testcase for negative ROI sell using open 2019-12-07 15:18:09 +01:00
Matthias
3091869115 refactor get_close_rate out of get_sell_trade-entry 2019-12-07 14:30:14 +01:00
hroff-1902
9e85376a2d Merge pull request #2619 from freqtrade/hyperopt_quick_mode
Document "quick" hyperopt of roi/stoploss and trailing stoploss
2019-12-06 09:18:40 +03:00
Matthias
a379c19e9a Merge pull request #2618 from freqtrade/fix/hyperopt_no_tickerinterval
Fix hyperopt with ticker_interval from strategy
2019-12-06 06:48:10 +01:00
Matthias
2bd4008cb2 fix space name ... 2019-12-06 06:06:41 +01:00
hroff-1902
d21ae4edd3 Add fixes for comments in the review 2019-12-05 23:29:31 +03:00
Matthias
1da008b3af Document "quick" hyperopt of roi/stoploss and trailing stoploss 2019-12-05 20:44:12 +01:00
Matthias
703458f365 Add test for loading ticker-interval from strategy 2019-12-05 20:35:54 +01:00
Matthias
4b0a4c936a Fix hyperopt with ticker_interval from strategy 2019-12-05 20:31:02 +01:00
hroff-1902
216094a761 Add reference to hyperopt-list and hyperopt-show to the Hyperopt doc 2019-12-05 14:30:55 +03:00
hroff-1902
4efd8b96e5 Add description for hyperopt-list and hyperopt-show to the docs 2019-12-05 14:16:18 +03:00
hroff-1902
b61f43835d Make flake happy 2019-12-05 01:11:06 +03:00
hroff-1902
017a94adc1 Merge develop 2019-12-05 01:08:38 +03:00
hroff-1902
b20bea8492 Adjust tests 2019-12-04 23:15:19 +03:00
hroff-1902
54694dd3a4 Manual merge of some conflicts in hyperopt 2019-12-04 23:14:47 +03:00
hroff-1902
8dd9b5c6fb Merge pull request #2606 from freqtrade/volume_tester
Subcommand: test-pairlist
2019-12-04 18:31:37 +03:00
Matthias
16a50fbe4e Resort documentation 2019-12-04 14:30:53 +01:00
hroff-1902
32897ce769 Merge pull request #2612 from freqtrade/fix/nullerror
Don't return None from load_pair_history
2019-12-04 14:45:44 +03:00
Matthias
51f074ba4b Don't print quote-currency for -1 2019-12-04 12:25:57 +01:00
Matthias
0ba804d051 Address first part of feedback 2019-12-04 12:14:37 +01:00
Matthias
611a594a46 Merge pull request #2607 from hroff-1902/docs/create-advanced-hyperopt
Move docs on loss function creation to a separate doc file
2019-12-04 07:58:30 +01:00
Matthias
8a7fe3f1d6 The file will (for users) be in user_data - just in the repo it's in
templates
2019-12-04 07:01:09 +01:00
Matthias
054484ad73 load_pair_history should not return None, but an empty dataframe if no
data is found
2019-12-04 06:57:44 +01:00
hroff-1902
ac3e061508 Resolve issues stated in the review 2019-12-03 23:20:00 +03:00
hroff-1902
ddf86d6342 Adjust docs index 2019-12-03 21:36:25 +03:00
hroff-1902
ba29a2ffe4 Move docs on loss function creation to a separate doc file 2019-12-03 21:30:50 +03:00
Matthias
b33e47a49e Update documentation with test-pairlist 2019-12-03 16:15:10 +01:00
Matthias
298e8b2332 Add testcase for test_pairlist 2019-12-03 15:10:27 +01:00
Matthias
78f8ba1226 Merge pull request #2605 from freqtrade/hroff-1902-patch-1
minor: fix typo in docs
2019-12-03 12:27:52 +01:00
hroff-1902
17e03559dc minor: fix typo in docs 2019-12-03 12:51:52 +03:00
hroff-1902
2825206d37 Merge pull request #2604 from freqtrade/binance_pairlist
Binance/Kraken default whitelists
2019-12-03 09:11:39 +03:00
Matthias
cd20d5b5c5 Update kraken pairlist 2019-12-03 06:41:59 +01:00
Matthias
ebf6dad3f6 Update binance pairlist default config 2019-12-03 06:37:10 +01:00
Matthias
683406b57d correct fallback to stake_currency 2019-12-03 06:36:43 +01:00
hroff-1902
406dfe21f8 Merge pull request #2492 from hroff-1902/hyperopt-trailing-space
Add trailing stoploss hyperspace
2019-12-03 00:23:14 +03:00
Matthias
346d381ab8 Merge pull request #2597 from freqtrade/dependabot/pip/develop/mypy-0.750
Bump mypy from 0.740 to 0.750
2019-12-02 09:35:59 +01:00
Matthias
d7980fa0b6 Merge pull request #2599 from freqtrade/dependabot/pip/develop/ccxt-1.20.22
Bump ccxt from 1.19.86 to 1.20.22
2019-12-02 08:58:12 +01:00
dependabot-preview[bot]
fc7b9846ae Bump mypy from 0.740 to 0.750
Bumps [mypy](https://github.com/python/mypy) from 0.740 to 0.750.
- [Release notes](https://github.com/python/mypy/releases)
- [Commits](https://github.com/python/mypy/compare/v0.740...v0.750)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-02 07:46:57 +00:00
Matthias
15e695a9bd Merge pull request #2598 from freqtrade/dependabot/pip/develop/pytest-5.3.1
Bump pytest from 5.3.0 to 5.3.1
2019-12-02 08:45:47 +01:00
dependabot-preview[bot]
110fbd3f06 Bump ccxt from 1.19.86 to 1.20.22
Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.19.86 to 1.20.22.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ccxt/ccxt/compare/1.19.86...1.20.22)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-02 07:19:49 +00:00
dependabot-preview[bot]
f0428be91e Bump pytest from 5.3.0 to 5.3.1
Bumps [pytest](https://github.com/pytest-dev/pytest) from 5.3.0 to 5.3.1.
- [Release notes](https://github.com/pytest-dev/pytest/releases)
- [Changelog](https://github.com/pytest-dev/pytest/blob/5.3.1/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest/compare/5.3.0...5.3.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-02 07:19:06 +00:00
Matthias
0b03c6c786 Implement to json 2019-12-02 07:00:38 +01:00
Matthias
150a497cb4 output pairlist after fetching all 2019-12-02 06:56:19 +01:00
Matthias
3d666ea68e Merge pull request #2594 from freqtrade/hroff-1902-patch-1
minor: Fix formatting typo in docs
2019-12-02 06:55:54 +01:00
hroff-1902
ee733210ca minor: Fix formatting typo in docs 2019-12-01 19:10:30 +03:00
hroff-1902
86342efa7a Adjust test 2019-12-01 18:34:25 +03:00
hroff-1902
05967442c3 Adjust test 2019-12-01 18:01:59 +03:00
hroff-1902
d6b587678e Adjust test 2019-12-01 17:44:14 +03:00
hroff-1902
668d42447f Refactor log_trials_result() 2019-12-01 16:15:00 +03:00
hroff-1902
32c9b5f415 Description for generate_roi_table reformulated slightly 2019-12-01 13:13:41 +03:00
hroff-1902
f42ce8fc2a Fix typo in the docs 2019-12-01 13:07:17 +03:00
Matthias
6b142d716f Merge pull request #2418 from hroff-1902/logging-syslog
Add logging to syslog and journald
2019-12-01 09:45:19 +01:00
hroff-1902
26a7af85ea Add trailing_space() into AdvancedSampleHyperOpt 2019-12-01 03:31:03 +03:00
hroff-1902
69b0767165 Merge remote-tracking branch 'upstream/develop' into hyperopt-trailing-space 2019-12-01 03:28:23 +03:00
hroff-1902
f862b4d0f0 Add description for 'default' space 2019-12-01 02:50:44 +03:00
hroff-1902
a88bfa8ded Fix: trailing_stop_positive should be positive 2019-12-01 02:27:17 +03:00
hroff-1902
fffd47e3d8 Add description of trailing space into docs 2019-12-01 01:28:26 +03:00
hroff-1902
7a3c3c4ddf Add directlink to the section 2019-11-30 22:35:13 +03:00
hroff-1902
eafccb445c Add command sample for journalctl with -u 2019-11-30 22:32:12 +03:00
hroff-1902
b040cbffdd syslog and journald cases splitted 2019-11-30 22:28:48 +03:00
Matthias
153434561d Add test_pairlist method 2019-11-30 19:53:22 +01:00
hroff-1902
36b2ed172c Merge branch 'develop' into logging-syslog 2019-11-30 21:38:50 +03:00
gaugau3000
58d70b2079 doc explicit optimization feature 2019-11-29 09:35:13 +01:00
Matthias
e0e0bad7c1 Merge pull request #2577 from xmatthias/configvalidation
"fix" config validation
2019-11-29 06:25:41 +01:00
gaugau3000
0e9e6b3443 refactor feature details doc 2019-11-28 21:22:40 +01:00
gaugau3000
9199fd5964 change doc into 2019-11-28 21:21:43 +01:00
hroff-1902
8f9b5095b5 Fix some tests 2019-11-27 22:52:43 +03:00
Matthias
5b996920f2 Merge branch 'develop' into configvalidation 2019-11-27 19:48:21 +01:00
Matthias
bcec070ad7 Merge pull request #2576 from hroff-1902/fix/get_min_pair_stake_amount
Fix _get_min_pair_stake_amount
2019-11-27 19:28:52 +01:00
hroff-1902
c3d7411668 Fix imports 2019-11-27 19:35:22 +03:00
Matthias
997c426228 fix some datatypes 2019-11-27 16:51:03 +01:00
hroff-1902
7a52334c9f Merge pull request #2533 from xmatthias/rpc/balance
/Balance rework
2019-11-27 18:39:18 +03:00
Matthias
111f018c85 Add datatype to configuration documentation 2019-11-27 14:46:09 +01:00
Matthias
64da877161 Update stake_amount description 2019-11-27 14:24:14 +01:00
Matthias
f0e6a9e0e3 Address feedback 2019-11-27 14:18:40 +01:00
hroff-1902
a373e48939 Comment added 2019-11-27 14:53:01 +03:00
hroff-1902
f2cd4fdafe Fix the rest of tests 2019-11-27 05:12:54 +03:00
hroff-1902
9991c892ac Merge branch 'develop' into hyperopt-list 2019-11-26 15:14:42 +03:00
hroff-1902
8e7512161a Add hyperopt-list and hyperopt-show commands 2019-11-26 15:01:42 +03:00
hroff-1902
5e09913e3d Merge pull request #2578 from freqtrade/actions_coveralls
Try coveralls fixing (again ...)
2019-11-26 14:24:25 +03:00
Matthias
cceb00c406 Try coveralls 2019-11-26 12:12:41 +01:00
Matthias
585b8332ad Improve tests and unify required attribute 2019-11-26 11:48:01 +01:00
hroff-1902
066f324060 Make flake happy 2019-11-26 12:28:04 +03:00
hroff-1902
8e1e20bf0d Fix some tests 2019-11-26 12:07:43 +03:00
hroff-1902
0ac592ad40 Fix markets in conftest 2019-11-26 12:00:20 +03:00
hroff-1902
17269c88be Fix _get_min_pair_stake_amount() 2019-11-26 11:57:58 +03:00
hroff-1902
8204107315 Add test for get_min_pair_stake_amount() with real data 2019-11-26 11:57:02 +03:00
Matthias
9e7d367b5c Realign strategy_override paramters 2019-11-25 15:43:09 +01:00
Matthias
12b9257c6d new-lines before defaults in documentation 2019-11-25 14:25:02 +01:00
Matthias
37f698d9c1 move default values to Description field 2019-11-25 14:20:41 +01:00
Matthias
e7c17df844 validate defaults in documentation 2019-11-25 12:56:05 +01:00
Matthias
28ec8b5bc2 Merge pull request #2568 from freqtrade/dependabot/pip/develop/scipy-1.3.3
Bump scipy from 1.3.2 to 1.3.3
2019-11-25 10:37:09 +01:00
Matthias
200b8e48bf Merge pull request #2570 from freqtrade/dependabot/pip/develop/pytest-mock-1.12.1
Bump pytest-mock from 1.11.2 to 1.12.1
2019-11-25 10:36:43 +01:00
Matthias
2a8ad9e35b Merge pull request #2572 from freqtrade/dependabot/pip/develop/jsonschema-3.2.0
Bump jsonschema from 3.1.1 to 3.2.0
2019-11-25 10:36:22 +01:00
Matthias
be8ad0f022 Merge pull request #2571 from freqtrade/dependabot/pip/develop/pytest-5.3.0
Bump pytest from 5.2.4 to 5.3.0
2019-11-25 10:36:08 +01:00
Matthias
a77efc3949 Merge pull request #2569 from freqtrade/dependabot/pip/develop/ccxt-1.19.86
Bump ccxt from 1.19.54 to 1.19.86
2019-11-25 10:35:50 +01:00
dependabot-preview[bot]
418ca00305 Bump jsonschema from 3.1.1 to 3.2.0
Bumps [jsonschema](https://github.com/Julian/jsonschema) from 3.1.1 to 3.2.0.
- [Release notes](https://github.com/Julian/jsonschema/releases)
- [Changelog](https://github.com/Julian/jsonschema/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/Julian/jsonschema/compare/v3.1.1...v3.2.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-25 07:22:09 +00:00
dependabot-preview[bot]
03f02294d1 Bump pytest from 5.2.4 to 5.3.0
Bumps [pytest](https://github.com/pytest-dev/pytest) from 5.2.4 to 5.3.0.
- [Release notes](https://github.com/pytest-dev/pytest/releases)
- [Changelog](https://github.com/pytest-dev/pytest/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest/compare/5.2.4...5.3.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-25 07:21:52 +00:00
dependabot-preview[bot]
0a7a1290e3 Bump pytest-mock from 1.11.2 to 1.12.1
Bumps [pytest-mock](https://github.com/pytest-dev/pytest-mock) from 1.11.2 to 1.12.1.
- [Release notes](https://github.com/pytest-dev/pytest-mock/releases)
- [Changelog](https://github.com/pytest-dev/pytest-mock/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest-mock/compare/v1.11.2...v1.12.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-25 07:21:32 +00:00
dependabot-preview[bot]
28f73ecb3d Bump ccxt from 1.19.54 to 1.19.86
Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.19.54 to 1.19.86.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ccxt/ccxt/compare/1.19.54...1.19.86)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-25 07:21:16 +00:00
dependabot-preview[bot]
6ab7f93ce7 Bump scipy from 1.3.2 to 1.3.3
Bumps [scipy](https://github.com/scipy/scipy) from 1.3.2 to 1.3.3.
- [Release notes](https://github.com/scipy/scipy/releases)
- [Commits](https://github.com/scipy/scipy/compare/v1.3.2...v1.3.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-25 07:20:40 +00:00
Matthias
d1511a1085 Update some config documentation 2019-11-25 07:12:39 +01:00
Matthias
0775ac081a Cleanup constants and required 2019-11-25 07:12:30 +01:00
Matthias
646a9d12b2 Align quoting of json schema 2019-11-25 07:06:55 +01:00
Matthias
e7be742c58 Run validation after custom validations 2019-11-25 07:05:30 +01:00
Matthias
8d002a8f28 Fix some more tests 2019-11-25 07:05:30 +01:00
Matthias
af3eea3805 Move config json validation to after strategy loading
Otherwise attributes are mandatory in configuration
while they could be set in the strategy
2019-11-25 07:05:30 +01:00
Matthias
4dc0631a4b Lower minimum tradeable value 2019-11-25 07:05:30 +01:00
Matthias
a3415e52c0 Fix some test-types 2019-11-25 07:05:30 +01:00
Matthias
1b337fe5e1 Remove unnecessary code piece 2019-11-24 19:47:20 +01:00
Matthias
50350a09cd use wallets instead of doing a direct call to /balance 2019-11-24 19:41:51 +01:00
Matthias
1bf8d8cff3 show /balance in stake currency 2019-11-24 19:30:09 +01:00
Matthias
62d50f512d add tests for balance from get-tickers 2019-11-24 19:30:09 +01:00
Matthias
8c64be3cfd get tickers only once to show balance 2019-11-24 19:22:43 +01:00
hroff-1902
cc0a733f1f Merge pull request #2565 from freqtrade/pairlists_transition
Pairlists transition
2019-11-24 15:26:01 +03:00
hroff-1902
1b645d64c8 Merge pull request #2538 from freqtrade/strategy_template
new-strategy / new-hyperopt - from templates
2019-11-24 15:21:23 +03:00
Matthias
a374df7622 some minor fixes from feedback 2019-11-24 09:55:34 +01:00
Matthias
cbf710a4f8 Fix coveralls (?) 2019-11-24 09:50:31 +01:00
Matthias
f05818a86e Allow transition from "no-config"-pairlist to pairlists 2019-11-24 09:49:29 +01:00
hroff-1902
cab748588c Merge pull request #2566 from freqtrade/actions_again
reenable slack
2019-11-23 22:50:46 +03:00
Matthias
63ad95a474 reenable slack 2019-11-23 20:20:34 +01:00
Matthias
e9da4d8505 Merge pull request #2563 from hroff-1902/hyperopt-save
Hyperopt: Save epochs at intermediate points
2019-11-23 19:25:35 +01:00
hroff-1902
26a2292f6d Merge pull request #2564 from freqtrade/plots_plot
[minor] Adjust plotting test to match user_data folder
2019-11-23 21:07:46 +03:00
Matthias
5fb14e769b Adjust folder to match user_data folder - otherwise running tests
creates this folder
2019-11-23 14:52:44 +01:00
Matthias
c7c7a1c2aa skip test due to no journald installed 2019-11-23 14:27:23 +01:00
Matthias
1242263d25 Make test OS dependent 2019-11-23 14:20:41 +01:00
Matthias
31c598f88a Add tests for advanced logging setup 2019-11-23 14:12:27 +01:00
hroff-1902
6cb4830534 Testcase added 2019-11-23 12:30:49 +03:00
hroff-1902
067267f4cf Log messages improved (plural/singular) 2019-11-23 12:20:41 +03:00
hroff-1902
99db53417c Tests adjusted 2019-11-23 12:00:43 +03:00
hroff-1902
737c07c5b6 Make mypy happy 2019-11-23 11:51:52 +03:00
hroff-1902
097cdcb57a Save epochs at intermediate points 2019-11-23 11:32:33 +03:00
hroff-1902
175591e524 Fix test 2019-11-23 04:03:47 +03:00
hroff-1902
e7ddd81251 Merge branch 'develop' into hyperopt-trailing-space 2019-11-23 03:42:58 +03:00
hroff-1902
a183162d8b Add description into Advanced Setup section 2019-11-23 03:37:29 +03:00
Matthias
a6bb7595e8 Update utils doc 2019-11-22 13:44:50 +01:00
Matthias
210d468a9b Reinstate mfi ... 2019-11-21 20:01:08 +01:00
Matthias
5f8fcebb88 Parametrize hyperopt file 2019-11-21 19:49:04 +01:00
Matthias
f23f659ac5 Use strings instead of subtemplates 2019-11-21 19:28:53 +01:00
Matthias
99eeb2e605 Merge pull request #2560 from hroff-1902/fix-informative
minor: Fix second part of freqtrade-strategies #51
2019-11-21 11:06:15 +01:00
hroff-1902
f26171082c Merge pull request #2552 from xmatthias/ci/coveralls
FIx failure for PR's from forked repositories
2019-11-21 12:15:32 +03:00
hroff-1902
2acd2542ac Merge pull request #2559 from freqtrade/fix/cancelordercrash
Fix 'remaining' bug when handling buy timeout
2019-11-21 12:09:43 +03:00
Matthias
f26c40082d Allow selection of templates for strategy 2019-11-21 07:21:19 +01:00
Matthias
b3dbb81838 Add subtemplates 2019-11-21 07:13:56 +01:00
Matthias
5e5ef21f61 Align example imports 2019-11-21 06:49:16 +01:00
Matthias
be4a4180ae Use single line comments for samples 2019-11-21 06:40:30 +01:00
Matthias
f7322358cf Update documentation 2019-11-21 06:32:45 +01:00
Matthias
671b98ecad Fix windows test 2019-11-21 06:32:45 +01:00
Matthias
ed04f7f39d Create userdir and backtest SampleStrategy 2019-11-21 06:32:45 +01:00
Matthias
cbb187e9b9 Use constant for Strategy and hyperopt userdirpaths 2019-11-21 06:32:45 +01:00
Matthias
03cdfe8cae Add tests for new-hyperopt 2019-11-21 06:32:45 +01:00
Matthias
37f8139432 Small stylistic fixes 2019-11-21 06:32:45 +01:00
Matthias
79891671e9 Adapt after rebase 2019-11-21 06:32:45 +01:00
Matthias
65489c894d Add no-arg test 2019-11-21 06:32:45 +01:00
Matthias
b36a1d3260 test new_stratgy 2019-11-21 06:32:45 +01:00
Matthias
8a1d02e185 Update numpy imports in sample strategies 2019-11-21 06:32:45 +01:00
Matthias
8c2ff2f46e Add template for new-hyperopt command 2019-11-21 06:32:45 +01:00
Matthias
e492d47621 Disallow usage of DefaultStrategy 2019-11-21 06:32:45 +01:00
Matthias
98baae9456 Add jinja2 to requirements 2019-11-21 06:32:45 +01:00
Matthias
e3cf6188a1 Add first version of new-strategy generation from template 2019-11-21 06:32:45 +01:00
Matthias
8cf8ab089e Add note about create-datadir to install instruction 2019-11-21 06:32:45 +01:00
Matthias
ed1d450099 Update documentation for create-userdir util 2019-11-21 06:32:45 +01:00
Matthias
41494f28da Allow resetting of the directory 2019-11-21 06:32:45 +01:00
Matthias
19b1a6c638 create-userdir should create the notebooks folder, too 2019-11-21 06:32:45 +01:00
Matthias
471bd4d889 Small stylistic fixes 2019-11-21 06:32:45 +01:00
Matthias
084efc98d7 Address test-failures due to file moves 2019-11-21 06:32:45 +01:00
Matthias
1d2ef5c2ce Extract directory_operation tests to it's own test file 2019-11-21 06:32:45 +01:00
Matthias
fd45ebd0e9 Copy templates when creating userdir 2019-11-21 06:32:45 +01:00
Matthias
258d4bd6ae move sample-files from user_data to templates folder 2019-11-21 06:32:45 +01:00
hroff-1902
b8aa727edf Fix second part of freqtrade-strategies #51 2019-11-21 05:10:48 +03:00
Matthias
eac01960a7 Add testcase for empty-order case 2019-11-20 20:37:46 +01:00
Matthias
a5bd4e329a improve cancel_order handling 2019-11-20 20:36:38 +01:00
hroff-1902
5ce665f279 Merge pull request #2540 from freqtrade/rpc/fixes
Improve rest api client / status response
2019-11-20 22:18:51 +03:00
Matthias
9aac080414 Fix 'remaining' bug when handling buy timeout 2019-11-20 20:10:41 +01:00
Matthias
8b639b5026 Remove only :return: 2019-11-20 19:54:16 +01:00
Matthias
7f119a28e7 Merge pull request #2557 from freqtrade/hroff-1902-patch-1
minor: Add example of usage for Aroon, Aroon Oscillator
2019-11-20 19:39:49 +01:00
hroff-1902
5f88c4aad9 Add example of usage for Aroon, Aroon Oscillator 2019-11-20 19:31:30 +03:00
hroff-1902
dfe3d78767 Merge pull request #2541 from freqtrade/rpc/show_config
[Rpc] - show config
2019-11-20 18:42:41 +03:00
hroff-1902
633996216a Improve commands help list 2019-11-20 15:25:56 +03:00
Matthias
09b302abf7 Merge pull request #2442 from freqtrade/volumeList_enhanced_filter
Pairlists enhanced filter options
2019-11-19 20:19:10 +01:00
Matthias
c92f233c15 Move settings to correct location 2019-11-19 19:33:04 +01:00
Matthias
751157b4ea Don't notify on builds from forks
they don't have secrets available ATM
2019-11-19 12:20:21 +01:00
Matthias
5f62a9e4d8 rename ttl to refresh_period 2019-11-19 06:50:23 +01:00
Matthias
a8855bf795 rename LowPriceFilter to PrieFilter 2019-11-19 06:49:45 +01:00
Matthias
c22b00b303 move pairlist filters out of config[] 2019-11-19 06:37:06 +01:00
Matthias
67c5115b41 Merge pull request #2545 from freqtrade/dependabot/pip/develop/plotly-4.3.0
Bump plotly from 4.2.1 to 4.3.0
2019-11-18 09:45:16 +01:00
Matthias
ab4b1cc8fe Merge pull request #2550 from freqtrade/dependabot/pip/develop/ccxt-1.19.54
Bump ccxt from 1.19.25 to 1.19.54
2019-11-18 09:39:34 +01:00
Matthias
716785c65f Merge pull request #2546 from freqtrade/dependabot/pip/develop/pytest-5.2.4
Bump pytest from 5.2.2 to 5.2.4
2019-11-18 09:39:16 +01:00
Matthias
baa7fd6c79 Merge pull request #2549 from freqtrade/dependabot/pip/develop/mkdocs-material-4.5.0
Bump mkdocs-material from 4.4.3 to 4.5.0
2019-11-18 09:38:33 +01:00
Matthias
9045f796e0 Merge pull request #2548 from freqtrade/dependabot/pip/develop/tabulate-0.8.6
Bump tabulate from 0.8.5 to 0.8.6
2019-11-18 09:38:21 +01:00
Matthias
988c1744af Merge pull request #2547 from freqtrade/dependabot/pip/develop/python-rapidjson-0.9.1
Bump python-rapidjson from 0.8.0 to 0.9.1
2019-11-18 09:38:01 +01:00
dependabot-preview[bot]
cd6d276119 Bump pytest from 5.2.2 to 5.2.4
Bumps [pytest](https://github.com/pytest-dev/pytest) from 5.2.2 to 5.2.4.
- [Release notes](https://github.com/pytest-dev/pytest/releases)
- [Changelog](https://github.com/pytest-dev/pytest/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest/compare/5.2.2...5.2.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-18 07:42:57 +00:00
Matthias
d085a2bd3e Merge pull request #2544 from freqtrade/dependabot/pip/develop/flake8-tidy-imports-3.1.0
Bump flake8-tidy-imports from 3.0.0 to 3.1.0
2019-11-18 08:41:42 +01:00
dependabot-preview[bot]
dddccf8f1a Bump ccxt from 1.19.25 to 1.19.54
Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.19.25 to 1.19.54.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ccxt/ccxt/compare/1.19.25...1.19.54)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-18 07:39:12 +00:00
Matthias
8b3fb3d6d5 Merge pull request #2543 from freqtrade/dependabot/pip/develop/sqlalchemy-1.3.11
Bump sqlalchemy from 1.3.10 to 1.3.11
2019-11-18 08:37:43 +01:00
Matthias
80b450d4e6 Merge pull request #2542 from freqtrade/dependabot/pip/develop/urllib3-1.25.7
Bump urllib3 from 1.25.6 to 1.25.7
2019-11-18 08:30:02 +01:00
dependabot-preview[bot]
0bc71403ff Bump mkdocs-material from 4.4.3 to 4.5.0
Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 4.4.3 to 4.5.0.
- [Release notes](https://github.com/squidfunk/mkdocs-material/releases)
- [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG)
- [Commits](https://github.com/squidfunk/mkdocs-material/compare/4.4.3...4.5.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-18 07:24:39 +00:00
dependabot-preview[bot]
cb6b3e17a9 Bump tabulate from 0.8.5 to 0.8.6
Bumps [tabulate](https://github.com/astanin/python-tabulate) from 0.8.5 to 0.8.6.
- [Release notes](https://github.com/astanin/python-tabulate/releases)
- [Changelog](https://github.com/astanin/python-tabulate/blob/master/CHANGELOG)
- [Commits](https://github.com/astanin/python-tabulate/compare/v0.8.5...v0.8.6)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-18 07:22:41 +00:00
dependabot-preview[bot]
e7157faddd Bump python-rapidjson from 0.8.0 to 0.9.1
Bumps [python-rapidjson](https://github.com/python-rapidjson/python-rapidjson) from 0.8.0 to 0.9.1.
- [Release notes](https://github.com/python-rapidjson/python-rapidjson/releases)
- [Changelog](https://github.com/python-rapidjson/python-rapidjson/blob/master/CHANGES.rst)
- [Commits](https://github.com/python-rapidjson/python-rapidjson/compare/v0.8.0...v0.9.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-18 07:22:18 +00:00
dependabot-preview[bot]
a33d408780 Bump plotly from 4.2.1 to 4.3.0
Bumps [plotly](https://github.com/plotly/plotly.py) from 4.2.1 to 4.3.0.
- [Release notes](https://github.com/plotly/plotly.py/releases)
- [Changelog](https://github.com/plotly/plotly.py/blob/master/CHANGELOG.md)
- [Commits](https://github.com/plotly/plotly.py/compare/v4.2.1...v4.3.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-18 07:21:25 +00:00
dependabot-preview[bot]
42474b7144 Bump flake8-tidy-imports from 3.0.0 to 3.1.0
Bumps [flake8-tidy-imports](https://github.com/adamchainz/flake8-tidy-imports) from 3.0.0 to 3.1.0.
- [Release notes](https://github.com/adamchainz/flake8-tidy-imports/releases)
- [Changelog](https://github.com/adamchainz/flake8-tidy-imports/blob/master/HISTORY.rst)
- [Commits](https://github.com/adamchainz/flake8-tidy-imports/compare/3.0.0...3.1.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-18 07:20:50 +00:00
dependabot-preview[bot]
933564591d Bump sqlalchemy from 1.3.10 to 1.3.11
Bumps [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) from 1.3.10 to 1.3.11.
- [Release notes](https://github.com/sqlalchemy/sqlalchemy/releases)
- [Changelog](https://github.com/sqlalchemy/sqlalchemy/blob/master/CHANGES)
- [Commits](https://github.com/sqlalchemy/sqlalchemy/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-18 07:20:30 +00:00
dependabot-preview[bot]
599e18b920 Bump urllib3 from 1.25.6 to 1.25.7
Bumps [urllib3](https://github.com/urllib3/urllib3) from 1.25.6 to 1.25.7.
- [Release notes](https://github.com/urllib3/urllib3/releases)
- [Changelog](https://github.com/urllib3/urllib3/blob/master/CHANGES.rst)
- [Commits](https://github.com/urllib3/urllib3/compare/1.25.6...1.25.7)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-18 07:20:02 +00:00
Matthias
547d65b065 Fix broken test 2019-11-17 15:22:44 +01:00
Matthias
e4e8a611be Add tests for telegram 2019-11-17 15:13:24 +01:00
Matthias
2b190e5638 Add documentation 2019-11-17 15:05:56 +01:00
Matthias
acab56793f Add /show_config to telegram 2019-11-17 15:03:45 +01:00
Matthias
2c976bdd24 Add show_config endpoint 2019-11-17 15:03:38 +01:00
Matthias
3aee8d2b2a Improve rest api client / status response 2019-11-17 14:40:59 +01:00
hroff-1902
841c379797 Merge pull request #2539 from freqtrade/seperate_docs_ci
seperate docs job
2019-11-17 13:20:21 +03:00
Matthias
b6a12044ba seperate docs job 2019-11-17 10:38:16 +01:00
hroff-1902
8e087cb639 Merge pull request #2535 from freqtrade/fix/quitting
Fix non-terminating bot
2019-11-17 01:15:59 +03:00
hroff-1902
bcb5913291 Merge pull request #2536 from freqtrade/coveralls_actions
Try moving coveralls to github actions
2019-11-16 23:05:05 +03:00
Matthias
be53c0885d Try moving coveralls to github actions 2019-11-16 15:53:45 +01:00
Matthias
91047830fd Add tst for worker termination 2019-11-16 09:56:16 +01:00
Matthias
6e0655b3b7 add empty worker variable 2019-11-16 09:47:56 +01:00
Matthias
edc0d7f2c7 Fix non-terminating bot 2019-11-15 20:10:17 +01:00
Matthias
1d18e0a11a Merge pull request #2518 from freqtrade/github_actions_tests
Move freqtrade CI to github actions
2019-11-15 06:58:12 +01:00
Matthias
b167fb071a fix windows test 2019-11-14 08:44:10 +01:00
Matthias
3b9899dfd4 hyperopts ... 2019-11-14 07:06:00 +01:00
Matthias
f94d46316e update checkout action to pinned version 2019-11-14 06:51:02 +01:00
Matthias
569a547b3f Update Actions CI to new subcommands 2019-11-14 06:49:21 +01:00
Matthias
6c306c0013 Merge branch 'develop' into github_actions_tests 2019-11-14 06:45:14 +01:00
Matthias
9b050523e9 Merge pull request #2397 from freqtrade/feat/new_args_system
require subcommand for all actions
2019-11-14 06:28:42 +01:00
hroff-1902
f9a92c2879 Adjust test 2019-11-13 23:32:37 +03:00
hroff-1902
ab194c7d75 Add test 2019-11-13 23:09:05 +03:00
hroff-1902
904a9c5dc7 Merge pull request #2527 from freqtrade/fix/openorder_plotprofit
plot-profit script fails in certain conditions
2019-11-13 22:58:44 +03:00
Matthias
38243c52fd Filter open trades - they are not added to the profit calc 2019-11-13 20:46:21 +01:00
Matthias
c8c48156dd Don't load trades twice ... 2019-11-13 20:44:55 +01:00
hroff-1902
f4d18034d9 Merge pull request #2523 from freqtrade/timeout_handling
Improve timedout handling
2019-11-13 22:25:58 +03:00
Matthias
17c11b2afa Merge pull request #2525 from hroff-1902/exchange-bibox
Add fix for bibox exchange
2019-11-13 19:52:50 +01:00
Matthias
68904296e7 Allow timeout of 0 2019-11-13 19:38:38 +01:00
Matthias
d4499338e0 Merge pull request #2519 from freqtrade/actions_test
Update dockerhub description from github readme.md
2019-11-13 19:30:36 +01:00
hroff-1902
6174a5dd55 Reimplement adjustment of ccxt 'has' with more generic ccxt_config class attribute 2019-11-13 20:22:23 +03:00
hroff-1902
e26bbc7de8 Add fix for bibox exchange 2019-11-13 19:50:54 +03:00
Matthias
62c1ff776e update action to 2.1.0 2019-11-13 13:59:38 +01:00
hroff-1902
baea06eac7 Merge pull request #2522 from freqtrade/replace_tickerinterval
Replace tickerinterval
2019-11-13 13:50:07 +03:00
Matthias
6ac73f7cde Update missed strings 2019-11-13 11:28:26 +01:00
Matthias
66619204ba re-add hyperopts multiple ... 2019-11-13 11:13:48 +01:00
hroff-1902
1d7fb2ffac Merge pull request #2521 from freqtrade/rpc/status_table
Add fiat to status table
2019-11-13 13:10:18 +03:00
Matthias
c42c5a1f85 Adjust "requires subcommand" message 2019-11-13 10:03:59 +01:00
Matthias
5b62ad876e Remove hyperopts occurances 2019-11-13 09:39:00 +01:00
hroff-1902
ec460ab9c9 Merge pull request #2520 from freqtrade/fix/randomtestfailure
[minor] Add sleep to allow thread to start
2019-11-13 00:35:04 +03:00
Matthias
2eb6513251 Improve timedout handling 2019-11-12 15:45:14 +01:00
Matthias
c449e39280 Replace more occurances of ticker_interval 2019-11-12 15:13:06 +01:00
Matthias
1c57a4ac35 more replacements of ticker_interval 2019-11-12 15:13:06 +01:00
Matthias
334ac8b10c Adapt documentation for timeframe 2019-11-12 15:13:06 +01:00
Matthias
d801dec6aa Some more places with ticker_interval gone 2019-11-12 15:13:06 +01:00
Matthias
08aedc18e1 Exchange ticker_interval with timeframe in some more places 2019-11-12 15:13:06 +01:00
Matthias
e4bdb92521 Replace some occurances of ticker_interval with timeframe 2019-11-12 15:13:06 +01:00
Matthias
11f7ab61b9 Remove decimal import from rpc 2019-11-12 15:11:31 +01:00
Matthias
df9bfb6c2e Add FIAT currency to status-table 2019-11-12 14:58:41 +01:00
Matthias
ab9506df48 simplify status_table command 2019-11-12 13:55:18 +01:00
Matthias
136ef077b2 Add sleep to allow thread to start 2019-11-12 13:14:43 +01:00
Matthias
e8a8f416f3 Update dockerhub description from github readme.md 2019-11-12 11:04:03 +01:00
Matthias
8c76f45030 Use correct dockerhub image name 2019-11-12 10:54:38 +01:00
Matthias
96f550c6aa Disable tests 2019-11-12 10:35:36 +01:00
Matthias
37ef5c38f0 integrate Slack notification 2019-11-12 10:33:49 +01:00
Matthias
66a273b31b Merge branch 'develop' into volumeList_enhanced_filter 2019-11-12 09:31:46 +01:00
Matthias
52e24c3a25 Split error-messsage between incompatible and wrong stake amount 2019-11-12 09:27:53 +01:00
Matthias
7a2d917c66 Merge pull request #2516 from freqtrade/hroff-1902-patch-1
minor: Fix typo in the rest-api docs
2019-11-12 06:35:26 +01:00
hroff-1902
025350ebff Fix typo in the rest-api docs 2019-11-12 00:07:27 +03:00
hroff-1902
411e035005 Merge pull request #2514 from freqtrade/pong
Add ping endpoing
2019-11-11 22:42:32 +03:00
Matthias
800997437a Update documentation 2019-11-11 20:25:44 +01:00
Matthias
75d5ff69ef Add ping endpoing 2019-11-11 20:10:56 +01:00
Matthias
a241c2af0d Build macos - ... 2019-11-11 19:42:05 +01:00
Matthias
d1729a624d fix windows build 2019-11-11 19:37:22 +01:00
Matthias
e51a720193 Apply cache to pi image 2019-11-11 19:37:18 +01:00
Matthias
ff1d36434d Add github actions action 2019-11-11 19:37:10 +01:00
Matthias
904ae5af91 Merge pull request #2512 from freqtrade/dependabot/pip/develop/numpy-1.17.4
Bump numpy from 1.17.3 to 1.17.4
2019-11-11 14:24:40 +01:00
Matthias
42e8e1c16a Merge pull request #2511 from freqtrade/dependabot/pip/develop/scipy-1.3.2
Bump scipy from 1.3.1 to 1.3.2
2019-11-11 11:41:58 +01:00
Matthias
9fb493d2f4 Merge pull request #2510 from freqtrade/dependabot/pip/develop/ccxt-1.19.25
Bump ccxt from 1.19.14 to 1.19.25
2019-11-11 11:27:43 +01:00
dependabot-preview[bot]
031157f215 Bump numpy from 1.17.3 to 1.17.4
Bumps [numpy](https://github.com/numpy/numpy) from 1.17.3 to 1.17.4.
- [Release notes](https://github.com/numpy/numpy/releases)
- [Changelog](https://github.com/numpy/numpy/blob/master/doc/HOWTO_RELEASE.rst.txt)
- [Commits](https://github.com/numpy/numpy/compare/v1.17.3...v1.17.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-11 10:20:30 +00:00
dependabot-preview[bot]
c65d217d1e Bump scipy from 1.3.1 to 1.3.2
Bumps [scipy](https://github.com/scipy/scipy) from 1.3.1 to 1.3.2.
- [Release notes](https://github.com/scipy/scipy/releases)
- [Commits](https://github.com/scipy/scipy/compare/v1.3.1...v1.3.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-11 10:19:36 +00:00
dependabot-preview[bot]
0a13f7e1c7 Bump ccxt from 1.19.14 to 1.19.25
Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.19.14 to 1.19.25.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ccxt/ccxt/compare/1.19.14...1.19.25)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-11 10:18:58 +00:00
Matthias
173375de7c Merge pull request #2508 from freqtrade/hroff-1902-patch-1
minor: More cosmetics on Exchange Notes
2019-11-11 10:39:20 +01:00
hroff-1902
27d81bb68c minor: More cosmetics on Exchange Notes 2019-11-11 12:23:24 +03:00
Matthias
044105e8e0 Merge pull request #2507 from freqtrade/hroff-1902-patch-3
minor: Exchange notes docs
2019-11-11 10:11:46 +01:00
Matthias
48f8a62335 Merge pull request #2506 from freqtrade/hroff-1902-patch-1
minor: Fix link in the Faq docs
2019-11-11 09:59:52 +01:00
Matthias
71f99ba79c Merge pull request #2504 from freqtrade/hroff-1902-patch-2
Minor: Exchange notes typographical cosmetics
2019-11-11 09:59:09 +01:00
hroff-1902
95492958f9 wordings 2019-11-11 11:37:57 +03:00
hroff-1902
661c8251c5 minor: Exchange notes docs
* Formatting (structure of sections)
* Cosmetic changes

This was not noticed in terms of #2505
2019-11-11 11:23:29 +03:00
hroff-1902
83067c1edc minor: Fix link in the Faq docs 2019-11-11 11:18:43 +03:00
hroff-1902
c5ed004c9e Merge pull request #2505 from freqtrade/bittrex_restricted_markets
Add restricted markets snippet to documentation
2019-11-11 11:13:47 +03:00
Matthias
04b51a982e Include warning-message to bittrex explanation 2019-11-11 08:55:37 +01:00
Matthias
e810597eec Add restricted markets snippet to documentation 2019-11-11 07:16:35 +01:00
hroff-1902
692d6afbd9 Minor exchange notes typographical cosmetics 2019-11-11 02:17:41 +03:00
hroff-1902
59fa02e11a Merge pull request #2499 from freqtrade/hroff-1902-patch-1
minor: Wordings on top of #2495
2019-11-11 01:27:43 +03:00
hroff-1902
6ef6a24841 Merge pull request #2501 from freqtrade/readme_small_work
[docs] Add seperate exchange section in docs
2019-11-11 01:14:16 +03:00
Matthias
eba55c2783 Change link 2019-11-10 19:31:13 +01:00
Matthias
085aa3084e Implement ticker caching 2019-11-09 19:45:09 +01:00
Matthias
de2d04f06b Add note about systemd load location
closes #2461
2019-11-09 16:24:24 +01:00
Matthias
12654cb810 Add seperate exchange section in docs 2019-11-09 16:19:58 +01:00
Matthias
4b15873ee1 Simplify examples 2019-11-09 15:41:51 +01:00
Matthias
748fe94603 Merge branch 'develop' into volumeList_enhanced_filter 2019-11-09 15:34:47 +01:00
Matthias
86a5dfa62e Update documentation 2019-11-09 15:28:36 +01:00
Matthias
0b4800835c update documentation 2019-11-09 15:28:03 +01:00
Matthias
5caeca7509 Improve tests for pairlist-sequence behaviour 2019-11-09 15:23:36 +01:00
Matthias
7ff61f12e9 pass pairlist position into the pairlists 2019-11-09 15:04:04 +01:00
Matthias
ae35649366 improve pairlistmanager errorhandling 2019-11-09 14:49:41 +01:00
Matthias
a01b34a004 tests 2019-11-09 14:44:39 +01:00
Matthias
02b9da8aba Update documentation 2019-11-09 14:39:28 +01:00
Matthias
ed0c7a6aaf Update configschema to fit new pairlists approach 2019-11-09 14:16:11 +01:00
Matthias
25cb935eee Some more adjustments for new pairlist 2019-11-09 14:16:03 +01:00
Matthias
c74d766275 move from name to name_list 2019-11-09 14:00:32 +01:00
Matthias
37985310d5 remove cachetools dependency 2019-11-09 13:59:35 +01:00
Matthias
c3b4a4dde1 Update sample configurations 2019-11-09 13:59:19 +01:00
Matthias
d7262c0b4e Fix correct ticker type 2019-11-09 13:40:36 +01:00
Matthias
870966dcd0 Fix more tests 2019-11-09 09:42:34 +01:00
Matthias
85beb3b6a9 Fix test 2019-11-09 09:31:17 +01:00
Matthias
bf69b055eb Add name getting 2019-11-09 09:07:46 +01:00
Matthias
31c7189b8b Verify blacklist correctly 2019-11-09 07:23:34 +01:00
Matthias
eaf3fd80c5 Allow blacklist-verification from all pairlists 2019-11-09 07:19:46 +01:00
Matthias
1059586226 Small adjustments 2019-11-09 07:07:33 +01:00
Matthias
b610e8c7e6 Don't refresh tickers if they are not needed 2019-11-09 07:05:17 +01:00
Matthias
e632720c02 Allow chaining of pairlists 2019-11-09 06:55:16 +01:00
hroff-1902
1f042f5e32 Quick start and easy installation sections reworked 2019-11-08 19:38:32 +03:00
hroff-1902
54b63e89f8 Wordings on top of #2495 2019-11-08 17:32:18 +03:00
Matthias
3f65c31883 Merge pull request #2495 from gaugau3000/prepare_reorg_install_doc
Prepare reorg install doc : explain differences between master and develop
2019-11-08 14:43:27 +01:00
hroff-1902
31ab32f0b9 Always set trailing_stop=True with 'trailing' hyperspace 2019-11-08 12:47:28 +03:00
Gautier Pialat
bc5c91f681 add missing note block 2019-11-08 10:29:00 +01:00
Gautier Pialat
076ef0407b git branch note explanation 2019-11-08 09:39:06 +01:00
Gautier Pialat
b0150d548a remove not use statement 2019-11-08 09:37:54 +01:00
hroff-1902
60acbc97ab Merge pull request #2494 from freqtrade/fix/timezone_timestamp
Fix UTC handling of timestamp() conversation in fetch_my_trades
2019-11-08 11:33:47 +03:00
Matthias
dd47bd04cd Move description to correct place 2019-11-08 01:32:08 -05:00
Matthias
da57396d07 Fix UTC handling of timestamp() conversation in fetch_my_trades 2019-11-08 06:55:07 +01:00
hroff-1902
d3a3765819 Fix test 2019-11-08 03:48:08 +03:00
hroff-1902
f90676cfc5 Add trailing stoploss hyperspace 2019-11-08 03:07:43 +03:00
Matthias
ad2289c34c Merge pull request #2488 from freqtrade/hyperopt_specialchar
[minor] Fix UnicodeError in hyperopt output
2019-11-07 06:18:15 +01:00
Matthias
ca77dbe8da Fix UnicodeError in hyperopt output 2019-11-06 19:33:15 +01:00
Matthias
6c6efd7214 Merge pull request #2481 from freqtrade/dependabot/pip/develop/ccxt-1.19.14
Bump ccxt from 1.18.1346 to 1.19.14
2019-11-06 10:13:46 +01:00
Matthias
7f099d41fa Merge pull request #2484 from freqtrade/dependabot/pip/develop/pandas-0.25.3
Bump pandas from 0.25.2 to 0.25.3
2019-11-06 10:13:31 +01:00
dependabot-preview[bot]
60109aaa1f Bump ccxt from 1.18.1346 to 1.19.14
Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.18.1346 to 1.19.14.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ccxt/ccxt/compare/1.18.1346...1.19.14)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-06 08:37:38 +00:00
Matthias
ef057c16cb Merge pull request #2483 from freqtrade/dependabot/pip/develop/flake8-3.7.9
Bump flake8 from 3.7.8 to 3.7.9
2019-11-06 09:36:43 +01:00
Matthias
39e728a7c2 Merge pull request #2482 from freqtrade/dependabot/pip/develop/arrow-0.15.4
Bump arrow from 0.15.2 to 0.15.4
2019-11-06 09:36:18 +01:00
dependabot-preview[bot]
28f0c00281 Bump pandas from 0.25.2 to 0.25.3
Bumps [pandas](https://github.com/pandas-dev/pandas) from 0.25.2 to 0.25.3.
- [Release notes](https://github.com/pandas-dev/pandas/releases)
- [Changelog](https://github.com/pandas-dev/pandas/blob/master/RELEASE.md)
- [Commits](https://github.com/pandas-dev/pandas/compare/v0.25.2...v0.25.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-06 07:21:55 +00:00
dependabot-preview[bot]
bc78316aa5 Bump flake8 from 3.7.8 to 3.7.9
Bumps [flake8](https://gitlab.com/pycqa/flake8) from 3.7.8 to 3.7.9.
- [Release notes](https://gitlab.com/pycqa/flake8/tags)
- [Commits](https://gitlab.com/pycqa/flake8/compare/3.7.8...3.7.9)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-06 07:21:39 +00:00
dependabot-preview[bot]
b8a6c55b10 Bump arrow from 0.15.2 to 0.15.4
Bumps [arrow](https://github.com/crsmithdev/arrow) from 0.15.2 to 0.15.4.
- [Release notes](https://github.com/crsmithdev/arrow/releases)
- [Changelog](https://github.com/crsmithdev/arrow/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/crsmithdev/arrow/compare/0.15.2...0.15.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-06 07:21:09 +00:00
Matthias
6df1dd1ef2 Merge pull request #2479 from freqtrade/fix/bids_to_delta
Fix bug where bids_to_ask_delta causes doublebuys
2019-11-05 21:14:26 +01:00
Matthias
c8638ce82f Fix bug where bids_to_ask_delta causes doublebuys
The continue must happen irrespective of the outcome of this - otherwise
the below BUY will happen anyway.
2019-11-05 21:03:06 +01:00
Matthias
1a61d89bcc Merge pull request #2476 from freqtrade/unify_key_removal
Introduce remove_credentials to remove code duplication
2019-11-05 19:34:23 +01:00
Matthias
eb0b0350e0 Introduce remove_credentials to remove code duplication 2019-11-05 12:39:19 +01:00
Matthias
4ec7fcd836 Merge pull request #2475 from gaugau3000/docker_doc_update
Update docker doc (new note about restart policy)
2019-11-05 12:32:23 +01:00
Gautier Pialat
f6a66cd3de Fix typo 2019-11-05 12:14:39 +01:00
Gautier Pialat
871019c8b9 docker doc update about restart policy 2019-11-05 12:08:57 +01:00
hroff-1902
581907305a Merge pull request #2467 from freqtrade/check_exchange_other
Don't check exchange for Utils commands
2019-11-04 19:28:07 +03:00
hroff-1902
54b0fbca59 Merge pull request #2468 from freqtrade/fix_pandas_wraning
Fix pandas access warning
2019-11-04 15:32:05 +03:00
Matthias
1e44f93c31 Fix pandas access warning 2019-11-03 10:58:31 +01:00
Matthias
3eca80217c Don't check exchange for Utils commands 2019-11-03 10:18:46 +01:00
Matthias
6f01d7f8ea Merge branch 'develop' into feat/new_args_system 2019-11-03 10:09:49 +01:00
Matthias
500d16620b Merge pull request #2465 from freqtrade/hyperopt_populate_from_strategy
Hyperopt populate from strategy
2019-11-03 10:03:33 +01:00
Matthias
6550e1fa99 Change docstring in sampleHyperopt 2019-11-03 09:55:38 +01:00
Matthias
80ad37ad93 Updated plot_indicators test 2019-11-02 14:17:15 +01:00
Matthias
3287cdd47a Improve documentation regarding loading methods from hyperopt 2019-11-02 13:01:42 +01:00
Matthias
12e86ee4bd Make travis test-hyperopt the sample strategy 2019-11-02 11:12:08 +01:00
Matthias
97d0f93d3c Align samples (hyperopt and strategy) to work together 2019-11-02 11:11:13 +01:00
Matthias
861f10dca6 Allow populate-indicators to come from strategy 2019-11-02 11:10:33 +01:00
Matthias
2a1385f94b Merge pull request #2462 from freqtrade/hroff-1902-patch-1
Update faq with examples of grepping the log
2019-11-02 06:47:15 +01:00
hroff-1902
e9af6b393f Fix typo 2019-11-02 02:32:57 +03:00
hroff-1902
2124661cee Update faq with examples of grepping the log 2019-11-02 02:22:58 +03:00
Matthias
1593847203 Merge pull request #2453 from freqtrade/rel/2019-10
Release 2019-10
2019-11-01 19:52:07 +01:00
hroff-1902
e8a08011be Merge pull request #2460 from freqtrade/new_runmodes
[minor] Add new runmodes
2019-11-01 21:40:23 +03:00
Matthias
691cec7956 Be more selective which startup-messages are shown 2019-11-01 16:42:57 +01:00
Matthias
241d947564 Add new runmodes 2019-11-01 15:39:49 +01:00
Matthias
880834b902 Merge pull request #2446 from hroff-1902/log-stderr
Log to stderr
2019-11-01 06:14:55 +01:00
hroff-1902
f435384bf0 Merge pull request #2451 from freqtrade/bt_analysis_maxopen
Bt analysis maxopen at any time
2019-11-01 00:13:31 +03:00
hroff-1902
3149c12a14 Merge pull request #2444 from freqtrade/sql_cleanup
Fix scoped_session and add Documentation for strategy
2019-10-31 23:19:30 +03:00
hroff-1902
6a9a2e7f88 Merge pull request #2452 from freqtrade/fix/1717
Allow configuration of stoploss on exchange limit
2019-10-31 23:13:37 +03:00
hroff-1902
5b87393a95 Merge pull request #2457 from freqtrade/integration_tests
split up test_freqtradebot.py
2019-10-31 22:05:03 +03:00
Matthias
5a27b10579 Merge pull request #2450 from freqtrade/rpi_docs
[docs] Update Raspberry documentation
2019-10-31 13:30:45 +01:00
Matthias
a80e49bd81 Change level of rpi header 2019-10-31 12:49:41 +01:00
hroff-1902
ffed13b979 Merge pull request #2455 from freqtrade/reduce_startup_indicator_logfrequency
[minor][log]Reduce frequency of "startup-period" message
2019-10-31 13:10:16 +03:00
hroff-1902
9f0f1096e1 Merge pull request #2459 from freqtrade/exchange_helpers
Move exchange-constants and retriers to exchange.common
2019-10-31 13:09:01 +03:00
Matthias
9a42afe0be Move exchange-constants and retriers to exchange.common 2019-10-31 10:59:17 +01:00
Matthias
b6616d7a13 Add test helping debug #1985 2019-10-31 10:04:28 +01:00
Matthias
7be378aaa9 Remove markets mock where it's not needed 2019-10-31 07:26:48 +01:00
Matthias
734a9d5d87 Seperate tests related to worker from test_freqtradebot 2019-10-31 07:16:25 +01:00
Matthias
ce6b869f84 Cleanup test 2019-10-31 07:11:57 +01:00
Matthias
dc5f1b2878 Extract integration tests into sepearte file 2019-10-31 07:08:02 +01:00
hroff-1902
a041b8bf72 Merge remote-tracking branch 'upstream/develop' into log-stderr 2019-10-31 09:07:07 +03:00
hroff-1902
4fa12ffda0 Merge pull request #2454 from freqtrade/release_docs
[minor][docs] Update release-documentation to fit new release style
2019-10-31 09:02:55 +03:00
Matthias
5dcf28cafb Reduce frequency of "startup-period" message 2019-10-31 06:57:37 +01:00
Matthias
365a408df5 Update release-documentation to fit new release style 2019-10-31 06:43:42 +01:00
Matthias
7204227022 Replace coins in whitelist with existing ones 2019-10-31 06:29:09 +01:00
Matthias
dab4ab78fc Fix create_cum_profit to work with trades that don't open on candle
opens
2019-10-31 06:27:27 +01:00
Matthias
a74b941b72 Add test to verify this is correct 2019-10-31 06:27:22 +01:00
Matthias
89bba6f776 Version bump 2019-10-31 06:25:30 +01:00
Matthias
82f86569ee Merge branch 'master' into rel/2019-11 2019-10-31 06:25:02 +01:00
Matthias
9e988783de Allow configuration of stoploss on exchange limit
fixes #1717
2019-10-30 20:07:26 +01:00
Matthias
bba8e61409 Rename function in samples 2019-10-30 20:05:44 +01:00
Matthias
dee9b84322 Merge branch 'develop' into volumeList_enhanced_filter 2019-10-30 16:41:17 +01:00
Matthias
ad98d61939 Update developer docs 2019-10-30 16:39:45 +01:00
Matthias
14758dbe10 Some small cleanups 2019-10-30 16:32:22 +01:00
Matthias
d89a7d5235 Document new method to configure filters 2019-10-30 16:30:47 +01:00
Matthias
640423c362 Add config samples for chainable pairlist filters 2019-10-30 16:02:24 +01:00
Matthias
fd9c02603c Introduce chainable PairlistFilters 2019-10-30 15:59:52 +01:00
Matthias
44289e4c58 Allow not using files from user_dir 2019-10-30 15:57:08 +01:00
Matthias
6928c685a8 Add documentation sample for parallel_trade_analysis 2019-10-30 14:12:41 +01:00
Matthias
dd408aa5d6 Add analyze_trade_parallelism analysis function 2019-10-30 14:07:23 +01:00
Matthias
dac88c6aed extract Find parallel trades per interval 2019-10-30 13:35:55 +01:00
Matthias
78fe5a46c1 Update travis to verify for correct title usage 2019-10-30 13:27:36 +01:00
Matthias
7a96d3c9ae Update raspbian install documentation
Fix "box" titles ... they need to be in quotes!
2019-10-30 13:27:04 +01:00
Matthias
b7b1e66c6e Convert to % as part of RPC to allow users to use unrounded ratio 2019-10-30 11:12:49 +01:00
Matthias
5ed7771148 Update documentation to include get_trades
fixes #1753
2019-10-30 11:12:49 +01:00
Matthias
c2076d86a4 Use scoped_session as intended 2019-10-30 11:12:49 +01:00
Matthias
b37c5e4878 use get_trades in rpc modules 2019-10-30 11:12:49 +01:00
Matthias
26a5800a7f Extract get_trades function 2019-10-30 11:12:49 +01:00
Matthias
01efebc42f Extract query to it's own function 2019-10-30 11:12:49 +01:00
Matthias
ab117527c9 Refactor get_best_pair to persistence 2019-10-30 11:12:49 +01:00
Matthias
f20f5cebbe Move performance-calculation to persistence 2019-10-30 11:12:49 +01:00
Matthias
0c3a8ddfb9 Merge branch 'develop' into feat/new_args_system 2019-10-30 11:12:27 +01:00
hroff-1902
669a6cf119 Merge pull request #2448 from freqtrade/fix/POWRfailure
Replace coins in whitelist with existing ones
2019-10-30 12:55:45 +03:00
Matthias
6fe7b13e37 Replace coins in whitelist with existing ones 2019-10-30 09:26:08 +01:00
hroff-1902
9c180e587b Log to stderr 2019-10-30 04:04:28 +03:00
Matthias
a368646745 Merge branch 'develop' into feat/new_args_system 2019-10-29 19:33:56 +01:00
Matthias
de2cc58b0c Final cleanups and added tests 2019-10-29 10:44:35 +01:00
Matthias
d803d86f4d Add low_price_percent_filter 2019-10-29 09:32:06 +01:00
hroff-1902
5254059fe4 Merge pull request #2430 from freqtrade/startup_period_bt
Add Startup period for strategies
2019-10-28 23:33:30 +03:00
Matthias
d706571e6f Extract precision_filter to seperate function 2019-10-28 19:41:00 +01:00
hroff-1902
907baea8b2 Merge pull request #2439 from freqtrade/fix/plotprofit
Plot-profit does not work with db file
2019-10-28 21:04:31 +03:00
hroff-1902
062536438e Merge pull request #2433 from freqtrade/docs/stop_positive
[Docs] stoploss documentation improvements
2019-10-28 20:59:56 +03:00
Matthias
4ff035537b Simplify precision_filter code 2019-10-28 16:21:00 +01:00
Matthias
466a3b87fc Enhance tests to cover precision_filter correctly 2019-10-28 16:19:38 +01:00
Matthias
b947f3c2a5 Merge pull request #2417 from freqtrade/whitelist_docs
DynamicPairlist - pair_whitelist
2019-10-28 15:25:17 +01:00
Matthias
069da224bc Add test to verify this is correct 2019-10-28 14:30:01 +01:00
Matthias
e82460bde6 Fix create_cum_profit to work with trades that don't open on candle
opens
2019-10-28 14:24:12 +01:00
Matthias
61c037f2cf Fix some typos and comment mistakes 2019-10-28 13:05:54 +01:00
Matthias
f98290ba6e Merge pull request #2436 from freqtrade/dependabot/pip/develop/pytest-5.2.2
Bump pytest from 5.2.1 to 5.2.2
2019-10-28 13:04:05 +01:00
Matthias
73343b3387 Address feedback 2019-10-28 12:53:12 +01:00
Matthias
3a6020dcd7 small improvements to stoploss doc 2019-10-28 12:43:35 +01:00
dependabot-preview[bot]
596a269dfd Bump pytest from 5.2.1 to 5.2.2
Bumps [pytest](https://github.com/pytest-dev/pytest) from 5.2.1 to 5.2.2.
- [Release notes](https://github.com/pytest-dev/pytest/releases)
- [Changelog](https://github.com/pytest-dev/pytest/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest/compare/5.2.1...5.2.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-10-28 11:41:44 +00:00
Matthias
7329fce87c Merge pull request #2437 from freqtrade/dependabot/pip/develop/ccxt-1.18.1346
Bump ccxt from 1.18.1306 to 1.18.1346
2019-10-28 12:41:03 +01:00
Matthias
4059116787 Merge pull request #2434 from freqtrade/dependabot/pip/develop/pytest-mock-1.11.2
Bump pytest-mock from 1.11.1 to 1.11.2
2019-10-28 12:40:46 +01:00
Matthias
1561322af2 Merge pull request #2435 from freqtrade/dependabot/pip/develop/nbconvert-5.6.1
Bump nbconvert from 5.6.0 to 5.6.1
2019-10-28 12:40:19 +01:00
dependabot-preview[bot]
44d0a6f2b8 Bump ccxt from 1.18.1306 to 1.18.1346
Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.18.1306 to 1.18.1346.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ccxt/ccxt/compare/1.18.1306...1.18.1346)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-10-28 07:42:58 +00:00
dependabot-preview[bot]
60b99469b9 Bump nbconvert from 5.6.0 to 5.6.1
Bumps [nbconvert](https://github.com/jupyter/nbconvert) from 5.6.0 to 5.6.1.
- [Release notes](https://github.com/jupyter/nbconvert/releases)
- [Commits](https://github.com/jupyter/nbconvert/compare/5.6.0...5.6.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-10-28 07:40:57 +00:00
dependabot-preview[bot]
46b975a491 Bump pytest-mock from 1.11.1 to 1.11.2
Bumps [pytest-mock](https://github.com/pytest-dev/pytest-mock) from 1.11.1 to 1.11.2.
- [Release notes](https://github.com/pytest-dev/pytest-mock/releases)
- [Changelog](https://github.com/pytest-dev/pytest-mock/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest-mock/compare/v1.11.1...v1.11.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-10-28 07:40:15 +00:00
Matthias
70ad909b16 change samples to python code, and simplify a few things 2019-10-27 19:46:05 +01:00
Matthias
2af3ce3ecc Improve stoploss documentation - split out offset_is_reached 2019-10-27 19:36:00 +01:00
Matthias
132a4da7cf Small style fixes and adjusted tests 2019-10-27 10:56:38 +01:00
Matthias
73f5bff9c5 Add validation to make sure strategies work on that exchange 2019-10-27 10:38:21 +01:00
Matthias
223f0cd4d3 Apply startup_period to edge as well 2019-10-27 10:26:21 +01:00
Matthias
c4cb098d14 Update documentation with indicator_startup_period 2019-10-27 10:26:17 +01:00
Matthias
2bc74882e9 Add test for startup_candles 2019-10-27 10:01:13 +01:00
Matthias
2ba388074e Fix small bugs 2019-10-27 09:44:56 +01:00
Matthias
33164ac78e Refactor loading of bt data to backtesting ... 2019-10-27 09:44:56 +01:00
Matthias
86624411c6 Test trim_dataframe 2019-10-27 09:44:56 +01:00
Matthias
5cdae17d19 Add tests for timerange modifications 2019-10-27 09:44:56 +01:00
Matthias
bd4a23beeb Refactor start-adjust logic to timerange 2019-10-27 09:44:56 +01:00
Matthias
5c2682e2c9 Add startup_candle_count to sample strategy 2019-10-27 09:44:56 +01:00
Matthias
6382a4cd04 Implement startup-period to default-strategy 2019-10-27 09:44:56 +01:00
Matthias
704121c197 Move most logic to history 2019-10-27 09:44:56 +01:00
Matthias
9c7696a8ce Add required_startup to backtesting 2019-10-27 09:44:56 +01:00
Matthias
9e7e051eb4 add trim-dataframe method 2019-10-27 09:44:56 +01:00
Matthias
616fe08bce Add subtract_start to timerange object 2019-10-27 09:44:56 +01:00
Matthias
141c454187 Add startup-candles-argument for strategy 2019-10-27 09:44:56 +01:00
hroff-1902
17fce00a5e Merge pull request #2427 from freqtrade/docs_windows
Improve windows Install documentation with hints
2019-10-27 10:01:25 +03:00
Matthias
0b8d04d75e Merge pull request #2429 from hroff-1902/minor-typos-2
minor: Fix typo in docs
2019-10-27 06:09:38 +01:00
Matthias
e5487441ba Fix typos 2019-10-27 06:08:55 +01:00
hroff-1902
48d83715a5 Fix typo in docs (thanks to Escaliert@Slack) 2019-10-27 03:44:49 +03:00
hroff-1902
8b4fea4b71 Update installation.md 2019-10-27 02:06:10 +03:00
hroff-1902
4c1f0c3c59 Merge remote-tracking branch 'origin/develop' into logging-syslog 2019-10-27 02:03:03 +03:00
Matthias
13ae339a2e Improve windows Install documentation with hints 2019-10-26 16:34:13 +02:00
Matthias
73a03565e5 Merge pull request #2426 from hroff-1902/docs-advanced-setup
docs: Create Advanced Post-installation Tasks section
2019-10-26 16:26:59 +02:00
hroff-1902
bf20f3b7d8 Remove part which is related to #2418 2019-10-26 15:41:31 +03:00
Matthias
20dabd9c41 Merge branch 'develop' into whitelist_docs 2019-10-26 13:36:39 +02:00
Matthias
32df73c056 flake 2019-10-26 13:28:04 +02:00
Matthias
ef1885c38b Fix more tests 2019-10-26 13:24:40 +02:00
Matthias
f5351e60e7 Adjust markets mock 2019-10-26 13:23:37 +02:00
hroff-1902
bfec9d974b docs: Create Advanced Post-installation Tasks section; move systemd stuff there 2019-10-26 13:26:22 +03:00
hroff-1902
3a7553eef6 Adjust option helpstring 2019-10-26 12:45:05 +03:00
Matthias
d0521d33ce Refactor whitelist handling
fixes #2413
2019-10-26 11:36:02 +02:00
hroff-1902
9155598ca4 Merge pull request #2425 from freqtrade/hroff-1902-patch-1
docs: add a tip for The Ocean exchange
2019-10-26 12:08:58 +03:00
hroff-1902
ea6b94fd0c docs: add a tip for The Ocean exchange 2019-10-26 11:54:04 +03:00
hroff-1902
2a95d6855b Merge pull request #2419 from freqtrade/silence_bot
Change loglevel of repeated message to debug
2019-10-26 10:31:59 +03:00
Matthias
3929ad4e1f Fix typo 2019-10-26 09:21:51 +02:00
Matthias
2f1d9696cd Change keepalive to heartbeat 2019-10-25 20:00:08 +02:00
Matthias
2e896462c1 Fix wrong volumepairlist message 2019-10-25 19:49:23 +02:00
Matthias
e63377980e Improve pairlist documentation 2019-10-25 19:47:37 +02:00
hroff-1902
41f97a73c9 Add logging to syslog and journald 2019-10-25 17:31:57 +03:00
Matthias
0773a65333 Add I Am Alive Message 2019-10-25 15:01:35 +02:00
Matthias
8201f70a80 Change loglevel of repeated message to debug 2019-10-25 14:19:02 +02:00
Matthias
45b83cc544 Don't require pair_whitelist for dynamicPairlist usecases 2019-10-25 07:07:01 +02:00
Matthias
b3e028e853 Improve dynamic pairlist documentation 2019-10-25 07:06:29 +02:00
Matthias
74b2f11d4f Merge pull request #2416 from hroff-1902/cleanup-scripts
Cleanup in scripts
2019-10-25 06:31:47 +02:00
Matthias
514e073c57 Merge pull request #2415 from hroff-1902/rpc-race
minor: Fix potential race conditions between RPC and Freqtradebot
2019-10-25 06:14:59 +02:00
hroff-1902
59e881c59d Remove obsolete scripts 2019-10-24 23:11:07 +03:00
hroff-1902
2e1e080022 Fix potential race conditions between RPC and Freqtradebot during initialization 2019-10-24 22:33:44 +03:00
Matthias
13255b370c Allow non-config to parse config 2019-10-24 06:30:07 +02:00
Matthias
e1edf36307 Fix test failures 2019-10-24 06:22:05 +02:00
hroff-1902
470efd6f40 Merge pull request #2412 from freqtrade/align_utils
[minor] Use exchange.name instead of config['exchange']['name']
2019-10-24 00:16:32 +03:00
hroff-1902
6640f4a1b2 Make flake happy 2019-10-23 23:57:17 +03:00
hroff-1902
e408274fb3 Merge branch 'develop' into align_utils 2019-10-23 23:45:33 +03:00
hroff-1902
4ce278a06e Merge branch 'develop' into feat/new_args_system 2019-10-23 22:45:06 +03:00
hroff-1902
a135eaa993 Merge pull request #2370 from hroff-1902/list-pairs2
Add list-pairs and list-markets subcommands
2019-10-23 22:42:13 +03:00
Matthias
87ff7be550 Use exchange.name instead of config['exchange']['name'] 2019-10-23 07:08:49 +02:00
hroff-1902
7441300270 Merge remote-tracking branch 'origin/develop' into list-pairs2 2019-10-22 20:19:03 +03:00
hroff-1902
b4f4fae0ca Merge pull request #2411 from freqtrade/fix/2369
Correctly pass validate flag to fallback exchange too
2019-10-22 20:14:44 +03:00
Matthias
336808ec54 Correctly pass validate flag to fallback exchange too 2019-10-22 14:02:47 +02:00
hroff-1902
b26faa13bd Call validate_timeframe only when validate is True 2019-10-22 13:51:36 +03:00
hroff-1902
562e4e63de Set validate=False for exchangÑe in start_list_markets 2019-10-22 13:48:54 +03:00
hroff-1902
ad5f7e1581 Merge remote-tracking branch 'origin/develop' into list-pairs2 2019-10-22 12:30:39 +03:00
hroff-1902
3cf95f9f6c Merge pull request #2369 from freqtrade/disable_exchangevalidate
Allow skipping of exchange validation
2019-10-22 12:22:48 +03:00
hroff-1902
f0710cafd0 Merge pull request #2403 from freqtrade/dependabot/pip/develop/mypy-0.740
Bump mypy from 0.730 to 0.740
2019-10-22 00:11:13 +03:00
hroff-1902
73fa5bae96 minor: Fix wording in a docstring 2019-10-22 00:03:11 +03:00
Matthias
a43d436f98 Move decorators out of API Class 2019-10-21 19:47:09 +02:00
hroff-1902
ff5ba64385 Improve docs 2019-10-21 14:06:46 +03:00
Matthias
7e38a07490 Merge pull request #2406 from freqtrade/dependabot/pip/develop/plotly-4.2.1
Bump plotly from 4.1.1 to 4.2.1
2019-10-21 12:30:04 +02:00
dependabot-preview[bot]
8872158a6a Bump mypy from 0.730 to 0.740
Bumps [mypy](https://github.com/python/mypy) from 0.730 to 0.740.
- [Release notes](https://github.com/python/mypy/releases)
- [Commits](https://github.com/python/mypy/compare/v0.730...v0.740)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-10-21 10:29:50 +00:00
Matthias
db3e789294 Merge pull request #2405 from freqtrade/dependabot/pip/develop/flake8-tidy-imports-3.0.0
Bump flake8-tidy-imports from 2.0.0 to 3.0.0
2019-10-21 12:28:31 +02:00
Matthias
4813ff338b Merge pull request #2401 from freqtrade/dependabot/pip/develop/python-telegram-bot-12.2.0
Bump python-telegram-bot from 12.1.1 to 12.2.0
2019-10-21 12:24:20 +02:00
Matthias
fbd7dc1d6c Merge pull request #2404 from freqtrade/dependabot/pip/develop/pandas-0.25.2
Bump pandas from 0.25.1 to 0.25.2
2019-10-21 12:07:15 +02:00
dependabot-preview[bot]
f07b26f245 Bump pandas from 0.25.1 to 0.25.2
Bumps [pandas](https://github.com/pandas-dev/pandas) from 0.25.1 to 0.25.2.
- [Release notes](https://github.com/pandas-dev/pandas/releases)
- [Changelog](https://github.com/pandas-dev/pandas/blob/master/RELEASE.md)
- [Commits](https://github.com/pandas-dev/pandas/compare/v0.25.1...v0.25.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-10-21 08:33:48 +00:00
Matthias
3acc10dd48 Merge pull request #2400 from freqtrade/dependabot/pip/develop/numpy-1.17.3
Bump numpy from 1.17.2 to 1.17.3
2019-10-21 10:32:29 +02:00
dependabot-preview[bot]
e5f06c201f Bump python-telegram-bot from 12.1.1 to 12.2.0
Bumps [python-telegram-bot](https://github.com/python-telegram-bot/python-telegram-bot) from 12.1.1 to 12.2.0.
- [Release notes](https://github.com/python-telegram-bot/python-telegram-bot/releases)
- [Changelog](https://github.com/python-telegram-bot/python-telegram-bot/blob/master/CHANGES.rst)
- [Commits](https://github.com/python-telegram-bot/python-telegram-bot/compare/v12.1.1...v12.2.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-10-21 08:29:57 +00:00
Matthias
bf20cde83d Merge pull request #2402 from freqtrade/dependabot/pip/develop/ccxt-1.18.1306
Bump ccxt from 1.18.1260 to 1.18.1306
2019-10-21 10:28:23 +02:00
dependabot-preview[bot]
364859394b Bump plotly from 4.1.1 to 4.2.1
Bumps [plotly](https://github.com/plotly/plotly.py) from 4.1.1 to 4.2.1.
- [Release notes](https://github.com/plotly/plotly.py/releases)
- [Changelog](https://github.com/plotly/plotly.py/blob/master/CHANGELOG.md)
- [Commits](https://github.com/plotly/plotly.py/compare/v4.1.1...v4.2.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-10-21 07:50:16 +00:00
dependabot-preview[bot]
657f1b6c45 Bump flake8-tidy-imports from 2.0.0 to 3.0.0
Bumps [flake8-tidy-imports](https://github.com/adamchainz/flake8-tidy-imports) from 2.0.0 to 3.0.0.
- [Release notes](https://github.com/adamchainz/flake8-tidy-imports/releases)
- [Changelog](https://github.com/adamchainz/flake8-tidy-imports/blob/master/HISTORY.rst)
- [Commits](https://github.com/adamchainz/flake8-tidy-imports/compare/2.0.0...3.0.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-10-21 07:49:35 +00:00
dependabot-preview[bot]
e350bcc2ef Bump ccxt from 1.18.1260 to 1.18.1306
Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.18.1260 to 1.18.1306.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ccxt/ccxt/compare/1.18.1260...1.18.1306)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-10-21 07:47:53 +00:00
dependabot-preview[bot]
c2566f2436 Bump numpy from 1.17.2 to 1.17.3
Bumps [numpy](https://github.com/numpy/numpy) from 1.17.2 to 1.17.3.
- [Release notes](https://github.com/numpy/numpy/releases)
- [Changelog](https://github.com/numpy/numpy/blob/master/doc/HOWTO_RELEASE.rst.txt)
- [Commits](https://github.com/numpy/numpy/compare/v1.17.2...v1.17.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-10-21 07:46:32 +00:00
hroff-1902
cac314d4b3 Merge pull request #2396 from freqtrade/improve_strat_docs
[doc] Clearly highlight potential problems with looking into the future
2019-10-21 08:37:49 +03:00
Matthias
b116cc75c4 Fix failing test 2019-10-21 07:07:25 +02:00
Matthias
bedbd964fc slightly rephrase strategy docs 2019-10-21 06:51:48 +02:00
Matthias
1c503f39b2 Handle some merge aftermaths 2019-10-21 06:38:30 +02:00
hroff-1902
ca4d0067e4 Uncomment tests with --exchange 2019-10-21 02:15:37 +03:00
hroff-1902
8a0d90136c Improve unclear sentence in the docs 2019-10-20 23:31:44 +03:00
hroff-1902
5b680f2ece minor: Condense paragraphs in the docs 2019-10-20 23:26:25 +03:00
hroff-1902
1bc63288a3 Merge branch 'develop' into list-pairs2 2019-10-20 23:22:45 +03:00
hroff-1902
45b2d24b79 Improve docs 2019-10-20 23:00:17 +03:00
hroff-1902
10ca249293 Fix fluky test 2019-10-20 22:43:00 +03:00
hroff-1902
d6b6ded8bd Print empty line separator in case of human-readable formats (list and tabular) 2019-10-20 22:30:15 +03:00
Matthias
2d34c0f52d Update helpstring exports 2019-10-20 19:35:38 +02:00
Matthias
f3cfe147b5 Merge branch 'develop' into feat/new_args_system 2019-10-20 19:32:34 +02:00
hroff-1902
a52366c45d Merge pull request #2395 from freqtrade/reenable_docker_hyperopt
Update python base to 3.7.5 and install hyperopt dependencies in docker image
2019-10-20 20:17:27 +03:00
hroff-1902
88c91a8a54 Merge pull request #2392 from freqtrade/backtest-doc
[minor][doc]Fix backtesting format since sublist does not render correctly
2019-10-20 20:13:50 +03:00
hroff-1902
14755779de Merge pull request #2391 from freqtrade/plot_trades_in_min
[minor][plot] Plotting trades from database should show correct duration
2019-10-20 20:11:01 +03:00
Matthias
20dd3f2d67 Clearly highlight potential problems with looking into the future 2019-10-20 16:22:11 +02:00
Matthias
8a31b4c646 Update python base to 3.7.5 and install hyperopt dependencies 2019-10-20 10:47:04 +02:00
Matthias
78cd75dfef Add requirement 2019-10-20 10:35:36 +02:00
Matthias
b805e4e150 Try list extension 2019-10-20 10:34:04 +02:00
Matthias
df43b1f533 Merge pull request #2264 from freqtrade/args_aftersubcommand2
Allow all arguments after subcommand
2019-10-20 08:50:14 +02:00
hroff-1902
6e938b59c8 Merge pull request #2390 from freqtrade/remove_hardcoded_default
exportfilename should respect configured user_data_dir
2019-10-19 22:18:08 +03:00
hroff-1902
4f17511fdc Merge pull request #2393 from freqtrade/remove_timeframe
Remove non-date based timeframe selection
2019-10-19 22:05:44 +03:00
Matthias
d8630ef847 Add one-sided ms timerange 2019-10-19 19:38:16 +02:00
hroff-1902
47fabca1d9 Merge pull request #2372 from xmatthias/kraken_ohlcv_emulate
download tick-based data to emulate candles
2019-10-19 19:32:37 +03:00
Matthias
c48876b196 Trades should use timestamps or dates, not indexes 2019-10-19 15:21:47 +02:00
Matthias
16e10d99b9 Remove timeframe logic for non-date entries 2019-10-19 15:10:48 +02:00
Matthias
0adcee9233 Fix backtesting format since sublist does not render correctly 2019-10-19 14:34:55 +02:00
Matthias
f41c659cb2 Plotting trades from database should show correct duration 2019-10-19 13:18:52 +02:00
Matthias
4c977b2e01 Merge pull request #2388 from hroff-1902/no-hyperopts
Minor: No more hyperoptS
2019-10-19 11:15:24 +02:00
Matthias
b152585d9b exportfilename should respect configured user_data_dir 2019-10-19 11:13:10 +02:00
Matthias
fd22c87295 Some minor cleanups to trades download methods and docs 2019-10-19 10:05:30 +02:00
Matthias
93b213ae0b Merge pull request #2389 from hroff-1902/minor-freqtrade
Minor freqtradebot cleanup
2019-10-19 09:52:48 +02:00
hroff-1902
30eb23e1aa Minor freqtrade cleanup 2019-10-18 23:41:07 +03:00
hroff-1902
4ec83a2c24 DefaultHyperOpts --> DefaultHyperOpt; hyperopts --> hyperopt where it's not correct 2019-10-18 23:29:19 +03:00
hroff-1902
9e23ca14d1 Merge pull request #2384 from freqtrade/improve_buy_timeout_handling
Improve buy timeout handling
2019-10-18 22:30:41 +03:00
hroff-1902
ebf5738a6e Merge pull request #2387 from freqtrade/fix/testswindows
[minor] Fix/tests windows
2019-10-18 20:43:44 +03:00
Matthias
c649f9844e Compare >= instead of = 2019-10-18 19:36:04 +02:00
Matthias
3208f30c30 Fix base64 test on windows 2019-10-18 14:19:17 +02:00
hroff-1902
5e731ec278 Add more tests 2019-10-18 14:55:59 +03:00
Matthias
e55b2a1a1c Allow test to pass on fast computers by setting the offset to -1 2019-10-18 12:36:45 +02:00
Matthias
ed8d805797 Make paths os independent to have tests pass on windows 2019-10-18 11:31:43 +02:00
hroff-1902
0ebf2e44be Merge pull request #2386 from freqtrade/backtesting_doc
[minor] Improve assumptions
2019-10-18 11:34:50 +03:00
Matthias
00a95945e1 Improve assumptions 2019-10-18 10:00:43 +02:00
Matthias
9d739f98ac use requested - remaining amount - not the requested amount! 2019-10-18 09:04:05 +02:00
Matthias
2588990f4b Require unfilledtimeout - don't require telegram in config 2019-10-18 07:10:02 +02:00
Matthias
271846dfb6 Simplify cancel timedout 2019-10-18 07:01:05 +02:00
Matthias
c181fac6c7 fix #2383 2019-10-18 06:48:39 +02:00
Matthias
0ac46eddca Add tests for new scenario 2019-10-18 06:48:39 +02:00
Matthias
c735d35265 Extract open_trade generation from freqtradebot 2019-10-18 06:48:33 +02:00
hroff-1902
e957894852 Rename start_list_pairs() -> start_list_markets() 2019-10-18 01:26:05 +03:00
hroff-1902
369335b80c Add tests for start_list_pairs() 2019-10-18 01:07:52 +03:00
hroff-1902
2ebddcf45c Make flake happy again 2019-10-17 23:40:29 +03:00
hroff-1902
8564affdf0 Add tests for Exchange.get_markets() 2019-10-17 22:45:20 +03:00
Matthias
a39d51d7d0 Update test to use limit_buy_order 2019-10-17 19:36:57 +02:00
hroff-1902
750dc8bf56 Add tests for market_is_active() 2019-10-17 19:24:39 +03:00
hroff-1902
033742b708 Fix pairlists to use market_is_active() instead of custom check 2019-10-17 19:06:58 +03:00
hroff-1902
84ba431d10 Introduce a market with no 'active' field in conftest 2019-10-17 19:05:50 +03:00
hroff-1902
b6e26c82ea Replace market_is_pair() by symbol_is_pair() 2019-10-17 18:44:25 +03:00
hroff-1902
e8eb968a6f Add tests for market_is_pair() 2019-10-17 18:19:50 +03:00
hroff-1902
66605a1909 Add tests for plural(), taken from #1989 2019-10-17 17:52:33 +03:00
hroff-1902
1e61263a28 More sofisticated market_is_pair(), taken from #1989 2019-10-17 17:49:04 +03:00
hroff-1902
bd08874f1f Fix options metavars shown in the helpstring 2019-10-17 17:31:49 +03:00
hroff-1902
ff6a3465a7 Docs added 2019-10-17 17:22:33 +03:00
Matthias
5b58141f6b iFix grammar issue 2019-10-17 06:11:10 +02:00
hroff-1902
bf4e9a5dbb Code cleanup 2019-10-17 04:34:05 +03:00
hroff-1902
837d4d82b4 Sort tabular and csv data by symbol as well 2019-10-17 03:06:51 +03:00
hroff-1902
a8ffd29e18 Remove --active-only, introduce -a/--all instead 2019-10-17 02:42:07 +03:00
hroff-1902
92fda0f76c Allow --base and --quote be lists of currencies 2019-10-17 02:09:19 +03:00
hroff-1902
df62dd65d3 Merge pull request #2382 from freqtrade/iresolver_small_improvements
[minor] Iresolver small improvements
2019-10-16 23:17:52 +03:00
hroff-1902
d72d388726 Make flake happy 2019-10-16 10:55:09 +03:00
Matthias
fda71085e0 Refactor load-path building to parent class 2019-10-16 08:12:24 +02:00
Matthias
1a765f1a17 Return generator instead of Object from _get_valid_object 2019-10-16 08:11:42 +02:00
Matthias
06ab51b53d Merge pull request #2381 from hroff-1902/fix/1364-2
Minor: Fix double comments for ADX
2019-10-16 06:45:31 +02:00
hroff-1902
7de1631045 Print summary in the log for machine-readable formats 2019-10-16 03:55:04 +03:00
hroff-1902
4c8411e835 Cleanup in print tabular and print-csv parts 2019-10-16 03:02:58 +03:00
hroff-1902
f348956e4c --print-csv added 2019-10-16 02:22:27 +03:00
hroff-1902
a4dfd77d23 Fix double comments for ADX 2019-10-15 22:35:14 +03:00
hroff-1902
89e0c76a3f Add --print-json and -1/--one-column options 2019-10-15 22:31:23 +03:00
Matthias
abc504412a Merge pull request #2378 from freqtrade/fix/1364
Use crossed() in sample strategy
2019-10-15 21:22:19 +02:00
hroff-1902
36d5bb6f99 Adjust ADX placement in the comments 2019-10-15 21:11:41 +03:00
hroff-1902
ad89d19955 Print list in the human-readable format 2019-10-15 21:07:01 +03:00
Matthias
e6e35c2584 Switch samplestrategy from ADX to RSI 2019-10-15 19:45:01 +02:00
Matthias
ace70510f3 Wording fixes 2019-10-15 14:50:51 +02:00
hroff-1902
cb4d6efb29 Merge pull request #2377 from freqtrade/aligncustomoptions
Rename --custom-hyperopt to --hyperopt
2019-10-15 14:18:05 +03:00
hroff-1902
f1cddfdc62 Merge pull request #2380 from freqtrade/dry_run_cli
Add --dry-run to trade command
2019-10-15 14:17:17 +03:00
Matthias
6fb96183c0 Reword help string 2019-10-15 12:26:06 +02:00
Matthias
a5c83b66df Add --dry-run to trade command 2019-10-15 06:53:16 +02:00
Matthias
a320d4ccba Don't sell with 0 profit in samplestrategy 2019-10-14 20:42:08 +02:00
Matthias
790e6146f5 Use crossed() in sample strategy 2019-10-14 20:17:40 +02:00
Matthias
89283ef486 Rename --custom-hyperopt to --hyperopt 2019-10-14 19:42:28 +02:00
Matthias
96bd5a6dc1 Merge pull request #2375 from freqtrade/dependabot/pip/develop/sqlalchemy-1.3.10
Bump sqlalchemy from 1.3.9 to 1.3.10
2019-10-14 19:30:51 +02:00
dependabot-preview[bot]
f5d8741832 Bump sqlalchemy from 1.3.9 to 1.3.10
Bumps [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) from 1.3.9 to 1.3.10.
- [Release notes](https://github.com/sqlalchemy/sqlalchemy/releases)
- [Changelog](https://github.com/sqlalchemy/sqlalchemy/blob/master/CHANGES)
- [Commits](https://github.com/sqlalchemy/sqlalchemy/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-10-14 15:19:50 +00:00
Matthias
effcc988c1 Merge pull request #2376 from freqtrade/dependabot/pip/develop/jsonschema-3.1.1
Bump jsonschema from 3.0.2 to 3.1.1
2019-10-14 17:18:41 +02:00
Matthias
7ac3fbfdc9 Merge pull request #2374 from freqtrade/dependabot/pip/develop/ccxt-1.18.1260
Bump ccxt from 1.18.1225 to 1.18.1260
2019-10-14 17:18:28 +02:00
dependabot-preview[bot]
4c4134a272 Bump jsonschema from 3.0.2 to 3.1.1
Bumps [jsonschema](https://github.com/Julian/jsonschema) from 3.0.2 to 3.1.1.
- [Release notes](https://github.com/Julian/jsonschema/releases)
- [Changelog](https://github.com/Julian/jsonschema/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/Julian/jsonschema/compare/v3.0.2...v3.1.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-10-14 14:41:00 +00:00
dependabot-preview[bot]
b2682bcbf5 Bump ccxt from 1.18.1225 to 1.18.1260
Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.18.1225 to 1.18.1260.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ccxt/ccxt/compare/1.18.1225...1.18.1260)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-10-14 14:40:20 +00:00
hroff-1902
4111734637 Add 'Is pair' in the list-markets tabular output 2019-10-14 13:48:33 +03:00
hroff-1902
6e27c47dee Handle properly exchanges with no active flag set for markets 2019-10-14 13:32:39 +03:00
hroff-1902
18cc3539ca Merge pull request #2373 from freqtrade/binanceus_support
Load correct exchange class for binanceus
2019-10-14 12:47:07 +03:00
Matthias
76ad5bea0e Load correct exchange class
closes #2371
2019-10-14 11:36:42 +02:00
Matthias
13e80e449c cleanup and better docstring 2019-10-14 06:22:10 +02:00
Matthias
023eb19615 Add documentation for --dl-trades 2019-10-13 19:39:07 +02:00
Matthias
3e4617be37 add pandas-based converter-functions 2019-10-13 19:25:16 +02:00
Matthias
ed9ec402fd Add test for trades_ohlcv 2019-10-13 16:04:40 +02:00
Matthias
56de81a1f9 Add some test data 2019-10-13 16:03:35 +02:00
Matthias
ccb41d1ef9 Add tests for test_download_trades_history 2019-10-13 13:15:22 +02:00
Matthias
2374cda8d0 Cleanup and tests for refresh_backtest_trades 2019-10-13 13:15:22 +02:00
Matthias
1b7a09c184 Add test for utils --dl-trades 2019-10-13 13:15:22 +02:00
Matthias
37925e7f6c Add --dl-trades cli flag 2019-10-13 13:15:22 +02:00
Matthias
762ae3a598 Extend tests 2019-10-13 13:15:22 +02:00
Matthias
9f8a2acf46 Extend test-cases to 5 trades 2019-10-13 13:15:22 +02:00
Matthias
4fdec9d6e5 Test id-based pagination 2019-10-13 13:15:22 +02:00
Matthias
640d58eb13 Remove unneeded checks 2019-10-13 13:15:22 +02:00
Matthias
fa8c61382b Remove unneeded exception handlers 2019-10-13 13:15:22 +02:00
Matthias
b6ac898f8f Add test for exception handler 2019-10-13 13:15:22 +02:00
Matthias
57bcff1964 Test get_historic_trades 2019-10-13 13:15:22 +02:00
Matthias
939a87ed2e Add test for fetch_trades 2019-10-13 13:15:22 +02:00
Matthias
16d6914b15 Add test to cover missing line 2019-10-13 13:15:22 +02:00
Matthias
05e473642b Small adjustments to get_trade_history 2019-10-13 13:15:22 +02:00
Matthias
0d592f6c55 Refactor trade downloading to handle exceptions only once 2019-10-13 13:15:22 +02:00
Matthias
476adf872a Add conversion from trades to ohlcv at different intervals 2019-10-13 13:15:22 +02:00
Matthias
9584629f50 Rename argument from dl_path to datadir 2019-10-13 13:15:22 +02:00
Matthias
c1c49183b5 Call new method based on condition 2019-10-13 13:15:22 +02:00
Matthias
8069cd6689 add refresh_trades_ method 2019-10-13 13:15:22 +02:00
Matthias
1f79ca9539 Remove duplicate check 2019-10-13 13:15:22 +02:00
Matthias
1d8fc97053 Fix duplicate trade error, rename some methods 2019-10-13 13:15:22 +02:00
Matthias
19f3669fbd add docstring 2019-10-13 13:15:22 +02:00
Matthias
06024b0ab0 Fix zipfile handling 2019-10-13 13:15:22 +02:00
Matthias
6e952a0aa8 Capture downloaded data 2019-10-13 13:15:22 +02:00
Matthias
57dee794d1 Fix end-reached for id-based trade-download 2019-10-13 13:15:22 +02:00
Matthias
2c0bb71a6e Add download_trades_history() 2019-10-13 13:15:22 +02:00
Matthias
ab8f638e44 Move id/time detection to get_historic_trades method 2019-10-13 13:15:22 +02:00
Matthias
d250b67f33 Add load/store trades data 2019-10-13 13:15:22 +02:00
Matthias
42b8241541 use gz to save / load trades data 2019-10-13 13:15:22 +02:00
Matthias
6cc98c1ea9 Fix tests 2019-10-13 13:15:22 +02:00
Matthias
77c367ad1d First draft of async get_trade methods 2019-10-13 13:15:22 +02:00
Matthias
26b3148904 Add build_ohlcv wrapper 2019-10-13 13:15:22 +02:00
Matthias
27dc9ca799 Add trades_pagination attributes 2019-10-13 13:15:22 +02:00
Matthias
63e87ef85b Add pair_trades_filename 2019-10-13 13:15:22 +02:00
Matthias
6697b677dc Add test for test_data_filename 2019-10-13 13:15:22 +02:00
Matthias
baad1a5166 Explain _params element 2019-10-13 13:15:22 +02:00
hroff-1902
7cf7982565 Add list-pairs and list-markets subcommands 2019-10-13 13:12:20 +03:00
Matthias
f3f6e9d365 Allow skipping of exchange validation 2019-10-13 10:33:22 +02:00
hroff-1902
4228137dff Merge pull request #2366 from freqtrade/interface_noconf
Interface options should not use config
2019-10-13 11:04:51 +03:00
Matthias
3c8d27d098 remove correct comment ... 2019-10-13 09:54:03 +02:00
Matthias
2c200873c1 Merge pull request #2360 from hroff-1902/no-default-hyperopt
Disable defaulting to DefaultHyperOpts and DefaultHyperOptLoss
2019-10-13 09:42:48 +02:00
hroff-1902
ff1fa17dc3 No default value for the config parameter 2019-10-13 03:41:25 +03:00
hroff-1902
08e6d8a780 Rollback defaulting to DefaultHyperOptLoss 2019-10-11 23:33:22 +03:00
hroff-1902
4c1705fb1e No specific handling for trailing_stop_positive 2019-10-11 22:59:13 +03:00
hroff-1902
31389b38f1 Merge pull request #2361 from freqtrade/dataprovider_tests
Add tests for orderbook and market in dataprovider
2019-10-11 22:15:21 +03:00
Matthias
ff7a3cc885 remove last occurance of config. from stop_loss_reached 2019-10-11 09:05:21 +02:00
Matthias
4d1488498c stoploss_reached should not use config 2019-10-11 08:55:31 +02:00
Matthias
10a22e7872 Merge pull request #2365 from GrilledChickenThighs/develop
Updated Rest API Docs
2019-10-11 06:42:41 +02:00
Paul D. Mendes
e72b6a440b Updated Rest API Docs 2019-10-10 20:37:25 +00:00
Matthias
b5ca4b7f35 Merge pull request #2364 from hroff-1902/list-diff-helpstrings-2
Fix helpstring which shared between the list-exchanges and list-timeframes subcommands
2019-10-10 19:57:19 +02:00
hroff-1902
c49f4b73dd Fix helpstring 2019-10-10 20:44:24 +03:00
Matthias
80cbf08a58 Merge pull request #2219 from ahonnecke/docker-compose
Make local development start up faster and easier by leveraging docker-compose
2019-10-10 19:38:40 +02:00
Matthias
5e23cc719d Add tests for orderbook and market in dataprovider 2019-10-10 19:38:01 +02:00
Matthias
0680fe2a1a fix path to tests 2019-10-10 19:28:11 +02:00
Matthias
bba5f54722 Merge pull request #2335 from hroff-1902/dataprovider-market
Allow to use market data in the strategies
2019-10-10 16:54:04 +02:00
Matthias
85c4546333 Merge pull request #2343 from hroff-1902/move-experimental
Move experimental settings to ask_strategy
2019-10-10 16:08:11 +02:00
hroff-1902
c4105436eb Disable defaulting to DefaultHyperOpts and DefaultHyperOptLoss 2019-10-10 04:37:32 +03:00
hroff-1902
23b5c0e833 Improve tests for handling deprecated settings 2019-10-09 18:25:57 +03:00
hroff-1902
cdd1bc425b Fix typo 2019-10-09 03:12:30 +03:00
hroff-1902
2a9c06c40f Test added 2019-10-09 02:44:04 +03:00
hroff-1902
434e0234c5 Add handling deprecated settings 2019-10-09 02:43:06 +03:00
hroff-1902
caf415dc97 Merge pull request #2355 from freqtrade/hroff-1902-patch-1
Fix minor typos in the docs
2019-10-08 22:32:39 +03:00
hroff-1902
e9337bf56e Merge pull request #2356 from freqtrade/tests_history_pathlib
[minor] Don't use os.path in test_history
2019-10-08 22:31:43 +03:00
Matthias
bcd02a871f Fix beeing again ... 2019-10-08 21:16:35 +02:00
Matthias
e1c14bc86c Don't use os.path in test_history 2019-10-08 21:10:43 +02:00
hroff-1902
69c23c00e0 Fix minor typos in the docs 2019-10-08 22:07:38 +03:00
hroff-1902
1e19d7e463 Merge pull request #2354 from freqtrade/remove_underline
remove underline from docs style
2019-10-08 21:54:03 +03:00
Matthias
5e0391aa2b Merge pull request #2332 from hroff-1902/freqtradebot-refactor
Freqtradebot refactoring
2019-10-08 19:44:08 +02:00
Matthias
2e91ee3849 remove underline from docs style 2019-10-08 19:41:18 +02:00
Matthias
9b32d617db Merge pull request #2353 from freqtrade/docs_versions
Add versions to doc theme
2019-10-08 19:39:31 +02:00
hroff-1902
2ec8376af9 Merge pull request #2342 from freqtrade/fix/negativeroi
Don't have backtest sells outside of a candle
2019-10-08 11:19:34 +03:00
Matthias
86ef32318c Add versions to doc theme 2019-10-08 06:21:05 +02:00
hroff-1902
4d062d41cb Improve comments in the SampleStrategy; set use_sell_signal = True 2019-10-08 01:07:22 +03:00
hroff-1902
e78e42339d Improve docs wordings 2019-10-08 00:58:25 +03:00
hroff-1902
057ab1b7a6 Remove unnecessary comments 2019-10-08 00:50:47 +03:00
hroff-1902
613300c61d Add short description of the market() method into docs 2019-10-08 00:38:20 +03:00
Matthias
7d1f66ccf8 Merge pull request #2341 from hroff-1902/indicator-helper
Remove indicator_helpers.py and test
2019-10-07 19:36:09 +02:00
Matthias
a7418449f9 Merge pull request #2346 from freqtrade/dependabot/pip/develop/pytest-cov-2.8.1
Bump pytest-cov from 2.7.1 to 2.8.1
2019-10-07 19:31:21 +02:00
Matthias
d68e6f8362 Merge pull request #2347 from freqtrade/dependabot/pip/develop/joblib-0.14.0
Bump joblib from 0.13.2 to 0.14.0
2019-10-07 19:18:53 +02:00
dependabot-preview[bot]
c34ce15b14 Bump pytest-cov from 2.7.1 to 2.8.1
Bumps [pytest-cov](https://github.com/pytest-dev/pytest-cov) from 2.7.1 to 2.8.1.
- [Release notes](https://github.com/pytest-dev/pytest-cov/releases)
- [Changelog](https://github.com/pytest-dev/pytest-cov/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest-cov/compare/v2.7.1...v2.8.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-10-07 15:16:39 +00:00
Matthias
1350d2cd1a Merge pull request #2349 from freqtrade/dependabot/pip/develop/sqlalchemy-1.3.9
Bump sqlalchemy from 1.3.8 to 1.3.9
2019-10-07 17:14:56 +02:00
Matthias
9db2aca791 Merge pull request #2348 from freqtrade/dependabot/pip/develop/pytest-mock-1.11.1
Bump pytest-mock from 1.11.0 to 1.11.1
2019-10-07 17:14:43 +02:00
dependabot-preview[bot]
80d58b7930 Bump pytest-mock from 1.11.0 to 1.11.1
Bumps [pytest-mock](https://github.com/pytest-dev/pytest-mock) from 1.11.0 to 1.11.1.
- [Release notes](https://github.com/pytest-dev/pytest-mock/releases)
- [Changelog](https://github.com/pytest-dev/pytest-mock/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest-mock/compare/v1.11.0...v1.11.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-10-07 13:07:56 +00:00
dependabot-preview[bot]
568ecc201a Bump sqlalchemy from 1.3.8 to 1.3.9
Bumps [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) from 1.3.8 to 1.3.9.
- [Release notes](https://github.com/sqlalchemy/sqlalchemy/releases)
- [Changelog](https://github.com/sqlalchemy/sqlalchemy/blob/master/CHANGES)
- [Commits](https://github.com/sqlalchemy/sqlalchemy/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-10-07 13:06:59 +00:00
Matthias
cad7ed5570 Merge pull request #2350 from freqtrade/dependabot/pip/develop/pytest-5.2.1
Bump pytest from 5.2.0 to 5.2.1
2019-10-07 15:06:52 +02:00
Matthias
57bb9281f6 Merge pull request #2351 from freqtrade/dependabot/pip/develop/mkdocs-material-4.4.3
Bump mkdocs-material from 4.4.2 to 4.4.3
2019-10-07 15:05:48 +02:00
Matthias
5e53e9bcaa Merge pull request #2352 from freqtrade/dependabot/pip/develop/ccxt-1.18.1225
Bump ccxt from 1.18.1208 to 1.18.1225
2019-10-07 15:05:34 +02:00
hroff-1902
edfbb56749 Merge pull request #2344 from freqtrade/backtest_nofees
Backtest no fees / custom fees
2019-10-07 13:30:20 +03:00
dependabot-preview[bot]
652a04ac70 Bump ccxt from 1.18.1208 to 1.18.1225
Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.18.1208 to 1.18.1225.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ccxt/ccxt/compare/1.18.1208...1.18.1225)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-10-07 10:24:53 +00:00
dependabot-preview[bot]
5e9ab3e261 Bump mkdocs-material from 4.4.2 to 4.4.3
Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 4.4.2 to 4.4.3.
- [Release notes](https://github.com/squidfunk/mkdocs-material/releases)
- [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG)
- [Commits](https://github.com/squidfunk/mkdocs-material/compare/4.4.2...4.4.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-10-07 10:24:29 +00:00
dependabot-preview[bot]
be6fd3af9a Bump pytest from 5.2.0 to 5.2.1
Bumps [pytest](https://github.com/pytest-dev/pytest) from 5.2.0 to 5.2.1.
- [Release notes](https://github.com/pytest-dev/pytest/releases)
- [Changelog](https://github.com/pytest-dev/pytest/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest/compare/5.2.0...5.2.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-10-07 10:24:06 +00:00
dependabot-preview[bot]
e272cd485c Bump joblib from 0.13.2 to 0.14.0
Bumps [joblib](https://github.com/joblib/joblib) from 0.13.2 to 0.14.0.
- [Release notes](https://github.com/joblib/joblib/releases)
- [Changelog](https://github.com/joblib/joblib/blob/master/CHANGES.rst)
- [Commits](https://github.com/joblib/joblib/compare/0.13.2...0.14.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-10-07 10:22:59 +00:00
Matthias
f27528538d Merge pull request #2345 from hroff-1902/minor-data-history
Cleanup in data.history
2019-10-07 07:05:24 +02:00
Matthias
ad35a3d7ab Small wording improvements 2019-10-07 07:02:43 +02:00
hroff-1902
211b9cbe04 Cleanup in data.history 2019-10-06 18:35:09 +03:00
hroff-1902
946b8c29d7 Merge pull request #2317 from hroff-1902/list-timeframes
Add list-timeframes subcommand
2019-10-06 16:28:15 +03:00
Matthias
33940ae66b Use different keys and values 2019-10-06 14:33:23 +02:00
Matthias
d2589c4415 Make test exchange-independent 2019-10-06 10:32:19 +02:00
Matthias
22733e44bf Add tests for --fee 2019-10-05 15:34:31 +02:00
Matthias
82d4051a39 Add --fee to documentation 2019-10-05 15:33:44 +02:00
Matthias
0664a8c0e6 add --fee to change fees to other values 2019-10-05 15:29:00 +02:00
hroff-1902
9b23376415 Move experimental settings to ask_strategy 2019-10-05 13:29:59 +03:00
Matthias
553a1b90ba Merge pull request #2297 from jraviotta/scattergl
Enhancements to BB plotting
2019-10-05 11:01:10 +02:00
Matthias
7ea9da9605 Fix #2277 2019-10-05 10:54:28 +02:00
Matthias
9b98e608e6 Add testcase for negative ROI after certain period 2019-10-05 10:52:57 +02:00
Matthias
885edc9768 Allow multiple ROI in detail-backtest tests 2019-10-05 10:52:49 +02:00
hroff-1902
e1b8485b51 Remove indicator_helpers.py and test 2019-10-05 11:51:27 +03:00
Matthias
764a35d035 Remove scattergl and fix tests 2019-10-05 10:32:42 +02:00
hroff-1902
e93bbd3831 Merge pull request #2340 from freqtrade/cleanup_legacystrategy
[minor] Cleanup legacy strategy
2019-10-05 11:12:36 +03:00
hroff-1902
8938c95e00 Merge pull request #2339 from freqtrade/fix_doc
fix documentation error
2019-10-05 11:04:49 +03:00
Matthias
00ab6f572a Cleanup legacy strategy
it's just a test and does not need the commented elements
2019-10-05 10:01:38 +02:00
Matthias
73e9cbdea1 Fix #2338 2019-10-05 09:56:01 +02:00
Matthias
78381e9e7b Improve test to test full sell cycle 2019-10-04 14:47:37 +02:00
Matthias
95299d94c4 Remove unused test line 2019-10-04 06:39:24 +02:00
hroff-1902
75252b6251 Docstrings improved 2019-10-04 02:32:48 +03:00
hroff-1902
f95b0ccdab Tests added 2019-10-04 02:01:44 +03:00
Matthias
38f184e50d Update test to not mock stoploss_on_exchange 2019-10-03 06:54:15 +02:00
Matthias
1f4e5b17b7 Add basic test for execute sells_multiple logic 2019-10-03 06:37:25 +02:00
Matthias
9ee7e28ef8 Clean up some mocks 2019-10-03 06:23:58 +02:00
hroff-1902
3ac5b91899 Add market() method to dataprovider 2019-10-03 02:58:45 +03:00
hroff-1902
4b29c4cdbf Test for handling closed trade adjusted 2019-10-02 19:08:49 +03:00
hroff-1902
89729aefe8 Fix and improve process_maybe_execute_sells() 2019-10-02 18:47:45 +03:00
hroff-1902
15aae8a58c Tests adjusted 2019-10-02 13:51:32 +03:00
hroff-1902
096c69dc4f Refactor Freqtradebot 2019-10-02 13:51:32 +03:00
hroff-1902
2c0d2c1532 Merge pull request #2331 from freqtrade/testdata_cleanup
Remove unused test-data
2019-10-02 13:25:21 +03:00
Matthias
eca8ddabe9 Remove unused test-data 2019-10-02 11:05:08 +02:00
hroff-1902
c57d5ef1cd Added short descriptions and examples in utils.md 2019-10-01 21:12:52 +03:00
Matthias
6bbc0eefed Merge pull request #2329 from freqtrade/release_2019.9
Release 2019.9
2019-10-01 20:04:18 +02:00
Matthias
8c5b299449 Merge pull request #2282 from freqtrade/jupyter_nbconvert
add plotting documentation to jupyter notebook
2019-10-01 19:58:20 +02:00
Matthias
9806699592 version bump 2019.9 2019-10-01 19:35:47 +02:00
hroff-1902
543b19b376 Merge pull request #2286 from freqtrade/no_defaultstrategy
Disable Defaulting to DefaultStrategy
2019-10-01 19:59:08 +03:00
hroff-1902
f2e878d9ec Update helpstring for list-exchanges 2019-10-01 16:57:35 +03:00
Matthias
b73426b91f Disable Defaulting to DefaultStrategy 2019-10-01 07:02:30 +02:00
Matthias
628c4c996a Merge pull request #2327 from hroff-1902/enhance-list-exchanges2
Add --all option to list-exchanges
2019-10-01 06:52:27 +02:00
Matthias
642d20b2f7 Merge pull request #2324 from freqtrade/dependabot/pip/develop/mypy-0.730
Bump mypy from 0.720 to 0.730
2019-10-01 06:49:11 +02:00
hroff-1902
f6a88c6e9b Tests adjusted 2019-10-01 00:33:54 +03:00
hroff-1902
d1fa5f307b Add --all option to list-exchanges 2019-10-01 00:33:33 +03:00
hroff-1902
cd0e813a85 Docs adjusted, utils.md added 2019-09-30 21:36:52 +03:00
Matthias
dc47a391da Move ignore to corrct line for mypy 730 2019-09-30 19:32:46 +02:00
Matthias
9f94678478 Merge pull request #2319 from hroff-1902/bad-exchanges
Add exchanges to the list of bad exchanges
2019-09-30 19:29:06 +02:00
dependabot-preview[bot]
04fea69a28 Bump mypy from 0.720 to 0.730
Bumps [mypy](https://github.com/python/mypy) from 0.720 to 0.730.
- [Release notes](https://github.com/python/mypy/releases)
- [Commits](https://github.com/python/mypy/compare/v0.720...v0.730)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-09-30 17:26:03 +00:00
Matthias
d6a8821596 Merge pull request #2322 from freqtrade/dependabot/pip/develop/pytest-5.2.0
Bump pytest from 5.1.3 to 5.2.0
2019-09-30 19:24:45 +02:00
hroff-1902
7617dd5029 Add separate message for hitbtc exchange 2019-09-30 20:01:55 +03:00
hroff-1902
e9d9df3473 Merge branch 'develop' into list-timeframes 2019-09-30 18:58:25 +03:00
hroff-1902
b6ee3d99b1 Merge pull request #2320 from freqtrade/config_no_allowed
args - Add config no allowed list to skip loading config.json
2019-09-30 18:32:29 +03:00
Matthias
9a2bd83827 Merge pull request #2323 from freqtrade/dependabot/pip/develop/tabulate-0.8.5
Bump tabulate from 0.8.3 to 0.8.5
2019-09-30 17:20:16 +02:00
dependabot-preview[bot]
f359f869ab Bump pytest from 5.1.3 to 5.2.0
Bumps [pytest](https://github.com/pytest-dev/pytest) from 5.1.3 to 5.2.0.
- [Release notes](https://github.com/pytest-dev/pytest/releases)
- [Changelog](https://github.com/pytest-dev/pytest/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest/compare/5.1.3...5.2.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-09-30 15:20:07 +00:00
Matthias
d6fba7c2f3 Merge pull request #2321 from freqtrade/dependabot/pip/develop/urllib3-1.25.6
Bump urllib3 from 1.25.5 to 1.25.6
2019-09-30 17:19:44 +02:00
Matthias
498bcf213f Merge pull request #2325 from freqtrade/dependabot/pip/develop/pytest-mock-1.11.0
Bump pytest-mock from 1.10.4 to 1.11.0
2019-09-30 17:18:49 +02:00
Matthias
33efb7ace6 Merge pull request #2326 from freqtrade/dependabot/pip/develop/ccxt-1.18.1208
Bump ccxt from 1.18.1180 to 1.18.1208
2019-09-30 17:18:36 +02:00
dependabot-preview[bot]
d74ca78bd8 Bump ccxt from 1.18.1180 to 1.18.1208
Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.18.1180 to 1.18.1208.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ccxt/ccxt/compare/1.18.1180...1.18.1208)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-09-30 10:21:37 +00:00
dependabot-preview[bot]
3c91ba134f Bump pytest-mock from 1.10.4 to 1.11.0
Bumps [pytest-mock](https://github.com/pytest-dev/pytest-mock) from 1.10.4 to 1.11.0.
- [Release notes](https://github.com/pytest-dev/pytest-mock/releases)
- [Changelog](https://github.com/pytest-dev/pytest-mock/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest-mock/compare/1.10.4...v1.11.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-09-30 10:20:47 +00:00
dependabot-preview[bot]
9a83d84109 Bump tabulate from 0.8.3 to 0.8.5
Bumps [tabulate](https://github.com/astanin/python-tabulate) from 0.8.3 to 0.8.5.
- [Release notes](https://github.com/astanin/python-tabulate/releases)
- [Changelog](https://github.com/astanin/python-tabulate/blob/master/CHANGELOG)
- [Commits](https://github.com/astanin/python-tabulate/commits/v0.8.5)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-09-30 10:20:05 +00:00
dependabot-preview[bot]
8ae4018e4d Bump urllib3 from 1.25.5 to 1.25.6
Bumps [urllib3](https://github.com/urllib3/urllib3) from 1.25.5 to 1.25.6.
- [Release notes](https://github.com/urllib3/urllib3/releases)
- [Changelog](https://github.com/urllib3/urllib3/blob/master/CHANGES.rst)
- [Commits](https://github.com/urllib3/urllib3/compare/1.25.5...1.25.6)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-09-30 10:19:37 +00:00
Matthias
739901b606 Add test for this behaviour 2019-09-30 09:48:00 +02:00
Matthias
03b5be91f7 some commands should not have config at all 2019-09-30 09:47:52 +02:00
hroff-1902
272c977d08 Add exchanges to the list of bad exchanges 2019-09-30 03:55:55 +03:00
hroff-1902
75446d8195 Refactor list-timeframes command with the use of the Exchange class methods 2019-09-29 23:18:04 +03:00
Matthias
52ff391c8a Default dockerfile to "freqtrade trade" 2019-09-29 19:48:37 +02:00
Matthias
344a0a094f Update remaining documentations 2019-09-29 19:21:18 +02:00
Matthias
2710226326 Update documentation to use subcommands 2019-09-29 19:18:52 +02:00
Matthias
381b0d3d07 Fix typo with new parser 2019-09-29 19:18:52 +02:00
Matthias
52523bcd8b Use strategy child parser 2019-09-29 19:18:52 +02:00
Matthias
0d13e2cb2e Update travis to run new methods 2019-09-29 19:18:52 +02:00
Matthias
014881e550 Allow query version without subcommand 2019-09-29 16:17:20 +02:00
Matthias
67b82638db Move test without command to test_main 2019-09-29 16:17:20 +02:00
Matthias
09f18d07b0 Adjust some hyperopt tests 2019-09-29 16:17:20 +02:00
Matthias
9ef874e979 Add Custom message during transition period 2019-09-29 16:17:20 +02:00
Matthias
0aa73d5b35 Add test for failing case 2019-09-29 16:17:20 +02:00
Matthias
ad2fa61765 Fix utils test 2019-09-29 16:17:20 +02:00
Matthias
e8106f3792 Fix most tests to have trade as default argument 2019-09-29 16:17:20 +02:00
Matthias
db3b974479 Fix calling sequence 2019-09-29 16:17:20 +02:00
Matthias
d62a4d3566 Fix some minor problems 2019-09-29 16:17:20 +02:00
Matthias
1b25b5f590 Remove duplicate short-form -s 2019-09-29 16:17:20 +02:00
Matthias
03add90c94 Adjust some tests to new call-method 2019-09-29 16:17:20 +02:00
Matthias
0f2e277f80 Rename subparser variable to command 2019-09-29 16:17:20 +02:00
Matthias
8664e7f7d3 Have main.py support only subcommand mode 2019-09-29 16:17:20 +02:00
Matthias
cb37f43277 Add trade subparser (and make subparser a requirement) 2019-09-29 16:17:20 +02:00
Matthias
2a535b72ff Parser should not have default 2019-09-29 16:17:20 +02:00
Matthias
cd2336887c Add first version with shared parent parsers 2019-09-29 16:09:59 +02:00
hroff-1902
448b09d7b6 Add list-timeframes subcommand 2019-09-29 11:54:20 +03:00
hroff-1902
704fea616b Merge pull request #2316 from freqtrade/no_main_py
Don't use main.py as entry point in documentation
2019-09-29 11:33:40 +03:00
Matthias
23665c7731 Don't use main.py as entry point in documentation 2019-09-29 10:25:47 +02:00
Matthias
4025ec9900 Merge pull request #2315 from freqtrade/hroff-1902-patch-1
Minor: Change the default stoploss space
2019-09-29 10:17:07 +02:00
hroff-1902
6a397f579e Add description of usage 2019-09-29 00:43:27 +03:00
hroff-1902
c31f118d0c Merge pull request #2307 from freqtrade/rounding
Don't compare floats when updating fees
2019-09-28 12:39:27 +03:00
hroff-1902
2f005d6be9 Align example of ROI in the docs 2019-09-28 11:56:19 +03:00
hroff-1902
45f5394d79 Align example in the docs 2019-09-28 11:54:26 +03:00
hroff-1902
7e214d8e4c minor: change default stoploss space 2019-09-28 11:50:15 +03:00
Matthias
ed10048394 Merge pull request #2308 from hroff-1902/hyperopt-config
Allow use of config in custom hyperopt methods
2019-09-28 10:36:46 +02:00
Matthias
43f2ef226c Change rel_tol to abs_tol to avoid surprises with high priced pairs 2019-09-28 10:30:12 +02:00
Matthias
42b5a0977e fix failing test 2019-09-28 10:14:38 +02:00
Matthias
3b1252207d Merge pull request #2314 from hroff-1902/fix-2259
Shorten the default hyperopt stoploss space
2019-09-28 10:09:08 +02:00
hroff-1902
4ac53f1549 Shorten the default hyperopt stoploss space 2019-09-28 04:13:53 +03:00
hroff-1902
21b807aa85 Merge pull request #2310 from freqtrade/slack_link
Update slack link
2019-09-26 21:12:40 +03:00
Matthias
28e0398c68 Merge pull request #2280 from freqtrade/backtest_docs
Improve backtesting documentation
2019-09-26 19:37:34 +02:00
Matthias
637ec60644 Update slack link 2019-09-26 19:36:09 +02:00
Ashton Honnecke
11bb7e520c use .develop dockerfile, move docs to develop.md, add freqtrade_bash 2019-09-26 09:22:49 -06:00
Matthias
6ba9316e15 Merge branch 'develop' into backtest_docs 2019-09-26 11:04:01 +02:00
Matthias
60e3e626e4 Improve timerange section of the docs 2019-09-26 11:00:26 +02:00
hroff-1902
9db915853a Allow use of config in custom hyperopt methods 2019-09-26 11:59:21 +03:00
Matthias
5237723f22 Merge pull request #2303 from freqtrade/feat/hyperopt_optional_install
Optional hyperopt dependency installation
2019-09-26 09:42:16 +02:00
Matthias
eb07f1fee9 Fix typo 2019-09-26 09:31:31 +02:00
Matthias
8d92f8b362 Compare floats via isclose instead of == 2019-09-26 07:18:00 +02:00
Matthias
49f0a72121 Add test for rounding error on fload aggregation 2019-09-26 07:17:54 +02:00
Matthias
5978b7bb93 Add explicit test for halfbought fee adjustment 2019-09-26 07:17:49 +02:00
Matthias
e09408f9b7 Merge pull request #2306 from freqtrade/hroff-1902-patch-1
Minor: fix typo in comment
2019-09-26 06:15:40 +02:00
Jonathan Raviotta
83e596c06f chart styling 2019-09-25 23:09:50 -04:00
hroff-1902
0268bfdbd4 Minor: fix typo in comment
Minor cosmetics. typo caught.
2019-09-26 02:04:48 +03:00
Matthias
b994f5c273 Merge pull request #2294 from hroff-1902/fix-skopt-memory3
Fix skopt memory exhaustion
2019-09-25 19:55:27 +02:00
Matthias
e9de088209 Add import-fails code as a fixture 2019-09-25 11:55:24 +02:00
Matthias
d05db077e2 Update PI install documentation and dockerfile 2019-09-25 11:40:34 +02:00
Matthias
d2f2473070 install hyperopt seperately ([hyperopt]) 2019-09-25 11:40:34 +02:00
Matthias
47b6b56566 Reorg dependencies to have hyperopt seperated 2019-09-25 11:40:34 +02:00
Matthias
27cc73f47e Dynamically import hyperopt modules 2019-09-25 11:40:34 +02:00
Matthias
cc91ccad3e Improve documentation wording 2019-09-25 06:26:28 +02:00
Matthias
0102413f58 Merge pull request #2301 from hroff-1902/fix-hyperopt-position-stacking
Fix hyperopt position stacking
2019-09-25 06:22:39 +02:00
hroff-1902
665e0570ae Fix hyperopt position stacking 2019-09-25 03:41:22 +03:00
Jonathan Raviotta
9391c27b80 Enhancements to BB plotting 2019-09-24 20:07:54 -04:00
hroff-1902
a75fb3d4be Merge pull request #2197 from freqtrade/implement_version_dev
Apply dynamic versioning to develop
2019-09-24 21:20:49 +03:00
hroff-1902
2d86510acf Merge pull request #2298 from freqtrade/fix/failing_tests
[minor] Fix tests that fail when config.json is present
2019-09-24 21:19:45 +03:00
hroff-1902
5c3b14069e Merge pull request #2285 from freqtrade/doc/configuration
Improve configuration documentation
2019-09-24 21:18:30 +03:00
Ashton Honnecke
fe483ad011 Don't use the develop dockerfile for local 2019-09-24 09:03:44 -06:00
Ashton Honnecke
0ce070acac Merge branch 'develop' of https://github.com/freqtrade/freqtrade into docker-compose 2019-09-24 08:59:22 -06:00
Matthias
6c0a1fc42c Fix tests that fail when config.json is present 2019-09-24 11:07:12 +02:00
hroff-1902
d066ab2620 Merge pull request #2278 from freqtrade/remove_refresh
Remove refresh-pairs-cached
2019-09-24 09:07:25 +03:00
hroff-1902
3a5bd4c03e Merge pull request #2284 from freqtrade/fix/download_errors
Gracefully handle download-data startup errors
2019-09-24 09:06:00 +03:00
Matthias
93b2621651 Add format description for pairs.json file 2019-09-24 07:07:06 +02:00
Matthias
6aa1ec2a4c Some small restructuring 2019-09-24 07:05:30 +02:00
Matthias
cc9fc41318 Rename section to data-downloading, implement some feedback 2019-09-24 06:56:31 +02:00
Matthias
fe40636ae1 Improve wordings 2019-09-24 06:42:44 +02:00
Matthias
577b1fd965 Improve documentation wording 2019-09-24 06:39:00 +02:00
Matthias
0f97a999fb Improve wording 2019-09-24 06:35:41 +02:00
Ashton Honnecke
cb6e136893 how to exec 2019-09-23 13:35:18 -06:00
Ashton Honnecke
5c3fb4d5b3 docs for running docker-compose locally 2019-09-23 13:30:55 -06:00
Ashton Honnecke
7c6921c743 pr feedback regarding docker-compose naming 2019-09-23 13:17:20 -06:00
Matthias
22af7f7881 Merge pull request #2291 from freqtrade/dependabot/pip/develop/ccxt-1.18.1180
Bump ccxt from 1.18.1159 to 1.18.1180
2019-09-23 19:50:55 +02:00
hroff-1902
6ffb8b7a70 Fix wordings in comment 2019-09-23 13:25:31 +03:00
dependabot-preview[bot]
95e725c2b6 Bump ccxt from 1.18.1159 to 1.18.1180
Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.18.1159 to 1.18.1180.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ccxt/ccxt/compare/1.18.1159...1.18.1180)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-09-23 10:15:28 +00:00
Matthias
b18ad7a834 Merge pull request #2290 from freqtrade/dependabot/pip/develop/urllib3-1.25.5
Bump urllib3 from 1.25.3 to 1.25.5
2019-09-23 12:14:50 +02:00
Matthias
cfa76fa600 Merge pull request #2292 from freqtrade/dependabot/pip/develop/pytest-5.1.3
Bump pytest from 5.1.2 to 5.1.3
2019-09-23 12:14:32 +02:00
Matthias
d226fff111 Merge pull request #2293 from freqtrade/dependabot/pip/develop/python-telegram-bot-12.1.1
Bump python-telegram-bot from 12.1.0 to 12.1.1
2019-09-23 12:14:14 +02:00
hroff-1902
0c6164df7e Fix memory exhaustion in skopt models list 2019-09-23 13:03:43 +03:00
dependabot-preview[bot]
d8bc350445 Bump python-telegram-bot from 12.1.0 to 12.1.1
Bumps [python-telegram-bot](https://github.com/python-telegram-bot/python-telegram-bot) from 12.1.0 to 12.1.1.
- [Release notes](https://github.com/python-telegram-bot/python-telegram-bot/releases)
- [Changelog](https://github.com/python-telegram-bot/python-telegram-bot/blob/master/CHANGES.rst)
- [Commits](https://github.com/python-telegram-bot/python-telegram-bot/compare/v12.1.0...v12.1.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-09-23 08:55:31 +00:00
dependabot-preview[bot]
242ff26e21 Bump pytest from 5.1.2 to 5.1.3
Bumps [pytest](https://github.com/pytest-dev/pytest) from 5.1.2 to 5.1.3.
- [Release notes](https://github.com/pytest-dev/pytest/releases)
- [Changelog](https://github.com/pytest-dev/pytest/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest/compare/5.1.2...5.1.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-09-23 08:54:57 +00:00
dependabot-preview[bot]
ab0adabd39 Bump urllib3 from 1.25.3 to 1.25.5
Bumps [urllib3](https://github.com/urllib3/urllib3) from 1.25.3 to 1.25.5.
- [Release notes](https://github.com/urllib3/urllib3/releases)
- [Changelog](https://github.com/urllib3/urllib3/blob/master/CHANGES.rst)
- [Commits](https://github.com/urllib3/urllib3/compare/1.25.3...1.25.5)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-09-23 08:54:11 +00:00
Matthias
ba4db0da49 Improve configuration documentation 2019-09-21 13:16:53 +02:00
Matthias
7aa42f8868 Fail download-data gracefully if no pairs-file exists 2019-09-21 12:53:47 +02:00
Matthias
3245ebccd4 Fix problme when no exchange is given to download-data 2019-09-21 11:25:27 +02:00
Matthias
359b0ba088 Add samples for plotting to jupyter documentation 2019-09-21 10:57:34 +02:00
Matthias
5234f8bf28 Update jupyter notebook slightly 2019-09-21 10:42:51 +02:00
Matthias
9a3bad291a Automatically generate documentation from jupyter notebook 2019-09-21 10:27:43 +02:00
Matthias
b1a3e213ae Improve backtesting docs 2019-09-21 10:13:00 +02:00
Matthias
2fcddfc866 Clarify updating existing data 2019-09-20 20:29:26 +02:00
Matthias
313091eb1c some more refresh_pairs cleanups 2019-09-20 20:22:51 +02:00
Matthias
508a35fc20 Update comment as to why certain points have not been removed 2019-09-20 20:20:16 +02:00
Matthias
9cedbc1345 Cleanup history.py and update documentation 2019-09-20 20:16:49 +02:00
Matthias
e66fa1cec6 Adjust tests to not use --refresh-pairs 2019-09-20 20:16:12 +02:00
Matthias
1cd8ed0c1a Remove --refresh-pairs 2019-09-20 20:02:07 +02:00
hroff-1902
74a0f44230 Merge pull request #2276 from freqtrade/keep_original_config
Allow easy printing of loaded configuration
2019-09-20 20:59:33 +03:00
hroff-1902
dc825c249c Make flake happy 2019-09-20 20:51:31 +03:00
Matthias
15a4df4c49 Mock create_datadir to make sure no folders are left behind 2019-09-20 08:34:18 +02:00
Matthias
f0cf8d6a81 Allow easy printing of loaded configuration
(beforechanging types and applying defaults)
2019-09-20 07:23:32 +02:00
Matthias
7fff1f5ce1 Merge pull request #2274 from freqtrade/hroff-1902-patch-1
Manual bump to ccxt 1.18.1159
2019-09-19 12:38:15 +02:00
hroff-1902
c625058f41 Merge pull request #2275 from hroff-1902/backtest-cleanup3
minor: Cleanup in backtesting
2019-09-19 11:59:07 +03:00
hroff-1902
50b4563912 Tests adjusted 2019-09-18 22:57:37 +03:00
hroff-1902
69f29e8907 minor: Cleanup for backtesting 2019-09-18 22:57:17 +03:00
hroff-1902
ee6ad51a44 Manual bump to ccxt 1.18.1159
(support for binance.us)
2019-09-18 22:41:25 +03:00
hroff-1902
e8657d2444 Merge pull request #2272 from freqtrade/setup_names
Change package author to "freqtrade team"
2019-09-18 13:11:21 +03:00
Matthias
a42000e1dd Change package author to "freqtrade team" 2019-09-18 11:36:16 +02:00
hroff-1902
c3e19507bf Merge pull request #2268 from gaugau3000/hyperopt_test_use_case
Hyperopt test use case
2019-09-18 01:01:41 +03:00
Matthias
27238d97d5 Merge pull request #2269 from hroff-1902/hyperopt-cleanup4
minor: Cleanup in hyperopt
2019-09-17 06:45:46 +02:00
hroff-1902
e9a75e57b8 test adjusted 2019-09-16 21:53:19 +03:00
hroff-1902
5cbc073dd1 minor: Cleanup hyperopt 2019-09-16 21:46:15 +03:00
Pialat
b7da02aab4 realistic fixture datas 2019-09-16 14:05:39 +02:00
Pialat
f3e3a8fcbe unused in tests 2019-09-16 14:04:10 +02:00
Matthias
44fe0478ea Merge pull request #2267 from freqtrade/dependabot/pip/develop/python-telegram-bot-12.1.0
Bump python-telegram-bot from 12.0.0 to 12.1.0
2019-09-16 11:57:13 +02:00
Matthias
9dc9bc2346 Merge pull request #2266 from freqtrade/dependabot/pip/develop/ccxt-1.18.1149
Bump ccxt from 1.18.1124 to 1.18.1149
2019-09-16 11:56:18 +02:00
dependabot-preview[bot]
9c1cce6fe2 Bump ccxt from 1.18.1124 to 1.18.1149
Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.18.1124 to 1.18.1149.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ccxt/ccxt/compare/1.18.1124...1.18.1149)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-09-16 09:31:14 +00:00
dependabot-preview[bot]
cab394a058 Bump python-telegram-bot from 12.0.0 to 12.1.0
Bumps [python-telegram-bot](https://github.com/python-telegram-bot/python-telegram-bot) from 12.0.0 to 12.1.0.
- [Release notes](https://github.com/python-telegram-bot/python-telegram-bot/releases)
- [Changelog](https://github.com/python-telegram-bot/python-telegram-bot/blob/master/CHANGES.rst)
- [Commits](https://github.com/python-telegram-bot/python-telegram-bot/compare/v12.0.0...v12.1.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-09-16 09:31:10 +00:00
Matthias
9d9ace2b22 Merge pull request #2265 from freqtrade/dependabot/pip/develop/arrow-0.15.2
Bump arrow from 0.15.0 to 0.15.2
2019-09-16 11:29:55 +02:00
dependabot-preview[bot]
c2462ee87b Bump arrow from 0.15.0 to 0.15.2
Bumps [arrow](https://github.com/crsmithdev/arrow) from 0.15.0 to 0.15.2.
- [Release notes](https://github.com/crsmithdev/arrow/releases)
- [Changelog](https://github.com/crsmithdev/arrow/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/crsmithdev/arrow/compare/0.15.0...0.15.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-09-16 08:49:41 +00:00
hroff-1902
39f41def54 Merge pull request #2261 from freqtrade/test_speedup
[minor] Test speedup
2019-09-14 11:25:00 +03:00
hroff-1902
76e45883bd Merge pull request #2253 from hroff-1902/backtesting-improve-logs
Improve logs for backtesting
2019-09-14 11:23:46 +03:00
Matthias
19ce7180be Merge pull request #2260 from freqtrade/args_vars
Configuration/Arguments refactoing (don't pass Namespace around).
2019-09-14 10:11:02 +02:00
Matthias
b00467c8ef Fix test failure 2019-09-14 10:07:23 +02:00
Matthias
2cf045c53e Remove commented indicators from DefaultStrategy 2019-09-14 10:00:59 +02:00
Matthias
e2a100c925 Directory / folder 2019-09-14 09:54:40 +02:00
hroff-1902
eda1ec652f Revert back condition for open_since in Trade.__repr__ 2019-09-13 23:00:09 +03:00
Matthias
0135784589 remove unused indicators from default_strategy 2019-09-13 19:56:58 +02:00
Matthias
5e654620b7 Use available indicators in tests where possible 2019-09-13 19:56:06 +02:00
Matthias
16b4ae8396 Document this new behaviour 2019-09-13 07:08:42 +02:00
Matthias
a5f3b68bff Allow loading of fully initialized config from jupyter notbooks 2019-09-13 07:08:22 +02:00
Matthias
f163240710 Simplify configuration init where possible 2019-09-13 07:02:36 +02:00
hroff-1902
c5f455d660 Merge pull request #2256 from freqtrade/kraken_balance
fix Kraken balance calculation
2019-09-12 23:12:55 +03:00
hroff-1902
c8d191a5c9 Adjust test 2019-09-12 22:53:54 +03:00
hroff-1902
e6ec8f9f30 Fix tests: Change condition for printing 'close' 2019-09-12 21:28:51 +03:00
Matthias
4d566e8bad Update tests to not use Namespace 2019-09-12 20:28:37 +02:00
Matthias
e6ccc1427c have Arguments return a dict instead of Namespace 2019-09-12 20:16:39 +02:00
Matthias
52b186eabe Create-userdir does not need a configuration 2019-09-12 20:14:58 +02:00
hroff-1902
67ff48ce3e Comment out noisy log messages 2019-09-12 21:01:14 +03:00
hroff-1902
045ca8739d Do not print humanized datetime in the log message 2019-09-12 20:56:00 +03:00
Matthias
64b404068f Merge pull request #2258 from hroff-1902/dont-inherit-from-object
Minor: class cosmetics
2019-09-12 15:18:42 +02:00
hroff-1902
dda513c923 Minor class cosmetics 2019-09-12 12:13:20 +03:00
Matthias
6c5eff4a7c Use List of Tuples, remove unused columns 2019-09-12 07:03:52 +02:00
Matthias
6884ad2211 Merge pull request #2254 from hroff-1902/pytest-asyncio-warnings
Eliminate asyncio warnings in tests
2019-09-12 06:34:01 +02:00
Matthias
9e4effaa14 Merge pull request #2257 from hroff-1902/dont-inherit-from-object
Cleanup: Don't inherit from object
2019-09-12 06:22:07 +02:00
hroff-1902
849d694c27 Don't inherit from object 2019-09-12 04:39:52 +03:00
hroff-1902
1d781ea9e0 Refine 'stoploss adjusted' log message 2019-09-12 02:29:47 +03:00
hroff-1902
acf3b751f0 Log sell_flag, do not log sell_type=SellType.NONE 2019-09-12 01:21:14 +03:00
hroff-1902
9bdfaf3803 Remove quotes around the pairs 2019-09-11 23:32:08 +03:00
Matthias
f8eb1cd58a Add tests for kraken balance implementation 2019-09-11 20:53:23 +02:00
Matthias
3b4bbe7a18 Implement get_balances which uses open_orders 2019-09-11 19:43:16 +02:00
hroff-1902
2bd59de002 Cleanup log_has_re regexp string 2019-09-11 10:56:02 +03:00
hroff-1902
ac413c65dc Clean up the use of patch_exchange 2019-09-11 09:52:09 +03:00
Matthias
c01953daf2 Remove kraken block 2019-09-11 06:57:58 +02:00
hroff-1902
a9ecdc7764 Use patched exchange instead 2019-09-11 00:53:35 +03:00
hroff-1902
869a5b4901 Eliminate asyncio warnings in tests 2019-09-10 13:45:30 +03:00
hroff-1902
2081d7552f Make flake happy 2019-09-10 12:37:15 +03:00
hroff-1902
e298e77319 Adjust tests 2019-09-10 10:43:15 +03:00
hroff-1902
35580b135a Improve backtesting logs 2019-09-10 10:42:45 +03:00
hroff-1902
f987e6e0f9 Merge pull request #2251 from freqtrade/telegram_fiatconvert
Telegram fiatconvert with identical currencies
2019-09-09 21:49:00 +03:00
Matthias
85f1291597 use git log to print version 2019-09-09 20:20:38 +02:00
Matthias
5ea739f943 Merge pull request #2247 from freqtrade/dependabot/pip/develop/ccxt-1.18.1124
Bump ccxt from 1.18.1115 to 1.18.1124
2019-09-09 20:02:27 +02:00
Matthias
94d2790ab5 Fix #2239 -
return float even if fiat/crypto are identical
2019-09-09 20:00:13 +02:00
Matthias
9aa7db103d Add test for failing case 2019-09-09 19:59:41 +02:00
dependabot-preview[bot]
3398f31b87 Bump ccxt from 1.18.1115 to 1.18.1124
Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.18.1115 to 1.18.1124.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ccxt/ccxt/compare/1.18.1115...1.18.1124)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-09-09 17:40:31 +00:00
Matthias
0e39cc1187 Merge pull request #2249 from freqtrade/dependabot/pip/develop/arrow-0.15.0
Bump arrow from 0.14.6 to 0.15.0
2019-09-09 19:39:18 +02:00
Ashton Honnecke
e8e05b6876 split docker composes 2019-09-09 09:24:40 -06:00
Matthias
a218946f52 Merge pull request #2250 from freqtrade/dependabot/pip/develop/plotly-4.1.1
Bump plotly from 4.1.0 to 4.1.1
2019-09-09 11:45:07 +02:00
Matthias
2a79c1eed2 Merge pull request #2248 from freqtrade/dependabot/pip/develop/numpy-1.17.2
Bump numpy from 1.17.1 to 1.17.2
2019-09-09 11:44:23 +02:00
dependabot-preview[bot]
7dc3e67bba Bump plotly from 4.1.0 to 4.1.1
Bumps [plotly](https://github.com/plotly/plotly.py) from 4.1.0 to 4.1.1.
- [Release notes](https://github.com/plotly/plotly.py/releases)
- [Changelog](https://github.com/plotly/plotly.py/blob/master/CHANGELOG.md)
- [Commits](https://github.com/plotly/plotly.py/compare/v4.1.0...v4.1.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-09-09 08:21:55 +00:00
dependabot-preview[bot]
3c869a8032 Bump arrow from 0.14.6 to 0.15.0
Bumps [arrow](https://github.com/crsmithdev/arrow) from 0.14.6 to 0.15.0.
- [Release notes](https://github.com/crsmithdev/arrow/releases)
- [Changelog](https://github.com/crsmithdev/arrow/blob/master/CHANGELOG.md)
- [Commits](https://github.com/crsmithdev/arrow/compare/0.14.6...0.15.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-09-09 08:21:33 +00:00
dependabot-preview[bot]
edba5a0014 Bump numpy from 1.17.1 to 1.17.2
Bumps [numpy](https://github.com/numpy/numpy) from 1.17.1 to 1.17.2.
- [Release notes](https://github.com/numpy/numpy/releases)
- [Changelog](https://github.com/numpy/numpy/blob/master/doc/HOWTO_RELEASE.rst.txt)
- [Commits](https://github.com/numpy/numpy/compare/v1.17.1...v1.17.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-09-09 08:21:22 +00:00
Matthias
b4a0591429 Merge pull request #2221 from jraviotta/notebook
Notebook
2019-09-09 08:01:09 +02:00
Jonathan Raviotta
adbc0159ae changed more occuranes of function 2019-09-09 07:00:25 +02:00
Jonathan Raviotta
a5510d14e9 de-mangling 2019-09-09 06:58:41 +02:00
hroff-1902
9f5d4a5252 Merge pull request #2240 from freqtrade/fix/docker_release_backtest
Pass test-data to dockerized backtest
2019-09-08 21:43:59 +03:00
hroff-1902
42d2ecba68 Merge pull request #2244 from freqtrade/minor/cleanup
[minor] cleanup tests and fix excluded samplestrategy
2019-09-08 21:19:53 +03:00
hroff-1902
ceb1f91d9d Merge pull request #2243 from freqtrade/fix/plotting_failure
Fix random failure if config.json exists
2019-09-08 21:18:37 +03:00
Matthias
3430850421 don't print in tests 2019-09-08 19:47:16 +02:00
Matthias
c5726e88e8 Don't gitignore sample_strategy 2019-09-08 19:45:50 +02:00
Matthias
867a3273ce Fix random failure if config.json exists 2019-09-08 19:38:16 +02:00
Matthias
2a236db18f Pass test-data to dockerized backtest 2019-09-08 19:27:42 +02:00
Matthias
242ac4d8f4 Merge pull request #2236 from freqtrade/move_tests
Move tests to top level
2019-09-08 19:18:44 +02:00
Matthias
3e0edc7ee2 Update backtesting section about correct data used 2019-09-08 19:05:51 +02:00
Matthias
0bb1127cb6 update .gitignore
things we no longer use should not be excluded
2019-09-08 19:05:51 +02:00
Matthias
9d2c6c8de2 Fix paths in setup and travis 2019-09-08 19:05:51 +02:00
Matthias
9513115ce0 Fix paths in tests 2019-09-08 19:05:23 +02:00
Matthias
f2cbc5fb8f Fix documentation references to tests folder 2019-09-08 19:05:23 +02:00
Matthias
26d76cdb19 Adjust imports in tests to new path 2019-09-08 19:05:23 +02:00
Matthias
65a516e229 Move tests out of freqtrade module 2019-09-08 19:05:22 +02:00
hroff-1902
edda122ed0 Merge pull request #2238 from freqtrade/fix/strategyloading
[minor, important] Fix random test failures
2019-09-08 19:37:20 +03:00
hroff-1902
3044b861bd Merge pull request #2237 from freqtrade/setup_long_desc
Enhance setup.py to include long_description
2019-09-08 19:36:07 +03:00
Matthias
13932f55f5 Fix random test failures 2019-09-08 14:02:32 +02:00
hroff-1902
3d028f512e Merge pull request #2235 from hroff-1902/eliminate_import_strategy
Allow --strategy for hyperopt
2019-09-08 12:23:48 +03:00
Matthias
bb2d8fefd7 Enhance setup.py 2019-09-08 11:04:39 +02:00
hroff-1902
623e8f6984 Merge pull request #2234 from freqtrade/test_datadir_no_default
datadir should not default to freqtrade/tests/testdata
2019-09-08 04:06:12 +03:00
hroff-1902
865e0d3af9 Adjust tests: removed tests for/with import_strategy() 2019-09-08 03:30:15 +03:00
hroff-1902
45cfdbbda7 Make flake happy 2019-09-08 03:10:01 +03:00
hroff-1902
2b00a5d90a Get rid of import_strategy() 2019-09-08 02:43:02 +03:00
Matthias
bd2ecf8ce3 Add testdatadir to missed test 2019-09-07 21:13:05 +02:00
Matthias
972b8a1726 Remove defaulting to test_data folder when no datadir is present 2019-09-07 21:06:20 +02:00
Matthias
fe631ffd04 Use fixture to determine test_data_dir 2019-09-07 20:56:03 +02:00
Matthias
bde82e9654 Move make_testdata_path to conftest 2019-09-07 20:34:25 +02:00
hroff-1902
df481eb642 Merge pull request #2227 from freqtrade/fix/balance_failure
Fix RPC /balance failure
2019-09-07 00:27:20 +03:00
Matthias
6ff83abb61 Merge pull request #2220 from hroff-1902/hyperopt-simplified-interface
Allow simplified hyperopt interface
2019-09-06 19:41:48 +02:00
hroff-1902
4fdf8a75cd Adjust hyperopt tests after the merge with develop 2019-09-06 16:46:44 +03:00
hroff-1902
2e49125e87 Merge branch 'develop' into hyperopt-simplified-interface 2019-09-06 15:11:06 +03:00
hroff-1902
7e56704767 Parametrize tests for hyperopt simplified failed 2019-09-06 15:08:44 +03:00
Matthias
95b89e059a Merge pull request #2230 from freqtrade/hroff-1902-patch-1
docs: Fix table with ROI limits in hyperopt.md
2019-09-06 11:28:36 +02:00
hroff-1902
ef8386c065 Fix table with ROI limits 2019-09-06 11:55:07 +03:00
Matthias
7af445adf3 Merge pull request #2137 from hroff-1902/hyperopt-adaptive-roi-space
Hyperopt: adaptive roi_space
2019-09-06 06:26:52 +02:00
hroff-1902
ee68f743c7 Merge pull request #2217 from freqtrade/fix/plot_config
Always use config.json if it's available
2019-09-06 01:12:03 +03:00
hroff-1902
e39d911177 Improve wordings in hyperopt.md 2019-09-05 23:31:07 +03:00
Matthias
48ac37a1b8 BLock kraken trading - it's not working at the moment 2019-09-05 20:16:09 +02:00
Matthias
e8f37666ea Fix Problem when ccxt reports None as values 2019-09-05 20:02:18 +02:00
Matthias
e2e0015119 Don't rename dict ... we can use it as is 2019-09-05 20:02:01 +02:00
hroff-1902
3343b34725 Add tests for simplified hyperopt interface 2019-09-05 00:38:15 +03:00
Matthias
e107290230 Validate plot arguments 2019-09-04 19:21:58 +02:00
Matthias
1b66f01ec0 Always use config.json if it's available 2019-09-04 19:21:58 +02:00
Matthias
f9c7a2cacb Merge pull request #2224 from freqtrade/args/aftersubcommand
Arguments - remove unused arguments
2019-09-04 19:19:31 +02:00
Matthias
5ce63cd54a Remove no_config_ argument from Arguments 2019-09-04 16:39:23 +02:00
Matthias
03f3d0dc8b Remove desc from Arguments header 2019-09-04 16:38:33 +02:00
hroff-1902
74578b8752 Merge pull request #2211 from freqtrade/dependabot/pip/develop/python-telegram-bot-12.0.0
Bump python-telegram-bot from 11.1.0 to 12.0.0
2019-09-04 10:44:11 +03:00
hroff-1902
caec5ac941 Merge pull request #2206 from freqtrade/sloe_handling
Improve stoploss on exchange handling
2019-09-04 10:00:53 +03:00
Matthias
88f823f899 Improvements to documentation 2019-09-04 06:56:25 +02:00
hroff-1902
9a6a89c238 allow simplified hyperopt interface 2019-09-03 19:54:28 +03:00
hroff-1902
e8614abc5d update table md formatting, enhance description 2019-09-03 16:52:55 +03:00
hroff-1902
87ae2430df ranges for ROI tables for different ticker_intervals in docs 2019-09-03 11:32:18 +03:00
Matthias
dc9fda76f3 Fix tests to adapt to new telegram-bot interface 2019-09-02 20:42:39 +02:00
Matthias
3b15cce07a Handle arguments uniformly (by using context.args) 2019-09-02 20:17:47 +02:00
Matthias
8cad90f9e6 Adapt to new api 2019-09-02 20:17:23 +02:00
Matthias
9c60ab796d Adapt telegram api to new interface of telegram-bot-12.0.0 2019-09-02 20:14:41 +02:00
dependabot-preview[bot]
05789c4b92 Bump python-telegram-bot from 11.1.0 to 12.0.0
Bumps [python-telegram-bot](https://github.com/python-telegram-bot/python-telegram-bot) from 11.1.0 to 12.0.0.
- [Release notes](https://github.com/python-telegram-bot/python-telegram-bot/releases)
- [Changelog](https://github.com/python-telegram-bot/python-telegram-bot/blob/master/CHANGES.rst)
- [Commits](https://github.com/python-telegram-bot/python-telegram-bot/compare/v11.1.0...v12.0.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-09-02 13:44:52 +00:00
Matthias
962d487edb Merge pull request #2210 from freqtrade/dependabot/pip/develop/ccxt-1.18.1115
Bump ccxt from 1.18.1085 to 1.18.1115
2019-09-02 15:43:37 +02:00
dependabot-preview[bot]
04335ddd89 Bump ccxt from 1.18.1085 to 1.18.1115
Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.18.1085 to 1.18.1115.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ccxt/ccxt/compare/1.18.1085...1.18.1115)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-09-02 12:42:07 +00:00
Matthias
8b6010255f Merge pull request #2209 from freqtrade/dependabot/pip/develop/mkdocs-material-4.4.2
Bump mkdocs-material from 4.4.1 to 4.4.2
2019-09-02 14:40:49 +02:00
Matthias
ccdc0ed26d Merge pull request #2208 from freqtrade/dependabot/pip/develop/arrow-0.14.6
Bump arrow from 0.14.5 to 0.14.6
2019-09-02 14:40:36 +02:00
dependabot-preview[bot]
3f6c0ba6d6 Bump arrow from 0.14.5 to 0.14.6
Bumps [arrow](https://github.com/crsmithdev/arrow) from 0.14.5 to 0.14.6.
- [Release notes](https://github.com/crsmithdev/arrow/releases)
- [Changelog](https://github.com/crsmithdev/arrow/blob/master/CHANGELOG.md)
- [Commits](https://github.com/crsmithdev/arrow/compare/0.14.5...0.14.6)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-09-02 11:56:28 +00:00
Matthias
fe9d7b033e Merge pull request #2214 from freqtrade/dependabot/pip/develop/sqlalchemy-1.3.8
Bump sqlalchemy from 1.3.7 to 1.3.8
2019-09-02 13:55:21 +02:00
Matthias
12e893ff2d Merge pull request #2213 from freqtrade/dependabot/pip/develop/pytest-5.1.2
Bump pytest from 5.1.1 to 5.1.2
2019-09-02 13:55:03 +02:00
Matthias
cda2a2586b Merge pull request #2212 from freqtrade/dependabot/pip/develop/numpy-1.17.1
Bump numpy from 1.17.0 to 1.17.1
2019-09-02 13:54:43 +02:00
dependabot-preview[bot]
bf4e3f55f4 Bump sqlalchemy from 1.3.7 to 1.3.8
Bumps [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) from 1.3.7 to 1.3.8.
- [Release notes](https://github.com/sqlalchemy/sqlalchemy/releases)
- [Changelog](https://github.com/sqlalchemy/sqlalchemy/blob/master/CHANGES)
- [Commits](https://github.com/sqlalchemy/sqlalchemy/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-09-02 08:29:26 +00:00
dependabot-preview[bot]
51ad05efdb Bump pytest from 5.1.1 to 5.1.2
Bumps [pytest](https://github.com/pytest-dev/pytest) from 5.1.1 to 5.1.2.
- [Release notes](https://github.com/pytest-dev/pytest/releases)
- [Changelog](https://github.com/pytest-dev/pytest/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest/compare/5.1.1...5.1.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-09-02 08:29:07 +00:00
dependabot-preview[bot]
89f5cf8291 Bump numpy from 1.17.0 to 1.17.1
Bumps [numpy](https://github.com/numpy/numpy) from 1.17.0 to 1.17.1.
- [Release notes](https://github.com/numpy/numpy/releases)
- [Changelog](https://github.com/numpy/numpy/blob/master/doc/HOWTO_RELEASE.rst.txt)
- [Commits](https://github.com/numpy/numpy/compare/v1.17.0...v1.17.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-09-02 08:28:47 +00:00
dependabot-preview[bot]
949ab2a17c Bump mkdocs-material from 4.4.1 to 4.4.2
Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 4.4.1 to 4.4.2.
- [Release notes](https://github.com/squidfunk/mkdocs-material/releases)
- [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG)
- [Commits](https://github.com/squidfunk/mkdocs-material/compare/4.4.1...4.4.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-09-02 08:27:37 +00:00
hroff-1902
08b090c707 Merge pull request #2176 from freqtrade/plot_commands
Move Plot scripts to freqtrade subcommands
2019-09-02 08:08:51 +03:00
Matthias
c64beb3f76 Merge pull request #2207 from freqtrade/fix/dryrun_stoploss_on_exchange
Reenable stoploss_on_exchange for dry-run
2019-09-02 06:16:44 +02:00
Matthias
aae9c3194f Reenable stoploss_on_exchange for dry-run 2019-09-01 17:48:06 +02:00
Matthias
20c9c93b3e Improve docstring 2019-09-01 10:25:05 +02:00
Matthias
771519e311 Don't show stacktrace in case of invalidorder Error
This is handled gracefully by emergency-selling
2019-09-01 10:19:18 +02:00
Matthias
f91557f549 Add space to exception message 2019-09-01 10:17:17 +02:00
Matthias
514860ac3b Improve documentation 2019-09-01 10:17:02 +02:00
Matthias
9d7ebc65e7 Move return statement to correct intend 2019-09-01 09:21:45 +02:00
Matthias
6aab3fe25a Add test for stoploss order handling behaviour 2019-09-01 09:18:15 +02:00
Matthias
7c0a49a6f9 _notify_sell needs ordertype seperately 2019-09-01 09:17:58 +02:00
Matthias
292df115e8 Support selling via emergencysell 2019-09-01 09:09:07 +02:00
Matthias
9f53e9f5dd Raise InvalidOrder error when stoploss-creation fails 2019-09-01 09:08:35 +02:00
Matthias
ee808abfea Add emergency_sell as sell reason 2019-09-01 09:07:09 +02:00
Matthias
ab3e3797a5 Merge pull request #2205 from freqtrade/master_add_2199
Release 2019.8-1 - hotfix data-dir not including exchange
2019-08-31 19:13:05 +02:00
Matthias
7fc156648a simplify stoploss_oe code 2019-08-31 16:15:39 +02:00
Matthias
f0c0f5618b Abstract creating stoploss-orders from stoploss-logic 2019-08-31 16:11:04 +02:00
Matthias
7c36e571d2 version bump to 2019.8-1 2019-08-31 15:38:38 +02:00
hroff-1902
040ba5662c Merge pull request #2199 from freqtrade/fix_datadir_init
Fix datadir init to always include exchange
2019-08-31 15:37:29 +02:00
Matthias
2886fa288a fix documentation 2019-08-31 15:31:47 +02:00
Matthias
736deaae32 Add test with plot command without configuration 2019-08-31 15:26:34 +02:00
Matthias
c9e15c2f86 Add test for new check_exchange branch 2019-08-31 15:19:59 +02:00
Matthias
d48f03c32e check_exchange is not required for plotting 2019-08-31 15:19:53 +02:00
Matthias
1760a8dfbc Use subparser-name to exclude from config requires 2019-08-31 15:15:10 +02:00
Matthias
f278fcfc3f Use plot-runmode for plot scripts 2019-08-31 15:14:57 +02:00
Matthias
816d942ded Merge branch 'develop' into plot_commands 2019-08-30 20:42:58 +02:00
Matthias
423805c9ca Small documentation improvements 2019-08-30 20:42:14 +02:00
hroff-1902
a7e45c5a73 Merge pull request #2201 from freqtrade/fix/webhook
sending rpc messages should not stop the bot
2019-08-30 13:33:19 +03:00
Matthias
d060d27745 Add test for all messagetypes 2019-08-30 07:05:22 +02:00
Matthias
75dc174c76 support all messagetypes in webhook 2019-08-30 07:02:57 +02:00
Matthias
d977695d48 Catch NotImplementedError when sending messages
(RPC should not crash your bot!)
2019-08-30 07:02:26 +02:00
Matthias
b6b7dcd61c Test NotImplemented is cought correctly 2019-08-30 07:00:29 +02:00
hroff-1902
43ef831bf7 Merge pull request #2199 from freqtrade/fix_datadir_init
Fix datadir init to always include exchange
2019-08-30 01:54:16 +03:00
Matthias
cabe291006 Fix test-leakage by not copying config correctly 2019-08-29 06:54:28 +02:00
Matthias
6b3d25b54b Fix datadir init when used wiht --exchange 2019-08-29 06:45:20 +02:00
Matthias
68adfc6607 Init exchange before datadir ... 2019-08-29 06:42:56 +02:00
Matthias
ba0d7aa09c Merge pull request #2190 from freqtrade/strategy_version
Introduce strategy_version
2019-08-28 19:47:33 +02:00
Matthias
50b572a657 Merge branch 'develop' into strategy_version 2019-08-28 19:29:53 +02:00
Matthias
9634e516a9 Merge pull request #2196 from freqtrade/new_release
New release 2018-8
2019-08-28 19:26:35 +02:00
Matthias
c38f3a2b9a Apply dynamic versioning to develop 2019-08-28 07:05:48 +02:00
Matthias
44780837f1 Version bump to 2019-8 2019-08-28 06:33:10 +02:00
Matthias
c6bb68bd30 Merge pull request #2192 from freqtrade/rename_teststrat
Rename testStrategy to sample_strategy
2019-08-28 06:28:19 +02:00
Matthias
8923c02222 docstring wording 2019-08-28 06:07:18 +02:00
hroff-1902
b4685151ce Merge pull request #2191 from hroff-1902/docs-minor-fixes3
minor: improvements in confuguration.md
2019-08-28 00:33:44 +03:00
hroff-1902
756f44fcbd highlight really important notifications 2019-08-28 00:20:32 +03:00
Matthias
51fbeed71f Rename TestStrategy to SampleStrategy 2019-08-27 06:42:10 +02:00
Matthias
d66fb86449 Add documentation for interface_version 2019-08-27 06:32:01 +02:00
Matthias
40df303122 Merge pull request #2184 from hroff-1902/backtesting-minor-cleanup2
minor: Backtesting cleanup
2019-08-27 06:14:02 +02:00
hroff-1902
a504abf00c minor: improvements in confuguration.md 2019-08-27 04:12:00 +03:00
hroff-1902
d9c2b7d460 fix fetching ticker_interval from strategy 2019-08-26 22:31:24 +03:00
Matthias
0e62b8bd85 Update strategy_version to INTERFACE_VERSION 2019-08-26 20:16:03 +02:00
Matthias
6d1c54ed92 Merge pull request #2179 from freqtrade/timeframe_use_ccxt
[minor] Use ccxt methods to round timeframe
2019-08-26 20:01:24 +02:00
Matthias
b5789203f2 Merge branch 'develop' into timeframe_use_ccxt 2019-08-26 19:48:58 +02:00
Matthias
92011f8294 Introduce strategy_version variable 2019-08-26 19:44:33 +02:00
Matthias
b3db1ec1a7 Merge pull request #2186 from freqtrade/dependabot/pip/develop/pytest-5.1.1
Bump pytest from 5.1.0 to 5.1.1
2019-08-26 15:35:10 +02:00
Matthias
5f60fcb602 Merge pull request #2185 from freqtrade/dependabot/pip/develop/mkdocs-material-4.4.1
Bump mkdocs-material from 4.4.0 to 4.4.1
2019-08-26 14:22:13 +02:00
Matthias
30a7be457c Merge pull request #2188 from freqtrade/dependabot/pip/develop/pandas-0.25.1
Bump pandas from 0.25.0 to 0.25.1
2019-08-26 14:04:54 +02:00
Matthias
93198ed28b Merge pull request #2187 from freqtrade/dependabot/pip/develop/ccxt-1.18.1085
Bump ccxt from 1.18.1068 to 1.18.1085
2019-08-26 14:03:41 +02:00
dependabot-preview[bot]
6af5135802 Bump pandas from 0.25.0 to 0.25.1
Bumps [pandas](https://github.com/pandas-dev/pandas) from 0.25.0 to 0.25.1.
- [Release notes](https://github.com/pandas-dev/pandas/releases)
- [Changelog](https://github.com/pandas-dev/pandas/blob/master/RELEASE.md)
- [Commits](https://github.com/pandas-dev/pandas/compare/v0.25.0...v0.25.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-08-26 08:07:30 +00:00
dependabot-preview[bot]
6b233eb862 Bump ccxt from 1.18.1068 to 1.18.1085
Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.18.1068 to 1.18.1085.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ccxt/ccxt/compare/1.18.1068...1.18.1085)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-08-26 08:07:24 +00:00
dependabot-preview[bot]
75e3d22043 Bump pytest from 5.1.0 to 5.1.1
Bumps [pytest](https://github.com/pytest-dev/pytest) from 5.1.0 to 5.1.1.
- [Release notes](https://github.com/pytest-dev/pytest/releases)
- [Changelog](https://github.com/pytest-dev/pytest/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest/compare/5.1.0...5.1.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-08-26 08:07:07 +00:00
dependabot-preview[bot]
e5da5f7fe7 Bump mkdocs-material from 4.4.0 to 4.4.1
Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 4.4.0 to 4.4.1.
- [Release notes](https://github.com/squidfunk/mkdocs-material/releases)
- [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG)
- [Commits](https://github.com/squidfunk/mkdocs-material/compare/4.4.0...4.4.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-08-26 08:07:03 +00:00
Matthias
4fcfb1eaca Merge pull request #2180 from freqtrade/refactor_download
[Refactor] Logic for download-data to history
2019-08-26 06:13:19 +02:00
hroff-1902
bfc68ec792 minor cleanup in Backtesting 2019-08-25 23:36:42 +03:00
Matthias
ae8c5eb75f Merge pull request #2182 from freqtrade/fix/stringescaping
[minor] Don't escape ticks where it's not needed
2019-08-25 22:09:57 +02:00
Matthias
513e84880e Don't escape ticks where it's not needed 2019-08-25 20:38:51 +02:00
Matthias
626b9bbf64 Merge pull request #2178 from freqtrade/refactor/stoploss_on_e_to_binance
[refactor] Move stoploss on exchange implementation to binance
2019-08-25 19:16:05 +02:00
Matthias
da7da2ce52 Change tests to split function 2019-08-25 15:06:47 +02:00
Matthias
3232251fea Refactor downloading ohlcv from utils to history 2019-08-25 15:01:27 +02:00
Matthias
e603cca7a5 Testing with now() should not pass in date/time 2019-08-25 10:53:56 +02:00
Matthias
8f8acf5b06 Update ccxt to have this implemented 2019-08-25 10:43:37 +02:00
Matthias
565a543b7b Use ccxt base methods to round timeframe 2019-08-25 10:34:56 +02:00
Matthias
5e12b05424 Improve test coverage 2019-08-25 10:18:55 +02:00
Matthias
a4c8b5bf5d Move binance-specific test to test_binance.py 2019-08-25 10:08:06 +02:00
Matthias
cbf09b5ad9 Improve docstring for Exception 2019-08-25 10:07:47 +02:00
Matthias
2c66b33fd1 Adapt some tests to use Binance subclass for stoplosslimit 2019-08-25 09:57:21 +02:00
Matthias
067c122bf3 Adapt test to use Binance class 2019-08-25 09:52:21 +02:00
Matthias
defa1c027d Move stoploss_limit to binance subclass 2019-08-25 09:50:37 +02:00
Matthias
ea179a8e38 stoploss_limit shall not use create_order()
It needs to handle exceptions differently
2019-08-25 09:43:10 +02:00
Matthias
8a17615b5a move exceptionhandling from create_order() to calling functions 2019-08-25 09:42:02 +02:00
Matthias
95920f3b6b Merge pull request #2177 from freqtrade/fix/stoplosshandling
[minor]improvements to stoploss-on-exchange handling
2019-08-25 09:33:39 +02:00
Matthias
365b9c3e9c Add test to correctly handle unsuccessfull ordercreation 2019-08-24 18:06:33 +02:00
Matthias
3f6eeda3f0 Reset stoploss_order_id when recreating fails 2019-08-24 18:06:14 +02:00
Matthias
3121206afe correct wrongly named test 2019-08-24 15:35:43 +02:00
Matthias
240936eb19 Small fixes 2019-08-24 15:26:42 +02:00
Matthias
1336781f8f Reorder points in documentation to group analysis points 2019-08-24 15:11:31 +02:00
Matthias
661cd65bdd Improvements to plot documentation 2019-08-24 15:11:31 +02:00
Matthias
fb498795ad Improve profit-plot styling 2019-08-24 15:11:31 +02:00
Matthias
2ae398913d Fix bug in bt-analysis when multiple trades sell at the same time 2019-08-24 15:11:31 +02:00
Matthias
d711b8c0e9 Plot-profit should have subtitles per subplot 2019-08-24 15:11:31 +02:00
Matthias
395414ccde Refactor init_plotscript a bit (strategy is not needed for plot_profit) 2019-08-24 15:11:31 +02:00
Matthias
9f29ad77bd fix test after plot_dataframe change 2019-08-24 15:11:31 +02:00
Matthias
545e5c5bc6 simplify load_trades call 2019-08-24 15:11:31 +02:00
Matthias
1b374fcf7e Improve plotting documentation 2019-08-24 15:11:31 +02:00
Matthias
518d7dfde8 Replace plot-scripts with pointers to the new commands 2019-08-24 15:11:31 +02:00
Matthias
f8ddb10607 switch indicators to nargs argument type 2019-08-24 15:11:31 +02:00
Matthias
0ef13be577 Test plot_profit 2019-08-24 15:11:31 +02:00
Matthias
c559f95703 Add test for plot-profit 2019-08-24 15:11:31 +02:00
Matthias
f7cb75ff93 Add plot-profit command 2019-08-24 15:11:31 +02:00
Matthias
29076acc69 Add test for analyse_and_plot 2019-08-24 15:11:31 +02:00
Matthias
99b2be90fd Cleanup plotting (if you have backtest results, no need to download
data!)
2019-08-24 15:11:31 +02:00
Matthias
f8c72feea8 Add some initial tests for plot_dataframe 2019-08-24 15:11:31 +02:00
Matthias
69c2b12879 Move plot_dataframe as freqtrade submodule 2019-08-24 15:11:31 +02:00
Matthias
3820a38e79 Merge pull request #2175 from hroff-1902/hyperopt-split-backtesting
Hyperopt redesign
2019-08-24 14:39:46 +02:00
Matthias
60bc9f4f5e Merge pull request #2173 from freqtrade/improve/trailing_validation
improve stoploss validation
2019-08-24 09:15:43 +02:00
Matthias
a8842f38ca Fix wrong exception message 2019-08-24 09:08:08 +02:00
hroff-1902
667a623310 adjust tests 2019-08-24 00:10:55 +03:00
hroff-1902
067208bc9d make backtesting an attribute of Hyperopt 2019-08-24 00:10:35 +03:00
Matthias
70ebd09de4 Add checks verifying that stoploss is not 0 (and positive-stoploss is
also not 0).
2019-08-22 20:04:44 +02:00
Matthias
782f4112cd Add test checking stoploss == 0 values 2019-08-22 19:49:30 +02:00
Matthias
447bcf98e1 Merge pull request #2172 from hroff-1902/exchange-cosmetics
exchange cosmetics
2019-08-22 19:18:22 +02:00
hroff-1902
d19b11a00f exchange cosmetics 2019-08-22 20:01:41 +03:00
Matthias
ad6de07d2b Merge pull request #2155 from jraviotta/analysis
split example notebooks
2019-08-22 15:54:08 +02:00
Matthias
0e81d7204c Clense jupyter notebook 2019-08-22 15:43:39 +02:00
Matthias
91b0394433 Merge pull request #2156 from freqtrade/remove_live
Remove deprecated option live  - deprecate -r
2019-08-22 15:33:39 +02:00
Matthias
b2ef8f4e14 Add additional header 2019-08-22 15:26:18 +02:00
Matthias
81925dfadf Fix some doc inconsistencies 2019-08-22 13:01:10 +02:00
Matthias
098159ad41 Merge pull request #2170 from freqtrade/fix/docboxes
Fix documentation boxes
2019-08-22 12:44:35 +02:00
Matthias
fe12d2e3b7 Fix documentation syntax 2019-08-22 06:57:32 +02:00
Matthias
df1f57392c use seperate job for doc test 2019-08-22 06:56:41 +02:00
Matthias
949ca1abf8 Fail travis if doc-test fails 2019-08-22 06:53:51 +02:00
Matthias
e52d5e32aa Merge pull request #2067 from freqtrade/align_userdata
Align userdata usage
2019-08-21 19:55:42 +02:00
Matthias
aaeeb9c0c6 Merge branch 'develop' into align_userdata 2019-08-21 19:41:10 +02:00
Matthias
d2958fc0f5 Merge pull request #2168 from freqtrade/fix/downloadscript_pairs
Fix downloadscript pair handling
2019-08-21 09:09:03 +02:00
Matthias
f8235aec74 Merge pull request #2167 from hroff-1902/fix-download-script
minor: fix download replacement script
2019-08-21 07:03:13 +02:00
Matthias
13ffb39245 Adjust tests to fixed loading method 2019-08-21 06:59:07 +02:00
Matthias
75b2db4424 FIx loading pairs-list 2019-08-21 06:58:56 +02:00
hroff-1902
14aaf8976f fix download replacement script 2019-08-21 02:26:58 +03:00
hroff-1902
fcb0ff1b60 do not round values in the debug message 2019-08-20 23:42:44 +03:00
hroff-1902
31669fde03 test adjusted 2019-08-20 23:28:16 +03:00
hroff-1902
17b3f01b28 Merge branch 'develop' into hyperopt-adaptive-roi-space 2019-08-20 23:00:23 +03:00
hroff-1902
cadf573170 round printed stoploss value as well 2019-08-20 22:24:59 +03:00
hroff-1902
a12876da92 fine printing for floats in the roi tables (round to 5 digits after the decimal point) 2019-08-20 22:17:21 +03:00
Matthias
eebf39a1df Merge pull request #2165 from freqtrade/xmatthias-patch-1
Fix grammar error in documentation
2019-08-20 19:40:07 +02:00
Matthias
210f66e48b Improve wording 2019-08-20 19:34:18 +02:00
Matthias
91e72ba081 small formatting issue 2019-08-20 19:32:26 +02:00
Matthias
be308ff914 Fix grammar error in documentation 2019-08-20 09:45:28 +02:00
Matthias
4ee35438a7 Improve deprecated docs 2019-08-20 07:07:05 +02:00
Matthias
11dab2b9ca Deprecate documentation for --refresh-pairs-cached 2019-08-20 07:02:30 +02:00
Matthias
f02adf2a45 Deprecate --refresh-pairs-cached 2019-08-20 07:00:43 +02:00
Matthias
9e24992835 Remove calls to load_data using live= 2019-08-20 07:00:43 +02:00
Matthias
e9e2a83436 remove --live references 2019-08-20 07:00:43 +02:00
Matthias
af51ff4162 Merge pull request #2146 from freqtrade/download_module
Download module
2019-08-20 06:59:30 +02:00
Matthias
e8ee087e9d Merge branch 'develop' into download_module 2019-08-20 06:49:18 +02:00
Jonathan Raviotta
8cc477f353 edits 2019-08-20 00:47:10 -04:00
Matthias
c63856dac4 Merge pull request #2158 from freqtrade/config_consistency
Config consistency checking improvements
2019-08-20 06:44:41 +02:00
Matthias
8d1a575a9b Reword documentation 2019-08-20 06:39:28 +02:00
Matthias
9e8ca8d4bf Merge pull request #2138 from freqtrade/history_docstrings
Refactorings to history
2019-08-20 06:35:54 +02:00
Matthias
491d742bf9 Merge pull request #2163 from hroff-1902/dataprovider-get-pair-dataframe
get_pair_dataframe(): example in the docs changed
2019-08-20 06:33:59 +02:00
Matthias
dc35a8022b Merge pull request #2157 from freqtrade/fix/create_order_crash
create market order crash if exchange raises an exception
2019-08-20 06:22:43 +02:00
hroff-1902
70b1a05d97 example in the docs changed 2019-08-20 01:32:02 +03:00
Matthias
785c3e9e61 Merge pull request #2161 from freqtrade/dependabot/pip/develop/ccxt-1.18.1068
Bump ccxt from 1.18.1063 to 1.18.1068
2019-08-19 16:41:07 +02:00
dependabot-preview[bot]
9ad9ce0da1 Bump ccxt from 1.18.1063 to 1.18.1068
Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.18.1063 to 1.18.1068.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ccxt/ccxt/compare/1.18.1063...1.18.1068)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-08-19 10:52:53 +00:00
Matthias
042e47543c Merge pull request #2159 from freqtrade/fix/pairlist_logging
Fix pairlist logging
2019-08-19 09:48:42 +02:00
Matthias
71d612f6e4 Merge pull request #2160 from freqtrade/fix/dryrun_crashes
Gracefully handle problems with dry-run orders
2019-08-19 09:06:44 +02:00
Matthias
a4ede02ced Gracefully handle problems with dry-run orders 2019-08-18 19:38:23 +02:00
Matthias
ea4db0ffb6 Pass object-name to loader to fix logging 2019-08-18 18:11:34 +02:00
Matthias
d785d76370 make VolumePairlist less verbose
no need to print the full whitelist on every iteration
2019-08-18 18:11:24 +02:00
Matthias
b6462cd51f Add explaining comment 2019-08-18 16:22:18 +02:00
Matthias
611850bf91 Add edge/dynamic_whitelist validation 2019-08-18 16:19:24 +02:00
Matthias
ddfadbb69e Validate configuration consistency after loading strategy 2019-08-18 16:10:10 +02:00
Matthias
045ac1019e Split test for buy-orders too 2019-08-18 15:58:53 +02:00
Matthias
ee7ba96e85 Don't do calculations in exception handlers when one element can be None
fixes #2011
2019-08-18 15:46:38 +02:00
Matthias
8e96ac8765 Split exception tests for create_order 2019-08-18 15:45:30 +02:00
Matthias
acf1e734ec Adapt lg_has calls to new standard 2019-08-18 15:09:44 +02:00
Matthias
0a478bc0dc Merge branch 'develop' into align_userdata 2019-08-18 15:00:12 +02:00
Matthias
9005447590 Merge pull request #2149 from hroff-1902/dataprovider-get-pair-dataframe
Dataprovider: get_pair_dataframe() helper method, cleanup
2019-08-18 13:57:49 +02:00
hroff-1902
d300964691 code formatting in test_dataprovider.py 2019-08-18 13:06:21 +03:00
hroff-1902
407a3bca62 implementation of ohlcv optimized 2019-08-18 13:00:37 +03:00
hroff-1902
310e438706 logging message improved 2019-08-18 12:55:31 +03:00
hroff-1902
8a2a8ab8b5 docstring for ohlcv improved 2019-08-18 12:47:19 +03:00
Matthias
5e440a4cdc Improve docs to point to freqtrade download-data 2019-08-18 06:55:19 +02:00
Matthias
3a1b641db1 Merge pull request #2154 from freqtrade/doc/docker_updatefreq
[minor] Explain docker image rebuilding
2019-08-18 06:40:30 +02:00
Jonathan Raviotta
2cffc3228a split example notebooks 2019-08-17 19:37:34 -04:00
Matthias
7fa6d804ce Add note explaining how / when docker images are rebuild 2019-08-17 19:48:55 +02:00
Matthias
a398eea244 Merge pull request #2153 from freqtrade/enable/dependabot
Enable/dependabot
2019-08-17 19:40:36 +02:00
Matthias
0e87cc8c84 Remove pyup.yml 2019-08-17 19:30:03 +02:00
Matthias
764bab8eb9 Merge pull request #2152 from freqtrade/dependabot/pip/ccxt-1.18.1063
Bump ccxt from 1.18.1043 to 1.18.1063
2019-08-17 19:29:24 +02:00
Matthias
351740fc80 Change pyup to every month (should ideally not find anything ...) 2019-08-17 17:27:14 +02:00
dependabot-preview[bot]
9143ea13ad Bump ccxt from 1.18.1043 to 1.18.1063
Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.18.1043 to 1.18.1063.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ccxt/ccxt/compare/1.18.1043...1.18.1063)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-08-17 15:26:07 +00:00
Matthias
4711d66cab Merge pull request #2150 from freqtrade/dependabot/pip/pytest-5.1.0
Bump pytest from 5.0.1 to 5.1.0
2019-08-17 17:25:12 +02:00
Matthias
09967d4ff8 Merge pull request #2151 from freqtrade/dependabot/pip/sqlalchemy-1.3.7
Bump sqlalchemy from 1.3.6 to 1.3.7
2019-08-17 17:24:54 +02:00
Matthias
e0335705b2 Add dependabot config yaml 2019-08-17 17:19:02 +02:00
dependabot-preview[bot]
4ce3cc66d5 Bump sqlalchemy from 1.3.6 to 1.3.7
Bumps [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) from 1.3.6 to 1.3.7.
- [Release notes](https://github.com/sqlalchemy/sqlalchemy/releases)
- [Changelog](https://github.com/sqlalchemy/sqlalchemy/blob/master/CHANGES)
- [Commits](https://github.com/sqlalchemy/sqlalchemy/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-08-17 15:14:01 +00:00
dependabot-preview[bot]
fce3d7586f Bump pytest from 5.0.1 to 5.1.0
Bumps [pytest](https://github.com/pytest-dev/pytest) from 5.0.1 to 5.1.0.
- [Release notes](https://github.com/pytest-dev/pytest/releases)
- [Changelog](https://github.com/pytest-dev/pytest/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest/compare/5.0.1...5.1.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-08-17 15:13:39 +00:00
hroff-1902
cda912bd8c test added 2019-08-17 13:05:13 +03:00
hroff-1902
84a0f9ea42 get_pair_dataframe helper method added 2019-08-17 12:57:44 +03:00
Matthias
08fa5136e1 use copy of minimal_config ... 2019-08-17 07:19:46 +02:00
Matthias
7a79b292e4 Fix bug in pairs fallback resolving 2019-08-17 07:05:42 +02:00
Matthias
a53e9e3a98 improve tests for download_module 2019-08-17 07:01:20 +02:00
Matthias
f7d5280f47 Replace ARGS_DOWNLOADER with ARGS_DOWNLOAD_DATA 2019-08-17 06:48:34 +02:00
Matthias
29c56f4447 Replace download_backtest_data script with warning message 2019-08-17 06:48:31 +02:00
Matthias
c9207bcc00 Remove blank line at end 2019-08-16 16:01:30 +02:00
Matthias
132f28ad44 Add tests to correctly load / override pair-lists 2019-08-16 15:52:59 +02:00
Matthias
b2c215029d Add tests for download_data entrypoint 2019-08-16 15:28:11 +02:00
Matthias
89257832d7 Don't use internal _API methods 2019-08-16 15:27:59 +02:00
Matthias
219d0b7fb0 Adjust documentation to removed download-script 2019-08-16 15:27:48 +02:00
Matthias
4e308a1a3e Resolve pairlist in configuration 2019-08-16 14:56:57 +02:00
Matthias
3c15e3ebdd Default load minimal config 2019-08-16 14:56:38 +02:00
Matthias
8655e521d7 Adapt some tests 2019-08-16 14:53:46 +02:00
Matthias
05deb9e09b Migrate download-script logic to utils.py 2019-08-16 14:42:44 +02:00
Matthias
91886120a7 use nargs for --pairs argument 2019-08-16 14:39:29 +02:00
Matthias
09286d4918 file_dump_json accepts Path - so we should feed it that 2019-08-16 13:04:48 +02:00
Matthias
161db08745 Merge pull request #2142 from hroff-1902/hyperopt-print-json
Hyperopt: --print-json option
2019-08-16 11:08:54 +02:00
Matthias
8aaaab4163 Merge pull request #2145 from freqtrade/update_docker_image
Update dockerfile python version
2019-08-16 10:24:55 +02:00
Matthias
53db382695 Update dockerfile python version 2019-08-16 10:19:06 +02:00
Matthias
1b6051e4df Merge pull request #2144 from freqtrade/strategy_doc
Fix wrong warning box
2019-08-16 09:40:42 +02:00
Matthias
8d206f8308 Fix wrong warning box 2019-08-16 06:57:46 +02:00
hroff-1902
b94f3e80c4 tests fixed 2019-08-16 04:20:12 +03:00
hroff-1902
2a842778e3 tests added 2019-08-16 01:05:34 +03:00
hroff-1902
e525275d10 make flake and mypy happy 2019-08-15 23:13:46 +03:00
hroff-1902
4fa92ec0fa hyperopt: --print-json option added 2019-08-15 21:39:04 +03:00
Matthias
69eff89049 Improve comment in test_history to explain what is tested 2019-08-15 20:28:32 +02:00
Matthias
12677f2d42 Adjust docstring to match functioning of load_cached_data 2019-08-15 20:13:19 +02:00
Matthias
a94a89086f Don't forward timerange to load_ticker_file
when loading cached data for updating.
We always want to get all data, not just a fraction (we would end up
overwriting the non-loaded part of the data).
2019-08-15 20:09:00 +02:00
Matthias
80a71323cc Merge pull request #2141 from ahonnecke/fstring-runtime
f the string
2019-08-15 19:33:57 +02:00
Ashton Honnecke
fd77f699df f the string 2019-08-15 10:41:02 -06:00
Matthias
93cf2cd19b Merge pull request #2135 from freqtrade/ohlcv_docstring
[minor] Improve docstring for some downloading methods
2019-08-15 16:23:42 +02:00
Matthias
585536835a Merge pull request #2131 from freqtrade/lock_pairs
Lock pairs
2019-08-15 07:21:00 +02:00
Matthias
f5e437d8c7 Change create_trade to create_trades for new test 2019-08-15 06:59:45 +02:00
Matthias
14c4854987 Merge branch 'develop' into lock_pairs 2019-08-15 06:56:39 +02:00
Matthias
3af5691b91 Merge pull request #2124 from freqtrade/fix/sell_order_hanging
Fix/sell order hanging
2019-08-15 06:52:37 +02:00
Matthias
9f26c4ebdc Merge branch 'develop' into fix/sell_order_hanging 2019-08-15 06:46:12 +02:00
Matthias
11790fbf01 Fix typos in docstrings 2019-08-15 06:37:26 +02:00
Matthias
f3e6bcb20c Avoid using negative indexes 2019-08-15 06:35:50 +02:00
Matthias
e0e50115d2 Merge pull request #2136 from freqtrade/timerange_fix
[refactor] Move Timerange parsing to it's own class
2019-08-15 06:35:37 +02:00
Matthias
b2a22f1afb Fix samll errors 2019-08-14 21:39:53 +02:00
Matthias
9d3322df8c Adapt history-tests to new load_cached_data header 2019-08-14 20:49:13 +02:00
Matthias
91d1061c73 Abstract tickerdata storing 2019-08-14 20:49:06 +02:00
Matthias
0ffb184eba Change some docstrings and formatting from history 2019-08-14 20:45:24 +02:00
hroff-1902
5b9711c002 adaptive roi_space 2019-08-14 13:25:49 +03:00
Matthias
096a6426db Override equality operator 2019-08-14 10:22:54 +02:00
Matthias
84baef922c Rename get_history to get_historic_ohlcv 2019-08-14 10:14:54 +02:00
Matthias
51c3a31bb5 Correct imports and calls to parse_timerange 2019-08-14 10:07:32 +02:00
Matthias
06fa07e73e Move parse_timerange to TimeRange class 2019-08-14 10:07:14 +02:00
Matthias
4da2bfefb7 Improve docstring for some downloading methods 2019-08-14 09:37:17 +02:00
Matthias
3b30aab8a7 Merge pull request #2132 from freqtrade/process_return_value
allow create_trade() to create multiple trades per iteration
2019-08-14 07:23:05 +02:00
Matthias
c2e9685e04 Merge pull request #2121 from hroff-1902/config-allow-comments
Allow comments in config files
2019-08-14 06:37:33 +02:00
Matthias
d6f5f6b7ba Add test with preexisting trades 2019-08-14 06:21:15 +02:00
Matthias
a4ab42560f improve docstring for create_trades 2019-08-14 06:16:59 +02:00
Matthias
a76136c010 Rename create_trade to create_trades 2019-08-14 06:16:43 +02:00
Matthias
e35a349229 Fix spelling of interface.py docstring 2019-08-14 06:07:03 +02:00
hroff-1902
3d36747b92 preface in configuration.md reworked 2019-08-13 21:52:50 +03:00
Matthias
c0784b7c33 Merge pull request #2089 from hroff-1902/hyperopt-print-colorized
Hyperopt print colorized results
2019-08-13 19:36:06 +02:00
Matthias
828315f675 Merge pull request #2130 from freqtrade/bad_exchanges
fail for bad exchanges
2019-08-13 19:34:35 +02:00
hroff-1902
4c4ba08e85 colorama added to install_requires 2019-08-13 19:47:38 +03:00
hroff-1902
94196c84e9 docs: explanation for --no-color and colorization schema for results 2019-08-13 14:25:56 +03:00
Matthias
9d476b5ab2 Also check 0 open trades 2019-08-13 10:34:27 +02:00
Matthias
0a07dfc5cf Add test verifying that multiple trades are opened in one iteration 2019-08-13 10:20:32 +02:00
Matthias
d69f7ae471 Adapt final tests to support multi-trade creation 2019-08-13 10:15:31 +02:00
Matthias
974d899b33 Adapt some more tests 2019-08-13 10:12:12 +02:00
Matthias
6948e0ba84 Handle orderbook_depth check correctly 2019-08-13 10:12:02 +02:00
Matthias
a325f1ce2b adapt some tests
since create_trade() can now buy multiple times, we need to use
execute_buy() to create a single trade
2019-08-13 10:01:43 +02:00
Matthias
997eb7574a Support creating multiple trades in one iteration 2019-08-13 10:01:29 +02:00
Matthias
8873e0072c process_maybe_execute_buy does not need to return bool 2019-08-13 09:42:22 +02:00
Matthias
c29389f5f3 Remove process() checks from tests 2019-08-13 09:38:21 +02:00
Matthias
4b8eaaf7aa freqtradebot.process() does not need to return anything 2019-08-13 09:37:56 +02:00
Matthias
8d813fa728 Remove return-value for _process 2019-08-13 09:36:52 +02:00
Matthias
28e318b646 Lock pairs for stoploss_on_exchange fills too 2019-08-13 08:47:11 +02:00
Matthias
2961efdc18 Initial test for locked pair 2019-08-13 08:38:19 +02:00
Matthias
3c589bb877 fail if known bad exchanges are detcted 2019-08-13 08:27:46 +02:00
Matthias
d8dbea9d5b Add exchange_reasons to bad exchanges 2019-08-13 08:20:35 +02:00
Matthias
f960ea039e Remove duplicate test 2019-08-13 08:05:51 +02:00
hroff-1902
de80234165 hyperopt options updated in bot-usage.md 2019-08-13 00:23:41 +03:00
hroff-1902
906be7be7c Merge branch 'develop' into config-allow-comments 2019-08-13 00:14:19 +03:00
hroff-1902
482847a994 docs adjusted; various fixes to bot-usage.md and configuration.md 2019-08-13 00:10:33 +03:00
hroff-1902
58d308fd05 fix handling --no-color for edge and backtesting 2019-08-12 23:13:04 +03:00
Matthias
59acd5ec7c Lock pair for the rest of the candle in case of sells 2019-08-12 20:39:34 +02:00
Matthias
ca739f71fb Fix default argument handling for timeframe_to_nextdate 2019-08-12 20:39:24 +02:00
Matthias
23a70932d2 Remove pointless tests (without config?? really?) 2019-08-12 20:36:45 +02:00
hroff-1902
1a34b9b61c --no-color option introduced 2019-08-12 21:08:34 +03:00
hroff-1902
8f92912852 final colorization schema
colorization schema-2: red, green, bright/dim

colorization schema-3: red, green, bright only green bests

colorization schema-4: no red, green for profit, bright for bests
2019-08-12 21:08:52 +03:00
Matthias
2600cb7b64 simplify timeframe_next_date calculation 2019-08-12 20:04:19 +02:00
Matthias
200b6ea10f Add is_pair_locked 2019-08-12 19:50:38 +02:00
Matthias
8c1efec43a Merge pull request #2125 from freqtrade/pyup/scheduled-update-2019-08-12
Scheduled weekly dependency update for week 32
2019-08-12 17:41:25 +02:00
pyup-bot
dd30d74688 Update python-rapidjson from 0.7.2 to 0.8.0 2019-08-12 15:25:09 +00:00
pyup-bot
6f42d6658f Update arrow from 0.14.4 to 0.14.5 2019-08-12 15:25:08 +00:00
pyup-bot
c4cdd85e80 Update ccxt from 1.18.1021 to 1.18.1043 2019-08-12 15:25:06 +00:00
pyup-bot
0bd71db5df Update scipy from 1.3.0 to 1.3.1 2019-08-12 15:25:05 +00:00
Matthias
feced71a6d Test closing sell-orders immediately 2019-08-12 16:47:00 +02:00
Matthias
444ee274d7 close dry-run orders in case of market orders 2019-08-12 16:46:45 +02:00
Matthias
bb0b160001 Remove duplicate test 2019-08-12 16:39:21 +02:00
Matthias
241d510096 Handle and update sell-orders immediately if they are closed 2019-08-12 16:34:55 +02:00
Matthias
c042d08bb7 Add lock_pairs to interface 2019-08-12 16:29:09 +02:00
Matthias
1ce63b5b42 Reformat tests to be easier readable 2019-08-12 16:25:01 +02:00
Matthias
dd0ba183f8 Add timeframe_to_prev_candle 2019-08-12 16:11:43 +02:00
Matthias
933a553dd4 Convert timeframe to next date 2019-08-12 16:08:23 +02:00
Matthias
af67bbde31 Test timeframe_to_x 2019-08-12 15:43:10 +02:00
Matthias
6310b40fc6 Merge pull request #2123 from freqtrade/hyperoptloss_help
[minor] Improve hyperopt-loss docs
2019-08-12 14:08:32 +02:00
Matthias
2463a4af2a Merge pull request #2120 from freqtrade/log_has_ref
[minor, tests] - use caplog instead of caplog.record_tuples
2019-08-12 07:02:10 +02:00
Matthias
51ad8f5ab4 Merge branch 'develop' into log_has_ref 2019-08-12 06:49:41 +02:00
Matthias
615ce6aa69 Merge pull request #2118 from freqtrade/config_standalone
Config standalone loading
2019-08-12 06:47:52 +02:00
Matthias
43b41324e2 Improve hyperopt-loss docs 2019-08-12 06:45:27 +02:00
Matthias
91b0db138a Merge pull request #2122 from hroff-1902/hyperopt-cleanup3
Minor: cosmetics in sample_hyperopt and default_hyperopt
2019-08-12 06:41:00 +02:00
Matthias
197ce0b670 Improve documentation wording for multiconfig files 2019-08-12 06:35:47 +02:00
Matthias
002003292e Merge branch 'develop' into log_has_ref 2019-08-12 06:34:49 +02:00
Matthias
0b367a14f1 Merge pull request #2119 from freqtrade/disable_sloE_dry
Disable stoploss on exchange during dry-runs
2019-08-12 06:12:22 +02:00
hroff-1902
e5dcd520ba cosmetics in sample_hyperopt and default_hyperopt 2019-08-12 02:19:50 +03:00
hroff-1902
90b75afdb1 test added to load config with comments and trailing commas 2019-08-12 00:33:34 +03:00
hroff-1902
2d60e4b18b allow comments and trailing commas in config files 2019-08-12 00:32:03 +03:00
Matthias
c5d8499ad2 Improve documentation regarding tests 2019-08-11 20:30:15 +02:00
Matthias
b77c0d2813 Replace all "logentry" in caplog_record_tuples
use log_has to have checking log-entries standardized.
2019-08-11 20:22:50 +02:00
Matthias
a636dda07d Fix remaining tests using log_has 2019-08-11 20:17:39 +02:00
Matthias
dc5719e1f4 Adapt rpc to new log_has method 2019-08-11 20:17:22 +02:00
Matthias
d53f63023a Change log_has to get caplog instead of caplog.record_tuples in more
tests
2019-08-11 20:16:52 +02:00
Matthias
0221607318 Change log_has for some tests 2019-08-11 20:16:34 +02:00
Matthias
a1b5c7242e Change log-has to use record_tuples itself 2019-08-11 20:14:58 +02:00
Matthias
a225672c87 Add tests for dry-run stoposs_on_exchange 2019-08-11 19:45:31 +02:00
Matthias
4b4fcc7034 Change stoploss_on_exchange in freqtradebot 2019-08-11 19:43:57 +02:00
Matthias
85094a59e6 Merge pull request #2063 from hroff-1902/remove-pytest-warning2
tests: don't mask numpy errors as warnings in tests
2019-08-11 19:29:27 +02:00
Matthias
e02e64fc07 Add test to make sure dry-run disables stoploss on exchange 2019-08-11 14:15:04 +02:00
Matthias
176beefa88 Disable stoploss on exchange for dry-runs 2019-08-11 14:14:51 +02:00
Matthias
1a85e3b4cd Fix numpy warning 2019-08-11 13:48:41 +02:00
hroff-1902
5209ce5bfa tests: don't mask numpy errors as warnings in tests 2019-08-11 13:46:41 +02:00
Matthias
2c5a499a8b Merge branch 'develop' into align_userdata 2019-08-10 20:15:07 +02:00
Matthias
6d89da45b0 Add test for from_config 2019-08-10 20:02:11 +02:00
Matthias
eb328037b7 combine normalize method and config validation to in_files 2019-08-10 19:58:04 +02:00
Matthias
afba31c3f9 change method from _load_config_Files to from_files() 2019-08-10 19:57:49 +02:00
Matthias
c4cbe79b48 Adjust documentation 2019-08-10 19:55:33 +02:00
Matthias
8ba7657007 Merge pull request #2117 from hroff-1902/config-load-config
Minor configuration cleanup
2019-08-10 19:34:03 +02:00
hroff-1902
48d8376878 tests fixed 2019-08-10 18:47:58 +03:00
Matthias
74e583a612 Merge pull request #2094 from hroff-1902/hyperopt-roi-stoploss
Simplify custom hyperopts -- no need to copy ugly methods in every custom implementation
2019-08-10 15:49:52 +02:00
Matthias
29619ccf1c Merge pull request #2108 from jraviotta/nbdocs
Added jupyter notebook example and doc edits
2019-08-10 15:47:06 +02:00
Matthias
ab092fc77f Reinstate comment on backesting data 2019-08-10 15:45:41 +02:00
hroff-1902
28d8fc871a tests adjusted 2019-08-10 16:07:30 +03:00
hroff-1902
ad6a249832 download_backtest_data.py adjusted 2019-08-10 15:14:37 +03:00
hroff-1902
50c9679e23 move load_config_file() to separate module 2019-08-10 14:24:14 +03:00
Jonathan Raviotta
8eb39178ea code block instructions. removed extra packages 2019-08-09 17:24:17 -04:00
Jonathan Raviotta
dd35ba5e81 added imports to doc code blocks. 2019-08-09 17:06:19 -04:00
Jonathan Raviotta
3cc772c8e9 added reminders 2019-08-09 11:53:29 -04:00
Jonathan Raviotta
247d7475e1 fixes to example notebook. 2019-08-09 11:41:05 -04:00
Jonathan Raviotta
51d59e673b fixed another instance of Path in docs and nb 2019-08-09 11:36:53 -04:00
hroff-1902
ae39f6fba5 use of termcolor eliminated 2019-08-09 14:51:03 +03:00
hroff-1902
15cf5ac2d7 docs improved 2019-08-09 09:31:30 +03:00
Matthias
de99942499 Merge pull request #2114 from CedricSchmeits/negativeSharpeLoss
As -sharp_ratio is returned the value should be nagative.
2019-08-09 06:19:59 +02:00
Jonathan Raviotta
ccf3c69874 edits to clarify backtesting analysis 2019-08-08 22:09:15 -04:00
Cedric Schmeits
8ad5afd3a1 As -sharp_ratio is returned the value should be nagative.
This leads in a high positive result of the loss function, as it is a minimal optimizer
2019-08-08 22:10:51 +02:00
hroff-1902
0d4a2c6c3a advanced sample hyperopt added; changes to helpstrings 2019-08-08 22:51:37 +03:00
Matthias
02b2de5c73 Merge pull request #2113 from freqtrade/improve_setup.sh
Improve setup.sh
2019-08-08 11:14:51 +02:00
Jonathan Raviotta
2bc67b4a96 missed a call of os.path. removed it. 2019-08-07 20:47:37 -04:00
Jonathan Raviotta
9df1c23c71 changed Path, added jupyter 2019-08-07 19:48:55 -04:00
Matthias
7a47d81b7b Ensure git reset --hard is realy desired 2019-08-07 21:45:58 +02:00
Matthias
831e708897 Detect virtualenv and quit in that case 2019-08-07 21:45:45 +02:00
Matthias
757538f114 Run ldconfig to add /usr/local/lib to path 2019-08-07 21:35:52 +02:00
Matthias
cc4900f66c Doublecheck if virtualenv IS present 2019-08-07 21:19:16 +02:00
Matthias
7d02580a2b setup.sh script shall fail if venv initialization fails 2019-08-07 21:03:03 +02:00
Matthias
3d3b0938e5 Merge pull request #2101 from freqtrade/backtest_ticker_interval_unset
Backtest ticker interval unset
2019-08-07 14:20:36 +02:00
Matthias
9c5773ca0a Merge pull request #2111 from freqtrade/pyup-update-plotly-4.0.0-to-4.1.0
Update plotly to 4.1.0
2019-08-07 10:13:08 +02:00
Matthias
092776442b Merge pull request #2109 from freqtrade/pyup-update-mkdocs-material-3.1.0-to-4.4.0
Update mkdocs-material to 4.4.0
2019-08-07 09:57:33 +02:00
Matthias
0267976044 Merge pull request #2110 from freqtrade/pyup-update-ccxt-1.18.1008-to-1.18.1021
Update ccxt to 1.18.1021
2019-08-07 09:57:01 +02:00
pyup-bot
5864968ce9 Update plotly from 4.0.0 to 4.1.0 2019-08-07 07:02:25 +00:00
pyup-bot
33bc8a2404 Update ccxt from 1.18.1008 to 1.18.1021 2019-08-07 07:02:19 +00:00
pyup-bot
dfce202034 Update mkdocs-material from 3.1.0 to 4.4.0 2019-08-07 07:02:15 +00:00
Matthias
ea46bb3b84 Merge pull request #2103 from freqtrade/since_int
Since arguments are in milliseconds integer throughout ccxt.
2019-08-07 06:19:26 +02:00
Jonathan Raviotta
8418dfbaed edits for jupyter notebook example 2019-08-06 22:35:14 -04:00
Matthias
caf4580346 Use UTC Timezone for test 2019-08-06 20:23:32 +02:00
Matthias
a90ced1f38 Since arguments are in milliseconds integer throughout ccxt.
Explained here: https://github.com/ccxt/ccxt/issues/5636

fixes #2093
2019-08-06 20:09:09 +02:00
Matthias
6c0c77b3a1 Merge pull request #2096 from freqtrade/fix/cons_buys_1971
Evaluate current candle during backtesting
2019-08-06 13:46:16 +02:00
Matthias
16d4a4723f Merge pull request #2102 from freqtrade/optimize/travis
Update install-script to use parameter
2019-08-06 13:38:32 +02:00
Matthias
327e653fae Merge pull request #2100 from freqtrade/strategy_list_doc
Fix documentation for strategy-list
2019-08-06 13:31:11 +02:00
Matthias
81f773054d Add test to verify ticker_inteval is set 2019-08-06 06:56:08 +02:00
Matthias
7e91a0f4a8 Fail gracefully if ticker-interval is not set 2019-08-06 06:45:44 +02:00
Matthias
9d471f3c9a Fix documentation for strategy-list 2019-08-06 06:32:31 +02:00
Matthias
7e46a9833b Merge pull request #2097 from freqtrade/urllib3
Update urllib to latest version
2019-08-06 06:05:29 +02:00
Matthias
988a0245c2 Update install-script to use parameter
Use --prefix /usr/local for install-script too
2019-08-05 20:37:38 +02:00
Matthias
0376630f7a Update urllib to latest version 2019-08-05 20:25:20 +02:00
Matthias
c7d0329754 Clean up comments of detail-backtests 2019-08-05 20:19:19 +02:00
Matthias
bc2e920ae2 Adjust code to verify "current" candle for buy/sells 2019-08-05 20:07:29 +02:00
Matthias
3721610a63 Add new detailed trade-scenario tests
covers cases raised in #1971
2019-08-05 20:06:42 +02:00
Matthias
e060516cc7 Merge pull request #2049 from jraviotta/conda
Conda / makefile
2019-08-05 19:49:25 +02:00
Matthias
20abd4b833 Merge pull request #2095 from freqtrade/pyup/scheduled-update-2019-08-05
Scheduled weekly dependency update for week 31
2019-08-05 19:28:42 +02:00
Matthias
904381058c Add documentation for conda install 2019-08-05 19:25:43 +02:00
pyup-bot
5e64d629a3 Update coveralls from 1.8.1 to 1.8.2 2019-08-05 15:26:19 +00:00
pyup-bot
d71102c45a Update py_find_1st from 1.1.3 to 1.1.4 2019-08-05 15:26:17 +00:00
pyup-bot
403f7668d5 Update jsonschema from 3.0.1 to 3.0.2 2019-08-05 15:26:16 +00:00
pyup-bot
930c25f7f1 Update scikit-learn from 0.21.2 to 0.21.3 2019-08-05 15:26:11 +00:00
pyup-bot
187d029d20 Update arrow from 0.14.3 to 0.14.4 2019-08-05 15:26:10 +00:00
pyup-bot
9914198a6c Update ccxt from 1.18.992 to 1.18.1008 2019-08-05 15:26:09 +00:00
hroff-1902
c6444a10a8 move roi_space, stoploss_space, generate_roi_table to IHyperOpt 2019-08-05 18:07:25 +03:00
Matthias
383b24ab84 Merge branch 'develop' into align_userdata 2019-08-05 06:55:51 +02:00
hroff-1902
9cbab35de0 colorization by means of termcolor and colorama 2019-08-04 22:54:19 +03:00
Matthias
eeecdd4e5a Merge pull request #2092 from freqtrade/split_analyze_ticker
Split analyze_ticker
2019-08-04 19:37:52 +02:00
Matthias
2af663dccb rename _analyze_ticker_int to _analyze_ticker_internal 2019-08-04 12:55:03 +02:00
Matthias
0be7e2ef70 Merge pull request #2090 from freqtrade/fix/plotting_DB
load_trades_db should give as many columns as possible
2019-08-04 12:52:39 +02:00
Matthias
4d1ce8178c intend if to be clearer 2019-08-04 10:38:37 +02:00
Matthias
c5ccf44750 Remove generate_dataframe from plot_dataframe script 2019-08-04 10:26:04 +02:00
Matthias
e4380b533b Print plot filename so it can be easily opened 2019-08-04 10:25:46 +02:00
Matthias
62262d0bb5 improve docstring of _analyze_ticker_int 2019-08-04 10:21:22 +02:00
Matthias
52d92cba90 Split analyze_ticker and _analyze_ticker_int 2019-08-04 10:20:31 +02:00
Matthias
0df5932593 Merge pull request #2091 from freqtrade/adjust_issuetemplate
add Operating system to issue template
2019-08-04 09:32:56 +02:00
Matthias
d1838dceec Merge pull request #2086 from freqtrade/fix_restricted_markets
Restricted pairs warning
2019-08-04 09:25:59 +02:00
Matthias
c6bd143785 add Operating system to issue template 2019-08-03 20:04:49 +02:00
Matthias
d51fd1a5d0 fix typo 2019-08-03 19:56:41 +02:00
Matthias
c4e30862ee load_trades_db should give as many columns as possible 2019-08-03 19:55:54 +02:00
hroff-1902
3dd6fe2703 wording 2019-08-03 19:44:32 +03:00
hroff-1902
fe796c46c3 test adjusted 2019-08-03 19:13:18 +03:00
hroff-1902
f200f52a16 hyperopt print colorized results 2019-08-03 19:09:42 +03:00
Matthias
d59608f764 adjust some documentation wordings 2019-08-03 17:19:37 +02:00
Matthias
b3e6e710d8 Merge pull request #2084 from hroff-1902/hyperopt-print-params4
Improvements to hyperopt output
2019-08-03 13:24:47 +02:00
Matthias
8ab07e0451 Add FAQ section about restricted markets 2019-08-03 13:22:44 +02:00
Matthias
ad55faafa8 Fix odd test 2019-08-03 13:18:37 +02:00
Matthias
bbd58e772e Warn when using restricted pairs
As noted in https://github.com/ccxt/ccxt/issues/5624, there is currently
no way to detect if a user is impacted by this or not prior to creating
a order.
2019-08-03 13:14:36 +02:00
hroff-1902
e8b2ae0b85 tests adjusted 2019-08-03 11:34:09 +03:00
hroff-1902
13620df717 'with values:' line removed 2019-08-03 11:05:05 +03:00
Matthias
fb103dd162 Merge pull request #2085 from hroff-1902/remove-pytest-warning6
tests: hide deprecation warning due to use of --live
2019-08-03 09:35:22 +02:00
hroff-1902
3b65c986ee wordings fixed 2019-08-03 10:20:20 +03:00
hroff-1902
cad7d9135a tests: hide deprecation warning due to use of --live 2019-08-03 09:24:27 +03:00
hroff-1902
b152d1a7ab docs agjusted, plus minor fixes 2019-08-02 22:23:48 +03:00
hroff-1902
aa8f44f68c improvements to hyperopt output 2019-08-02 22:22:58 +03:00
Matthias
1810d86555 Merge pull request #2080 from freqtrade/add_strategy_docs
docs: Create detailed section about strategy problem analysis
2019-08-02 20:29:09 +02:00
Matthias
39e8e507d9 Merge branch 'develop' into align_userdata 2019-08-02 20:08:26 +02:00
Matthias
3eb571f34c recommended ... 2019-08-02 20:04:18 +02:00
Matthias
e8be357624 Merge pull request #2079 from hroff-1902/hyperopt-print-params3
minor: cleanup in hyperopt
2019-08-02 20:02:46 +02:00
Matthias
32605fa10a small improvements 2019-08-02 19:52:56 +02:00
Matthias
0b9b5f3993 Improve document wording 2019-08-02 19:50:12 +02:00
Matthias
86aa18efe6 Merge pull request #2082 from freqtrade/fix/missintfstring
Fix/missintfstring
2019-08-02 10:27:10 +02:00
Matthias
76d22bc743 Show correct valueerror message 2019-08-02 09:41:24 +02:00
Matthias
01cd30984b Improve wording 2019-08-02 06:47:03 +02:00
Matthias
fceb411154 Create detailed section about strategy problem analysis 2019-08-02 06:44:31 +02:00
Jonathan Raviotta
0413598d7b adding environment.yml for conda builds 2019-08-01 19:30:45 -04:00
hroff-1902
3ccfe88ad8 tests adjusted 2019-08-01 23:57:50 +03:00
hroff-1902
065ebd39ef cleanup in hyperopt 2019-08-01 23:57:26 +03:00
Matthias
bcccdda7c0 Merge branch 'develop' into align_userdata 2019-08-01 19:33:45 +02:00
Matthias
4c005e7086 Merge pull request #2075 from hroff-1902/hyperopt-cleanup2
minor: hyperopt cleanups and output improvements
2019-08-01 07:08:50 +02:00
Matthias
2a141af42e Only create userdir when explicitly requested 2019-07-31 19:39:54 +02:00
Matthias
472690a55f Merge pull request #2073 from freqtrade/update/setuppy
Improve setup.py to allow "extras" installations
2019-07-31 19:25:21 +02:00
Matthias
8cef567abc create and use hyperopt-results folder 2019-07-31 07:10:17 +02:00
Matthias
5d22d541f2 Add forgotten directory 2019-07-31 06:58:26 +02:00
Matthias
c3d14ab9b9 don't use "folder" ... 2019-07-31 06:54:45 +02:00
Matthias
0488525888 Fix some documentation errors 2019-07-31 06:49:25 +02:00
Matthias
b8713a515e Merge pull request #2071 from freqtrade/new-dev
New develop version 2019.7-dev
2019-07-30 11:31:22 +02:00
hroff-1902
b976f24672 tests adjusted 2019-07-30 11:47:46 +03:00
hroff-1902
8f1f416a52 hyperopt cleanup and output improvements 2019-07-30 11:47:28 +03:00
Matthias
0d9d23a888 Merge pull request #2070 from freqtrade/new_release
New release 2019.7
2019-07-30 06:19:43 +02:00
Matthias
a5fb3e08f7 Merge pull request #2072 from freqtrade/improve_dev_docs
Improve release documentation
2019-07-30 06:12:47 +02:00
Matthias
59caff8fb1 UPdate developer docs 2019-07-29 20:57:57 +02:00
Matthias
f825e81d0e developers need all dependencies! 2019-07-29 20:54:35 +02:00
Matthias
7bea0007c7 Allow installing via submodules
freqtrade can be installed using `pip install -e .[all]` to include all
dependencies
2019-07-29 20:53:26 +02:00
Matthias
8dd8addd3a Sort requirements-dev file 2019-07-29 20:52:38 +02:00
Matthias
e14dd4974f Improve release documentation 2019-07-29 20:32:28 +02:00
Matthias
7a97995d81 2017.7-dev version bump 2019-07-29 20:30:14 +02:00
Matthias
e64509f1b4 Version bump to 2019.7 2019-07-29 20:27:50 +02:00
Matthias
0ac5440fc2 Merge pull request #2069 from freqtrade/pyup/scheduled-update-2019-07-29
Scheduled weekly dependency update for week 30
2019-07-29 20:07:44 +02:00
Matthias
fde3411c8b Merge branch 'develop' into pyup/scheduled-update-2019-07-29 2019-07-29 19:39:09 +02:00
Matthias
8066aba6fe Merge pull request #2044 from freqtrade/pyup/scheduled-update-2019-07-22
Scheduled weekly dependency update for week 29
2019-07-29 19:37:28 +02:00
pyup-bot
5ba0aa8082 Update plotly from 3.10.0 to 4.0.0 2019-07-29 15:25:16 +00:00
pyup-bot
3e95b7d8a5 Update mypy from 0.711 to 0.720 2019-07-29 15:25:15 +00:00
pyup-bot
0f632201e0 Update pytest from 5.0.0 to 5.0.1 2019-07-29 15:25:14 +00:00
pyup-bot
ebca1e4357 Update flake8 from 3.7.7 to 3.7.8 2019-07-29 15:25:12 +00:00
pyup-bot
a3620c60ad Update flask from 1.0.3 to 1.1.1 2019-07-29 15:25:11 +00:00
pyup-bot
9f70ebecf1 Update arrow from 0.14.2 to 0.14.3 2019-07-29 15:25:10 +00:00
pyup-bot
0fd91e4450 Update sqlalchemy from 1.3.5 to 1.3.6 2019-07-29 15:25:09 +00:00
pyup-bot
fe088dc8c3 Update ccxt from 1.18.860 to 1.18.992 2019-07-29 15:25:08 +00:00
pyup-bot
5a6e20a6aa Update pandas from 0.24.2 to 0.25.0 2019-07-29 15:25:07 +00:00
pyup-bot
02bfe2dad3 Update numpy from 1.16.4 to 1.17.0 2019-07-29 15:25:06 +00:00
Matthias
50edd4cfdd Merge pull request #2046 from freqtrade/pyup/fix_update_07_22
Pyup/fix update 07 22
2019-07-29 13:28:40 +02:00
Matthias
03e60b9ea4 Rename folder_Operations to directory_operations 2019-07-29 06:15:49 +02:00
Matthias
0677472c56 Merge pull request #2066 from freqtrade/hyperopt/tests
Fix some hyperopt tests
2019-07-28 19:33:18 +02:00
Matthias
c1bc1e3137 Add documentation for user_data_dir 2019-07-28 15:34:49 +02:00
Matthias
b691fb7f2d Fix some hyperopt tests 2019-07-28 15:19:17 +02:00
Matthias
73ac98da80 Small fixes while tsting 2019-07-28 15:11:41 +02:00
Matthias
14b43b504b Use user_data_dir for hyperopt 2019-07-28 15:05:17 +02:00
Matthias
a3c605f147 PairListResovler to use user_data_dir 2019-07-28 14:58:06 +02:00
Matthias
333413d298 Add default_conf to strategy tests 2019-07-28 14:58:06 +02:00
Matthias
9de8d7276e have strategyresolver use user_data_dir 2019-07-28 14:57:05 +02:00
Matthias
432b106d58 Improve docstring, remove unneeded method 2019-07-28 14:57:05 +02:00
Matthias
2c7a248307 Use user_data_dir in hyperopt 2019-07-28 14:57:05 +02:00
Matthias
113947132c user_data_dir is PATH in config, not str 2019-07-28 14:57:05 +02:00
Matthias
0a253d66d0 Remove os.path from hyperopt 2019-07-28 14:57:05 +02:00
Matthias
ae0e001187 Fix some bugs in tests 2019-07-28 14:57:05 +02:00
Matthias
eab82fdec7 plot-scripts use user_data_dir 2019-07-28 14:57:05 +02:00
Matthias
da755d1c83 Remove obsolete variable 2019-07-28 14:57:05 +02:00
Matthias
1b2581f0cb Add user_data_dir to configuration 2019-07-28 14:57:05 +02:00
Matthias
56c8bdbaa2 Test create-userdir command line option 2019-07-28 14:57:05 +02:00
Matthias
23435512c4 Add create-userdir command to initialize a user directory 2019-07-28 14:57:05 +02:00
Matthias
6c3a0eb1d6 add create_userdir function 2019-07-28 14:55:19 +02:00
Matthias
c85cd13ca1 Change default backtest result to "backtest_results" - backtest_data is
misleading
2019-07-28 14:55:19 +02:00
Matthias
e4b994381b Merge pull request #2060 from hroff-1902/improve-logging
Improve logging: output divider in logs between throttles
2019-07-28 14:45:16 +02:00
Matthias
de2a2473f5 Merge pull request #2050 from mrsegen/patch-1
Resolve issue #2042
2019-07-28 14:11:03 +02:00
Matthias
e6b036b413 Merge pull request #2064 from hroff-1902/remove-pytest-warning4
get rid of pandas warning in pytest
2019-07-28 14:10:16 +02:00
Leif Segen
08a3d26328 Update bot-usage.md
Update in response to feedback.
2019-07-27 18:35:21 -05:00
hroff-1902
bc299067aa get rid of pandas warning in pytest 2019-07-27 23:24:06 +03:00
Matthias
908a0277e5 Merge pull request #2062 from hroff-1902/remove-pytest-warning1
minor: eliminate warnings in pytest
2019-07-26 14:40:11 +02:00
hroff-1902
c2deb1db25 eliminate warnings in pytest when testing handling of the deprecated strategy interfaces 2019-07-26 14:23:00 +03:00
Matthias
16716ad028 Merge pull request #2057 from freqtrade/refactor/argument_location
Move argument definitions to their own file
2019-07-26 06:19:04 +02:00
Matthias
fef8fe8525 Merge pull request #2055 from freqtrade/get_order_exception
Get order exception
2019-07-26 06:17:15 +02:00
Matthias
3d5268368f Merge pull request #2059 from hroff-1902/docs-minor-fixes
Docs minor fixes
2019-07-26 06:08:09 +02:00
Matthias
20b51da180 Merge pull request #2056 from freqtrade/deprecate_live_bt
Deprecate live bt
2019-07-26 06:02:27 +02:00
hroff-1902
785a7a22bc output divider in logs between throttles 2019-07-26 04:02:34 +03:00
hroff-1902
1ac4a7e116 rendering for a Note fixed 2019-07-26 02:59:10 +03:00
hroff-1902
327e505273 non-working link to misc.py removed 2019-07-26 02:57:51 +03:00
hroff-1902
bf1c197a37 import errors fixed 2019-07-26 02:21:31 +03:00
Matthias
3c3a902a69 Move argument definitions to their own file 2019-07-25 20:42:08 +02:00
Matthias
0c14176cd7 Deprecate --live 2019-07-25 20:36:19 +02:00
Matthias
7ee971c3e3 Add simple method to add deprecations to cmd line options 2019-07-25 20:35:20 +02:00
Matthias
098a23adc6 Merge pull request #2048 from hroff-1902/hyperopt-loss-onlyprofit2
minor: add OnlyProfitHyperOptLoss
2019-07-25 20:18:05 +02:00
hroff-1902
10c69387fd docs adjusted 2019-07-25 21:07:17 +03:00
Matthias
4b8b2f7c5b Use raise xxx from e to have a nicer traceback 2019-07-25 20:06:20 +02:00
Matthias
e1b8ff798f Add test to verify that get_order was successfully cought 2019-07-25 20:05:48 +02:00
Matthias
05b1854946 Gracefully handle InvalidOrderException. 2019-07-25 19:56:59 +02:00
hroff-1902
f58668fd67 test added 2019-07-25 20:54:12 +03:00
Matthias
e8843c31e6 Merge pull request #2045 from hroff-1902/add-hyperopt-path
add --hyperopt-path option
2019-07-25 10:42:23 +02:00
hroff-1902
05be16e9e1 helpstring alignment fixed 2019-07-25 08:49:33 +03:00
hroff-1902
e9b77298a7 max() removed 2019-07-25 08:17:41 +03:00
Matthias
a0cecc6c52 Fix test after pandas 0.25.0 update 2019-07-24 06:29:50 +02:00
Leif Segen
cf6113068c Resolve issue #2042
Issue #2042 noted that the terminal output from `setup.sh` regarding an option use the bot was missing from the documentation. This has been added.
2019-07-23 22:52:42 -05:00
hroff-1902
0c2c094db6 minor: add OnlyProfitHyperOptLoss 2019-07-23 18:51:24 +03:00
Matthias
60cf56e235 Adapt tests to always provide message for ccxt exceptions
Changes introduced in https://github.com/ccxt/ccxt/pull/5470
2019-07-22 20:59:49 +02:00
Matthias
482f5f7a26 Update plotly dependencies (will break 3.x installations) 2019-07-22 20:39:38 +02:00
hroff-1902
04382d4b44 add --hyperopt-path option 2019-07-22 20:23:18 +03:00
pyup-bot
44b2261c34 Update plotly from 3.10.0 to 4.0.0 2019-07-22 15:23:13 +00:00
pyup-bot
76b9d781ee Update mypy from 0.711 to 0.720 2019-07-22 15:23:12 +00:00
pyup-bot
bd0faaf702 Update pytest from 5.0.0 to 5.0.1 2019-07-22 15:23:11 +00:00
pyup-bot
e0cd34c9e1 Update flake8 from 3.7.7 to 3.7.8 2019-07-22 15:23:09 +00:00
pyup-bot
6c41ca4b8c Update flask from 1.0.3 to 1.1.1 2019-07-22 15:23:08 +00:00
pyup-bot
7add015a75 Update sqlalchemy from 1.3.5 to 1.3.6 2019-07-22 15:23:07 +00:00
pyup-bot
d6b6e59ab8 Update ccxt from 1.18.860 to 1.18.965 2019-07-22 15:23:06 +00:00
pyup-bot
a213674a98 Update pandas from 0.24.2 to 0.25.0 2019-07-22 15:23:05 +00:00
Matthias
41f24898e5 Merge pull request #2043 from freqtrade/combine/resolvers
Combine/resolvers
2019-07-22 06:19:31 +02:00
Matthias
d2ad32eef8 partially revert last commit(DefaultStrategy import IS needed).
* don't run functions in travis in a way we don't support
2019-07-21 19:56:43 +02:00
Matthias
1fea6d394a Import DefaultStrategy from the correct file 2019-07-21 19:31:50 +02:00
Matthias
dcddfce5bc Fix small mistakes 2019-07-21 19:21:50 +02:00
Matthias
e6528be63d Config is not optional for hyperopt resolver 2019-07-21 16:20:45 +02:00
Matthias
08ca260e82 Simplify return valuef rom _load_object 2019-07-21 15:29:17 +02:00
Matthias
88eb93da52 Fix base64 strategy test to make sure strategy was loaded via base64 2019-07-21 15:16:19 +02:00
Matthias
b35efd96dc Extract load_object from multiple paths to iResolver 2019-07-21 15:03:12 +02:00
Matthias
89db5c6bab Extract strategy-specific stuff from search logic
will allow extracting all to IResolver
2019-07-21 14:52:59 +02:00
Matthias
790838d897 Merge pull request #2024 from freqtrade/custom_hyperopt_loss
Custom hyperopt loss function (and sharpe-ratio)
2019-07-20 12:48:26 +02:00
Matthias
4d0cf9ec8e Merge pull request #2033 from hroff-1902/remove-dynamic-whitelist-option
remove deprecated --dynamic-whitelist option
2019-07-19 06:38:54 +02:00
Matthias
299f673a8e Merge pull request #2029 from freqtrade/create_datadir_pathlib
[minor] Convert create_datadir to Pathlib
2019-07-19 06:36:11 +02:00
Matthias
fa8904978b Don't use --hyperopt-loss-class, but --hyperopt-loss instead 2019-07-19 06:31:49 +02:00
hroff-1902
4a144d1c18 docs: description for whitelist and blacklist fixed 2019-07-18 22:43:36 +03:00
Matthias
415c96204a Merge pull request #2035 from hroff-1902/cleanup-arguments
minor: cleanup Arguments
2019-07-18 20:56:51 +02:00
hroff-1902
7af24dc486 cleanup Arguments: name attrs and methods as non-public 2019-07-18 21:43:40 +03:00
Matthias
e01c0ab4d6 Improve doc wording 2019-07-18 20:02:28 +02:00
Matthias
8b4827ad85 Convert create_datadir to Pathlib 2019-07-18 19:48:19 +02:00
hroff-1902
43d5ec2d4a docs: removed historical excursus which can confuse new users 2019-07-18 18:15:51 +03:00
hroff-1902
75a0998ed2 docs: restore link to #dynamic-pairlists. 2019-07-18 18:08:02 +03:00
Matthias
fbd229810f Merge pull request #2034 from hroff-1902/option-version
minor: add -V alias for --version
2019-07-18 14:06:05 +02:00
Matthias
d27e791f32 Merge pull request #2031 from freqtrade/randomize_tests_again
Randomize tests again
2019-07-18 13:53:48 +02:00
hroff-1902
50d2950e6b add -V alias for --version 2019-07-18 12:12:34 +03:00
hroff-1902
96564d0dad remove deprecated --dynamic-whitelist option 2019-07-18 10:45:47 +03:00
Matthias
3e5abd18ca Randomize tests again
this used to be enabled, but the plugin changed how it works
> From v1.0.0 onwards, this plugin no longer randomises tests by default.
2019-07-18 06:56:52 +02:00
Matthias
545ff6f9f1 Fix typo 2019-07-18 06:31:44 +02:00
Matthias
49b95fe008 use Path.cwd() instead of odd parent.parent.parent structure 2019-07-17 20:52:17 +02:00
Matthias
b8704e12b7 Add sample hyperopt loss file 2019-07-17 20:51:44 +02:00
Matthias
639a4d5cf7 Allow importing interface from hyperopt.py 2019-07-17 07:15:43 +02:00
Matthias
0e500de1a0 Add sample loss and improve docstring 2019-07-17 06:32:24 +02:00
Matthias
c5b244419d Merge branch 'develop' into custom_hyperopt_loss 2019-07-17 06:27:42 +02:00
Matthias
8ccfc0f316 Remove unused variables 2019-07-17 06:24:40 +02:00
Matthias
e126c55a5a Merge pull request #2023 from hroff-1902/refactor/config3
minor: configuration cleanup
2019-07-17 06:20:21 +02:00
hroff-1902
be26ba8f8f rename _load_*_config() methods to _process_*_options() 2019-07-16 23:00:19 +03:00
Matthias
1493771087 improve description 2019-07-16 19:40:42 +02:00
Matthias
192d7ad735 Add column description to hyperopt documentation 2019-07-16 06:54:38 +02:00
Matthias
12679da5da Add test for hyperoptresolver 2019-07-16 06:50:25 +02:00
Matthias
ec49b22af3 Add sharpe ratio hyperopt loss 2019-07-16 06:45:13 +02:00
Matthias
d23179e25c Update hyperopt-loss to use resolver 2019-07-16 06:27:43 +02:00
Matthias
7d62bb8c53 Revert --clean argument to --continue 2019-07-16 05:51:26 +02:00
Matthias
c4e55d78d5 reword documentation 2019-07-16 05:41:39 +02:00
Matthias
07a1c48e8c Fix wrong intendation for custom-hyperopt check 2019-07-15 23:14:07 +02:00
Matthias
7be25313a5 Add some mypy ignores 2019-07-15 22:59:28 +02:00
Matthias
55e8092cbf Add sharpe ratio as loss function 2019-07-15 22:52:33 +02:00
Matthias
e5170582de Adapt tests to new loss-function method 2019-07-15 22:45:14 +02:00
Matthias
710443d200 Add documentation for custom hyperopt 2019-07-15 21:38:49 +02:00
Matthias
2a20423be6 Allow loading custom hyperopt loss functions 2019-07-15 21:35:42 +02:00
hroff-1902
8096a1fb04 minor: configuration cleanup 2019-07-15 22:17:57 +03:00
Matthias
2fedae6060 Move unnecessary things out of generate_optimizer 2019-07-15 20:31:55 +02:00
Matthias
b1b4048f97 Add test for hyperopt 2019-07-15 20:28:02 +02:00
Matthias
107f00ff8f Add hyperopt option to clean temporary pickle files 2019-07-15 20:17:15 +02:00
Matthias
5144e98a82 Merge pull request #2015 from hroff-1902/refactor/config2
Make configuration a module
2019-07-15 19:41:57 +02:00
Matthias
210d70b0c7 Merge pull request #2022 from freqtrade/fix/2020
Remove wrong import in legacy startup sript
2019-07-15 19:36:16 +02:00
Matthias
3ae94520c3 Merge pull request #2019 from freqtrade/small/cleanups
[Minor] Small code cleanups
2019-07-15 17:29:32 +02:00
Matthias
cbe25178d7 Merge pull request #2009 from hroff-1902/fix-2008
fix #2008
2019-07-15 10:55:33 +02:00
Matthias
a3b7e1f774 Update wording in docs 2019-07-15 06:59:20 +02:00
Matthias
bbab5fef0c Remove wrong import in legacy startup sript 2019-07-15 06:27:43 +02:00
hroff-1902
007703156b do not export ARGS_* from configuration 2019-07-15 01:55:35 +03:00
hroff-1902
9cae2900d4 get rid of patched_configuration_open() in tests 2019-07-15 01:44:25 +03:00
hroff-1902
876cae2807 docs adjusted to current default values; more detailed description of --eps and --dmmp added 2019-07-14 22:48:15 +03:00
Matthias
e955b1ae09 Use log_has_re instead of plain regex filters for log messages 2019-07-14 20:21:57 +02:00
Matthias
dadf8adb3e Replace filter usage 2019-07-14 20:14:35 +02:00
Matthias
4238ee090d Cleanup some code
after deepcode.ai suggestions
2019-07-14 20:05:28 +02:00
hroff-1902
65f77306d3 using logger.debug, info was too noisy 2019-07-14 21:00:48 +03:00
hroff-1902
efbc7cccb1 enable --dmmp for hyperopt 2019-07-14 20:56:17 +03:00
Matthias
f0206a90b1 Merge pull request #2018 from freqtrade/market_orders_with_price
Market orders with price
2019-07-14 19:29:44 +02:00
Matthias
a8f3f2bc1a Extend test to cover market orders with price too 2019-07-14 14:23:23 +02:00
Matthias
25822d1717 Add empty options dict to all tests using create_order 2019-07-14 14:18:30 +02:00
Matthias
9887cb997e Check if Price is needed for market orders
This is currently the case for:
cex, coinex, cointiger, fcoin, fcoinjp, hadax, huobipro, huobiru, uex,
2019-07-14 14:17:09 +02:00
Matthias
7e2be96516 Merge pull request #2017 from hroff-1902/resolver-filename
minor: improvements to resolvers
2019-07-14 13:37:00 +02:00
Matthias
2e1269c474 Revert comment for Exception that's not changed 2019-07-14 13:30:57 +02:00
hroff-1902
b499e74502 minor improvements to resolvers 2019-07-12 23:45:49 +03:00
Matthias
7536f6adbd Merge pull request #2004 from freqtrade/doc/starting
Don't run the bot with python3 freqtrade
2019-07-12 09:02:41 +02:00
Matthias
4be02bc207 Merge pull request #2014 from hroff-1902/fix-2013
Fix #2013
2019-07-12 08:14:46 +02:00
hroff-1902
bbfbd87a9f move create_datadir() to separate file 2019-07-12 03:31:36 +03:00
hroff-1902
7e103e34f8 flake happy 2019-07-12 01:41:09 +03:00
hroff-1902
94e6fb89b3 tests happy 2019-07-12 00:49:23 +03:00
hroff-1902
1bdffcc73b make configuration a sep. module, including arguments 2019-07-12 00:49:23 +03:00
hroff-1902
e993e010f4 Fix #2013 2019-07-11 23:02:57 +03:00
Matthias
bc1b5f477d Merge pull request #2010 from freqtrade/fix/docs
Fix non-rendering docs
2019-07-11 00:51:54 +02:00
Matthias
6a43128019 Fix non-rendering docs 2019-07-10 08:49:42 +02:00
hroff-1902
c474e2ac86 fix #2008 2019-07-10 01:53:40 +03:00
Matthias
7763b4cf5b Merge pull request #2007 from hroff-1902/fix-2005
fix #2005
2019-07-09 10:33:42 +02:00
hroff-1902
322227bf67 fix #2005 2019-07-09 00:59:34 +03:00
Matthias
27cb1a4174 Add FAQ section explaining "module not found" errors 2019-07-08 17:08:14 +02:00
Matthias
c4fb0fd6ca Don't run the bot with python3 freqtrade
* we can either use `python3 -m freqtrade ...` or `freqtrade ...` - and
shorter should be better.
2019-07-08 17:01:25 +02:00
Matthias
87ff1e8cb0 Merge pull request #2002 from hroff-1902/refactor/arguments2
minor: refactoring arguments and configuration
2019-07-08 16:56:25 +02:00
Matthias
61b24180f0 Merge pull request #1998 from freqtrade/fix/pax_balance
Support all types of pairs for /balance
2019-07-08 16:31:57 +02:00
hroff-1902
15d2cbd6df loggers: wording improved 2019-07-07 10:17:01 +03:00
hroff-1902
f7a2428deb max_open_trades may be -1 2019-07-07 10:13:00 +03:00
Matthias
6c2415d32f Rename parameters from pair to curr 2019-07-07 06:36:35 +02:00
hroff-1902
84d3868994 rename loglevel --> verbosity, because it's not logging level 2019-07-07 02:53:13 +03:00
hroff-1902
f89b2a18e0 fix loglevel in conftest -- it's actually the verbosity level 2019-07-07 02:42:03 +03:00
hroff-1902
8114d790a5 commit forgotten loggers.py 2019-07-07 01:40:52 +03:00
hroff-1902
082065cd50 minor cosmetics in arguments.py 2019-07-07 01:20:26 +03:00
hroff-1902
a65b5f8e02 make some more arguments positive integers 2019-07-07 01:10:41 +03:00
hroff-1902
d8f133aaf3 remove duplicated loglevel option 2019-07-07 00:51:01 +03:00
hroff-1902
8e272e5774 minor: cosmetics in arguments.py 2019-07-07 00:48:39 +03:00
hroff-1902
ce2a5b2838 move loggers setup out of configuration 2019-07-07 00:31:48 +03:00
Matthias
bcf2bc6f8c Merge pull request #1999 from freqtrade/minor/datadir
minor - Folders are not Directories
2019-07-04 20:25:44 +02:00
Matthias
17800c8ca5 Remove folder references (it's directory!) 2019-07-04 19:57:38 +02:00
Matthias
5c6039fd8b Fix #1997 - rename folder to dir 2019-07-04 19:53:50 +02:00
Matthias
40fe2d2c16 Test get_valid_pair_combination 2019-07-03 20:20:12 +02:00
Matthias
1bcf2737fe Add tests for new behaviour 2019-07-03 20:07:26 +02:00
Matthias
fcdbe846e5 Fix #1981 - Detect reverted currency pairs 2019-07-03 20:06:50 +02:00
Matthias
d055dc0c6e Merge pull request #1993 from freqtrade/refactor/arguments
Remove duplicate keyword from arguments
2019-07-03 12:01:41 +02:00
Matthias
e19c192570 Merge pull request #1994 from hroff-1902/fix-validate_timeframes
fix validate_timeframes()
2019-07-03 11:11:28 +02:00
hroff-1902
b80cef964e fix validate_timeframes(); test added 2019-07-03 11:18:39 +03:00
Matthias
b43594e4eb Merge pull request #1996 from hroff-1902/fix/1995
fix #1995
2019-07-03 06:44:23 +02:00
Matthias
0908863e07 Merge pull request #1987 from freqtrade/plot_script_changes
Plot script changes
2019-07-03 06:43:34 +02:00
Matthias
b3644f7fa0 Fix typo in docstring 2019-07-03 06:26:39 +02:00
hroff-1902
d41b8cc96e catch ccxt.BaseError 2019-07-03 05:13:41 +03:00
hroff-1902
91fb9d0113 fix #1995 2019-07-03 05:02:44 +03:00
Matthias
85ac217abc Remove duplicate keyword from arguments 2019-07-02 20:33:27 +02:00
Matthias
687381f42c Merge pull request #1991 from freqtrade/pyup/scheduled-update-2019-07-01
Scheduled weekly dependency update for week 26
2019-07-01 22:06:29 +02:00
pyup-bot
c91add203d Update mypy from 0.710 to 0.711 2019-07-01 18:28:32 +00:00
pyup-bot
1e4f459a26 Update pytest from 4.6.3 to 5.0.0 2019-07-01 18:28:31 +00:00
pyup-bot
06ad04e5fa Update ccxt from 1.18.805 to 1.18.860 2019-07-01 18:28:30 +00:00
Matthias
80bf5c9756 Merge pull request #1988 from freqtrade/fix/timeframes_crash
Gracefully fail on timeframes exception
2019-07-01 11:19:37 +02:00
Matthias
0d601fd111 Remove logger message 2019-07-01 06:18:28 +02:00
Matthias
01904d3c1e Test not having timeframe available on exchange object 2019-06-30 20:30:57 +02:00
Matthias
0c7d14fe50 Check if timeframes is available and fail gracefully otherwise 2019-06-30 20:30:31 +02:00
Matthias
cdeb649d0b Merge pull request #1967 from freqtrade/modify/setup.sh
Modify handling of pip in setup.sh
2019-06-30 19:52:50 +02:00
Matthias
79ae3c2f2e Merge pull request #1977 from hroff-1902/cleanup/freqtradebot
partial freqtradebot cleanup
2019-06-30 19:52:35 +02:00
Matthias
59818af69c Remove common_datearray function 2019-06-30 13:18:22 +02:00
Matthias
44e0500958 Test init_plotscript 2019-06-30 13:01:12 +02:00
Matthias
db59d39e2c Don't use class for plotting
This will allow easy usage of the methods from jupter notebooks
2019-06-30 11:08:02 +02:00
Matthias
587d71efb5 Test generate_profit_plot 2019-06-30 10:47:55 +02:00
Matthias
c7a4a16eec Create generate_plot_graph 2019-06-30 10:31:36 +02:00
Matthias
0b517584aa Use add_profit in script 2019-06-30 10:26:53 +02:00
Matthias
5a11ffcad8 Add test for add_profit 2019-06-30 10:24:10 +02:00
Matthias
0a184d380e create add_profit function 2019-06-30 10:14:33 +02:00
Matthias
6b387d320e extract combine_tickers to btanalysis 2019-06-30 10:04:43 +02:00
Matthias
348513c151 Improve formatting of plotting.py 2019-06-30 09:47:07 +02:00
Matthias
0d5e94b147 Rename generate_row to add_indicators 2019-06-30 09:44:50 +02:00
Matthias
88545d882c Use FTPlots class in plot-scripts 2019-06-30 09:42:10 +02:00
Matthias
42ea0a19d2 create FTPlots class to combine duplicate script code 2019-06-30 09:41:43 +02:00
Matthias
c87d27048b align plot_profit to plot_dataframe 2019-06-30 09:28:49 +02:00
Matthias
700bab7279 Rename generate_plot_file to store_plot_file 2019-06-30 09:28:34 +02:00
Matthias
c3db4ebbc3 Revise plot_profit to use pandas functions where possible 2019-06-29 20:52:33 +02:00
Matthias
8aa327cb8a Add load_trades abstraction (to load trades from either DB or file) 2019-06-29 20:52:23 +02:00
Matthias
4218d569de Only read trades once 2019-06-29 20:41:22 +02:00
Matthias
e50eee59cf Seperate plot-name generation and plotting 2019-06-29 20:38:49 +02:00
Matthias
4506832925 Update docstring 2019-06-29 20:07:25 +02:00
Matthias
a0cdc63a5d Merge pull request #1984 from asmodehn/bitstamp_bad
adding bitstamp to list of bad exchanges.
2019-06-29 19:51:01 +02:00
Matthias
79b4e2dc85 Rename generate_graph to generate_candlestick_graph 2019-06-29 17:23:33 +02:00
Matthias
edd3fc8825 Add test for create_cum_profit 2019-06-29 17:22:47 +02:00
AlexV
e8796e009c adding bitstamp to list of bad exchanges. 2019-06-29 17:20:10 +02:00
Matthias
044be3b93e Add create_cum_profit column 2019-06-29 16:57:04 +02:00
Matthias
0436811cf0 Use mode OTHER, nto backtesting 2019-06-28 06:47:40 +02:00
Matthias
152e138c17 Merge pull request #1979 from hroff-1902/fix/1978
fix #1978
2019-06-28 06:04:32 +02:00
hroff-1902
4f5e212f87 fix #1978 2019-06-28 01:01:51 +03:00
hroff-1902
21bf01a24c partial freqtradebot cleanup 2019-06-27 22:29:17 +03:00
Matthias
16a9e6b72f Improve install documentation 2019-06-27 19:51:04 +02:00
Matthias
700bc087d3 Merge pull request #1952 from hroff-1902/fix/1948
Fix #1948
2019-06-27 19:36:06 +02:00
Matthias
8b99348e98 Merge pull request #1975 from freqtrade/fix/dry_run_bal
Show different message for balance during dry-run
2019-06-27 19:34:51 +02:00
Matthias
045f34e851 Merge pull request #1974 from hroff-1902/fix/1963
fix #1963
2019-06-27 19:34:17 +02:00
hroff-1902
e5a8030dd7 comment added 2019-06-27 16:42:10 +03:00
Matthias
6643b83afe Update tests to test both balance versions 2019-06-27 07:06:35 +02:00
Matthias
98681b78b4 Show ifferent message for balance in dry-run 2019-06-27 07:06:11 +02:00
Matthias
f8dd0b0cb3 Use parenteses instead of \ seperators 2019-06-27 06:32:26 +02:00
Matthias
f04d49886b Add test to verify behaviour if currency in fee-dict is None 2019-06-27 06:29:18 +02:00
Matthias
3043a8d9c9 Be more explicit about what's missing 2019-06-27 06:20:22 +02:00
Matthias
4459fdf1b1 Merge pull request #1961 from freqtrade/feat/config_refactor
Argument handling refactor
2019-06-27 06:06:23 +02:00
Matthias
086d690df7 Merge pull request #1973 from hroff-1902/minor-typos-1
minor: couple of typos fixed
2019-06-27 05:49:58 +02:00
hroff-1902
05d93cda16 fix #1963 2019-06-27 01:03:38 +03:00
hroff-1902
6fc6eaf742 minor: couple of typos fixed 2019-06-26 22:23:16 +03:00
Matthias
596cee2dc1 Merge pull request #1972 from freqtrade/update_qtpylib
Update qtpylib from source
2019-06-26 20:34:28 +02:00
Matthias
1d5c3f34ae Update qtpylib from source 2019-06-26 20:00:16 +02:00
Matthias
ca7080c2bb Merge pull request #1958 from freqtrade/new_release_dev
Version bump develop
2019-06-26 06:11:00 +02:00
Matthias
21f6493b02 Merge pull request #1957 from freqtrade/new_release
New release - 2019.6
2019-06-26 06:05:43 +02:00
Matthias
a89112a133 Merge pull request #1969 from freqtrade/developer_doc_improve
[minor] Improve developer-document
2019-06-25 07:04:06 +02:00
Matthias
353437bbd1 07 is July!! 2019-06-24 21:08:40 +02:00
Matthias
8e92fc62a3 Use correct new versioning now 2019-06-24 20:18:06 +02:00
Matthias
c106534663 Improve developer-document
to include a note to keep both branches uptodate while creating a changelog.

Cost me ~5 minutes doing the 2019.6 release...
2019-06-24 20:13:40 +02:00
Matthias
b92c6cdf35 Cleanup arguments and test_arguments 2019-06-24 20:10:50 +02:00
Matthias
ca5093901b Use build_args for plot script 2019-06-24 20:08:17 +02:00
Matthias
ba7a0dde06 Use build_args for download script 2019-06-24 20:08:17 +02:00
Matthias
27798c1683 Remove main_options 2019-06-24 20:08:15 +02:00
Matthias
ee312ac230 Use build_args for plot_dataframe script 2019-06-24 20:07:04 +02:00
Matthias
7e82be53cd Use build_args to build subcomand arguments 2019-06-24 20:05:17 +02:00
Matthias
7017e46ba1 Add dict with all possible cli arguments 2019-06-24 20:05:13 +02:00
Matthias
7166674d6c Move check_int_positive out of arguments class 2019-06-24 19:55:16 +02:00
Matthias
e1daf02735 UPdate version for develop 2019-06-24 19:46:39 +02:00
Matthias
56e6294873 Version bump to 2019.6 2019-06-24 19:44:14 +02:00
Matthias
1b15e5dd64 Merge branch 'master' into new_release 2019-06-24 19:43:59 +02:00
Matthias
31a2aac627 Merge pull request #1959 from freqtrade/split_btanalysis_load_trades
Split btanalysis load trades
2019-06-24 19:41:56 +02:00
Matthias
158569f5e8 Merge pull request #1968 from freqtrade/pyup/scheduled-update-2019-06-24
Scheduled weekly dependency update for week 25
2019-06-24 19:26:00 +02:00
Matthias
e83f8941a1 Fix documentation grammar 2019-06-24 19:20:42 +02:00
pyup-bot
d6dbb21a34 Update mypy from 0.701 to 0.710 2019-06-24 15:24:09 +00:00
pyup-bot
90ada0649c Update wrapt from 1.11.1 to 1.11.2 2019-06-24 15:24:08 +00:00
pyup-bot
e8429bd230 Update sqlalchemy from 1.3.4 to 1.3.5 2019-06-24 15:24:07 +00:00
pyup-bot
5a30f0462f Update ccxt from 1.18.725 to 1.18.805 2019-06-24 15:24:06 +00:00
Matthias
11d39bb0d3 Improve wording 2019-06-24 17:20:41 +02:00
Matthias
a517779dd7 Merge pull request #1964 from hroff-1902/fix-help-strings-2
minor: fix help strings
2019-06-24 14:33:46 +02:00
Matthias
eba7327058 Merge branch 'develop' into split_btanalysis_load_trades 2019-06-24 07:15:14 +02:00
Matthias
1b156e0f34 Don't install python to a system, it's error-prone and may not work 2019-06-24 07:10:24 +02:00
Matthias
c1ee5d69c9 Try to get travis cache to work correctly 2019-06-24 07:09:54 +02:00
Matthias
1f8dc7f845 Merge pull request #1936 from freqtrade/fix/validate_dataframe
Properly warn if data is incomplete
2019-06-24 06:50:48 +02:00
Matthias
a07653a6cc Merge branch 'develop' into fix/validate_dataframe 2019-06-24 06:21:08 +02:00
Matthias
c9a76be532 Merge pull request #1943 from freqtrade/fix/tests_windows
Fix tests on windows
2019-06-24 06:18:17 +02:00
Matthias
9d2b6db97b Merge pull request #1954 from freqtrade/fix/stoploss_cancel_error
Trailing stoploss cancel orders should be handled gracefully
2019-06-24 06:17:44 +02:00
Matthias
12d2db5e7b Merge pull request #1966 from hroff-1902/fix-docstrings
minor: typos in docstrings fixed
2019-06-24 06:17:11 +02:00
Matthias
1add8ecd0c Merge pull request #1960 from freqtrade/plot_df_stripping
Plot datafame simplification
2019-06-24 06:15:54 +02:00
Matthias
f23a8a8cd1 Merge pull request #1965 from freqtrade/hroff-1902-patch-1
minor: typo fixed in docs
2019-06-24 06:14:27 +02:00
hroff-1902
116d8e853e typos in docstrings fixed 2019-06-23 23:10:37 +03:00
hroff-1902
5b84cb39ac typo fixed 2019-06-23 22:51:33 +03:00
hroff-1902
7f018839f8 diverse cosmetics to options help strings 2019-06-23 21:42:46 +03:00
hroff-1902
3716c04ed4 fix help string for --db-url 2019-06-23 20:34:53 +03:00
hroff-1902
7fbdf36c64 avoid code duplication while selecting min_roi entries 2019-06-23 19:23:51 +03:00
Matthias
da5f77c96f Merge pull request #1962 from hroff-1902/fix-help-strings
minor: fix help strings shown to the user
2019-06-23 10:56:11 +02:00
hroff-1902
451d4a400e fix help strings shown to the user 2019-06-22 23:51:29 +03:00
Matthias
4cbcb5f36f Move .title to ExchangeResolver (it does not make sense to do this over
and over again)
2019-06-22 16:52:14 +02:00
Matthias
026784efac remove get_tickers_data from plot_dataframe 2019-06-22 16:45:38 +02:00
Matthias
cc56d0e0fc Remove unneeded initialization 2019-06-22 16:40:33 +02:00
Matthias
559d5ebd1d Remove combined load-method since it's confusing 2019-06-22 16:20:41 +02:00
Matthias
3e61ada34a Be explicit in what is used, db or trades 2019-06-22 16:18:49 +02:00
Matthias
8758218b09 Add data-analysis documentation 2019-06-22 16:18:22 +02:00
Matthias
de38aea164 Fix sequence of loading trades 2019-06-22 15:45:20 +02:00
Matthias
d8286d7a98 Merge pull request #1937 from xmatthias/feat/plot_module
move parts of scripts/plot_dataframe.py to main bot code
2019-06-22 13:06:30 +02:00
Matthias
101ad71be1 Merge pull request #1955 from freqtrade/ticker_interval_to_hyperopt
Ticker interval to hyperopt
2019-06-22 12:55:17 +02:00
Matthias
db17b20e26 Don't require pairs but fall back to pair_whitelist instead 2019-06-21 20:21:03 +02:00
Matthias
a581ca66bf Adapt test after merging develop 2019-06-21 19:31:18 +02:00
Matthias
5d6819bb28 Merge branch 'develop' into feat/plot_module 2019-06-21 19:28:38 +02:00
Matthias
7a0d86660e Mypy type errors 2019-06-21 07:10:30 +02:00
Matthias
1a27ae8a81 Add tests to verify that ticker_interval is there 2019-06-21 07:07:39 +02:00
Matthias
f907a487c8 make ticker_interval available to hyperopt functions 2019-06-21 07:07:21 +02:00
Matthias
a75f08cf17 Merge pull request #1947 from hroff-1902/arguments-cleanup
arguments cleanup
2019-06-21 06:41:46 +02:00
Matthias
89ba649ddb Test handling errors while trailing stop loss 2019-06-20 20:57:15 +02:00
Matthias
63640518da Gracefully handle errosr when cancelling stoploss orders
fixes #1933
2019-06-20 20:56:58 +02:00
Matthias
a8dcfc05c5 Add test to verify InvalidOrder is handled correctly 2019-06-20 20:36:39 +02:00
Matthias
dd379c4192 Cancelling stoploss order should not kill the bot 2019-06-20 20:32:46 +02:00
Matthias
911e71cd9b remove redundant test-functions 2019-06-20 20:30:05 +02:00
Matthias
b8fb38b92c Merge pull request #1951 from hroff-1902/pipe-config
allow reading config from stdin
2019-06-20 19:29:14 +02:00
hroff-1902
144e053a4e fix for #1948 2019-06-20 03:26:25 +03:00
hroff-1902
a8efb1e1c8 test for #1948 added 2019-06-20 03:26:02 +03:00
hroff-1902
0866b5f29f allow reading config from stdin 2019-06-20 00:04:11 +03:00
Matthias
38712f8120 Merge pull request #1946 from hroff-1902/validator-cosmetics
minor: json validator cosmetics
2019-06-19 19:32:22 +02:00
hroff-1902
860e056366 --datadir is now handled in arguments.common_options() 2019-06-19 02:49:12 +03:00
hroff-1902
c6fed4e493 make flake happy 2019-06-19 02:42:29 +03:00
hroff-1902
8c40a406b6 arguments cleanup 2019-06-19 01:53:38 +03:00
hroff-1902
6f950bbd66 json validator cosmetics 2019-06-18 01:46:30 +03:00
Matthias
aa2cce020e Merge pull request #1944 from freqtrade/pyup/scheduled-update-2019-06-17
Scheduled weekly dependency update for week 24
2019-06-17 19:16:39 +02:00
pyup-bot
0e7ea1dada Update coveralls from 1.8.0 to 1.8.1 2019-06-17 15:23:15 +00:00
pyup-bot
6973087d5b Update pytest from 4.6.2 to 4.6.3 2019-06-17 15:23:14 +00:00
pyup-bot
25755f6adf Update ccxt from 1.18.667 to 1.18.725 2019-06-17 15:23:13 +00:00
Matthias
0d360167f3 Merge pull request #1942 from freqtrade/fix/rpc_market_buy
RPC: don't use limit for rates that could be market orders
2019-06-17 14:55:31 +02:00
Matthias
ba4890d303 Fix tests on windows 2019-06-17 14:36:58 +02:00
Matthias
7cd36239a4 UPdate documentation with new value 2019-06-17 07:03:33 +02:00
Matthias
06afb3f155 Don't use "limit" for sell-orders either 2019-06-17 07:01:17 +02:00
Matthias
557122921a Add order_type to sell-notification 2019-06-17 06:56:52 +02:00
Matthias
475e76b272 Add order_type to buy_notification 2019-06-17 06:55:30 +02:00
Matthias
b0c5286e8a Merge pull request #1938 from hroff-1902/cleanup-setup-configuration
minor: setup_configuration() cleanup
2019-06-17 06:41:19 +02:00
Matthias
bffa9fbfbd Merge pull request #1941 from hroff-1902/fix-typo
minor: fix typo
2019-06-17 06:07:07 +02:00
hroff-1902
d217f32bbc minor: fix typo in freqtradebot.py 2019-06-17 04:35:39 +03:00
hroff-1902
195bf5a4cc tests adjusted 2019-06-16 22:10:39 +03:00
hroff-1902
813c008af2 setup_configuration() cleanup 2019-06-16 21:37:43 +03:00
Matthias
765eff23f0 Fix typo 2019-06-16 20:14:31 +02:00
Matthias
0eb109f8f7 Improve some tests 2019-06-16 19:53:48 +02:00
Matthias
fc3e3c468c File existence is checked in load_backtest_data 2019-06-16 19:35:21 +02:00
Matthias
4b7dfc64c6 Add test for generate_plot_file 2019-06-16 19:35:21 +02:00
Matthias
488bb971ff Get rid of global conf object 2019-06-16 19:35:21 +02:00
Matthias
907c2f1e6b Copy plot options to config 2019-06-16 19:35:21 +02:00
Matthias
3f04930f38 Require pairs argument 2019-06-16 19:35:21 +02:00
Matthias
0300128cb8 Move plot-options to arguments.py 2019-06-16 19:35:15 +02:00
Matthias
bf2c0390e7 Adjust some imports 2019-06-16 19:33:48 +02:00
Matthias
1cd8415723 Move extract_trades_of_period to btanlaysis 2019-06-16 19:33:48 +02:00
Matthias
1c53aa5687 Add tests for load_trades 2019-06-16 19:33:48 +02:00
Matthias
c7643e142b Move load_trades to bt_anlaysis 2019-06-16 19:33:48 +02:00
Matthias
9f5ca82f48 Add more tests 2019-06-16 19:33:48 +02:00
Matthias
6db4e05aef Improve plotting tests 2019-06-16 19:33:48 +02:00
Matthias
2891d7cccb Add initial plotting test 2019-06-16 19:33:48 +02:00
Matthias
cae2185460 Move generate_plot to plotting.py 2019-06-16 19:33:48 +02:00
Matthias
6347161975 don't use print in plot_dataframe 2019-06-16 19:33:48 +02:00
Matthias
b1a01345f9 Add better hover tip 2019-06-16 19:33:48 +02:00
Matthias
e0a1e5417f sanity checks before plotting, cleanup 2019-06-16 19:33:48 +02:00
Matthias
6df0b39f81 Cleanup plot_dataframe a bit 2019-06-16 19:33:48 +02:00
Matthias
68af6d4151 Move plot-functions to plotting module 2019-06-16 19:33:48 +02:00
xmatthias
583d70ec9c add plot module proto 2019-06-16 19:33:48 +02:00
Matthias
2369161bb0 Merge pull request #1927 from hroff-1902/list-exchanges-module
list-exchanges subcommand added
2019-06-16 19:25:23 +02:00
Matthias
9035e0b695 Update function due to merge of #1926 2019-06-16 10:39:43 +02:00
Matthias
4ef309bc6c Merge branch 'develop' into pr/hroff-1902/1927 2019-06-16 10:37:28 +02:00
Matthias
114de8a025 Remove unused imports 2019-06-16 10:13:56 +02:00
Matthias
442339cd27 Add tests for utils.py 2019-06-16 10:13:24 +02:00
Matthias
e6cab6d710 Move get_args from multiple locations to conftest 2019-06-16 10:13:12 +02:00
Matthias
472e7f80a0 Fix Line too long error 2019-06-15 16:58:17 +02:00
Misagh
2a682f858e Merge pull request #1935 from freqtrade/update_slack_link
Update slack link since the old one expired
2019-06-15 14:30:31 +02:00
Misagh
c43edf98d4 Merge pull request #1934 from freqtrade/edge_override_stake_amount
Edge cli should override stake_amount
2019-06-15 14:28:16 +02:00
Matthias
a0415aea83 Merge pull request #1926 from hroff-1902/check-exchange
Enhance check_exchange()
2019-06-15 13:52:30 +02:00
Matthias
4a916125a0 Tests need to pass pair to parse_ticker_dataframe 2019-06-15 13:48:08 +02:00
Matthias
89ff614e1d Add pair as parameter, and warn when fillup was necessary 2019-06-15 13:46:19 +02:00
Matthias
55079831a1 Don't explicitly validate backtest data (it's done while loading now). 2019-06-15 13:45:50 +02:00
Matthias
d047a9d836 Adapt tests for new validate_backtest signature 2019-06-15 13:32:05 +02:00
Matthias
cd4cf215e1 Convert validate_backtest_data to take dataframe directly 2019-06-15 13:31:27 +02:00
Matthias
01b5ece642 Log missing data filllup if necessary 2019-06-15 13:31:14 +02:00
Matthias
36dd061be7 Update slack link since the old one expired 2019-06-15 13:19:18 +02:00
Matthias
a77d75eb43 Check log output since that's whats shown to users 2019-06-15 13:14:07 +02:00
Matthias
707118a636 Test stake changed to unlimited 2019-06-15 13:04:15 +02:00
Misagh
ad9dc349e4 edge cli should override stake_amount 2019-06-15 12:20:32 +02:00
hroff-1902
09cd7db9b1 make flake happy 2019-06-14 22:04:29 +03:00
hroff-1902
1af988711b add --one-column as an alias option 2019-06-14 21:59:16 +03:00
hroff-1902
cedd38455f remove configuration from list-exchanges 2019-06-14 21:54:38 +03:00
Matthias
2965931a78 Merge pull request #1893 from hroff-1902/refactor-download-script
refactoring download_backtest_data.py
2019-06-14 20:12:07 +02:00
Matthias
1afe6c1437 Don't run validation per strategy, it's only eneded once 2019-06-14 19:37:54 +02:00
Matthias
3240d4e70e Merge pull request #1925 from hroff-1902/strategy-advise-logging
debug logging for IStrategy.advise_*()
2019-06-14 19:24:14 +02:00
hroff-1902
941fb4ebbb tests added 2019-06-14 18:40:25 +03:00
hroff-1902
ee113ab8ed log messages aligned 2019-06-14 18:40:02 +03:00
Misagh
24f86e9ff3 Merge pull request #1931 from freqtrade/fix/trailing_stoploss_offset
Fix/trailing stoploss offset
2019-06-14 14:32:32 +02:00
hroff-1902
04ea66c977 fix handling timeframes 2019-06-14 02:58:34 +03:00
Matthias
9657b1a17f explict parse to string for ticker-interval 2019-06-13 20:37:17 +02:00
Matthias
e08fda074a Fix bug with timeframe handling 2019-06-13 20:26:47 +02:00
Matthias
550fbad53e Add test-cases with trailing_stop_offsets 2019-06-13 20:05:49 +02:00
Matthias
160894c031 Calculate profit_high to make sure stoploss_positive_offset is correct 2019-06-13 20:04:52 +02:00
Matthias
578180f45b Add test for sell-signal sell 2019-06-13 20:00:56 +02:00
Matthias
b64b6a2583 Support trailing_stop_positive options in BTContainer 2019-06-13 20:00:00 +02:00
Matthias
a4d8424268 trailing_stop_positive should only be set when needed, and
none/undefined otherwise
2019-06-13 19:34:46 +02:00
hroff-1902
a65c89f090 test adjusted 2019-06-12 23:37:02 +03:00
hroff-1902
0cc2210f22 wording fixed 2019-06-12 22:53:43 +03:00
hroff-1902
8df40a6ff9 make flake happy 2019-06-12 22:40:50 +03:00
hroff-1902
9c64965808 list-exchanges subcommand added 2019-06-12 12:33:20 +03:00
Misagh
0d8b572a17 Merge pull request #1921 from freqtrade/minor/backtest_optimize
[minor] Small cleanup to reduce dict lookups during backtesting/hyperopt
2019-06-12 10:31:44 +02:00
Misagh
1f3406b29b Merge pull request #1868 from freqtrade/stoploss_restart
Stoploss restart
2019-06-12 10:29:17 +02:00
hroff-1902
dc7f883751 no need to duplicate this long error message 2019-06-11 13:47:04 +03:00
hroff-1902
db6ccef6bd return back check in init_ccxt() 2019-06-11 13:43:29 +03:00
hroff-1902
676e730013 enhance check_exchange 2019-06-11 13:18:35 +03:00
Matthias
08105641d9 Merge pull request #1901 from yperfanov/bid_ask_strategy
Bid ask strategy
2019-06-11 11:14:39 +02:00
hroff-1902
7322a34fa4 fix metadata in tests 2019-06-11 10:58:19 +03:00
hroff-1902
4801af4c77 debug logging for IStrategy.advise_*() added 2019-06-11 10:42:14 +03:00
hroff-1902
d55f2be942 make flake happy 2019-06-11 10:21:59 +03:00
hroff-1902
cd60d6d99a make --days positive int only 2019-06-11 10:10:21 +03:00
hroff-1902
dc0326db27 fix handling --exchange 2019-06-11 10:09:30 +03:00
Matthias
50c7a2445b Merge pull request #1922 from freqtrade/pyup/scheduled-update-2019-06-10
Scheduled weekly dependency update for week 23
2019-06-10 17:55:36 +02:00
pyup-bot
6636f0c71b Update pytest from 4.6.1 to 4.6.2 2019-06-10 15:19:09 +00:00
pyup-bot
1a41d4e6cd Update python-rapidjson from 0.7.1 to 0.7.2 2019-06-10 15:19:08 +00:00
pyup-bot
9961c0e15b Update arrow from 0.14.1 to 0.14.2 2019-06-10 15:19:06 +00:00
pyup-bot
5c5b0effc1 Update ccxt from 1.18.615 to 1.18.667 2019-06-10 15:19:05 +00:00
Matthias
4dc3a0ca1d Small cleanup to reduce dict lookups during backtesting/hyperopt 2019-06-10 16:20:19 +02:00
Matthias
99cceeea70 Merge pull request #1915 from freqtrade/feat/drop_incomplete_optional
Make dropping the last candle optional (configured per exchange)
2019-06-10 14:58:19 +02:00
Matthias
839734a988 Merge pull request #1917 from hroff-1902/minor-optimize
minor optimize cleanup
2019-06-10 13:15:54 +02:00
hroff-1902
90b0f1daa8 minor optimize cleanup 2019-06-10 02:08:54 +03:00
Matthias
792390e815 Add missing parameter for exchange-verify snippet 2019-06-09 15:03:26 +02:00
Matthias
9f2e0b11d1 Parametrize ohlcv_candle_limit (per call) 2019-06-09 14:52:17 +02:00
Matthias
3380543878 Add test for drop_incomplete option 2019-06-09 14:51:58 +02:00
Matthias
ce317b62f9 Add docstrings to load_pair_history 2019-06-09 14:40:45 +02:00
Matthias
6ad94684d5 Add WIP document of steps to test a new exchange 2019-06-09 14:36:08 +02:00
Matthias
fdbbefdddd Make drop_incomplete optional 2019-06-09 14:35:58 +02:00
Matthias
3fe5388d4c Document _ft_has_params override 2019-06-09 14:13:03 +02:00
Matthias
7108a2e57d Add deep_merge for _ft_has and test 2019-06-09 14:06:29 +02:00
Matthias
9c497bf15c Improve docstring for deep_merge_dicts 2019-06-09 14:04:19 +02:00
Matthias
d7c63347e1 Use kwarg for parse_ticker_dataframe 2019-06-09 13:19:01 +02:00
Matthias
adc12ed043 Fix new test after develop merge 2019-06-08 20:26:25 +02:00
Matthias
9ea887dbd0 Merge branch 'develop' into stoploss_restart 2019-06-08 20:23:13 +02:00
Matthias
9967df8f45 Merge pull request #1902 from freqtrade/fix_tsl_offset_on_reason
Trailing stoploss sell reason fixed.
2019-06-08 20:21:51 +02:00
Matthias
71b7b2482f Merge pull request #1905 from freqtrade/pyup/scheduled-update-2019-06-03
Scheduled weekly dependency update for week 22
2019-06-08 19:43:54 +02:00
Matthias
5273540a93 Fix test failure (double-trailing newlines are removed now) 2019-06-08 19:32:31 +02:00
Yuliyan Perfanov
f9fe266364 check for runmode before retrieving the orderbook 2019-06-06 18:52:14 +03:00
Yuliyan Perfanov
a9ed5da369 added doc for DataProvider.orderbook() 2019-06-06 18:48:26 +03:00
Yuliyan Perfanov
2e6ded06a9 removed redundant print() 2019-06-06 18:25:58 +03:00
pyup-bot
7134273918 Update plotly from 3.9.0 to 3.10.0 2019-06-03 17:19:26 +02:00
pyup-bot
f75e97e9b0 Update coveralls from 1.7.0 to 1.8.0 2019-06-03 17:19:25 +02:00
pyup-bot
a132517f0a Update pytest from 4.5.0 to 4.6.1 2019-06-03 17:19:24 +02:00
pyup-bot
3c1ae07f92 Update flask from 1.0.2 to 1.0.3 2019-06-03 17:19:20 +02:00
pyup-bot
4ef8a74977 Update arrow from 0.13.2 to 0.14.1 2019-06-03 17:19:19 +02:00
pyup-bot
51113dae0e Update sqlalchemy from 1.3.3 to 1.3.4 2019-06-03 17:19:16 +02:00
pyup-bot
c04a8a1024 Update ccxt from 1.18.578 to 1.18.615 2019-06-03 17:19:13 +02:00
pyup-bot
bd8edd61fd Update numpy from 1.16.3 to 1.16.4 2019-06-03 17:19:12 +02:00
Misagh
92113ce1c9 Merge pull request #1903 from freqtrade/fix/testfailure
Fix test-failure introduced in #1891
2019-06-02 15:52:19 +02:00
Matthias
107c3beb20 Fix test-failure introduced in #1891 2019-06-02 15:28:29 +02:00
Matthias
4e45aa1564 Merge pull request #1863 from xmatthias/feat/flask_rest_retry
Add REST API to control the bot
2019-06-02 15:20:12 +02:00
Matthias
e0e5cfa266 Merge pull request #1891 from freqtrade/simplify/persistence_init
persistence.init does not need the config dict
2019-06-02 15:13:06 +02:00
Misagh
36dae7cc6c trailing stoploss reason fixed 2019-06-02 13:27:31 +02:00
Yuliyan Perfanov
c68fe7a685 example how to use best bid and ask in strategy 2019-06-02 13:27:44 +03:00
Yuliyan Perfanov
199426460a implemented DataProvider.orderbook() 2019-06-02 13:25:09 +03:00
Matthias
338f2a2322 Use kwarg to call persistence.init() 2019-06-01 06:26:03 +02:00
Matthias
f04089ef1e Merge pull request #1892 from freqtrade/ref/live_data
refactor `--live` handling
2019-06-01 06:20:11 +02:00
hroff-1902
1add432673 docs adjusted 2019-05-30 23:00:19 +03:00
Matthias
f15f03428e Merge pull request #1896 from hroff-1902/fix-help-traceback
fix handling of SystemExit
2019-05-30 20:14:08 +02:00
hroff-1902
e4e22167bb make mypy happy 2019-05-30 21:00:16 +03:00
hroff-1902
6b144150c7 fix handling of SystemExit 2019-05-30 20:38:04 +03:00
hroff-1902
ef15f2bdc6 log messages slightly improved 2019-05-30 11:19:27 +03:00
hroff-1902
39932627bd typo in log message fixed 2019-05-30 11:03:17 +03:00
hroff-1902
11f535e79f change prints to logging 2019-05-30 10:56:57 +03:00
hroff-1902
f463817c88 change metavar for --pairs-file 2019-05-30 10:56:48 +03:00
Matthias
b6e8fecbf5 Change persistence.init parameter
It should describe what it does
2019-05-30 06:33:16 +02:00
Matthias
d6cf314481 Don't default to false for init() 2019-05-30 06:30:06 +02:00
hroff-1902
fb88953be3 refactoring download_backtest_data.py 2019-05-29 21:57:14 +03:00
Matthias
15984b5c43 Adjust some tests - implement new "live" method to plot_script 2019-05-29 20:25:07 +02:00
Matthias
c2f6897d8b Move download of live data to load_data
Avoids code duplication in backtesting and plot_dataframe
2019-05-29 20:20:20 +02:00
Matthias
28c796a234 Merge pull request #1877 from freqtrade/eliminate_freqtradebin
[proposal] Eliminate bin/freqtrade
2019-05-29 20:06:02 +02:00
Matthias
d7bebc4385 persistence.init does not need the config dict 2019-05-29 19:54:59 +02:00
Matthias
7b367818fc Remove duplicate code 2019-05-29 19:46:46 +02:00
Matthias
9e4dd6f37f Read bin/freqtrade with deprecation warning 2019-05-29 19:46:26 +02:00
Matthias
22144d89fc Fix mypy error 2019-05-29 19:46:26 +02:00
Matthias
c5ef700eb7 Use autogenerated entrypoint 2019-05-29 19:46:26 +02:00
Matthias
17d614c66a Remove binary script - allow None arguemnts 2019-05-29 19:46:26 +02:00
Matthias
7406edfd8f Move set_loggers to main() 2019-05-29 19:46:26 +02:00
Matthias
6451feee0e Merge pull request #1830 from hroff-1902/python-version
check python version
2019-05-29 19:24:25 +02:00
hroff-1902
912b06b34b Merge branch 'develop' into python-version 2019-05-29 20:07:46 +03:00
Matthias
9fab7e6122 Merge pull request #1888 from freqtrade/fix_ta_on_candle
ta_on_candle removed
2019-05-29 18:07:55 +02:00
Misagh
ea83b2b1d0 legacy code removed. 2019-05-29 14:17:09 +02:00
Matthias
f6a88d71c6 Merge pull request #1884 from freqtrade/doc/plotting
[minor] Improve plotting documentation
2019-05-29 06:19:13 +02:00
Matthias
4fed263885 Merge pull request #1879 from freqtrade/refactor_optimize__init__
Speed up startup time
2019-05-29 06:18:57 +02:00
hroff-1902
db2e6f2d1c tests adjusted 2019-05-28 23:25:53 +03:00
hroff-1902
58477dcd82 cleanup: return after cmd removed in main() 2019-05-28 23:25:19 +03:00
hroff-1902
536c8fa454 move python version check to the top 2019-05-28 23:04:39 +03:00
Matthias
55bdd26439 Edgecli -> Edge for Runmode and start_edge() 2019-05-28 19:25:01 +02:00
Matthias
89f44c10a1 Fix grammar error 2019-05-28 19:20:41 +02:00
Matthias
8b028068bb Fix typos, add section for custom indicators 2019-05-28 07:07:09 +02:00
Matthias
f7766d305b Improve plotting documentation 2019-05-27 19:42:12 +02:00
Matthias
1b7ee7cf5a Merge pull request #1883 from freqtrade/pyup/scheduled-update-2019-05-27
Scheduled weekly dependency update for week 21
2019-05-27 19:15:23 +02:00
pyup-bot
09e037c96e Update scikit-learn from 0.21.1 to 0.21.2 2019-05-27 15:29:09 +00:00
pyup-bot
bfb6dc4a8e Update cachetools from 3.1.0 to 3.1.1 2019-05-27 15:29:07 +00:00
pyup-bot
196a1bcc26 Update ccxt from 1.18.551 to 1.18.578 2019-05-27 15:29:06 +00:00
Matthias
73f1d9bb66 Merge pull request #1882 from freqtrade/fix/plot_script
Update plot-script to work with exported trades
2019-05-27 08:21:31 +02:00
Matthias
1988662607 Update plot-script to work with exported trades 2019-05-26 20:19:06 +02:00
Matthias
3e2c808b4b Merge pull request #1880 from hroff-1902/exchange-debuglog
minor: exchange debug logging humanized
2019-05-26 19:26:19 +02:00
Matthias
dab4307e04 Add secure way to genreate password, warn if no password is defined 2019-05-26 14:40:03 +02:00
Matthias
dd03e0acc6 Merge pull request #1878 from freqtrade/doc/docker
Cleanup installation documentation
2019-05-26 13:49:00 +02:00
Matthias
e335e6c480 Fix some wordings 2019-05-26 13:40:07 +02:00
hroff-1902
0e228acbfb minor: exchange debug logging humanized 2019-05-25 22:42:17 +03:00
Matthias
201e02e73f Add test for Timeout - move tests to test_history 2019-05-25 20:31:21 +02:00
Matthias
71447e55aa Update missing import 2019-05-25 20:14:31 +02:00
Matthias
8ad30e2625 Adapt tests 2019-05-25 20:06:18 +02:00
Matthias
104f1212e6 Move edge_cli_start to optimize 2019-05-25 20:06:15 +02:00
Matthias
65a4862d1f Adapt tests to load start_* methods from optimize 2019-05-25 20:01:43 +02:00
Matthias
236c392d28 Don't load hyperopts / optimize dependency tree if that module is not
used
2019-05-25 20:00:31 +02:00
Matthias
b38c43141c Adjust imports to new location 2019-05-25 16:53:35 +02:00
Matthias
9225cdea8a Move validate_backtest_data and get_timeframe to histoyr 2019-05-25 16:51:52 +02:00
Matthias
26a8cdcc03 Move telegram-setup to telegram page 2019-05-25 16:27:36 +02:00
Matthias
3e0a71f69f Add docker install script to mkdocs index 2019-05-25 16:27:18 +02:00
Matthias
4394701de3 Seperate docker-documentation 2019-05-25 16:13:18 +02:00
Matthias
b6484cb2b4 Replace technical link 2019-05-25 15:54:35 +02:00
Matthias
90ece09ee9 require username/password for API server 2019-05-25 14:42:13 +02:00
Matthias
febcc3dddc Adapt tests and rest_client to basic_auth 2019-05-25 14:25:36 +02:00
Matthias
2da7145132 Switch auth to real basic auth 2019-05-25 14:25:16 +02:00
Matthias
6adc8f7ea7 Merge branch 'develop' into feat/flask_rest_retry 2019-05-25 14:17:04 +02:00
Matthias
5bbd3c6158 Add documentation 2019-05-25 14:16:59 +02:00
Matthias
1fab884a2f use Authorization for client 2019-05-25 14:15:07 +02:00
Matthias
04c35b465e Add authorization to tests 2019-05-25 14:13:59 +02:00
Matthias
7e952b028a Add basic auth to rest-api 2019-05-25 14:11:30 +02:00
Matthias
b7686d06a7 Merge pull request #1873 from freqtrade/add_some_tests
Add some tests
2019-05-25 13:26:34 +02:00
Matthias
c30c4ef266 Merge pull request #1875 from hroff-1902/hyperopts-bugfix-reduce
fix TypeError from reduce() in hyperopts
2019-05-25 13:26:07 +02:00
Matthias
469c0b6a55 Adjust check_int_positive tests 2019-05-25 13:16:00 +02:00
hroff-1902
c3e93e7593 fix reduce() TypeError in hyperopts 2019-05-24 23:08:56 +03:00
Matthias
7bbe8b2483 Add a few more testcases for check_int_positive 2019-05-24 06:22:27 +02:00
hroff-1902
7b968a2401 logger.exception cleanup 2019-05-24 04:04:07 +03:00
Matthias
253025c0fe Add tests for check_int_positive 2019-05-23 19:53:42 +02:00
Matthias
7b074765ab Improve edge tests - cleanup test file 2019-05-23 19:48:22 +02:00
Matthias
1a5dbd29e0 Merge pull request #1871 from hroff-1902/edge-no-trades
edge: handle properly the 'No trades' case
2019-05-23 19:32:02 +02:00
Matthias
b87b3dc38a Merge pull request #1870 from hroff-1902/dataprovider-history-2
minor: data/history slight cleanup/imrovement
2019-05-22 19:25:34 +02:00
hroff-1902
6e1da13920 Log message changed 2019-05-22 17:19:11 +03:00
hroff-1902
406e266bb4 typo in comment fixed 2019-05-22 14:34:35 +03:00
hroff-1902
2c9a519c5e edge: handle properly the 'No trades' case 2019-05-22 14:21:36 +03:00
hroff-1902
98eeec3145 renaming of make_testdata_path reverted 2019-05-22 14:04:58 +03:00
hroff-1902
7cb753754b tests adjusted 2019-05-21 20:49:19 +03:00
hroff-1902
11dce91281 data/history minor cleanup 2019-05-21 20:49:02 +03:00
Matthias
51aa469f67 Cleanups 2019-05-20 20:29:23 +02:00
Matthias
58ced36445 Add documentation for stoploss updates 2019-05-20 20:11:50 +02:00
Matthias
11fd8a59af cleanup stoploss documentations 2019-05-20 20:11:50 +02:00
Matthias
a39cdd3b2b Exclude Edge from startup-stoploss calc
Edge would recalculate / reevaluate stoploss values on startup, so these
values are not reliable
2019-05-20 20:11:50 +02:00
Matthias
53af8f331d Deep-copy default_conf for edge config 2019-05-20 20:11:50 +02:00
Matthias
9f54181494 Add test for stoploss_reinit 2019-05-20 20:11:50 +02:00
Matthias
6a5daab520 add logic for stoploss reinitialization after startup 2019-05-20 20:11:50 +02:00
Matthias
349c0619aa Move startup to freqtradebot 2019-05-20 20:11:50 +02:00
Matthias
6dc2175e1f Merge pull request #1867 from freqtrade/pyup/scheduled-update-2019-05-20
Scheduled weekly dependency update for week 20
2019-05-20 20:02:46 +02:00
Matthias
96a34f753b Adapt test to new output from arrow 2019-05-20 19:48:12 +02:00
pyup-bot
04e13eed7d Update filelock from 3.0.10 to 3.0.12 2019-05-20 15:36:13 +00:00
pyup-bot
5b24ac7898 Update scikit-learn from 0.21.0 to 0.21.1 2019-05-20 15:36:11 +00:00
pyup-bot
34c7ac8926 Update requests from 2.21.0 to 2.22.0 2019-05-20 15:36:10 +00:00
pyup-bot
3404bb1865 Update arrow from 0.13.1 to 0.13.2 2019-05-20 15:36:09 +00:00
pyup-bot
de95e50804 Update ccxt from 1.18.523 to 1.18.551 2019-05-20 15:36:08 +00:00
pyup-bot
703fdb2bc6 Update scipy from 1.2.1 to 1.3.0 2019-05-20 15:36:07 +00:00
Matthias
5d93946365 Merge pull request #1866 from hroff-1902/persist-debug
minor: remove noisy useless debug message
2019-05-20 12:16:57 +02:00
hroff-1902
e7b9bc6808 minor: remove noisy useless debug message 2019-05-20 12:27:30 +03:00
Misagh
46b347b661 Merge pull request #1864 from freqtrade/doc/backtest_future
Improve documentation to point out usage of future data during backtesting
2019-05-19 19:30:27 +02:00
Matthias
fc96da869a Fix grammar messup 2019-05-19 16:07:16 +02:00
Matthias
f93e6ad0f6 Rename strategy customization file 2019-05-19 09:07:43 +02:00
Matthias
8d8b4a69b7 Clearly warn about using future data during strategy development 2019-05-19 09:03:56 +02:00
Matthias
2cf07e2185 rename exception handlers 2019-05-18 13:39:12 +02:00
Matthias
e6ae890def small adjustments after first feedback 2019-05-18 13:36:51 +02:00
Matthias
79cac36b34 Reference reest api in main documentation page 2019-05-18 10:42:18 +02:00
Matthias
9385a27ff0 Sort imports 2019-05-18 10:34:30 +02:00
Matthias
f2e4689d0c Cleanup script 2019-05-18 10:31:50 +02:00
Matthias
70fabebcb3 Document rest api 2019-05-18 10:24:22 +02:00
Matthias
c272e1ccdf Add default rest config 2019-05-18 10:24:01 +02:00
Matthias
fd5012c04e Add test for api cleanup 2019-05-18 10:00:07 +02:00
Matthias
bfc57a6f6d Adapt tests to new method of starting flask 2019-05-18 10:00:07 +02:00
Matthias
540d4bef1e gracefully shutdown flask 2019-05-18 10:00:07 +02:00
Matthias
5149ff7b12 Move api to /api/v1 2019-05-18 10:00:07 +02:00
Matthias
01cd68a5aa Test forcesell 2019-05-18 10:00:07 +02:00
Matthias
b700c64dc2 Test forcebuy - cleanup some tests 2019-05-18 10:00:07 +02:00
Matthias
350c903793 Test falsk crash 2019-05-18 10:00:07 +02:00
Matthias
39afe4c7bd Test flask app .run() 2019-05-18 10:00:07 +02:00
Matthias
b9435e3cea Add more tests 2019-05-18 10:00:07 +02:00
Matthias
a7329e5cc9 Test api-server start from manager 2019-05-18 10:00:07 +02:00
Matthias
a146c5bf78 Improve jsonification 2019-05-18 10:00:07 +02:00
Matthias
557f849519 Improve 404 handling 2019-05-18 10:00:07 +02:00
Matthias
03dc6d92ae Remove hello() 2019-05-18 10:00:07 +02:00
Matthias
3c46870109 Test /count for api-server 2019-05-18 10:00:07 +02:00
Matthias
88dd18e045 Move patch_signal to conftest 2019-05-18 10:00:07 +02:00
Matthias
6b426e78f6 Tests for balance 2019-05-18 10:00:07 +02:00
Matthias
70a3c2c648 Actions - Add tests 2019-05-18 09:57:10 +02:00
Matthias
6ea0895803 Fix docstrings 2019-05-18 09:57:10 +02:00
Matthias
b1a14401c2 Add some initial tests for apiserver 2019-05-18 09:57:10 +02:00
Matthias
e0486ea68e Make app a instance object 2019-05-18 09:57:10 +02:00
Matthias
0ac434da78 Add forcebuy jsonification 2019-05-18 09:57:10 +02:00
Matthias
6e4b159611 Add forcebuy and forcesell 2019-05-18 09:57:10 +02:00
Matthias
bc4342b2d0 small cleanup 2019-05-18 09:57:10 +02:00
Matthias
cb271f51d1 Add client actions for actions 2019-05-18 09:57:10 +02:00
Matthias
ea8b8eec1c Add edge handler 2019-05-18 09:57:10 +02:00
Matthias
b1964851c9 Add performance handlers 2019-05-18 09:57:10 +02:00
Matthias
393e4ac90e Sort methods 2019-05-18 09:57:10 +02:00
Matthias
0163edc868 rest-client more methods 2019-05-18 09:57:10 +02:00
Matthias
3efdd55fb8 Support blacklist adding 2019-05-18 09:57:10 +02:00
Matthias
122cf4c897 Default add to None for blacklist rpc calls 2019-05-18 09:57:10 +02:00
Matthias
938d7275ba implement some methods 2019-05-18 09:57:10 +02:00
Matthias
8f9b9d31e2 Reorder arguments 2019-05-18 09:57:10 +02:00
Matthias
d1fffab235 Rename internal methods to _ 2019-05-18 09:57:10 +02:00
Matthias
ebebf94750 Change commands to post 2019-05-18 09:57:10 +02:00
Matthias
b0ac98a7cd Clean up rest client 2019-05-18 09:57:10 +02:00
Matthias
a132d6e141 Refactor client into class 2019-05-18 09:57:10 +02:00
Matthias
a1043121fc Add blacklist handler 2019-05-18 09:57:10 +02:00
Matthias
5ba189ffb4 Add more commands to rest client, fix bug in config handling 2019-05-18 09:57:10 +02:00
Matthias
d2c2811249 Move rest-client to scripts 2019-05-18 09:57:10 +02:00
Matthias
99875afcc0 Add default argument 2019-05-18 09:57:10 +02:00
Matthias
ae8660fe06 Extract exception handling to decorator 2019-05-18 09:57:10 +02:00
Matthias
01c93a2ee3 Load rest-client config from file 2019-05-18 09:57:10 +02:00
Matthias
d8549fe09a add balance handler 2019-05-18 09:57:10 +02:00
Matthias
a12e093417 Api server - custom json encoder 2019-05-18 09:57:10 +02:00
Matthias
2f8088432c All handlers should be private 2019-05-18 09:57:10 +02:00
Matthias
3cf6c6ee0c Implement a few more methods 2019-05-18 09:57:10 +02:00
Matthias
8993882dcb Sort imports 2019-05-18 09:57:10 +02:00
Matthias
c6c2893e2c Improve rest-client interface 2019-05-18 09:57:10 +02:00
Matthias
96a260b027 rest_dump 2019-05-18 09:57:10 +02:00
Matthias
6bb2fad9b0 Reorder some things 2019-05-18 09:57:10 +02:00
Matthias
9d95ae9341 Add flask to dependencies 2019-05-18 09:57:10 +02:00
Matthias
68743012e4 Patch api server for tests 2019-05-18 09:57:10 +02:00
Matthias
ef2950bca2 Load api-server in rpc_manager 2019-05-18 09:57:10 +02:00
Matthias
6f67ea44dc Enable config-check for rest server 2019-05-18 09:57:10 +02:00
Matthias
26c42bd559 Add apiserver tests 2019-05-18 09:57:10 +02:00
Matthias
c3c745ca19 Get new files from old branch 2019-05-18 09:57:10 +02:00
Matthias
2463f0257e Merge pull request #1862 from hroff-1902/dataprovider-history
minor: data/history cleanup
2019-05-18 09:35:27 +02:00
hroff-1902
e2b83624a3 data/history cleanup 2019-05-17 19:05:36 +03:00
Matthias
e0310906c7 Merge pull request #1859 from hroff-1902/freqtrade-exceptions
minor: inherit freqtrade exceptions from Exception instead of BaseException
2019-05-17 06:28:48 +02:00
hroff-1902
2741c5c330 inherit freqtrade exceptions from Exception i.o. BaseException 2019-05-16 22:38:59 +03:00
Matthias
175fc8591e Merge pull request #1845 from freqtrade/fix/1840
Fix #1840 - Support balances other than USDT
2019-05-15 19:39:46 +02:00
Matthias
3c62586878 Merge pull request #1852 from hroff-1902/hyperopt-verify
Minor: hyperopt verify ticker data
2019-05-15 19:39:17 +02:00
hroff-1902
8b95e12468 log message adjusted in backtesting and hyperopt 2019-05-15 12:05:35 +03:00
hroff-1902
90a52e4602 tests adjusted; new test_start_no_data() added for hyperopt 2019-05-14 09:23:09 +03:00
hroff-1902
5677c4882e minor: add ticker data validation; log backtesting interval 2019-05-13 23:56:59 +03:00
Misagh
6d17cd50fe Merge pull request #1851 from freqtrade/pyup/weekly
Update pyup only weekly
2019-05-13 20:01:21 +02:00
Matthias
1cd98665de Update pyup only weekly 2019-05-13 19:50:56 +02:00
Matthias
cfcf97b616 Merge pull request #1837 from hroff-1902/hyperopt-minor-1
minor: hyperopt output improvements
2019-05-13 19:49:23 +02:00
Misagh
6efebef714 Merge pull request #1848 from freqtrade/pyup/scheduled-update-2019-05-13
Scheduled daily dependency update on Monday
2019-05-13 15:39:11 +02:00
pyup-bot
600f660f5e Update ccxt from 1.18.522 to 1.18.523 2019-05-13 12:41:06 +00:00
hroff-1902
003461ec96 tests adjusted 2019-05-12 21:19:20 +03:00
hroff-1902
00b4501c59 avg profit and total profit corrected (to be %, not ratio); comments cleaned up a bit; typo in the log msg fixed 2019-05-12 21:14:00 +03:00
Matthias
8142794447 Merge pull request #1846 from freqtrade/pyup/scheduled-update-2019-05-12
Scheduled daily dependency update on Sunday
2019-05-12 19:33:15 +02:00
Misagh
ea2ef78ceb Merge pull request #1843 from freqtrade/small_fixes
Small fixes
2019-05-12 17:36:34 +02:00
pyup-bot
11dca0bd29 Update pytest from 4.4.2 to 4.5.0 2019-05-12 12:41:06 +00:00
pyup-bot
dccd6b4a91 Update ccxt from 1.18.519 to 1.18.522 2019-05-12 12:41:05 +00:00
Matthias
46b1ecc77d Fix #1840 - Support balances other than USDT 2019-05-11 15:27:09 +02:00
Matthias
8a319e90c6 Merge pull request #1844 from freqtrade/pyup/scheduled-update-2019-05-11
Scheduled daily dependency update on Saturday
2019-05-11 15:04:38 +02:00
pyup-bot
652914a67b Update python-rapidjson from 0.7.0 to 0.7.1 2019-05-11 12:41:07 +00:00
pyup-bot
22f902f0f7 Update ccxt from 1.18.516 to 1.18.519 2019-05-11 12:41:06 +00:00
Matthias
131b232155 Add sample for order_types in config (slightly different syntax) 2019-05-11 14:33:35 +02:00
Matthias
52da64b6dc Align configuration files 2019-05-11 14:33:26 +02:00
hroff-1902
75306b7a6e tests adjusted 2019-05-11 10:17:46 +03:00
Matthias
867f9ae362 Merge pull request #1838 from freqtrade/pyup/scheduled-update-2019-05-10
Scheduled daily dependency update on Friday
2019-05-10 19:32:37 +02:00
pyup-bot
ab23db2fa1 Update scikit-learn from 0.20.3 to 0.21.0 2019-05-10 12:42:14 +00:00
pyup-bot
349d556339 Update ccxt from 1.18.514 to 1.18.516 2019-05-10 12:42:13 +00:00
Misagh
7bfd0ecbb5 Merge pull request #1835 from freqtrade/docs/print-dataframe
Add printing dataframe to documentation
2019-05-10 14:24:37 +02:00
hroff-1902
0f43e0bb7d minor hyperopt output improvements 2019-05-10 10:54:44 +03:00
Misagh
43c2cf8e1c Merge pull request #1836 from freqtrade/pyup/scheduled-update-2019-05-09
Scheduled daily dependency update on Thursday
2019-05-09 16:05:20 +02:00
pyup-bot
00383b9438 Update pytest from 4.4.1 to 4.4.2 2019-05-09 12:42:09 +00:00
pyup-bot
f36ccdd9fa Update ccxt from 1.18.512 to 1.18.514 2019-05-09 12:42:08 +00:00
Matthias
909df0d7bb Improve doc wording 2019-05-09 08:56:27 +02:00
Matthias
0410654c2c Add printing dataframe to documentation 2019-05-09 06:53:10 +02:00
Matthias
0dbe9cb586 Merge pull request #1823 from hroff-1902/update-qtpylib
Update qtpylib
2019-05-09 06:47:14 +02:00
hroff-1902
45e5867736 heikinashi loop optimized; reset_index moved to tests 2019-05-08 23:41:45 +03:00
Matthias
1ccc25b486 Fix test-data indexing 2019-05-08 20:33:22 +02:00
Matthias
d6aa63bd97 Merge pull request #1834 from freqtrade/pyup/scheduled-update-2019-05-08
Scheduled daily dependency update on Wednesday
2019-05-08 15:10:50 +02:00
pyup-bot
cf1ad3fd8c Update ccxt from 1.18.509 to 1.18.512 2019-05-08 12:42:06 +00:00
hroff-1902
2554ebf273 fixed: heikinashi worked in backtesting, but failed in tests with testing arrays 2019-05-08 00:00:44 +03:00
hroff-1902
d642e03cd0 heikinashi performance problem resolved 2019-05-07 23:39:42 +03:00
Matthias
c8d75fbd8a Merge pull request #1832 from freqtrade/pyup/scheduled-update-2019-05-07
Scheduled daily dependency update on Tuesday
2019-05-07 15:53:00 +02:00
pyup-bot
db0644eddf Update plotly from 3.8.1 to 3.9.0 2019-05-07 12:42:10 +00:00
pyup-bot
a8c4bed4e8 Update ccxt from 1.18.508 to 1.18.509 2019-05-07 12:42:07 +00:00
Misagh
a70830a7b7 Merge pull request #1825 from freqtrade/doc/docker
Improve docker documentation
2019-05-07 14:04:50 +02:00
Misagh
4bb004c6f4 Merge pull request #1828 from freqtrade/rpc/trade_tojson
Refactor trade to_json to persistence
2019-05-07 14:03:58 +02:00
hroff-1902
6467d3b58e check python version 2019-05-06 18:27:05 +03:00
Misagh
194ab5aa92 Merge pull request #1829 from freqtrade/pyup/scheduled-update-2019-05-06
Scheduled daily dependency update on Monday
2019-05-06 14:57:10 +02:00
pyup-bot
c8b8806fed Update ccxt from 1.18.507 to 1.18.508 2019-05-06 12:42:06 +00:00
Matthias
1a677c7441 Add explicit test for to_json 2019-05-06 06:58:17 +02:00
Matthias
2b78f73fe5 Adapt tests to to_json method 2019-05-06 06:56:07 +02:00
Matthias
31d271084f Move json to persistence 2019-05-06 06:55:12 +02:00
hroff-1902
2200a0223b fixed heikinashi 2019-05-06 00:30:21 +03:00
Matthias
1e056ee415 Move trade jsonification to trade class 2019-05-05 14:07:08 +02:00
Matthias
4ae743ecb6 Merge pull request #1826 from freqtrade/pyup/scheduled-update-2019-05-04
Scheduled daily dependency update on Saturday
2019-05-04 15:38:57 +02:00
pyup-bot
6c03246ec8 Update ccxt from 1.18.502 to 1.18.507 2019-05-04 12:42:04 +00:00
Matthias
f506644a8c Improve docker documentation 2019-05-04 09:10:25 +02:00
Matthias
b83a0f9a9c Merge pull request #1822 from freqtrade/pyup/scheduled-update-2019-05-03
Scheduled daily dependency update on Friday
2019-05-04 00:09:48 +02:00
hroff-1902
66c2bdd65a flake happy 2019-05-03 16:58:51 +03:00
hroff-1902
1be4c59481 qtpylib/indicators.py updated 2019-05-03 16:48:07 +03:00
pyup-bot
32e4b0b1b2 Update pytest-cov from 2.6.1 to 2.7.1 2019-05-03 12:43:09 +00:00
pyup-bot
dad55fe7a8 Update ccxt from 1.18.500 to 1.18.502 2019-05-03 12:43:08 +00:00
Matthias
9147e6c5bf Merge pull request #1821 from freqtrade/pyup/scheduled-update-2019-05-02
Scheduled daily dependency update on Thursday
2019-05-02 19:06:39 +02:00
pyup-bot
6c2301ec39 Update ccxt from 1.18.497 to 1.18.500 2019-05-02 12:43:05 +00:00
Matthias
7e96d57627 Merge pull request #1819 from hroff-1902/hyperopt-min-trades
hyperopt --min-trades parameter
2019-05-02 09:36:13 +02:00
Misagh
de6112adb7 Merge pull request #1814 from freqtrade/rpc/forcesell
immediately confirm forcesell
2019-05-01 16:47:22 +02:00
Matthias
46214ce7cd Fix typo after feedback 2019-05-01 16:22:52 +02:00
Matthias
ee619f2919 Merge pull request #1820 from freqtrade/pyup/scheduled-update-2019-05-01
Scheduled daily dependency update on Wednesday
2019-05-01 15:09:46 +02:00
hroff-1902
269699988b test adjusted 2019-05-01 15:55:56 +03:00
pyup-bot
4cecf04639 Update ccxt from 1.18.496 to 1.18.497 2019-05-01 14:43:05 +02:00
hroff-1902
e7b81e4d46 hyperopt --min-trades parameter 2019-05-01 15:27:58 +03:00
Matthias
e1acf0a94d Merge pull request #1804 from hroff-1902/hyperopt-lock
prevent hyperopt from running multiple instances simultaneously
2019-05-01 12:55:32 +02:00
Matthias
b9d7bb2d8e Merge branch 'develop' into pr/hroff-1902/1804 2019-05-01 12:54:36 +02:00
Matthias
90f357db6f Merge pull request #1817 from freqtrade/cover/reload_conf
Improve test for reload_conf with a "realistic" workflow
2019-05-01 12:42:25 +02:00
Matthias
3c376c8e9b Merge pull request #1816 from freqtrade/pyup/scheduled-update-2019-04-30
Scheduled daily dependency update on Tuesday
2019-04-30 19:34:08 +02:00
Matthias
b24bbb2cb1 Improve test for reload_conf with a "realistic" workflow 2019-04-30 19:32:03 +02:00
Matthias
97f2c74dd8 Merge pull request #1815 from hroff-1902/fix-1810
Fix for #1810
2019-04-30 19:31:23 +02:00
hroff-1902
5665426e6b better type hints in worker 2019-04-30 19:47:55 +03:00
pyup-bot
6150679736 Update ccxt from 1.18.493 to 1.18.496 2019-04-30 12:42:06 +00:00
Matthias
4804f45156 Merge pull request #1802 from freqtrade/refactor/config
Refactor config
2019-04-30 12:13:40 +02:00
hroff-1902
537c03504f fix #1810 2019-04-30 10:29:49 +03:00
Matthias
91642b2bd9 Add tsts for forcesell-answers 2019-04-30 06:25:02 +02:00
Matthias
f71eda1c2f Have forcesell return a result 2019-04-30 06:23:14 +02:00
Matthias
c347013eef Merge pull request #1812 from freqtrade/pyup/scheduled-update-2019-04-29
Scheduled daily dependency update on Monday
2019-04-29 15:54:40 +02:00
pyup-bot
59bd081e92 Update ccxt from 1.18.492 to 1.18.493 2019-04-29 12:42:12 +00:00
Matthias
6166e19405 Merge pull request #1808 from freqtrade/pyup/scheduled-update-2019-04-27
Scheduled daily dependency update on Saturday
2019-04-27 16:55:01 +02:00
pyup-bot
21b31f11b8 Update ccxt from 1.18.491 to 1.18.492 2019-04-27 12:42:05 +00:00
Matthias
dd2e05b33f Merge pull request #1807 from freqtrade/fix/travis
fix dockerfile building
2019-04-27 09:12:27 +02:00
Matthias
40c0207377 revert erroneous refactor 2019-04-26 19:59:05 +02:00
Matthias
dc12cacd50 Rename requirements-pi to requirements.common 2019-04-26 19:57:09 +02:00
Matthias
99b08fbd13 Remove unused Hyperopt test lines 2019-04-26 19:51:57 +02:00
Matthias
bf2a39b76d Fix add requirements-pi.txt in dockerfile earlier
Avoids docker-build failure
2019-04-26 19:50:18 +02:00
Matthias
b84b52202e Merge pull request #1806 from freqtrade/pyup/scheduled-update-2019-04-26
Scheduled daily dependency update on Friday
2019-04-26 19:16:56 +02:00
pyup-bot
eaf5547b88 Update ccxt from 1.18.489 to 1.18.491 2019-04-26 12:42:07 +00:00
hroff-1902
ea44bbff9f prevent hyperopt from running simultaneously 2019-04-25 11:11:04 +03:00
Matthias
cc0c96af50 Merge pull request #1801 from freqtrade/catch_network_timeout_1789
Catch errors on reload_markets
2019-04-24 22:40:52 +02:00
Matthias
ef3b244c1a Merge pull request #1798 from freqtrade/downgrade_urllib
Downgrade urllib3, cleanup requirements files
2019-04-24 22:30:59 +02:00
Matthias
45ecbc91e8 Use BaseError, not NetworkError in exception handler 2019-04-24 22:20:05 +02:00
Matthias
401caaabb4 Merge branch 'develop' into downgrade_urllib 2019-04-24 22:17:20 +02:00
Matthias
22eb6cb5fa Fix typo in args_to_config 2019-04-24 22:08:56 +02:00
Matthias
65dcb6acea Catch errors on reload_markets 2019-04-24 21:56:24 +02:00
Matthias
b4630c403d Add typehints 2019-04-24 21:32:33 +02:00
Matthias
86313b337a Combine optimize configurations, eliminate duplicates 2019-04-24 21:27:32 +02:00
Matthias
87329c689d Change ticker_interval too 2019-04-24 21:24:00 +02:00
Matthias
ca3b8ef2e7 Remove duplicate argument 2019-04-24 21:13:57 +02:00
Matthias
a0413b5d91 Only log one message per call 2019-04-24 21:12:23 +02:00
Matthias
d6276a15d2 Convert all optimize to args_to_config 2019-04-24 21:12:08 +02:00
Matthias
39f60c4740 Add some more arguments to args_to_config 2019-04-24 21:02:05 +02:00
Matthias
17cf9d33cf add _args_to_conig 2019-04-24 20:44:36 +02:00
Matthias
fa7866291a Merge pull request #1799 from freqtrade/pyup/scheduled-update-2019-04-24
Scheduled daily dependency update on Wednesday
2019-04-24 15:18:07 +02:00
pyup-bot
59f905a573 Update ccxt from 1.18.486 to 1.18.489 2019-04-24 12:41:09 +00:00
pyup-bot
060571290a Update ccxt from 1.18.486 to 1.18.489 2019-04-24 12:41:08 +00:00
Matthias
30888cf5ca have pyup ignore outdated dependency 2019-04-24 14:07:55 +02:00
Matthias
eb89b65b59 Downgrade urllib3, cleanup requirements files
every requirement should be there only once
2019-04-24 14:04:12 +02:00
Matthias
bf56e25404 Merge pull request #1746 from hroff-1902/json-defaults
Support for defaults in json schema
2019-04-24 12:20:39 +02:00
Matthias
34fa2011be Merge pull request #1792 from hroff-1902/hyperopt-jobs
hyperopt: -j/--job-workers command line option added
2019-04-24 12:19:07 +02:00
hroff-1902
a8e787fda8 test adjusted 2019-04-24 11:25:15 +03:00
Matthias
ad692c185e Improve comment 2019-04-24 09:55:53 +02:00
Matthias
d16ccd7e37 Merge branch 'develop' into json-defaults 2019-04-24 09:51:04 +02:00
Matthias
a92d5f3569 Parametrize default-param tests 2019-04-24 09:48:25 +02:00
hroff-1902
95ebd07735 an attempt to fix mocking 2019-04-24 10:38:50 +03:00
hroff-1902
6a0f527e0e merge --job-workers and commit printing debug log messages with the opt state 2019-04-24 10:35:04 +03:00
Matthias
65a82d7ee6 Add some missing default parameters 2019-04-24 09:31:13 +02:00
hroff-1902
2898067318 Merge branch 'develop' into hyperopt-jobs 2019-04-24 10:31:03 +03:00
Matthias
6d2a1cfb44 remove full-config in tests and load full_config file 2019-04-24 09:30:59 +02:00
Matthias
bced53966e Merge pull request #1795 from hroff-1902/hyperopt-opt-params
hyperopt: --random-state for optimizer to get reproducible results
2019-04-24 07:10:02 +02:00
hroff-1902
a429f83f5e flake happy; check_positive() renamed 2019-04-23 22:16:24 +03:00
hroff-1902
2f0ad0d28c test adjusted 2019-04-23 22:03:41 +03:00
hroff-1902
fc4ef2b430 Merge branch 'develop' into hyperopt-opt-params 2019-04-23 21:58:27 +03:00
hroff-1902
e3b0474901 Merge branch 'develop' into hyperopt-jobs 2019-04-23 21:34:38 +03:00
hroff-1902
cc9f899cd6 removed explicit dependency on multiprocessing module 2019-04-23 21:25:36 +03:00
hroff-1902
a022b1a6c1 --random-state for optimzer to get reproducible results added 2019-04-23 21:18:52 +03:00
Matthias
4971b9fc39 Merge pull request #1793 from hroff-1902/hyperopt-debug-state
hyperopt: print optimizer state in debug log messages
2019-04-23 20:11:04 +02:00
Matthias
939bf66a80 Merge pull request #1791 from hroff-1902/hyperopt-refresh-pairs
hyperopt: --refresh-pairs-cached added
2019-04-23 20:07:57 +02:00
Matthias
309a54ba69 Merge pull request #1794 from freqtrade/pyup/scheduled-update-2019-04-23
Scheduled daily dependency update on Tuesday
2019-04-23 15:05:01 +02:00
pyup-bot
8568459c74 Update urllib3 from 1.24.2 to 1.25 2019-04-23 12:41:16 +00:00
pyup-bot
9a2eb46cea Update urllib3 from 1.24.2 to 1.25 2019-04-23 12:41:14 +00:00
pyup-bot
48e2bd5114 Update ccxt from 1.18.485 to 1.18.486 2019-04-23 12:41:13 +00:00
pyup-bot
a2a70bd6d0 Update ccxt from 1.18.485 to 1.18.486 2019-04-23 12:41:12 +00:00
hroff-1902
3e3fce5f38 print optimizer state in debug log messages 2019-04-23 09:49:24 +03:00
hroff-1902
7c8e26c717 -j/--job-workers option added for controlling the number of joblib parallel worker processes used in hyperopt
docs refreshed
2019-04-23 00:52:07 +03:00
hroff-1902
8dad8f25cf docs refreshed 2019-04-22 22:11:56 +03:00
hroff-1902
ad85ac3dde make --refresh-pairs-cached common option for optimization; added support for it into hyperopt 2019-04-22 21:24:45 +03:00
Matthias
d3e956f7cc Merge pull request #1790 from freqtrade/pyup/scheduled-update-2019-04-22
Scheduled daily dependency update on Monday
2019-04-22 16:04:40 +02:00
pyup-bot
3da1b24b6a Update numpy from 1.16.2 to 1.16.3 2019-04-22 12:41:08 +00:00
pyup-bot
42d2b24d48 Update ccxt from 1.18.483 to 1.18.485 2019-04-22 12:41:07 +00:00
pyup-bot
8685fcd593 Update ccxt from 1.18.483 to 1.18.485 2019-04-22 12:41:06 +00:00
Matthias
45aa93e73d Merge pull request #1787 from NatanNMB15/walletsync-fix-sell
Wallet Sync fix after any trade is closed
2019-04-22 13:44:40 +02:00
Matthias
676cd6ffee Add assert to make sure trade was closed 2019-04-22 13:36:14 +02:00
Matthias
a9de2f80f2 Add tests to update wallets after closing a limit-sell 2019-04-22 13:31:07 +02:00
Matthias
86ec88b8fe Merge pull request #1788 from hroff-1902/hyperopt-print-all
--print-all command line option for hyperopt
2019-04-22 13:14:46 +02:00
hroff-1902
6b87d94bb0 --print-all command line option added for hyperopt 2019-04-22 01:10:01 +03:00
NatanNMB15
706b30f4d2 Fix "if" condition with "if not" for check if trade is open. 2019-04-21 14:54:24 -03:00
NatanNMB15
3bcc60333d Added command for Wallets Sync after a trade is closed in "update_trade" method in "freqtradebot" class, this will help the Wallets get updated after a trade is sold and closed, specifically LIMIT_SELL trades, then bot can work properly with new trades. 2019-04-21 13:49:07 -03:00
Misagh
bf6c435ae6 Merge pull request #1786 from freqtrade/pyup/scheduled-update-2019-04-21
Scheduled daily dependency update on Sunday
2019-04-21 15:04:29 +02:00
pyup-bot
abc4840d16 Update ccxt from 1.18.481 to 1.18.483 2019-04-21 12:41:05 +00:00
pyup-bot
a118003d0a Update ccxt from 1.18.481 to 1.18.483 2019-04-21 12:41:04 +00:00
Misagh
ccc91403c5 Merge pull request #1784 from freqtrade/doc/release
Improve developer documentation
2019-04-20 21:08:11 +02:00
Matthias
9b0b1c3cc2 Merge pull request #1785 from freqtrade/pyup/scheduled-update-2019-04-20
Scheduled daily dependency update on Saturday
2019-04-20 19:40:59 +02:00
pyup-bot
395aed5f97 Update plotly from 3.8.0 to 3.8.1 2019-04-20 12:40:07 +00:00
pyup-bot
278e5f4cc6 Update ccxt from 1.18.480 to 1.18.481 2019-04-20 12:40:06 +00:00
pyup-bot
7fa5046575 Update ccxt from 1.18.480 to 1.18.481 2019-04-20 12:40:05 +00:00
Matthias
9b8067cbc3 Improve developer documentation 2019-04-20 12:50:10 +02:00
Matthias
e252f0feba Merge pull request #1782 from mishaker/v-18-5
version to 0.18.5-dev
2019-04-20 09:25:20 +02:00
Misagh
8e8ec2fba6 version to 0.18.5-dev 2019-04-19 16:01:26 +02:00
Misagh
41e698c482 Merge pull request #1777 from freqtrade/new_release
Version to 0.18.5
2019-04-19 15:57:07 +02:00
Matthias
82127d8406 Merge pull request #1781 from freqtrade/pyup/scheduled-update-2019-04-19
Scheduled daily dependency update on Friday
2019-04-19 15:41:40 +02:00
pyup-bot
5a65b6caee Update ccxt from 1.18.475 to 1.18.480 2019-04-19 12:40:06 +00:00
pyup-bot
ed6a92cd0f Update ccxt from 1.18.475 to 1.18.480 2019-04-19 12:40:05 +00:00
Matthias
577ccd32f0 Merge pull request #1750 from hroff-1902/ccxt-to-exchange-only
minor: limit usage of ccxt to freqtrade/exchange only
2019-04-19 06:51:08 +02:00
Matthias
72657758d5 Restore get_market_pairs from develop 2019-04-19 06:43:12 +02:00
Matthias
f9ba0483ca Merge pull request #1778 from freqtrade/pyup/scheduled-update-2019-04-18
Scheduled daily dependency update on Thursday
2019-04-18 15:51:26 +02:00
pyup-bot
d82fb57223 Update pytest-mock from 1.10.3 to 1.10.4 2019-04-18 12:40:16 +00:00
pyup-bot
5c10e9a7fa Update urllib3 from 1.24.1 to 1.24.2 2019-04-18 12:40:11 +00:00
pyup-bot
578ad903bc Update urllib3 from 1.24.1 to 1.24.2 2019-04-18 12:40:10 +00:00
pyup-bot
789b445815 Update ccxt from 1.18.472 to 1.18.475 2019-04-18 12:40:08 +00:00
pyup-bot
c299d9249f Update ccxt from 1.18.472 to 1.18.475 2019-04-18 12:40:07 +00:00
Misagh
795c2e4aa2 version to 0.18.5 2019-04-18 08:07:43 +02:00
Misagh
031a63d5c2 Merge pull request #1771 from freqtrade/enable_ratelimit
Enable ratelimit
2019-04-17 17:31:21 +02:00
Misagh
f5ef8f5bc0 Merge pull request #1772 from freqtrade/fix/staticmethod_import
Gracefully handle pickle-errors when @staticmethod is used
2019-04-17 17:24:56 +02:00
Matthias
30f7536cbe Merge pull request #1773 from freqtrade/pyup/scheduled-update-2019-04-17
Scheduled daily dependency update on Wednesday
2019-04-17 15:03:20 +02:00
pyup-bot
8abdbc41e1 Update mypy from 0.700 to 0.701 2019-04-17 12:40:10 +00:00
pyup-bot
7f229bbf39 Update ccxt from 1.18.470 to 1.18.472 2019-04-17 12:40:09 +00:00
pyup-bot
d4947ba0ee Update ccxt from 1.18.470 to 1.18.472 2019-04-17 12:40:07 +00:00
Matthias
2cee716181 Gracefully handle pickle-errors when @staticmethod is used
pOinted out in https://github.com/freqtrade/freqtrade-strategies/issues/28
2019-04-16 20:25:48 +02:00
Matthias
a7383ad35d enable ratelimit in download-backtest-data too 2019-04-16 19:54:24 +02:00
Matthias
52cc2d224e improve documentation for exchange configuration 2019-04-16 19:51:56 +02:00
Matthias
5db10bdcc7 Add rateLimit parameters for different exchanges 2019-04-16 19:51:42 +02:00
Matthias
43119efaf0 Remove ccxt_rate_limit completely (was deprecated) 2019-04-16 19:41:02 +02:00
Matthias
16bf7aa3ab Merge pull request #1770 from freqtrade/pyup/scheduled-update-2019-04-16
Scheduled daily dependency update on Tuesday
2019-04-16 15:25:34 +02:00
pyup-bot
b2a623ee16 Update plotly from 3.7.1 to 3.8.0 2019-04-16 12:39:12 +00:00
pyup-bot
c40406d26e Update pytest from 4.4.0 to 4.4.1 2019-04-16 12:39:09 +00:00
pyup-bot
87ff5ad1e0 Update sqlalchemy from 1.3.2 to 1.3.3 2019-04-16 12:39:07 +00:00
pyup-bot
aa63f2be1f Update sqlalchemy from 1.3.2 to 1.3.3 2019-04-16 12:39:06 +00:00
pyup-bot
5cb90bdf77 Update ccxt from 1.18.468 to 1.18.470 2019-04-16 12:39:05 +00:00
pyup-bot
4f557af6cb Update ccxt from 1.18.468 to 1.18.470 2019-04-16 12:39:04 +00:00
Misagh
5f63797f17 Merge pull request #1762 from freqtrade/update_imageversion
Version bump to 3.7.3 in docker file
2019-04-15 19:45:21 +02:00
Misagh
bbb32ada4a Merge pull request #1763 from freqtrade/pi/docs
Update documentation for Raspberry
2019-04-15 19:44:53 +02:00
Misagh
fc33f19b06 Merge pull request #1767 from freqtrade/pyup/scheduled-update-2019-04-15
Scheduled daily dependency update on Monday
2019-04-15 15:20:33 +02:00
pyup-bot
7efab85b10 Update sqlalchemy from 1.3.1 to 1.3.2 2019-04-15 12:39:08 +00:00
pyup-bot
0ece168833 Update ccxt from 1.18.353 to 1.18.468 2019-04-15 12:39:06 +00:00
pyup-bot
6be4c6af0e Update ccxt from 1.18.466 to 1.18.468 2019-04-15 12:39:05 +00:00
Matthias
4f6df73156 Update documentation for Raspberry install since we now have a
rpi-requirements file
2019-04-14 15:57:44 +02:00
Matthias
cd20078bef Merge pull request #1742 from tl-nguyen/feature/add-dockerfile-for-pi
Add Dockerfile.pi for building docker image for raspberry pi
2019-04-14 15:53:37 +02:00
Matthias
5e0e8de4f6 Version bump to 3.7.3 in docker file 2019-04-14 13:13:28 +02:00
Matthias
ed5e76adac Merge pull request #1755 from hroff-1902/scripts-get_market_pairs
Minor: impoved argument and exception handling in scripts
2019-04-14 10:40:57 +02:00
Matthias
12265b245d Merge pull request #1738 from konqueror1/develop
Added command line options to override max_open_trades and stake_amount
2019-04-14 10:34:27 +02:00
Matthias
37b1389f12 Fix flake8 2019-04-14 10:17:06 +02:00
Matthias
b679eb1a95 Merge pull request #1761 from freqtrade/pyup/scheduled-update-2019-04-13
Scheduled daily dependency update on Saturday
2019-04-13 15:59:48 +02:00
pyup-bot
2f79cf1304 Update ccxt from 1.18.460 to 1.18.466 2019-04-13 12:39:05 +00:00
Misagh
3fe0cb9281 Merge pull request #1760 from freqtrade/pyup/scheduled-update-2019-04-12
Scheduled daily dependency update on Friday
2019-04-12 15:05:41 +02:00
pyup-bot
9f828224bc Update ccxt from 1.18.458 to 1.18.460 2019-04-12 12:39:05 +00:00
Misagh
2153e43969 Merge pull request #1759 from hroff-1902/patch-20
Docs: wrong rendering at freqtrade.io fixed
2019-04-12 10:48:02 +02:00
Misagh
c6d19a4afb Merge pull request #1758 from freqtrade/fix/rpcheader
Missing /daily header
2019-04-12 10:45:56 +02:00
hroff-1902
016e8fde89 wrong rendering at freqtrade.io fixed; other cosmetics in docs/
* Titles render wrong both in the docs dir and at freqtrade.io
* Last list of links renders wring at freqtrade.io
2019-04-12 10:54:28 +03:00
Matthias
d87db70ed0 Fix missing column header 2019-04-12 07:05:15 +02:00
Matthias
c3b9d69919 Add docstring explaining the source of the script 2019-04-12 07:05:00 +02:00
hroff-1902
c3a9db6488 change comments to docstrings 2019-04-11 22:22:33 +03:00
hroff-1902
8bdbfbf194 tests for options added 2019-04-11 18:07:51 +03:00
Matthias
f204af173d Merge pull request #1757 from freqtrade/pyup/scheduled-update-2019-04-11
Scheduled daily dependency update on Thursday
2019-04-11 15:52:05 +02:00
pyup-bot
12ca103f9f Update ccxt from 1.18.456 to 1.18.458 2019-04-11 12:38:06 +00:00
hroff-1902
c2ca899c7e fixed printed message; cosmetic changes in the code in scripts/download_backtest_data.py 2019-04-11 00:59:53 +03:00
hroff-1902
902ffa6853 impoved argument and exception handling in scripts/get_market_pairs.py 2019-04-11 00:15:17 +03:00
hroff-1902
f03acce84c typing of return value corrected 2019-04-11 00:07:27 +03:00
Misagh
93ebf163cb Merge pull request #1754 from freqtrade/pyup/scheduled-update-2019-04-10
Scheduled daily dependency update on Wednesday
2019-04-10 14:55:59 +02:00
pyup-bot
f736646ac6 Update ccxt from 1.18.445 to 1.18.456 2019-04-10 12:38:05 +00:00
Misagh
262113f9ee Merge pull request #1749 from freqtrade/telegram_long_msg
Telegram long /balance message
2019-04-10 10:30:49 +02:00
Matthias
e75cdd4c27 Rename variable, add more tests 2019-04-10 06:59:10 +02:00
Matthias
559257ed33 Merge pull request #1752 from freqtrade/pyup/scheduled-update-2019-04-09
Scheduled daily dependency update on Tuesday
2019-04-09 16:59:48 +02:00
pyup-bot
71e671f053 Update ccxt from 1.18.442 to 1.18.445 2019-04-09 12:38:06 +00:00
hroff-1902
9fbe573cca limit usage of ccxt to freqtrade/exchange only 2019-04-09 12:27:35 +03:00
Matthias
6856848efc Merge pull request #1744 from hroff-1902/ccxt-parse_timeframe
cosmetic: rename interval, tick_interval, etc --> ticker_interval
2019-04-08 20:26:36 +02:00
Matthias
ff6967de9e Add test for too large balance 2019-04-08 19:59:54 +02:00
Matthias
5c4170951a Don't send too large messages 2019-04-08 19:59:30 +02:00
Misagh
500eb17449 Merge pull request #1747 from freqtrade/pyup/scheduled-update-2019-04-08
Scheduled daily dependency update on Monday
2019-04-08 16:30:12 +02:00
pyup-bot
ffdc33d964 Update ccxt from 1.18.437 to 1.18.442 2019-04-08 12:39:06 +00:00
hroff-1902
3e4dd5019d docs adjusted 2019-04-08 11:20:15 +03:00
hroff-1902
cb2f422e1c make name option required again 2019-04-08 11:19:45 +03:00
hroff-1902
4559a38172 PoC: use defaults in json schema for some exchange options 2019-04-08 04:42:28 +03:00
hroff-1902
91dc2b96fc support for defaults in json.schema 2019-04-08 04:23:29 +03:00
Matthias
fb8555a6cc Merge pull request #1743 from freqtrade/pyup/scheduled-update-2019-04-07
Scheduled daily dependency update on Sunday
2019-04-07 19:17:31 +02:00
hroff-1902
ebf1126351 cosmetic: rename interval, tick_interval, etc --> ticker_interval 2019-04-07 16:28:53 +03:00
pyup-bot
3a81eb7d48 Update ccxt from 1.18.435 to 1.18.437 2019-04-07 12:38:05 +00:00
TL Nguyen
3ad4d937c5 Correct Dockerfile.pi file to use requirements-pi.txt 2019-04-07 14:07:26 +03:00
TL Nguyen
c35e5ca7dd Add back requirements-pi.txt file and put it into .pyup.yml 2019-04-07 14:05:41 +03:00
Matthias
4a6c8f3cb2 Merge pull request #1735 from hroff-1902/ccxt-parse_timeframe
Resolution for #1137
2019-04-07 12:52:13 +02:00
TL Nguyen
e7c8e62d75 Remove requirements-pi.txt, change Dockerfile.pi to utilize the requirements.txt instead 2019-04-07 10:31:03 +03:00
hroff-1902
d6d16b4696 docstrings improved 2019-04-07 00:22:02 +03:00
hroff-1902
dc1968b968 docstrings added 2019-04-06 23:36:55 +03:00
Misagh
4fef9448bf Merge pull request #1727 from mishaker/fix_cancel_order
Adding invalid order exception and fix #1726
2019-04-06 20:32:44 +02:00
Misagh
4bb5345e13 Merge pull request #1741 from freqtrade/abstract_count
rpc Count should be in rpc.py
2019-04-06 20:32:15 +02:00
Misagh
d294cab933 adding order id to invalidorder exception message 2019-04-06 20:27:03 +02:00
Matthias
f139178136 rpc_counts should be in .rpc 2019-04-06 20:11:41 +02:00
TL Nguyen
4eb0ed9f2f Add Dockerfile.pi for building docker image for raspberry pi 2019-04-06 21:11:14 +03:00
Matthias
7a598f32dc Move rpc-count calculation to _rpc class 2019-04-06 19:58:45 +02:00
Matthias
b776336ebf Merge pull request #1740 from freqtrade/pyup/scheduled-update-2019-04-06
Scheduled daily dependency update on Saturday
2019-04-06 14:57:54 +02:00
pyup-bot
481df98f58 Update ccxt from 1.18.432 to 1.18.435 2019-04-06 12:38:04 +00:00
hroff-1902
8cb1024ff6 Merge branch 'develop' into ccxt-parse_timeframe 2019-04-05 23:16:27 +03:00
Misagh
41ff2a9276 TemporaryError removed 2019-04-05 20:40:44 +02:00
Misagh
acb99a03e3 adding stoploss on exchange manual cancel note 2019-04-05 20:30:54 +02:00
Misagh
4b2eb22989 conflict with develop resolved 2019-04-05 20:23:15 +02:00
Misagh
a505826ec9 flake8 2019-04-05 20:20:41 +02:00
Misagh
54d068de44 missing test added 2019-04-05 20:20:16 +02:00
Misagh
25d8e93a90 remove unnecessary comment 2019-04-05 19:53:15 +02:00
Misagh
9712fb2d57 removing unnecessary comment 2019-04-05 19:49:02 +02:00
Misagh
2b49a11b2a returning InvalidOrder exception for get_order 2019-04-05 19:46:43 +02:00
Matthias
1bfc667515 Merge pull request #1737 from freqtrade/doc/simplify
Improve documentation formatting
2019-04-05 19:21:30 +02:00
Your Name
4c5432be6f Added command line options in backtesting to override max_open_trades and stake_amount 2019-04-05 16:48:14 +03:00
Misagh
9dc2a30793 Merge pull request #1683 from gianlup/fix_bt_partial_data
Fix backtest problem with partial data
2019-04-05 07:28:57 +02:00
Matthias
13e8f25ca9 Improve docs layout 2019-04-05 06:51:16 +02:00
Matthias
ac1964edb1 Remove unnecessary comment 2019-04-05 06:49:15 +02:00
Matthias
dbb1bbf101 Fix webhook documentation 2019-04-05 06:47:03 +02:00
Matthias
0ac80aacd1 Merge pull request #1736 from iuvbio/update/docs
Update/docs
2019-04-04 21:15:28 +02:00
iuvbio
7486cb7c64 fix admonitions 2019-04-04 21:05:26 +02:00
iuvbio
e3cdc0a05b typos and visual fixes 2019-04-04 20:53:28 +02:00
hroff-1902
6913bce6a1 flake8, import in script/plot_profit.py 2019-04-04 21:39:38 +03:00
Matthias
7010c835d2 Improve commentign 2019-04-04 20:23:10 +02:00
hroff-1902
2aa1b43f01 get rid of TICKER_INTERVAL_MINUTES dict, use ccxt's parse_timeframe() instead 2019-04-04 20:56:40 +03:00
Matthias
32cbb714f9 Improve commenting on backtsting and backtest_multi_tst 2019-04-04 19:44:03 +02:00
Misagh
7f4fd6168a test for canceled SL on exchange added 2019-04-04 17:23:21 +02:00
Misagh
647534a4f8 flake8 2019-04-04 17:17:21 +02:00
Misagh
31fa857319 typo 2019-04-04 17:15:51 +02:00
Misagh
a363d443bf stoploss on exchange canceled handled 2019-04-04 17:13:54 +02:00
Misagh
75c522e082 Merge pull request #1734 from freqtrade/pyup/scheduled-update-2019-04-04
Scheduled daily dependency update on Thursday
2019-04-04 14:56:55 +02:00
pyup-bot
ebeaf64fbb Update mypy from 0.670 to 0.700 2019-04-04 12:38:06 +00:00
pyup-bot
6afe232c4d Update ccxt from 1.18.430 to 1.18.432 2019-04-04 12:38:05 +00:00
Matthias
05df7f3394 Merge pull request #1733 from mishaker/stake_amount_bug
"stake amount" not "amount" should be shown for stake_amount :)
2019-04-04 14:13:00 +02:00
Misagh
0cdbe714d2 stake amount not amount 2019-04-04 12:06:45 +02:00
Misagh
9d6d60dcf0 Merge pull request #1689 from hroff-1902/main_refactoring
Main.py and freqtradebot refactoring
2019-04-04 11:19:15 +02:00
hroff-1902
65350ad552 final flake happy 2019-04-03 22:14:42 +03:00
Matthias
b437c3cf0c Merge pull request #1729 from mishaker/telegram_sl
Removing % sign from telegram message as it is already a pct.
2019-04-03 21:09:36 +02:00
Misagh
5488c66f53 flake8 2019-04-03 20:35:37 +02:00
Misagh
ef48193fad Merge pull request #1721 from hroff-1902/fix_1704
Fix #1704
2019-04-03 20:32:38 +02:00
Misagh
9ee1dd99eb tests fixed 2019-04-03 20:28:03 +02:00
Matthias
0307ba7883 Remove one branch - python does lazy evaluation 2019-04-03 20:04:04 +02:00
Matthias
1a5b0969b9 Fix tests (both tests where testing the same thing) 2019-04-03 19:53:10 +02:00
Matthias
3c399fbe3f Improve whitelist wordings 2019-04-03 19:51:46 +02:00
Matthias
a9a5c4a052 Merge pull request #1731 from mishaker/msg_stake
This adds stake amount in base currency to the RPC status message
2019-04-03 19:31:24 +02:00
Misagh
d5498c8712 adding % 2019-04-03 19:29:44 +02:00
Matthias
09321ccc9c Merge pull request #1728 from mishaker/edge_rpc_msg
Filtering edge pairs for RPC
2019-04-03 19:27:14 +02:00
Misagh
a3fe5f5757 adding stake amount to telegram message 2019-04-03 16:28:44 +02:00
Matthias
dfed713647 Merge pull request #1730 from freqtrade/pyup/scheduled-update-2019-04-03
Scheduled daily dependency update on Wednesday
2019-04-03 15:32:15 +02:00
pyup-bot
92dc3c89af Update sqlalchemy from 1.3.1 to 1.3.2 2019-04-03 12:38:07 +00:00
pyup-bot
eb610441b5 Update ccxt from 1.18.425 to 1.18.430 2019-04-03 12:38:06 +00:00
Misagh
67eeb145e1 flake8 2019-04-03 14:31:00 +02:00
Misagh
a3835b1279 flake8 2019-04-03 14:14:47 +02:00
Misagh
5f38d5ee63 removing % sign as it is already a pct 2019-04-03 14:07:33 +02:00
Misagh
53eaf85969 filtering edge pairs for RPC 2019-04-03 14:03:28 +02:00
hroff-1902
d54acca53a move tests back to original codebase to minimize changes 2019-04-03 00:55:59 +03:00
hroff-1902
2959156070 Merge branch 'develop' into main_refactoring 2019-04-03 00:50:33 +03:00
hroff-1902
b0ddb33acc tests cleanup: Worker --> FreqtradeBot where the Worker object is not really needed 2019-04-02 22:36:30 +03:00
hroff-1902
62141d3d27 test cloned, separate tests for worker and freqtrade states 2019-04-02 21:57:52 +03:00
Matthias
478c149bbb Merge pull request #1724 from mishaker/telegram_pct
Added percentage to telegram messages + documentation
2019-04-02 20:15:01 +02:00
Misagh
7b39a3084f formatting and readability 2019-04-02 20:08:10 +02:00
Misagh
a6daf0d991 formatting pct 2019-04-02 20:00:58 +02:00
Misagh
54f11ad603 enriching TSL log 2019-04-02 18:57:06 +02:00
Misagh
40df0dcf3d tests fixed 2019-04-02 18:45:18 +02:00
Misagh
99d256422e adding InvalidOrder to exchange 2019-04-02 18:31:03 +02:00
Misagh
389feda65f Invalid order exception added 2019-04-02 18:25:17 +02:00
Misagh
5a8f0f3557 Merge pull request #1725 from freqtrade/pyup/scheduled-update-2019-04-02
Scheduled daily dependency update on Tuesday
2019-04-02 16:37:58 +02:00
pyup-bot
b9b76977b6 Update ccxt from 1.18.420 to 1.18.425 2019-04-02 12:38:06 +00:00
Misagh
27917c2d89 Merge pull request #1720 from freqtrade/fix/fee_not_adjusted
Fix/fee not adjusted
2019-04-02 12:23:08 +02:00
Matthias
0cfdce0d5e Update function name from update_open_order to update_trade_state 2019-04-02 07:12:48 +02:00
hroff-1902
ab0e657d77 Check for empty whitelist moved to _process() 2019-04-01 21:36:53 +03:00
hroff-1902
34b40500c3 Check whitelist fetched from config for emptiness 2019-04-01 20:45:59 +03:00
Misagh
a3b0135557 documentation added for telegram 2019-04-01 19:25:13 +02:00
hroff-1902
8546db9dfd wording in the log message 2019-04-01 20:23:13 +03:00
Misagh
ab579587f2 adding percentage to telegram status messages 2019-04-01 19:13:45 +02:00
Matthias
ecd75e43b0 Merge pull request #1722 from freqtrade/pyup/scheduled-update-2019-04-01
Scheduled daily dependency update on Monday
2019-04-01 16:03:31 +02:00
pyup-bot
061f91ba41 Update pytest from 4.3.1 to 4.4.0 2019-04-01 12:38:07 +00:00
pyup-bot
97b31352c2 Update ccxt from 1.18.418 to 1.18.420 2019-04-01 12:38:06 +00:00
hroff-1902
77d2479c75 tests adjusted 2019-04-01 14:08:41 +03:00
hroff-1902
f0b2798c37 fix #1704 2019-04-01 14:08:03 +03:00
Misagh
8002936fe3 Merge pull request #1712 from freqtrade/log/tofile
Allow logging to file
2019-04-01 12:55:19 +02:00
Misagh
f440bb193d Merge pull request #1714 from freqtrade/cleanup_conftest
Cleanup tests a bit
2019-04-01 12:52:49 +02:00
Misagh
faa5883f09 Merge pull request #1716 from freqtrade/fix-jsonfull
fix typos in full_json_example
2019-04-01 12:50:47 +02:00
hroff-1902
7251e5bd62 bot state moved back to freqtradebot from worker 2019-03-31 23:39:55 +03:00
Matthias
7be90f71d3 Add test as called from execute_buy 2019-03-31 19:56:01 +02:00
Matthias
19d3a0cbac Update comment 2019-03-31 19:41:17 +02:00
Matthias
0ddafeeabf Split test for open_orders from maybe_sell 2019-03-31 16:05:40 +02:00
Matthias
b2ad402df4 Split tests for update-open_order 2019-03-31 15:51:45 +02:00
Matthias
e46dac3fbd Test stoploss does not raise dependencyexception 2019-03-31 15:45:22 +02:00
Matthias
5c8fbe2c6f Handle exception for stoploss independently of sell order 2019-03-31 15:41:10 +02:00
Matthias
f11a1b0122 Call update_open_order inline with buy
captures FOK / market orders
2019-03-31 15:40:43 +02:00
Matthias
8f4cca47e9 Refactor update_open_order into it's own function 2019-03-31 15:39:41 +02:00
Matthias
4fa736114c Don't set order_id to none here - it's used in "update_open_order".
should fix bugs observed in #1371 connected to stoploss
2019-03-31 15:38:25 +02:00
Misagh
13ac1e1957 Merge pull request #1719 from freqtrade/pyup/scheduled-update-2019-03-31
Scheduled daily dependency update on Sunday
2019-03-31 14:58:16 +02:00
pyup-bot
c28a0374f1 Update pytest-mock from 1.10.2 to 1.10.3 2019-03-31 12:38:04 +00:00
pyup-bot
93229fc54b Update ccxt from 1.18.415 to 1.18.418 2019-03-31 12:38:03 +00:00
Matthias
997190a050 Merge pull request #1709 from mishaker/sl_pct
Adding stoploss percentage to DB
2019-03-31 13:47:42 +02:00
Matthias
707a5fca91 ifix typos in full_json_example 2019-03-31 13:30:22 +02:00
Misagh
6d92b9b910 Merge branch 'develop' of https://github.com/freqtrade/freqtrade into sl_pct 2019-03-31 13:20:25 +02:00
Misagh
9b38c04579 negating SL pct and adding tests 2019-03-31 13:15:35 +02:00
hroff-1902
06144a1fc4 Wording in a comment 2019-03-30 23:33:52 +03:00
Matthias
0d152eb907 Merge pull request #1713 from freqtrade/pyup/scheduled-update-2019-03-30
Scheduled daily dependency update on Saturday
2019-03-30 13:53:43 +01:00
Matthias
1a61bf7bff sort imports 2019-03-30 13:48:30 +01:00
Matthias
87a296f728 No need to call patch_coinmarketcap each tim 2019-03-30 13:48:03 +01:00
Matthias
e98c0621d3 We don't need to call patch_coinmarketcap each time. 2019-03-30 13:47:30 +01:00
Matthias
40c0b4ef2e Autopatch coinmarketcap 2019-03-30 13:47:21 +01:00
pyup-bot
44142706c3 Update ccxt from 1.18.412 to 1.18.415 2019-03-30 12:38:03 +00:00
hroff-1902
208832e847 flake8, mypy resolved 2019-03-30 02:19:43 +03:00
Matthias
12066411db Update docs with logfile methods 2019-03-29 20:19:40 +01:00
Matthias
e5008fbf93 Add test for logfile attribute 2019-03-29 20:16:52 +01:00
Matthias
d4ffdaffc2 Correctly add types 2019-03-29 20:16:41 +01:00
Matthias
bb5a310aec Add --logfile argument 2019-03-29 20:13:15 +01:00
Matthias
ba558b2d75 Merge pull request #1711 from freqtrade/pyup/scheduled-update-2019-03-29
Scheduled daily dependency update on Friday
2019-03-29 15:16:53 +01:00
pyup-bot
82b344db1b Update ccxt from 1.18.407 to 1.18.412 2019-03-29 12:38:05 +00:00
Misagh
f2599ffe90 pct default to None 2019-03-29 08:08:29 +01:00
Misagh
50fc63251e added SL pct to DB 2019-03-28 21:18:26 +01:00
Misagh
b1ef39927c Merge pull request #1673 from freqtrade/refactor/persistance_stoplossupdate
trailing stop backtest problems
2019-03-28 20:44:24 +01:00
Matthias
b4472a165e Merge pull request #1707 from mishaker/telegram_msg
Telegram status message refactoring
2019-03-28 19:45:48 +01:00
Matthias
a87fc5f863 Fix tests - freqtrade should not be patched in this case 2019-03-28 19:37:50 +01:00
Misagh
2f3f5f19cd sl percentage removed form rpc test 2019-03-28 16:26:59 +01:00
Misagh
e11eb4775e stoploss precentage in telegram msg removed 2019-03-28 16:21:49 +01:00
Matthias
a15a3ae810 Merge pull request #1708 from freqtrade/pyup/scheduled-update-2019-03-28
Scheduled daily dependency update on Thursday
2019-03-28 14:45:56 +01:00
pyup-bot
daeb172ba1 Update ccxt from 1.18.406 to 1.18.407 2019-03-28 12:38:05 +00:00
Misagh
0e5b0ebda6 adding SL and SL percentage to telegram msg 2019-03-28 12:09:07 +01:00
hroff-1902
d5254dff7b Merge branch 'develop' into main_refactoring 2019-03-28 11:10:21 +03:00
Matthias
146d6bf7fb Merge pull request #1698 from mishaker/edge_rpc
Edge RPC
2019-03-28 06:22:38 +01:00
Matthias
0a8c1528cf Merge pull request #1686 from iuvbio/refactor/binance
Refactor/binance
2019-03-28 06:22:02 +01:00
Misagh
941921dd0f initial SL and SL added to RPC 2019-03-27 22:00:46 +01:00
Misagh
0ca3a38ba6 moved date to top and show open order only if it is not none 2019-03-27 21:39:17 +01:00
Misagh
1678a039ae removing close profit is trade is open 2019-03-27 21:32:56 +01:00
Misagh
e5406ed3cf typo in docs and comments 2019-03-27 21:22:25 +01:00
Misagh
4d9ca71c82 shifting edge help message a line lower 2019-03-27 21:20:09 +01:00
Misagh
6045f07a9c telegram message concatenation refactored 2019-03-27 21:12:57 +01:00
Matthias
9b22d5cab1 Fix typo, add test for validate_order_tif 2019-03-27 20:51:55 +01:00
Misagh
753b03d581 rolback on removing MD whitespaces 2019-03-27 18:19:42 +01:00
Misagh
1e37d8ccb3 flake8 2019-03-27 16:58:53 +01:00
Misagh
4038cdf70a "Edge" test for rpc telegram 2019-03-27 16:04:05 +01:00
Matthias
d09b33ae93 Merge pull request #1706 from freqtrade/pyup/scheduled-update-2019-03-27
Scheduled daily dependency update on Wednesday
2019-03-27 14:15:51 +01:00
Misagh
0687051ffb Update test_rpc.py
flake8
2019-03-27 14:04:33 +01:00
Misagh
8641da13b9 added RPC tests in case of edge enabled/disabled 2019-03-27 14:02:37 +01:00
pyup-bot
cc32566c92 Update ccxt from 1.18.400 to 1.18.406 2019-03-27 12:38:05 +00:00
Misagh
955e2d2826 Update test_rpc_telegram.py
telegram test_init fixed
2019-03-27 12:59:59 +01:00
Misagh
4e57969e4e documentation added 2019-03-27 12:54:00 +01:00
Misagh
52012003e9 Merge pull request #1700 from freqtrade/dataprovider/backtesting
Dataprovider during backtesting
2019-03-27 12:43:59 +01:00
Matthias
3bdc7b9a88 add missed "check" in docs 2019-03-27 10:51:13 +01:00
Misagh
a2a2489a97 Merge pull request #1701 from freqtrade/fix/blacklist_rpc_check
Check if added pair has correct stake-currency
2019-03-27 10:29:54 +01:00
Gianluca Puglia
b2c2b42408 Removed unwanted comment 2019-03-26 18:53:16 +01:00
hroff-1902
f5744cc9bf fix in the tests 2019-03-26 18:34:50 +03:00
Matthias
56264ea52a Merge pull request #1705 from freqtrade/pyup/scheduled-update-2019-03-26
Scheduled daily dependency update on Tuesday
2019-03-26 14:30:40 +01:00
pyup-bot
1f50bc79bc Update ccxt from 1.18.398 to 1.18.400 2019-03-26 13:37:03 +01:00
hroff-1902
c6d2c1e520 rest of telegram tests adjusted 2019-03-26 12:45:19 +03:00
hroff-1902
8aee009a0a test _reconfigure() adjusted 2019-03-26 12:42:19 +03:00
hroff-1902
5ccd618189 tests adjusted 2019-03-26 11:07:24 +03:00
hroff-1902
5161e1abb3 Allow to pass config into worker, as it's used in the tests 2019-03-26 11:07:02 +03:00
iuvbio
e15f2ef11a add order_time_in_force in _ft_has and revert binance 2019-03-26 00:49:39 +01:00
iuvbio
8dea640e9a remove exchange urls 2019-03-25 23:58:02 +01:00
iuvbio
4005b8d1d2 remove the if condition for binance 2019-03-25 23:57:14 +01:00
iuvbio
85ac99aee0 move exchange urls to constants 2019-03-25 23:57:14 +01:00
Matthias
e085fd9e95 Disable dataprovider from hyperopt.
Dataprovider uses weak links to initialize, which cannot be pickled, and
therefore cannot be used during hyperopt.
2019-03-25 19:49:58 +01:00
Matthias
f26ed1c8c1 Check if added pair has correct stake-currency 2019-03-25 19:40:21 +01:00
Matthias
4cf7282027 Update dataprovider docs 2019-03-25 19:31:10 +01:00
Matthias
0ae81d4115 Provide dataprovider access during backtesting 2019-03-25 19:26:51 +01:00
Matthias
226fc3d99b Check that dataprovider is part of strategy 2019-03-25 19:26:51 +01:00
Matthias
bd29b7d031 Test that dataprovider is loaded to strategy 2019-03-25 19:26:51 +01:00
hroff-1902
c8b0c9af0a Worker moved to new worker.py 2019-03-25 17:45:03 +03:00
Matthias
01c4f243d4 Merge pull request #1699 from freqtrade/pyup/scheduled-update-2019-03-25
Scheduled daily dependency update on Monday
2019-03-25 14:20:01 +01:00
pyup-bot
fe9322ecd5 Update pytest-mock from 1.10.1 to 1.10.2 2019-03-25 13:36:06 +01:00
pyup-bot
904b3008a9 Update ccxt from 1.18.395 to 1.18.398 2019-03-25 13:36:04 +01:00
Misagh
66f1e0f4cd help added 2019-03-25 10:25:07 +01:00
Misagh
e8bfeae048 conflict with develop resolved 2019-03-25 10:16:09 +01:00
Misagh
fd7278517d using items() 2019-03-25 09:48:41 +01:00
Misagh
b13735e4cc Merge pull request #1697 from freqtrade/feat/rpc_blacklist
add pairs to blacklist dynamically
2019-03-25 09:44:12 +01:00
Misagh
a8be277ca0 cached pairs iteration fixed + help added 2019-03-24 22:56:42 +01:00
Misagh
1dfbf6eed6 darfting edge rpc messages 2019-03-24 22:36:33 +01:00
Matthias
29b9bb96f3 Fix test to support adding things to pairlist 2019-03-24 19:49:49 +01:00
Matthias
14167f826b Fix typehints 2019-03-24 19:44:52 +01:00
Misagh
96ea27322d Merge pull request #1694 from freqtrade/doc/dataprovider
Add stake_currency to strategy, fix  documentation typo
2019-03-24 17:13:03 +01:00
Misagh
71d3a7de40 Merge pull request #1692 from freqtrade/feat/scripts_flake_mypy
run flake8 and mypy against scripts folder as well.
2019-03-24 17:08:52 +01:00
Misagh
fe3836b497 Merge pull request #1696 from freqtrade/docs/1521
Update documentation with correct way of calling
2019-03-24 17:06:46 +01:00
Matthias
49559f1a1a Improve documentation and help message 2019-03-24 16:33:21 +01:00
Matthias
042354d00f Test blacklist-adding 2019-03-24 16:30:11 +01:00
Matthias
f0d3901b6b Add blacklist-pair to documentation 2019-03-24 16:29:58 +01:00
Matthias
9d6f629f6a Support adding pairs to blacklist 2019-03-24 16:28:14 +01:00
Matthias
7b99d5ebcb Add blacklist and whitelist commands to telegram docs 2019-03-24 16:16:39 +01:00
Matthias
8b2174d249 Add tests for /blacklist handler 2019-03-24 16:09:20 +01:00
Matthias
ffdca7eea7 Add blacklist to default_config 2019-03-24 16:09:04 +01:00
Matthias
684727b32e Add black blacklist handler (ro) 2019-03-24 16:08:48 +01:00
Matthias
3a8b69d69b also support dry_run 2019-03-24 15:37:58 +01:00
Matthias
1bba9fcc53 Update documentation to use freqtrade, not freqtrade/main.py
fixes #1521
2019-03-24 15:13:17 +01:00
Matthias
f7fc9adc63 Run travis with freqtrade, not main.py 2019-03-24 15:13:03 +01:00
Matthias
e60d1788b2 Add new options to docu 2019-03-24 15:06:17 +01:00
Matthias
a7e13e96e4 Merge pull request #1695 from freqtrade/pyup/scheduled-update-2019-03-24
Scheduled daily dependency update on Sunday
2019-03-24 14:20:24 +01:00
pyup-bot
e644493e02 Update ccxt from 1.18.387 to 1.18.395 2019-03-24 13:35:03 +01:00
Matthias
06f4e627fc Add stake_currency to strategy, fix documentation typo 2019-03-23 20:40:07 +01:00
Misagh
e0775546f6 Merge pull request #1693 from freqtrade/fix/doc_formatting
Fix Documentation Boxes
2019-03-23 20:05:27 +01:00
Matthias
0dc96210b6 Fix formatting of boxes 2 2019-03-23 19:43:23 +01:00
Matthias
a95f30ce45 Fix custom boxes on documentation 2019-03-23 19:40:52 +01:00
Matthias
83a2427a61 Fix mypy in scripts 2019-03-23 19:37:17 +01:00
Matthias
184b13f2fb Flake8 for scripts 2019-03-23 19:18:10 +01:00
Matthias
9a632d9b7c Formatting 2019-03-23 16:51:36 +01:00
Matthias
c404e9ffd0 Simplify trailing_stop logic 2019-03-23 16:48:17 +01:00
Matthias
b1fe8c5325 Simplify stoploss_reached 2019-03-23 16:46:03 +01:00
Matthias
7307084dfd Move stoploss-adjustment to the top 2019-03-23 16:44:58 +01:00
Matthias
40899d08dd Fix failing test (all timezones are in UTC, so we should not convert to
None)
2019-03-23 15:24:11 +01:00
Matthias
00e6749d8b Refactor backtest() to be a bit more concise 2019-03-23 15:00:07 +01:00
Matthias
05466d318a Modify test to check for this condition 2019-03-23 14:50:18 +01:00
Matthias
6312d785d8 Merge pull request #1691 from freqtrade/pyup/scheduled-update-2019-03-23
Scheduled daily dependency update on Saturday
2019-03-23 13:52:00 +01:00
pyup-bot
34ff946f4d Update ccxt from 1.18.386 to 1.18.387 2019-03-23 13:35:03 +01:00
hroff-1902
158cb307f6 further refactoring of FreqtradeBot.process() 2019-03-23 00:20:20 +03:00
hroff-1902
e35daf95c0 minor cleanup 2019-03-22 23:41:48 +03:00
hroff-1902
b448890210 test_main.py adjusted (only beginning) 2019-03-22 22:03:15 +03:00
hroff-1902
be6836b0ef resolve python module circular dependency 2019-03-22 21:49:19 +03:00
hroff-1902
60afba5592 move worker stuff to main.py 2019-03-22 20:16:54 +03:00
Matthias
d043542094 Merge pull request #1688 from freqtrade/pyup/scheduled-update-2019-03-22
Scheduled daily dependency update on Friday
2019-03-22 15:30:33 +01:00
pyup-bot
89145a7711 Update ccxt from 1.18.385 to 1.18.386 2019-03-22 13:35:06 +01:00
Matthias
7744989583 Merge pull request #1661 from iuvbio/validate_whitelist
validate whitelist vs. validate pairs
2019-03-21 06:34:31 +01:00
Matthias
35d65bc7d7 Merge branch 'develop' into 'validate_whitelist' 2019-03-21 06:22:48 +01:00
Matthias
7fdb099097 Reformat log statement 2019-03-21 06:14:43 +01:00
Matthias
1f55356744 Merge pull request #1685 from hroff-1902/patch-20
docs for dry_run_wallet
2019-03-21 06:03:12 +01:00
hroff-1902
00821036bb docs for dry_run_wallet 2019-03-20 23:57:49 +03:00
Gianluca Puglia
6b89e86a97 Removed Timestamp cast 2019-03-20 19:44:59 +01:00
Matthias
65f5aa59e6 Merge pull request #1680 from hroff-1902/wallets_and_exchange_cleanup
Minor: Wallet and exchange cleanup
2019-03-20 19:31:02 +01:00
Gianluca Puglia
0eff324ce0 Use dedicated index for every pair 2019-03-20 18:38:10 +01:00
Matthias
676c6a784d Merge pull request #1681 from freqtrade/pyup/scheduled-update-2019-03-20
Scheduled daily dependency update on Wednesday
2019-03-20 14:18:38 +01:00
pyup-bot
cc369f41f5 Update coveralls from 1.6.0 to 1.7.0 2019-03-20 13:35:07 +01:00
pyup-bot
6c889895bd Update ccxt from 1.18.376 to 1.18.385 2019-03-20 13:35:05 +01:00
hroff-1902
580ada8c4f exchange cleanup 2019-03-19 20:52:35 +03:00
hroff-1902
aa15312670 wallets cleanup 2019-03-19 20:51:27 +03:00
Misagh
df6f3f6f32 Merge pull request #1679 from freqtrade/pyup/scheduled-update-2019-03-19
Scheduled daily dependency update on Tuesday
2019-03-19 13:49:46 +01:00
pyup-bot
2b09e3ca3d Update plotly from 3.7.0 to 3.7.1 2019-03-19 13:32:05 +01:00
pyup-bot
9a61067367 Update ccxt from 1.18.372 to 1.18.376 2019-03-19 13:32:04 +01:00
Matthias
c8617e70a8 Merge pull request #1668 from freqtrade/fix/1658_no_telegram_updates
No telegram rate updates when orderbook is enabled
2019-03-18 19:40:32 +01:00
Misagh
38b959f1a9 Merge pull request #1677 from freqtrade/pyup/scheduled-update-2019-03-18
Scheduled daily dependency update on Monday
2019-03-18 13:50:35 +01:00
pyup-bot
50ea4c39da Update ccxt from 1.18.368 to 1.18.372 2019-03-18 13:32:05 +01:00
Misagh
ff08416b12 Merge pull request #1674 from freqtrade/feat/stopbuy
Telegram `/stopbuy`
2019-03-18 09:00:47 +01:00
Matthias
8d173efe2d reword stopbuy message 2019-03-18 06:29:08 +01:00
Matthias
aa698a8412 rename /stopbuy message 2019-03-18 06:27:44 +01:00
Misagh
e6bfedb58b Merge pull request #1672 from freqtrade/doc/remove_double
Remove duplicate backtest-result-analysis documentation
2019-03-17 21:58:12 +01:00
Matthias
37e6b262eb Update docs to include /stopbuy 2019-03-17 19:36:25 +01:00
Matthias
9373d0c915 Add tests for /stopbuy 2019-03-17 19:36:02 +01:00
Matthias
a467d76832 Add /stopbuy command to telegram
fixes #1607
2019-03-17 19:35:25 +01:00
iuvbio
937399606e fix flake8 2019-03-17 18:24:29 +01:00
iuvbio
c2076af43b update tests 2019-03-17 18:18:44 +01:00
iuvbio
4de4a70be7 update log messages 2019-03-17 18:18:35 +01:00
Matthias
8afce7e651 Add testcase for Testcase 2 2019-03-17 16:26:38 +01:00
Matthias
2bf7f2feae Remove duplicate backtest-result-analysi documentation 2019-03-17 16:14:49 +01:00
iuvbio
8386496456 remove tests that are no longer applicable 2019-03-17 16:04:09 +01:00
iuvbio
7f9c76a6fc move stake check to the same condition as the other checks 2019-03-17 16:04:09 +01:00
iuvbio
d4d37667e1 use pairname for stake cur comparison 2019-03-17 16:04:09 +01:00
iuvbio
d4543be8eb edit comment 2019-03-17 16:04:09 +01:00
iuvbio
e38a3051a1 update docstring 2019-03-17 16:04:09 +01:00
iuvbio
c907e80c10 make sure no dups 2019-03-17 16:04:09 +01:00
iuvbio
a241e950f2 prune validate_pairs 2019-03-17 16:04:09 +01:00
iuvbio
39232cbcbb loop over whitelist only instead of all markets 2019-03-17 16:04:09 +01:00
Matthias
a7b60f6780 update trailing_stop with high in case of backtesting 2019-03-17 16:03:44 +01:00
Matthias
05ab1c2e0a Fix some comments 2019-03-17 16:02:13 +01:00
Matthias
8c7e8255bb Add detailed test for trailing stop 2019-03-17 16:01:34 +01:00
Matthias
f0e5113a7f Use Magicmock instead of lambda for mocking 2019-03-17 15:39:05 +01:00
Matthias
a830bee9c7 Enable trailing_stop for BTContainer tests 2019-03-17 15:28:04 +01:00
Matthias
bdc0134e88 Merge pull request #1671 from freqtrade/pyup/scheduled-update-2019-03-17
Scheduled daily dependency update on Sunday
2019-03-17 15:25:28 +01:00
pyup-bot
190ecb7ada Update ccxt from 1.18.367 to 1.18.368 2019-03-17 13:32:05 +01:00
Matthias
a77d513513 Fix backteest detail numbering ... 2019-03-17 13:27:32 +01:00
Matthias
7b99daebd7 Update docstring for adjust_stoploss 2019-03-17 13:19:24 +01:00
Matthias
2d4a2fd10b Use oppen_rate instead of artificial defaults 2019-03-17 13:12:04 +01:00
Matthias
a0e6cd93b6 Use bids, not asks for sell-rate detection 2019-03-17 11:27:01 +01:00
Misagh
b3f42dc51e Merge pull request #1635 from freqtrade/feat/btanlaysis
BTAnalysis - simplify backtest result analysis
2019-03-16 21:16:59 +01:00
Misagh
b0cad30796 Merge pull request #1670 from freqtrade/doc_update
Add 15min to documentation, fix link to "parameters in THE strategy"
2019-03-16 21:00:16 +01:00
Matthias
fc360608b7 Rename function to adjust_min_max 2019-03-16 20:14:45 +01:00
Matthias
01733c94fa Split up tests for adjust_stoploss and adjust_highlow 2019-03-16 20:04:55 +01:00
Matthias
68a9b14eca Min-rate should not default to 0 2019-03-16 20:04:39 +01:00
Matthias
738ed93221 call new function 2019-03-16 19:54:34 +01:00
Matthias
7166a474ae Add min_rate - always update min/max rates 2019-03-16 19:54:16 +01:00
Matthias
e632539b61 Add 15min to documentation, fix link to "parameters in THE strategy" 2019-03-16 19:51:39 +01:00
Matthias
e7f6df46e8 Add missing bt file 2019-03-16 19:15:20 +01:00
Matthias
a123246ac9 Add test for load_backtest_data 2019-03-16 17:50:57 +01:00
Matthias
ddb9933c91 Remove duplicate-check from test - it's in btanalysis 2019-03-16 17:28:28 +01:00
Matthias
9f7f089d8a adjust plot_dataframe to use btanalysis 2019-03-16 17:28:28 +01:00
Matthias
e1f48c2b46 Add btanalysis file 2019-03-16 17:28:28 +01:00
Matthias
d7017ce1e4 Document backtest-result loading 2019-03-16 17:28:28 +01:00
Matthias
6666d31ee9 Merge pull request #1648 from hroff-1902/sd-watchdog
Support for systemd watchdog
2019-03-16 13:46:04 +01:00
Matthias
29aa159827 Add test for get_sell_rate 2019-03-16 13:32:26 +01:00
Matthias
6bfc37309e refactor getting sell/current rate for telegram and selling
fix #1658
2019-03-16 13:24:10 +01:00
Matthias
71c530590e Merge pull request #1666 from freqtrade/telegram_help
Telegram help
2019-03-16 12:44:17 +01:00
Matthias
d596a877fa Update docs to link to ocnfiguration piece necessary 2019-03-16 11:07:16 +01:00
Matthias
b9b15e5f32 Align help message for forcebuy 2019-03-16 11:04:24 +01:00
Matthias
d66e6510e3 Merge pull request #1645 from mishaker/trailing_only_offset
Adding an option for trailing stoploss: "trailing_only_offset_is_reached"
2019-03-16 10:43:56 +01:00
Matthias
a233a8cc82 Be explicit in the documentation 2019-03-16 10:38:32 +01:00
Matthias
d42ebab575 Rename function and add test 2019-03-16 10:38:25 +01:00
Misagh
51af8c27f6 Merge pull request #1665 from freqtrade/catch/syntxerror
Catch syntaxerror on import
2019-03-16 08:15:09 +01:00
Matthias
44acf2f471 Catch syntaxerror on import 2019-03-15 19:50:38 +01:00
Matthias
ceb1e4c4f7 Merge pull request #1664 from freqtrade/pyup/scheduled-update-2019-03-15
Scheduled daily dependency update on Friday
2019-03-15 13:46:13 +01:00
pyup-bot
6db6c3b2cc Update ccxt from 1.18.362 to 1.18.367 2019-03-15 13:32:05 +01:00
Matthias
2e02e24e70 Merge pull request #1663 from iuvbio/fix/1662
Fix sort key not populated
2019-03-15 06:11:53 +01:00
iuvbio
95a3b5c41e check if ticker sort key is populated 2019-03-14 22:48:42 +01:00
Matthias
3fe06b3548 Merge pull request #1660 from freqtrade/pyup/scheduled-update-2019-03-14
Scheduled daily dependency update on Thursday
2019-03-14 19:36:41 +01:00
pyup-bot
1a83eed38f Update pandas from 0.24.1 to 0.24.2 2019-03-14 13:32:09 +01:00
pyup-bot
4fa1604230 Update ccxt from 1.18.361 to 1.18.362 2019-03-14 13:32:05 +01:00
misagh
edf2cd0b92 configuration test fixed 2019-03-14 09:26:31 +01:00
misagh
b5034cf535 TSL validator removed from exchange 2019-03-14 09:04:41 +01:00
misagh
29305dd070 config validation moved to configuration file 2019-03-14 09:01:03 +01:00
misagh
3c99e3b7c7 test adapted to new market refactoring 2019-03-14 09:00:28 +01:00
misagh
9a226ec7e6 conflict with develop resolved 2019-03-14 07:56:21 +01:00
Misagh
2959600f52 Merge pull request #1656 from freqtrade/fix/1633
Default value for minimal_roi
2019-03-14 07:51:07 +01:00
Matthias
ff9231eec4 Format attributes-table 2019-03-14 06:42:27 +01:00
Matthias
6b8f5963a8 Merge pull request #1623 from iuvbio/markets_refactor
Markets refactor
2019-03-14 06:22:18 +01:00
iuvbio
a1841c35ae reset _last_markets_refresh 2019-03-13 20:18:49 +01:00
iuvbio
aa2d747d8f update docs 2019-03-13 20:08:51 +01:00
Misagh
ee613b564c Merge pull request #1657 from freqtrade/fix/1653
send notification when stoploss_on_exchange is hit
2019-03-13 19:52:32 +01:00
Matthias
2bf5a3843d Use close_rate for notification if available 2019-03-13 19:41:58 +01:00
Matthias
29e84c9e88 Merge pull request #1659 from freqtrade/pyup/scheduled-update-2019-03-13
Scheduled daily dependency update on Wednesday
2019-03-13 14:33:10 +01:00
pyup-bot
23666858e2 Update pytest from 4.3.0 to 4.3.1 2019-03-13 13:32:06 +01:00
pyup-bot
5151a4521f Update ccxt from 1.18.358 to 1.18.361 2019-03-13 13:32:04 +01:00
Matthias
6b948cfc7e Don't move notify_sell to rpc_manager - it needs exchange stuff 2019-03-12 22:01:19 +01:00
Matthias
9054165e8a Adjust test, since rpc_message is now called on buy and sel 2019-03-12 21:55:18 +01:00
Matthias
11cc33a982 Refactor notify_sell to rpc_manager
* Call sell_notify also when stoploss_on_exchange is hit

fix #1653
2019-03-12 21:55:00 +01:00
Matthias
e2bcaa4d75 Set Requested_close_rate to stoploss when stoploss_on_exchange was hit 2019-03-12 21:54:52 +01:00
Matthias
94b2d48d02 Add default value for minimal_roi (1000%)
fix #1633
2019-03-12 19:37:58 +01:00
Matthias
0293a61895 Update documentation for minimal_roi, which is not really optional 2019-03-12 19:37:43 +01:00
iuvbio
7ffe65770e fix test 2019-03-12 17:54:16 +01:00
iuvbio
cb9849e192 add markets_refresh_interval to CONF_SCHEMA 2019-03-12 16:54:59 +01:00
iuvbio
299e640170 include markets_refresh_interval in docs 2019-03-12 16:39:13 +01:00
Misagh
954963b40e Merge pull request #1651 from freqtrade/fix/importerror_strats
Catch ModuleNotFoundError when importing external code
2019-03-12 16:37:30 +01:00
iuvbio
779bcdd990 remove reload for async api 2019-03-12 16:35:32 +01:00
iuvbio
0ffefe44a7 reorder vars 2019-03-12 16:31:22 +01:00
iuvbio
deddbda26e delete markets patch from conftest 2019-03-12 16:31:22 +01:00
iuvbio
1a92bf9e8e add test 2019-03-12 16:31:22 +01:00
iuvbio
8741017819 remove get_markets 2019-03-12 16:31:22 +01:00
iuvbio
35c2b961be add config param 2019-03-12 16:31:22 +01:00
iuvbio
0d980134e7 add markets reload func 2019-03-12 16:31:22 +01:00
iuvbio
3ad0686bc7 fix typing 2019-03-12 16:31:22 +01:00
iuvbio
df9410cd15 check if markets were loaded 2019-03-12 16:31:22 +01:00
iuvbio
041e9957dd add reload argument 2019-03-12 16:31:22 +01:00
iuvbio
6b97af4a03 add comment 2019-03-12 16:31:22 +01:00
iuvbio
e234158cc9 update tests 2019-03-12 16:31:22 +01:00
iuvbio
c30fb7f590 return markets as dict 2019-03-12 16:31:22 +01:00
iuvbio
5c840f333f slight change to exception message 2019-03-12 16:31:22 +01:00
iuvbio
b24a22b0b6 use self.markets instead of get_markets 2019-03-12 16:31:22 +01:00
iuvbio
47cc04c0a3 use self.markets instead of _api.markets 2019-03-12 16:31:22 +01:00
iuvbio
ccad883256 adjust get_markets 2019-03-12 16:31:22 +01:00
iuvbio
3a2aa54d2a add markets property 2019-03-12 16:31:22 +01:00
iuvbio
d423f58566 replace fetch_markets 2019-03-12 16:31:22 +01:00
misagh
0bcf50f1b5 added to stoploss doc 2019-03-12 15:48:30 +01:00
misagh
8d5cc42ef5 configuration doc added 2019-03-12 15:46:21 +01:00
misagh
a772ab323e adding the option to resolver 2019-03-12 15:43:53 +01:00
misagh
f55d75e7fc TSL validation tests added 2019-03-12 15:35:44 +01:00
Matthias
5865688c16 Merge pull request #1655 from freqtrade/pyup/scheduled-update-2019-03-12
Scheduled daily dependency update on Tuesday
2019-03-12 14:10:21 +01:00
pyup-bot
3e4c9c8713 Update ccxt from 1.18.357 to 1.18.358 2019-03-12 13:32:05 +01:00
misagh
36e95bc868 unnecessary variable removed 2019-03-12 13:10:59 +01:00
misagh
3e40f5c588 if condition simplified 2019-03-12 13:09:27 +01:00
misagh
643262bc6a add trailing stop loss config validator 2019-03-12 13:03:29 +01:00
misagh
f1f311e456 Merge branch 'develop' into trailing_only_offset 2019-03-12 12:32:10 +01:00
Misagh
c1a22dda46 Merge pull request #1654 from freqtrade/feat/startup_stoploss
Add stoploss to startup messages
2019-03-12 11:48:29 +01:00
Misagh
d14134ddce Merge pull request #1652 from freqtrade/fix/tif-market_order_combo
Fix/tif market order combo
2019-03-12 11:46:15 +01:00
Matthias
48d33b070f Add stoploss to startup messages 2019-03-12 07:06:42 +01:00
Matthias
0eb9dd5fe5 Don't use timeInForce for market orders 2019-03-11 20:30:36 +01:00
Matthias
4705b7da0e Add time_in_force test for sell 2019-03-11 20:30:16 +01:00
Matthias
c0f276a892 Move kraken specific tests to their own file 2019-03-11 20:22:51 +01:00
Matthias
e666c6850e Fix tests so Market orders should not send timeInForce 2019-03-11 20:20:51 +01:00
Matthias
f9aa3c27be Catch ModuleNotFoundError when importing external code 2019-03-11 19:49:03 +01:00
Matthias
5fb8100fc5 Merge pull request #1650 from freqtrade/pyup/scheduled-update-2019-03-11
Scheduled daily dependency update on Monday
2019-03-11 14:20:19 +01:00
hroff-1902
41add9f8ca code cleanup; added message to systemd for reconfiguration 2019-03-11 15:38:00 +03:00
pyup-bot
513b96b61c Update ccxt from 1.18.353 to 1.18.357 2019-03-11 13:32:04 +01:00
hroff-1902
8730852d6e Support for systemd watchdog via sd_notify 2019-03-10 21:04:38 +03:00
misagh
ca496c13b8 TSL only offset test added 2019-03-10 17:11:28 +01:00
misagh
0467004144 added trailing_only_offset_is_reached to full config 2019-03-10 15:54:46 +01:00
Matthias
e14739e102 Merge pull request #1647 from freqtrade/pyup/scheduled-update-2019-03-10
Scheduled daily dependency update on Sunday
2019-03-10 13:54:02 +01:00
pyup-bot
0eaac1cd79 Update sqlalchemy from 1.3.0 to 1.3.1 2019-03-10 13:32:06 +01:00
pyup-bot
5f726d697b Update ccxt from 1.18.352 to 1.18.353 2019-03-10 13:32:05 +01:00
misagh
9c1c962aa7 if condition fixed 2019-03-09 20:30:56 +01:00
misagh
c122eab77b added trailing_only_offset_is_reached option 2019-03-09 20:13:35 +01:00
Misagh
617d2338c4 Merge pull request #1642 from freqtrade/fix/1637
Fix broken dry-mode sells
2019-03-09 19:23:34 +01:00
Misagh
c56f288b56 Merge pull request #1643 from freqtrade/fix/coveralls_multi
Update travis for coveralls
2019-03-09 19:22:20 +01:00
Misagh
51b4d5a57a Merge pull request #1644 from freqtrade/pyup/scheduled-update-2019-03-09
Scheduled daily dependency update on Saturday
2019-03-09 19:19:53 +01:00
pyup-bot
43d30180e8 Update plotly from 3.6.1 to 3.7.0 2019-03-09 13:32:08 +01:00
pyup-bot
3b805813cd Update ccxt from 1.18.347 to 1.18.352 2019-03-09 13:32:07 +01:00
Matthias
21cb4eafe5 Merge pull request #1632 from iuvbio/update_docs
update sql_cheatsheet
2019-03-08 22:19:44 +01:00
Matthias
fa4c8110e7 Rename cheatsheet header 2019-03-08 22:15:03 +01:00
Matthias
25529ad95f use || for coveralls 2019-03-08 21:54:40 +01:00
Matthias
dba30bbfed Update travis for coveralls 2019-03-08 21:37:15 +01:00
Matthias
4cd70138b6 Add test to make sure this ain't reintroduced 2019-03-08 21:26:21 +01:00
Matthias
0a2cacbba8 Fix #1637 2019-03-08 21:17:12 +01:00
Matthias
d213764d19 Merge pull request #1641 from hroff-1902/patch-19
Minor: exchange.sandbox parameter was missing in the docs
2019-03-08 20:39:06 +01:00
hroff-1902
702153d087 exchange.sandbox parameter was missing in the docs 2019-03-08 22:24:55 +03:00
Misagh
8babf0d2b5 Merge pull request #1640 from hroff-1902/patch-18
Minor: typo in doc
2019-03-08 19:31:54 +01:00
hroff-1902
9c1d4183fd typo in doc 2019-03-08 20:18:45 +03:00
Matthias
c4992bd5f3 Merge pull request #1638 from freqtrade/pyup/scheduled-update-2019-03-08
Scheduled daily dependency update on Friday
2019-03-08 14:21:40 +01:00
pyup-bot
2da0d479e7 Update ccxt from 1.18.345 to 1.18.347 2019-03-08 13:33:06 +01:00
Matthias
628d9577a2 Merge pull request #1634 from freqtrade/pyup/scheduled-update-2019-03-07
Scheduled daily dependency update on Thursday
2019-03-07 14:08:36 +01:00
pyup-bot
6b2f4b12fd Update ccxt from 1.18.342 to 1.18.345 2019-03-07 13:33:07 +01:00
Misagh
bc7688a69f Merge pull request #1631 from freqtrade/fix/backtest_sloe
Fix issue that backtest is broken when stoploss_on_exchange is on
2019-03-07 10:05:46 +01:00
iuvbio
7b901e180a update sql_cheatsheet 2019-03-06 21:37:52 +01:00
Matthias
e67ffd2d87 Fix issue that backtest is broken when stoploss_on_exchange is on 2019-03-06 19:55:34 +01:00
Matthias
045de94b49 Merge pull request #1627 from hroff-1902/patch-17
Remove deprecated --dynamic-whitelist from freqtrade.service
2019-03-06 19:09:37 +01:00
hroff-1902
8624d83be0 Remove deprecated --dynamic-whitelist from freqtrade.service 2019-03-06 20:55:40 +03:00
Matthias
0634e135df Merge pull request #1626 from freqtrade/pyup/scheduled-update-2019-03-06
Scheduled daily dependency update on Wednesday
2019-03-06 14:17:38 +01:00
pyup-bot
962cfc5eb9 Update ccxt from 1.18.333 to 1.18.342 2019-03-06 13:33:04 +01:00
Matthias
ca64d8a861 Merge pull request #1620 from hroff-1902/patch-16
Documentation cleanup
2019-03-06 06:17:04 +01:00
hroff-1902
35250eb230 one more typo fixed (by @xmatthias) 2019-03-06 01:21:38 +03:00
Misagh
5dd0a72a52 Merge pull request #1621 from freqtrade/pyup/scheduled-update-2019-03-05
Scheduled daily dependency update on Tuesday
2019-03-05 14:56:05 +01:00
pyup-bot
735e78f01d Update sqlalchemy from 1.2.18 to 1.3.0 2019-03-05 13:33:06 +01:00
pyup-bot
ae7c4c33c0 Update ccxt from 1.18.323 to 1.18.333 2019-03-05 13:33:05 +01:00
hroff-1902
c032dd0f45 new docs/deprecated.md added to the site menu 2019-03-05 14:29:55 +03:00
hroff-1902
ce46555e77 docs/configuration.md reviewed: formatting, wording, grammar, etc 2019-03-05 14:11:40 +03:00
hroff-1902
2f98dd0429 description for --dynamic-whitelist moved to new docs/deprecated.md 2019-03-05 14:09:26 +03:00
hroff-1902
71f5392f89 typo fixed 2019-03-05 12:44:06 +03:00
Misagh
6d63b8e71e Merge pull request #1615 from freqtrade/fix/hyperopt_peram
Update documentation for --customhyperopt
2019-03-05 09:40:05 +01:00
Matthias
f6ca97d1dc Update hyperopt doc to validate backtest results 2019-03-05 06:43:28 +01:00
Matthias
4e50ec81a0 Merge pull request #1618 from hroff-1902/patch-15
minor: doc update index.md
2019-03-05 06:22:36 +01:00
hroff-1902
386abc5eba minor: doc update index.md 2019-03-04 23:44:44 +03:00
Matthias
04ea6dac83 Merge pull request #1617 from freqtrade/pyup/scheduled-update-2019-03-04
Scheduled daily dependency update on Monday
2019-03-04 16:18:20 +01:00
pyup-bot
f16913a76d Update ccxt from 1.18.322 to 1.18.323 2019-03-04 13:32:05 +01:00
Matthias
03ff87d11c Merge pull request #1616 from hroff-1902/patch-14
How to use multiple configuration files
2019-03-04 12:14:26 +01:00
hroff-1902
460e0711c6 How to use multiple configuration files
Description of multiple config command line options added.

Concrete examples to the bot-configuration page (something like "Hiding your key and exchange secret") will follow.

Please review grammar, wording etc.
2019-03-04 11:05:12 +03:00
Matthias
b8eb3ecb1d Update hyperopts documentation to work and match the code 2019-03-04 07:24:49 +01:00
Matthias
2208a21a6c Update help strings 2019-03-04 07:24:41 +01:00
Matthias
2d0aca0d20 Move --customhyperopts to hyperopt section 2019-03-04 07:24:05 +01:00
Matthias
b7a558b951 Merge pull request #1596 from iuvbio/feature/volume-precision-pairlist
Feature/volume precision pairlist
2019-03-03 15:38:31 +01:00
Matthias
3c5deb9aaf Add test for precision_remove ...
BTT should not be in the list when that is enabled.
2019-03-03 15:31:48 +01:00
Matthias
4d64124eef Merge pull request #1613 from freqtrade/pyup/scheduled-update-2019-03-03
Scheduled daily dependency update on Sunday
2019-03-03 15:15:52 +01:00
iuvbio
e2cbb7e7da remove remnants markets and precisionlist 2019-03-03 13:41:51 +01:00
iuvbio
df79098adc update docs 2019-03-03 13:37:54 +01:00
pyup-bot
13ba5ba0db Update ccxt from 1.18.313 to 1.18.322 2019-03-03 13:32:03 +01:00
Misagh
2eb2ace539 Merge pull request #1605 from freqtrade/fix/1604
Add libssl-dev to fix #1604
2019-03-03 12:57:16 +01:00
iuvbio
064f6629ab delete separate pairlist 2019-03-03 00:35:25 +01:00
iuvbio
786244c0d3 Merge branch 'develop' into feature/volume-precision-pairlist 2019-03-02 18:55:40 +01:00
iuvbio
e1ae0d7e90 remove markets changes 2019-03-02 18:53:42 +01:00
iuvbio
c36fa0c7e2 add ticker argumet to get_target_bid 2019-03-02 17:24:48 +01:00
iuvbio
24c587518a add precision_filter 2019-03-02 17:24:28 +01:00
Matthias
4c1f2b2a5b Merge pull request #1612 from freqtrade/pyup/scheduled-update-2019-03-02
Scheduled daily dependency update on Saturday
2019-03-02 16:47:42 +01:00
pyup-bot
6bcfe65877 Update scikit-learn from 0.20.2 to 0.20.3 2019-03-02 13:32:04 +01:00
pyup-bot
28a70eba07 Update ccxt from 1.18.309 to 1.18.313 2019-03-02 13:32:03 +01:00
Matthias
285db2f40b Merge pull request #1611 from freqtrade/pyup/scheduled-update-2019-03-01
Scheduled daily dependency update on Friday
2019-03-01 14:10:20 +01:00
pyup-bot
0fc5445003 Update jsonschema from 3.0.0 to 3.0.1 2019-03-01 13:32:07 +01:00
pyup-bot
e8ea2e6f05 Update ccxt from 1.18.304 to 1.18.309 2019-03-01 13:32:06 +01:00
hroff-1902
b792f00553 exchange cleanup 2019-03-01 02:13:16 +03:00
hroff-1902
4df44d8b32 wallets cleanup 2019-03-01 01:26:29 +03:00
Matthias
58c296c1ff Merge pull request #1610 from freqtrade/pyup/scheduled-update-2019-02-28
Scheduled daily dependency update on Thursday
2019-02-28 16:34:22 +01:00
pyup-bot
13de66d559 Update ccxt from 1.18.297 to 1.18.304 2019-02-28 13:32:06 +01:00
Matthias
e5498ca20f Add libssl-dev to fix #1604 2019-02-27 17:51:00 +01:00
Misagh
0558b203fe Merge pull request #1603 from freqtrade/pyup/scheduled-update-2019-02-27
Scheduled daily dependency update on Wednesday
2019-02-27 14:33:34 +01:00
pyup-bot
38d09f9e78 Update numpy from 1.16.1 to 1.16.2 2019-02-27 13:32:05 +01:00
pyup-bot
768f62a24a Update ccxt from 1.18.296 to 1.18.297 2019-02-27 13:32:04 +01:00
Misagh
7e62a4a79c Merge pull request #1602 from hroff-1902/no-recursion-edge
[Minor] comments: removed mentioning recursion, typos, etc.
2019-02-27 11:50:29 +01:00
hroff-1902
761861f0b7 comments: removed mentioning recursion, typos, etc. 2019-02-27 13:35:06 +03:00
Misagh
4e291795a6 Merge pull request #1601 from hroff-1902/no-recursion-edge
eliminate recursion in Edge
2019-02-27 11:18:23 +01:00
Misagh
7fe9d9520a Merge pull request #1599 from freqtrade/remove_pairurl
Remove pairurl
2019-02-27 10:33:10 +01:00
hroff-1902
4c2961f0d9 eliminate recursion in _detect_next_stop_or_sell_point() 2019-02-27 06:31:27 +03:00
Matthias
ef26484153 Super() should not be called with parameters
source: https://realpython.com/python-super/
2019-02-26 21:01:50 +01:00
Matthias
79aac473b3 Remove market_url from tests 2019-02-26 19:27:28 +01:00
Matthias
5c3177cc79 Adapt documentation to remove market_url 2019-02-26 19:27:28 +01:00
Matthias
6c75b8a36a Remove pair market url 2019-02-26 19:27:28 +01:00
Matthias
ee0e381d65 Merge pull request #1595 from freqtrade/binance_subclass
Create binance Subclass and parametrize exchange-tests
2019-02-26 19:26:23 +01:00
Matthias
8cb7a7e7a5 Merge pull request #1598 from freqtrade/pyup/scheduled-update-2019-02-26
Scheduled daily dependency update on Tuesday
2019-02-26 15:46:02 +01:00
pyup-bot
bcf5b5fdcb Update flake8 from 3.7.6 to 3.7.7 2019-02-26 13:32:04 +01:00
pyup-bot
ef18ddd866 Update ccxt from 1.18.292 to 1.18.296 2019-02-26 13:32:03 +01:00
Misagh
cee4116b80 Merge pull request #1576 from hroff-1902/patch-10
Minor: code cleanup in _process()
2019-02-26 10:17:21 +01:00
Matthias
0c53bd6dd4 Complete refactor, moving query_trades to persistance as get_open_trades 2019-02-25 20:00:17 +01:00
Matthias
aff334fdd6 Merge pull request #1597 from freqtrade/pyup/scheduled-update-2019-02-25
Scheduled daily dependency update on Monday
2019-02-25 15:27:56 +01:00
pyup-bot
185bd1e53c Update ccxt from 1.18.290 to 1.18.292 2019-02-25 13:32:04 +01:00
Matthias
006635003e Fix small typos 2019-02-24 20:18:41 +01:00
Matthias
f2fd5205ef Fix typo 2019-02-24 20:13:38 +01:00
Matthias
31be4d2454 Add parametrized tests 2019-02-24 20:08:27 +01:00
Matthias
5c18346cd5 Add typehint to binance dict 2019-02-24 20:01:20 +01:00
Matthias
e0b634ba3b Parametrize exchanges and test multiple exchanges 2019-02-24 19:59:45 +01:00
Matthias
a05155cb75 Adapt failing test 2019-02-24 19:41:47 +01:00
Matthias
455b168366 add _ft_has to exchangeclass 2019-02-24 19:35:29 +01:00
Matthias
06f486a8eb Add binance exchange subclass 2019-02-24 19:30:05 +01:00
Misagh
42722b2873 Merge pull request #1593 from hroff-1902/patch-13
Edge doc file minor improvements, typos, formatting
2019-02-24 17:35:49 +01:00
Matthias
ecb5137dbe Merge pull request #1594 from freqtrade/pyup/scheduled-update-2019-02-24
Scheduled daily dependency update on Sunday
2019-02-24 13:50:54 +01:00
Matthias
2531961bf8 Merge pull request #1571 from hroff-1902/patch-9
multiple --config options
2019-02-24 13:50:39 +01:00
pyup-bot
417bf2c935 Update jsonschema from 2.6.0 to 3.0.0 2019-02-24 13:32:06 +01:00
pyup-bot
3673dba1e2 Update ccxt from 1.18.287 to 1.18.290 2019-02-24 13:32:05 +01:00
Matthias
9b288c6933 Add test to specifically test for merged dict 2019-02-24 13:29:22 +01:00
hroff-1902
5fac4f7b45 Edge doc file minor improvements, typos, formatting 2019-02-24 13:19:01 +03:00
Matthias
c7b6e19872 Merge pull request #1586 from iuvbio/order_creation
Order creation
2019-02-23 19:23:40 +01:00
Matthias
033e9e09fb Merge pull request #1592 from freqtrade/pyup/scheduled-update-2019-02-23
Scheduled daily dependency update on Saturday
2019-02-23 17:05:36 +01:00
iuvbio
3dcf3f8a82 Merge branch 'develop' into feature/volume-precision-pairlist 2019-02-23 16:28:37 +01:00
iuvbio
403ed48c3e rename _store_dry_order 2019-02-23 16:28:13 +01:00
iuvbio
4d797c9232 Merge branch 'develop' into order_creation 2019-02-23 16:21:52 +01:00
iuvbio
ec6794b9ba fix dry_orders 2019-02-23 16:03:15 +01:00
pyup-bot
634ce87bba Update ccxt from 1.18.281 to 1.18.287 2019-02-23 13:32:04 +01:00
iuvbio
98bca30dfb reorganize imports 2019-02-22 21:16:31 +01:00
iuvbio
cc0fae8e4e change < to <= 2019-02-22 21:13:08 +01:00
iuvbio
8d8da71f20 Merge branch 'develop' into feature/volume-precision-pairlist 2019-02-22 20:31:24 +01:00
iuvbio
9a097214a6 return complete dry_order in buy and sell 2019-02-22 19:22:48 +01:00
Matthias
619945b861 Merge pull request #1591 from hroff-1902/patch-12
minor: formatting math expression in FAQ
2019-02-22 19:08:33 +01:00
iuvbio
71774bce6f Merge branch 'develop' of https://github.com/freqtrade/freqtrade into order_creation 2019-02-22 19:02:31 +01:00
hroff-1902
9c54886f14 minor: formatting math expression in FAQ 2019-02-22 19:33:05 +03:00
Misagh
1252bacb7a Merge pull request #1590 from hroff-1902/patch-12
FAQ updated with question on Edge
2019-02-22 16:56:05 +01:00
hroff-1902
a1b00f9053 Edge question added; minor improvements (sections for Hyperopt and Edge) 2019-02-22 17:37:59 +03:00
Samuel Husso
e4369e06bc Merge pull request #1589 from freqtrade/pyup/scheduled-update-2019-02-22
Scheduled daily dependency update on Friday
2019-02-22 15:27:40 +02:00
pyup-bot
29b8b79732 Update ccxt from 1.18.280 to 1.18.281 2019-02-22 13:30:08 +01:00
Misagh
2c7c19dfb1 Merge pull request #1582 from freqtrade/move/exchange
Refactor exchange importing
2019-02-22 10:24:23 +01:00
iuvbio
b79d967371 add tests, further consolidate orders 2019-02-22 01:48:35 +01:00
iuvbio
69bb6ebaf6 fix comments 2019-02-21 22:43:15 +01:00
Matthias
57b2fb4645 Merge pull request #1584 from freqtrade/pyup/scheduled-update-2019-02-21
Scheduled daily dependency update on Thursday
2019-02-21 19:14:24 +01:00
iuvbio
bf5d2a68f5 Merge branch 'develop' into order_creation 2019-02-21 19:03:29 +01:00
pyup-bot
7738ebbc0f Update ccxt from 1.18.270 to 1.18.280 2019-02-21 13:31:05 +01:00
Matthias
6d7f788989 Merge pull request #1579 from freqtrade/version_bump_dev
Version bump develop to 0.18.2-dev
2019-02-21 12:32:45 +01:00
Matthias
be754244a3 Only resolve exchanges from correct location 2019-02-21 07:07:45 +01:00
Matthias
e0f426d863 Allow import freqtrade.exchange.* 2019-02-21 06:59:52 +01:00
Matthias
e987a915e8 Rename exchange file 2019-02-21 06:56:22 +01:00
Matthias
a79ff1c6c9 Merge pull request #1563 from iuvbio/kraken_support
Kraken support
2019-02-21 06:41:35 +01:00
Matthias
2dcb4134cc Merge branch 'develop' into pr/iuvbio/1563 2019-02-21 06:29:37 +01:00
Matthias
e309f75118 Merge pull request #1581 from hroff-1902/patch-11
Minor changes to exchange
2019-02-21 06:25:47 +01:00
Matthias
643402da1c Merge pull request #1580 from hroff-1902/patch-1
Minor: added amount_reserve_percent into config json-schema
2019-02-21 06:24:16 +01:00
iuvbio
a1d1abfffc Merge branch 'develop' into order_creation 2019-02-21 00:30:46 +01:00
iuvbio
b5758e67f9 order creation cleanup 2019-02-21 00:29:59 +01:00
hroff-1902
2851833726 added _now_is_time_to_refresh() 2019-02-21 01:20:24 +03:00
hroff-1902
c1ef6940b0 removed wrong comment: tuple is not created here 2019-02-21 00:47:18 +03:00
hroff-1902
2aba9c081c fixed typos in comments 2019-02-21 00:46:35 +03:00
hroff-1902
eb21170691 added amount_reserve_percent into config json-schema 2019-02-21 00:26:02 +03:00
Matthias
d9129cb9c5 Develop version bump to 0.18.2-dev 2019-02-20 21:07:54 +01:00
Matthias
4315c157c7 Move exception handling to resolver, add test 2019-02-20 20:13:23 +01:00
hroff-1902
da5bef501e cleanup 2019-02-20 17:55:20 +03:00
hroff-1902
4fbba98168 tests adjusted for multiple --config options 2019-02-20 17:54:20 +03:00
hroff-1902
87c82dea3d support for multiple --config in the download_backtest_data.py utility 2019-02-20 17:00:35 +03:00
hroff-1902
c08a2b6638 help message fixed 2019-02-20 16:23:09 +03:00
hroff-1902
7bc874c7fd comments adjusted 2019-02-20 16:12:17 +03:00
hroff-1902
fac0e4e603 more code cleanup in _process() 2019-02-20 16:01:56 +03:00
hroff-1902
199e3d2234 typo in a comment 2019-02-20 15:13:21 +03:00
hroff-1902
5906d37818 code cleanup in _process() 2019-02-20 15:12:04 +03:00
iuvbio
e495ffec78 align dry_run_orders 2019-02-20 02:38:16 +01:00
iuvbio
84ccb85184 Merge branch 'develop' into feature/volume-precision-pairlist 2019-02-20 01:03:03 +01:00
iuvbio
686949b258 Merge branch 'develop' into kraken_support 2019-02-20 00:52:10 +01:00
iuvbio
3e2f90a32a formatting 2019-02-19 22:27:20 +01:00
iuvbio
bb31e64752 add test_sell_kraken_trading_agreement 2019-02-19 21:56:20 +01:00
iuvbio
481cf02db9 add test and fix exchange_resolver 2019-02-19 19:15:22 +01:00
hroff-1902
2f225e2340 multiple --config options 2019-02-19 15:14:47 +03:00
iuvbio
eed1c2344d delete unnecessary arguments 2019-02-18 01:03:09 +01:00
iuvbio
4241caef95 changes to base and subclass 2019-02-17 23:34:15 +01:00
iuvbio
2103ae5fdf change rateLimit to 1000 2019-02-17 23:26:10 +01:00
iuvbio
6055906eb1 Merge branch 'develop' into feature/volume-precision-pairlist 2019-02-17 16:15:55 +01:00
iuvbio
e98edc1a1a Merge branch 'develop' into kraken_support 2019-02-17 16:15:24 +01:00
iuvbio
62382809b2 Merge branch 'develop' into feature/volume-precision-pairlist 2019-02-17 16:14:20 +01:00
iuvbio
0572336ff7 revert changes to history 2019-02-17 16:12:40 +01:00
iuvbio
d8feceebb5 fix type-hints 2019-02-17 15:54:22 +01:00
iuvbio
da4faacd6b flake8 2019-02-17 15:34:44 +01:00
iuvbio
39c28626aa remove error message to make pytest pass 2019-02-17 15:29:58 +01:00
iuvbio
5e8a7a03c3 correct time_in_force param 2019-02-17 15:26:33 +01:00
iuvbio
dd2522d8d0 Merge branch 'develop' into kraken_support 2019-02-17 15:21:14 +01:00
iuvbio
fe792882b5 load generic class if no subclass exists 2019-02-17 14:42:55 +01:00
iuvbio
d3ead2cd09 exchange import is not needed anymore 2019-02-17 04:25:39 +01:00
iuvbio
c879591f45 add exchange_resolver to resolver init 2019-02-17 04:22:24 +01:00
iuvbio
c315f63e4b use exchange_resolver in freqbot 2019-02-17 04:18:56 +01:00
iuvbio
2fb36b116d change variable names 2019-02-17 04:15:11 +01:00
iuvbio
ca388a9acf create exchange_resolver 2019-02-17 04:01:43 +01:00
iuvbio
32b02c9925 kraken subclass 2019-02-17 04:01:17 +01:00
iuvbio
54d5bce445 undo kraken specific changes 2019-02-17 03:59:40 +01:00
iuvbio
b7afcf3416 add VolumePrecisionPairList 2019-02-16 22:56:04 +01:00
iuvbio
8ed3658447 Merge branch 'develop' into kraken_support 2019-02-15 23:27:41 +01:00
Crypto God
3aa614b983 bump version 2019-02-15 22:51:09 +01:00
Crypto God
3953092edd output error message 2019-02-15 22:50:31 +01:00
Crypto God
ef5a0b9afc add Kraken specifics 2019-02-15 22:50:11 +01:00
354 changed files with 52835 additions and 21359 deletions

View File

@@ -1,6 +1,7 @@
[run]
omit =
scripts/*
freqtrade/tests/*
freqtrade/templates/*
freqtrade/vendor/*
freqtrade/__main__.py
tests/*

18
.devcontainer/Dockerfile Normal file
View File

@@ -0,0 +1,18 @@
FROM freqtradeorg/freqtrade:develop
# Install dependencies
COPY requirements-dev.txt /freqtrade/
RUN apt-get update \
&& apt-get -y install git sudo vim \
&& apt-get clean \
&& pip install autopep8 -r docs/requirements-docs.txt -r requirements-dev.txt --no-cache-dir \
&& useradd -u 1000 -U -m ftuser \
&& mkdir -p /home/ftuser/.vscode-server /home/ftuser/.vscode-server-insiders /home/ftuser/commandhistory \
&& echo "export PROMPT_COMMAND='history -a'" >> /home/ftuser/.bashrc \
&& echo "export HISTFILE=~/commandhistory/.bash_history" >> /home/ftuser/.bashrc \
&& chown ftuser: -R /home/ftuser/
USER ftuser
# Empty the ENTRYPOINT to allow all commands
ENTRYPOINT []

View File

@@ -0,0 +1,44 @@
{
"name": "freqtrade Develop",
"dockerComposeFile": [
"docker-compose.yml"
],
"service": "ft_vscode",
"workspaceFolder": "/freqtrade/",
"settings": {
"terminal.integrated.shell.linux": "/bin/bash",
"editor.insertSpaces": true,
"files.trimTrailingWhitespace": true,
"[markdown]": {
"files.trimTrailingWhitespace": false,
},
"python.pythonPath": "/usr/local/bin/python",
},
// Add the IDs of extensions you want installed when the container is created.
"extensions": [
"ms-python.python",
"ms-python.vscode-pylance",
"davidanson.vscode-markdownlint",
"ms-azuretools.vscode-docker",
],
// Use 'forwardPorts' to make a list of ports inside the container available locally.
// "forwardPorts": [],
// Uncomment the next line if you want start specific services in your Docker Compose config.
// "runServices": [],
// Uncomment the next line if you want to keep your containers running after VS Code shuts down.
// "shutdownAction": "none",
// Uncomment the next line to run commands after the container is created - for example installing curl.
// "postCreateCommand": "sudo apt-get update && apt-get install -y git",
// Uncomment to connect as a non-root user if you've added one. See https://aka.ms/vscode-remote/containers/non-root.
"remoteUser": "ftuser"
}

View File

@@ -0,0 +1,24 @@
---
version: '3'
services:
ft_vscode:
build:
context: ..
dockerfile: ".devcontainer/Dockerfile"
volumes:
# Allow git usage within container
- "${HOME}/.ssh:/home/ftuser/.ssh:ro"
- "${HOME}/.gitconfig:/home/ftuser/.gitconfig:ro"
- ..:/freqtrade:cached
# Persist bash-history
- freqtrade-vscode-server:/home/ftuser/.vscode-server
- freqtrade-bashhistory:/home/ftuser/commandhistory
# Expose API port
ports:
- "127.0.0.1:8080:8080"
command: /bin/sh -c "while sleep 1000; do :; done"
volumes:
freqtrade-vscode-server:
freqtrade-bashhistory:

View File

@@ -13,3 +13,4 @@ CONTRIBUTING.md
MANIFEST.in
README.md
freqtrade.service
user_data

View File

@@ -1,32 +0,0 @@
## Step 1: Have you search for this issue before posting it?
If you have discovered a bug in the bot, please [search our issue tracker](https://github.com/freqtrade/freqtrade/issues?q=is%3Aissue).
If it hasn't been reported, please create a new issue.
## Step 2: Describe your environment
* Python Version: _____ (`python -V`)
* CCXT version: _____ (`pip freeze | grep ccxt`)
* Branch: Master | Develop
* Last Commit ID: _____ (`git log --format="%H" -n 1`)
## Step 3: Describe the problem:
*Explain the problem you have encountered*
### Steps to reproduce:
1. _____
2. _____
3. _____
### Observed Results:
* What happened?
* What did you expect to happen?
### Relevant code exceptions or logs:
```
// paste your log here
```

48
.github/ISSUE_TEMPLATE/bug_report.md vendored Normal file
View File

@@ -0,0 +1,48 @@
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: "Triage Needed"
assignees: ''
---
<!--
Have you searched for similar issues before posting it?
If you have discovered a bug in the bot, please [search our issue tracker](https://github.com/freqtrade/freqtrade/issues?q=is%3Aissue).
If it hasn't been reported, please create a new issue.
Please do not use bug reports to request new features.
-->
## Describe your environment
* 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)
Note: All issues other than enhancement requests will be closed without further comment if the above template is deleted or not filled out.
## Describe the problem:
*Explain the problem you have encountered*
### Steps to reproduce:
1. _____
2. _____
3. _____
### Observed Results:
* What happened?
* What did you expect to happen?
### Relevant code exceptions or logs
Note: Please copy/paste text of the messages, no screenshots of logs please.
```
// paste your log here
```

View File

@@ -0,0 +1,27 @@
---
name: Feature request
about: Suggest an idea for this project
title: ''
labels: ''
assignees: ''
---
<!--
Note: this section will not show up in the issue.
Have you search for this feature before requesting it? It's highly likely that a similar request was already filed.
-->
## 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
*Explain the enhancement you would like*

25
.github/ISSUE_TEMPLATE/question.md vendored Normal file
View File

@@ -0,0 +1,25 @@
---
name: BQuestion
about: Ask a question you could not find an answer in the docs
title: ''
labels: "Question"
assignees: ''
---
<!--
Have you searched for similar issues before posting it?
Did you have a VERY good look at the [documentation](https://www.freqtrade.io/en/latest/) and are sure that the question is not explained there
Please do not use the question template to report bugs or to request new features.
-->
## Describe your environment
* 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)
## Your question
*Ask the question you have not been able to find an answer in our [Documentation](https://www.freqtrade.io/en/latest/)*

13
.github/dependabot.yml vendored Normal file
View File

@@ -0,0 +1,13 @@
version: 2
updates:
- package-ecosystem: docker
directory: "/"
schedule:
interval: daily
open-pull-requests-limit: 10
- package-ecosystem: pip
directory: "/"
schedule:
interval: weekly
open-pull-requests-limit: 10
target-branch: develop

317
.github/workflows/ci.yml vendored Normal file
View File

@@ -0,0 +1,317 @@
name: Freqtrade CI
on:
push:
branches:
- master
- stable
- develop
tags:
release:
types: [published]
pull_request:
schedule:
- cron: '0 5 * * 4'
jobs:
build:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ ubuntu-18.04, ubuntu-20.04, macos-latest ]
python-version: [3.7, 3.8]
steps:
- uses: actions/checkout@v2
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python-version }}
- name: Cache_dependencies
uses: actions/cache@v1
id: cache
with:
path: ~/dependencies/
key: ${{ runner.os }}-dependencies
- name: pip cache (linux)
uses: actions/cache@preview
if: startsWith(matrix.os, 'ubuntu')
with:
path: ~/.cache/pip
key: test-${{ matrix.os }}-${{ matrix.python-version }}-pip
- name: pip cache (macOS)
uses: actions/cache@preview
if: startsWith(matrix.os, 'macOS')
with:
path: ~/Library/Caches/pip
key: test-${{ matrix.os }}-${{ matrix.python-version }}-pip
- name: TA binary *nix
if: steps.cache.outputs.cache-hit != 'true'
run: |
cd build_helpers && ./install_ta-lib.sh ${HOME}/dependencies/; cd ..
- name: Installation - *nix
run: |
python -m pip install --upgrade pip
export LD_LIBRARY_PATH=${HOME}/dependencies/lib:$LD_LIBRARY_PATH
export TA_LIBRARY_PATH=${HOME}/dependencies/lib
export TA_INCLUDE_PATH=${HOME}/dependencies/include
pip install -r requirements-dev.txt
pip install -e .
- name: Tests
run: |
pytest --random-order --cov=freqtrade --cov-config=.coveragerc
- name: Coveralls
if: (startsWith(matrix.os, 'ubuntu-20') && matrix.python-version == '3.8')
env:
# Coveralls token. Not used as secret due to github not providing secrets to forked repositories
COVERALLS_REPO_TOKEN: 6D1m0xupS3FgutfuGao8keFf9Hc0FpIXu
run: |
# Allow failure for coveralls
coveralls -v || true
- name: Backtesting
run: |
cp config.json.example config.json
freqtrade create-userdir --userdir user_data
freqtrade backtesting --datadir tests/testdata --strategy SampleStrategy
- name: Hyperopt
run: |
cp config.json.example config.json
freqtrade create-userdir --userdir user_data
freqtrade hyperopt --datadir tests/testdata -e 5 --strategy SampleStrategy --hyperopt SampleHyperOpt --hyperopt-loss SharpeHyperOptLossDaily --print-all
- name: Flake8
run: |
flake8
- name: Sort imports (isort)
run: |
isort --check .
- name: Mypy
run: |
mypy freqtrade scripts
- name: Slack Notification
uses: homoluctus/slatify@v1.8.0
if: failure() && ( github.event_name != 'pull_request' || github.event.pull_request.head.repo.fork == false)
with:
type: ${{ job.status }}
job_name: '*Freqtrade CI ${{ matrix.os }}*'
mention: 'here'
mention_if: 'failure'
channel: '#notifications'
url: ${{ secrets.SLACK_WEBHOOK }}
build_windows:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ windows-latest ]
python-version: [3.7, 3.8]
steps:
- uses: actions/checkout@v2
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python-version }}
- name: Pip cache (Windows)
uses: actions/cache@preview
if: startsWith(runner.os, 'Windows')
with:
path: ~\AppData\Local\pip\Cache
key: ${{ matrix.os }}-${{ matrix.python-version }}-pip
- name: Installation
run: |
./build_helpers/install_windows.ps1
- name: Tests
run: |
pytest --random-order --cov=freqtrade --cov-config=.coveragerc
- name: Backtesting
run: |
cp config.json.example config.json
freqtrade create-userdir --userdir user_data
freqtrade backtesting --datadir tests/testdata --strategy SampleStrategy
- name: Hyperopt
run: |
cp config.json.example config.json
freqtrade create-userdir --userdir user_data
freqtrade hyperopt --datadir tests/testdata -e 5 --strategy SampleStrategy --hyperopt SampleHyperOpt --hyperopt-loss SharpeHyperOptLossDaily --print-all
- name: Flake8
run: |
flake8
- name: Mypy
run: |
mypy freqtrade scripts
- name: Slack Notification
uses: homoluctus/slatify@v1.8.0
if: failure() && ( github.event_name != 'pull_request' || github.event.pull_request.head.repo.fork == false)
with:
type: ${{ job.status }}
job_name: '*Freqtrade CI windows*'
mention: 'here'
mention_if: 'failure'
channel: '#notifications'
url: ${{ secrets.SLACK_WEBHOOK }}
docs_check:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
- name: Documentation syntax
run: |
./tests/test_docs.sh
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: 3.8
- name: Documentation build
run: |
pip install -r docs/requirements-docs.txt
pip install mkdocs
mkdocs build
- name: Slack Notification
uses: homoluctus/slatify@v1.8.0
if: failure() && ( github.event_name != 'pull_request' || github.event.pull_request.head.repo.fork == false)
with:
type: ${{ job.status }}
job_name: '*Freqtrade Docs*'
channel: '#notifications'
url: ${{ secrets.SLACK_WEBHOOK }}
cleanup-prior-runs:
runs-on: ubuntu-20.04
steps:
- name: Cleanup previous runs on this branch
uses: rokroskar/workflow-run-cleanup-action@v0.2.2
if: "!startsWith(github.ref, 'refs/tags/') && github.ref != 'refs/heads/stable' && github.repository == 'freqtrade/freqtrade'"
env:
GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
# Notify on slack only once - when CI completes (and after deploy) in case it's successfull
notify-complete:
needs: [ build, build_windows, docs_check ]
runs-on: ubuntu-20.04
steps:
- name: Slack Notification
uses: homoluctus/slatify@v1.8.0
if: always() && ( github.event_name != 'pull_request' || github.event.pull_request.head.repo.fork == false)
with:
type: ${{ job.status }}
job_name: '*Freqtrade CI*'
channel: '#notifications'
url: ${{ secrets.SLACK_WEBHOOK }}
deploy:
needs: [ build, build_windows, docs_check ]
runs-on: ubuntu-20.04
if: (github.event_name == 'push' || github.event_name == 'schedule' || github.event_name == 'release') && github.repository == 'freqtrade/freqtrade'
steps:
- uses: actions/checkout@v2
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: 3.8
- name: Extract branch name
shell: bash
run: echo "##[set-output name=branch;]$(echo ${GITHUB_REF##*/})"
id: extract_branch
- name: Build distribution
run: |
pip install -U setuptools wheel
python setup.py sdist bdist_wheel
- name: Publish to PyPI (Test)
uses: pypa/gh-action-pypi-publish@master
if: (github.event_name == 'release')
with:
user: __token__
password: ${{ secrets.pypi_test_password }}
repository_url: https://test.pypi.org/legacy/
- name: Publish to PyPI
uses: pypa/gh-action-pypi-publish@master
if: (github.event_name == 'release')
with:
user: __token__
password: ${{ secrets.pypi_password }}
- name: Dockerhub login
env:
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
run: |
echo "${DOCKER_PASSWORD}" | docker login --username ${DOCKER_USERNAME} --password-stdin
- name: Build and test and push docker image
env:
IMAGE_NAME: freqtradeorg/freqtrade
BRANCH_NAME: ${{ steps.extract_branch.outputs.branch }}
run: |
build_helpers/publish_docker.sh
# We need docker experimental to pull the ARM image.
- name: Switch docker to experimental
run: |
docker version -f '{{.Server.Experimental}}'
echo $'{\n "experimental": true\n}' | sudo tee /etc/docker/daemon.json
sudo systemctl restart docker
docker version -f '{{.Server.Experimental}}'
- name: Set up Docker Buildx
id: buildx
uses: crazy-max/ghaction-docker-buildx@v1
with:
buildx-version: latest
qemu-version: latest
- name: Available platforms
run: echo ${{ steps.buildx.outputs.platforms }}
- name: Build Raspberry docker image
env:
IMAGE_NAME: freqtradeorg/freqtrade
BRANCH_NAME: ${{ steps.extract_branch.outputs.branch }}_pi
run: |
build_helpers/publish_docker_pi.sh
- name: Slack Notification
uses: homoluctus/slatify@v1.8.0
if: always() && ( github.event_name != 'pull_request' || github.event.pull_request.head.repo.fork == false)
with:
type: ${{ job.status }}
job_name: '*Freqtrade CI Deploy*'
mention: 'here'
mention_if: 'failure'
channel: '#notifications'
url: ${{ secrets.SLACK_WEBHOOK }}

View File

@@ -0,0 +1,18 @@
name: Update Docker Hub Description
on:
push:
branches:
- stable
jobs:
dockerHubDescription:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- name: Docker Hub Description
uses: peter-evans/dockerhub-description@v2.1.0
env:
DOCKERHUB_USERNAME: ${{ secrets.DOCKER_USERNAME }}
DOCKERHUB_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
DOCKERHUB_REPOSITORY: freqtradeorg/freqtrade

14
.gitignore vendored
View File

@@ -1,12 +1,11 @@
# Freqtrade rules
freqtrade/tests/testdata/*.json
hyperopt_conf.py
config*.json
*.sqlite
.hyperopt
logfile.txt
hyperopt_trials.pickle
user_data/
user_data/*
!user_data/strategy/sample_strategy.py
!user_data/notebooks
user_data/notebooks/*
freqtrade-plot.html
freqtrade-profit-plot.html
@@ -80,7 +79,7 @@ docs/_build/
target/
# Jupyter Notebook
.ipynb_checkpoints
*.ipynb_checkpoints
# pyenv
.python-version
@@ -92,3 +91,6 @@ target/
.pytest_cache/
.mypy_cache/
#exceptions
!*.gitkeep

View File

@@ -1,33 +0,0 @@
# autogenerated pyup.io config file
# see https://pyup.io/docs/configuration/ for all available options
# configure updates globally
# default: all
# allowed: all, insecure, False
update: all
# configure dependency pinning globally
# default: True
# allowed: True, False
pin: True
schedule: "every day"
search: False
# Specify requirement files by hand, default is empty
# default: empty
# allowed: list
requirements:
- requirements.txt
- requirements-dev.txt
- requirements-plot.txt
# configure the branch prefix the bot is using
# default: pyup-
branch_prefix: pyup/
# allow to close stale PRs
# default: True
close_prs: True

View File

@@ -1,4 +1,3 @@
sudo: true
os:
- linux
dist: xenial
@@ -10,45 +9,48 @@ services:
env:
global:
- IMAGE_NAME=freqtradeorg/freqtrade
addons:
apt:
packages:
- libelf-dev
- libdw-dev
- binutils-dev
install:
- cd build_helpers && ./install_ta-lib.sh; cd ..
- export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
- pip install --upgrade pytest-random-order
- cd build_helpers && ./install_ta-lib.sh ${HOME}/dependencies; cd ..
- export LD_LIBRARY_PATH=${HOME}/dependencies/lib:$LD_LIBRARY_PATH
- export TA_LIBRARY_PATH=${HOME}/dependencies/lib
- export TA_INCLUDE_PATH=${HOME}/dependencies/include
- pip install -r requirements-dev.txt
- pip install -e .
jobs:
include:
- stage: tests
script:
- pytest --cov=freqtrade --cov-config=.coveragerc freqtrade/tests/
- pytest --random-order --cov=freqtrade --cov-config=.coveragerc
# Allow failure for coveralls
# - coveralls || true
name: pytest
- script:
- cp config.json.example config.json
- python freqtrade/main.py --datadir freqtrade/tests/testdata backtesting
- freqtrade create-userdir --userdir user_data
- freqtrade backtesting --datadir tests/testdata --strategy SampleStrategy
name: backtest
- script:
- cp config.json.example config.json
- python freqtrade/main.py --datadir freqtrade/tests/testdata hyperopt -e 5
- freqtrade create-userdir --userdir user_data
- freqtrade hyperopt --datadir tests/testdata -e 5 --strategy SampleStrategy --hyperopt SampleHyperOpt --hyperopt-loss SharpeHyperOptLossDaily
name: hyperopt
- script: flake8 freqtrade
- script: flake8
name: flake8
- script: mypy freqtrade
- script:
# Test Documentation boxes -
# !!! <TYPE>: is not allowed!
# !!! <TYPE> "title" - Title needs to be quoted!
- grep -Er '^!{3}\s\S+:|^!{3}\s\S+\s[^"]' docs/*; test $? -ne 0
name: doc syntax
- script: mypy freqtrade scripts
name: mypy
- stage: docker
if: branch in (master, develop, feat/improve_travis) AND (type in (push, cron))
script:
- build_helpers/publish_docker.sh
name: "Build and test and push docker image"
after_success:
- coveralls
# - stage: docker
# if: branch in (master, develop, feat/improve_travis) AND (type in (push, cron))
# script:
# - build_helpers/publish_docker.sh
# name: "Build and test and push docker image"
notifications:
slack:
@@ -56,4 +58,4 @@ notifications:
cache:
pip: True
directories:
- /usr/local/lib
- $HOME/dependencies

View File

@@ -8,17 +8,17 @@ Issues labeled [good first issue](https://github.com/freqtrade/freqtrade/labels/
Few pointers for contributions:
- Create your PR against the `develop` branch, not `master`.
- New features need to contain unit tests and must be PEP8 conformant (max-line-length = 100).
- Create your PR against the `develop` branch, not `stable`.
- New features need to contain unit tests, must conform to PEP8 (max-line-length = 100) and should be documented with the introduction PR.
- PR's can be declared as `[WIP]` - which signify Work in Progress Pull Requests (which are not finished).
If you are unsure, discuss the feature on our [Slack](https://join.slack.com/t/highfrequencybot/shared_invite/enQtMjQ5NTM0OTYzMzY3LWMxYzE3M2MxNDdjMGM3ZTYwNzFjMGIwZGRjNTc3ZGU3MGE3NzdmZGMwNmU3NDM5ZTNmM2Y3NjRiNzk4NmM4OGE)
or in a [issue](https://github.com/freqtrade/freqtrade/issues) before a PR.
If you are unsure, discuss the feature on our [discord server](https://discord.gg/MA9v74M), on [Slack](https://join.slack.com/t/highfrequencybot/shared_invite/zt-jaut7r4m-Y17k4x5mcQES9a9swKuxbg) or in a [issue](https://github.com/freqtrade/freqtrade/issues) before a PR.
## Getting started
Best start by reading the [documentation](https://www.freqtrade.io/) to get a feel for what is possible with the bot, or head straight to the [Developer-documentation](https://www.freqtrade.io/en/latest/developer/) (WIP) which should help you getting started.
## Before sending the PR:
## Before sending the PR
### 1. Run unit tests
@@ -28,19 +28,19 @@ make it pass. It means you have introduced a regression.
#### Test the whole project
```bash
pytest freqtrade
pytest
```
#### Test only one file
```bash
pytest freqtrade/tests/test_<file_name>.py
pytest tests/test_<file_name>.py
```
#### Test only one method from one file
```bash
pytest freqtrade/tests/test_<file_name>.py::test_<method_name>
pytest tests/test_<file_name>.py::test_<method_name>
```
### 2. Test if your code is PEP8 compliant
@@ -48,7 +48,7 @@ pytest freqtrade/tests/test_<file_name>.py::test_<method_name>
#### Run Flake8
```bash
flake8 freqtrade
flake8 freqtrade tests scripts
```
We receive a lot of code that fails the `flake8` checks.
@@ -64,6 +64,14 @@ Guide for installing them is [here](http://flake8.pycqa.org/en/latest/user/using
mypy freqtrade
```
### 4. Ensure all imports are correct
#### Run isort
``` bash
isort .
```
## (Core)-Committer Guide
### Process: Pull Requests
@@ -109,11 +117,11 @@ Exceptions:
Contributors may be given commit privileges. Preference will be given to those with:
1. Past contributions to FreqTrade and other related open-source projects. Contributions to FreqTrade include both code (both accepted and pending) and friendly participation in the issue tracker and Pull request reviews. Quantity and quality are considered.
1. Past contributions to Freqtrade and other related open-source projects. Contributions to Freqtrade include both code (both accepted and pending) and friendly participation in the issue tracker and Pull request reviews. Quantity and quality are considered.
1. A coding style that the other core committers find simple, minimal, and clean.
1. Access to resources for cross-platform development and testing.
1. Time to devote to the project regularly.
Beeing a Committer does not grant write permission on `develop` or `master` for security reasons (Users trust FreqTrade with their Exchange API keys).
Being a Committer does not grant write permission on `develop` or `stable` for security reasons (Users trust Freqtrade with their Exchange API keys).
After beeing Committer for some time, a Committer may be named Core Committer and given full repository access.
After being Committer for some time, a Committer may be named Core Committer and given full repository access.

View File

@@ -1,7 +1,7 @@
FROM python:3.7.2-slim-stretch
FROM python:3.8.6-slim-buster
RUN apt-get update \
&& apt-get -y install curl build-essential \
&& apt-get -y install curl build-essential libssl-dev sqlite3 \
&& apt-get clean \
&& pip install --upgrade pip
@@ -16,11 +16,14 @@ RUN cd /tmp && /tmp/install_ta-lib.sh && rm -r /tmp/*ta-lib*
ENV LD_LIBRARY_PATH /usr/local/lib
# Install dependencies
COPY requirements.txt /freqtrade/
COPY requirements.txt requirements-hyperopt.txt /freqtrade/
RUN pip install numpy --no-cache-dir \
&& pip install -r requirements.txt --no-cache-dir
&& pip install -r requirements-hyperopt.txt --no-cache-dir
# Install and execute
COPY . /freqtrade/
RUN pip install -e . --no-cache-dir
RUN pip install -e . --no-cache-dir \
&& mkdir /freqtrade/user_data/
ENTRYPOINT ["freqtrade"]
# Default to trade mode
CMD [ "trade" ]

29
Dockerfile.armhf Normal file
View File

@@ -0,0 +1,29 @@
FROM --platform=linux/arm/v7 python:3.7.7-slim-buster
RUN apt-get update \
&& apt-get -y install curl build-essential libssl-dev libffi-dev libatlas3-base libgfortran5 sqlite3 \
&& apt-get clean \
&& pip install --upgrade pip \
&& echo "[global]\nextra-index-url=https://www.piwheels.org/simple" > /etc/pip.conf
# Prepare environment
RUN mkdir /freqtrade
WORKDIR /freqtrade
# Install TA-lib
COPY build_helpers/* /tmp/
RUN cd /tmp && /tmp/install_ta-lib.sh && rm -r /tmp/*ta-lib*
ENV LD_LIBRARY_PATH /usr/local/lib
# Install dependencies
COPY requirements.txt /freqtrade/
RUN pip install numpy --no-cache-dir \
&& pip install -r requirements.txt --no-cache-dir
# Install and execute
COPY . /freqtrade/
RUN pip install -e . --no-cache-dir
ENTRYPOINT ["freqtrade"]
# Default to trade mode
CMD [ "trade" ]

View File

@@ -2,4 +2,4 @@ include LICENSE
include README.md
include config.json.example
recursive-include freqtrade *.py
include freqtrade/tests/testdata/*.json
recursive-include freqtrade/templates/ *.j2 *.ipynb

115
README.md
View File

@@ -1,6 +1,6 @@
# Freqtrade
[![Build Status](https://travis-ci.org/freqtrade/freqtrade.svg?branch=develop)](https://travis-ci.org/freqtrade/freqtrade)
[![Freqtrade CI](https://github.com/freqtrade/freqtrade/workflows/Freqtrade%20CI/badge.svg)](https://github.com/freqtrade/freqtrade/actions/)
[![Coverage Status](https://coveralls.io/repos/github/freqtrade/freqtrade/badge.svg?branch=develop&service=github)](https://coveralls.io/github/freqtrade/freqtrade?branch=develop)
[![Documentation](https://readthedocs.org/projects/freqtrade/badge/)](https://www.freqtrade.io)
[![Maintainability](https://api.codeclimate.com/v1/badges/5737e6d668200b7518ff/maintainability)](https://codeclimate.com/github/freqtrade/freqtrade/maintainability)
@@ -25,7 +25,8 @@ hesitate to read the source code and understand the mechanism of this bot.
## Exchange marketplaces supported
- [X] [Bittrex](https://bittrex.com/)
- [X] [Binance](https://www.binance.com/) ([*Note for binance users](#a-note-on-binance))
- [X] [Binance](https://www.binance.com/) ([*Note for binance users](docs/exchanges.md#blacklists))
- [X] [Kraken](https://kraken.com/)
- [ ] [113 others to tests](https://github.com/ccxt/ccxt/). _(We cannot guarantee they will work)_
## Documentation
@@ -54,94 +55,90 @@ Please find the complete documentation on our [website](https://www.freqtrade.io
Freqtrade provides a Linux/macOS script to install all dependencies and help you to configure the bot.
```bash
git clone git@github.com:freqtrade/freqtrade.git
git clone -b develop https://github.com/freqtrade/freqtrade.git
cd freqtrade
git checkout develop
./setup.sh --install
```
For any other type of installation please refer to [Installation doc](https://www.freqtrade.io/en/latest/installation/).
## Basic Usage
### Bot commands
```
usage: main.py [-h] [-v] [--version] [-c PATH] [-d PATH] [-s NAME]
[--strategy-path PATH] [--customhyperopt NAME]
[--dynamic-whitelist [INT]] [--db-url PATH]
{backtesting,edge,hyperopt} ...
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:
{backtesting,edge,hyperopt}
backtesting backtesting module
edge edge module
hyperopt hyperopt module
{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, --verbose verbose mode (-vv for more, -vvv to get all messages)
--version show program\'s version number and exit
-c PATH, --config PATH
specify configuration file (default: config.json)
-d PATH, --datadir PATH
path to backtest data
-s NAME, --strategy NAME
specify strategy class name (default: DefaultStrategy)
--strategy-path PATH specify additional strategy lookup path
--customhyperopt NAME
specify hyperopt class name (default:
DefaultHyperOpts)
--dynamic-whitelist [INT]
dynamically generate and update whitelist based on 24h
BaseVolume (default: 20) DEPRECATED.
--db-url PATH Override trades database URL, this is useful if
dry_run is enabled or in custom deployments (default:
None)
-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 on our [documentation](https://www.freqtrade.io/en/latest/telegram-usage/)
Telegram is not mandatory. However, this is a great way to control your bot. More details and the full command list on our [documentation](https://www.freqtrade.io/en/latest/telegram-usage/)
- `/start`: Starts the trader
- `/stop`: Stops the trader
- `/status [table]`: Lists all open trades
- `/count`: Displays number of open trades
- `/start`: Starts the trader.
- `/stop`: Stops the trader.
- `/stopbuy`: Stop entering new trades.
- `/status [table]`: Lists all open trades.
- `/profit`: Lists cumulative profit from all finished trades
- `/forcesell <trade_id>|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 <n>`: Shows profit or loss per day, over the last n days
- `/help`: Show help message
- `/version`: Show version
- `/balance`: Show account balance per currency.
- `/daily <n>`: 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 cause breaking changes.
- `master` - This branch contains the latest stable release. The bot 'should' be stable on this branch, and is generally well tested.
- `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.
## A note on Binance
For Binance, please add `"BNB/<STAKE>"` to your blacklist to avoid issues.
Accounts having BNB accounts use this to pay for fees - if your first trade happens to be on `BNB`, further trades will consume this position and make the initial BNB order unsellable as the expected amount is not there anymore.
## Support
### Help / Slack
### Help / Discord / Slack
For any questions not covered by the documentation or for further
information about the bot, we encourage you to join our slack channel.
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.
- [Click here to join Slack channel](https://join.slack.com/t/highfrequencybot/shared_invite/enQtMjQ5NTM0OTYzMzY3LWMxYzE3M2MxNDdjMGM3ZTYwNzFjMGIwZGRjNTc3ZGU3MGE3NzdmZGMwNmU3NDM5ZTNmM2Y3NjRiNzk4NmM4OGE).
Please check out our [discord server](https://discord.gg/MA9v74M).
You can also join our [Slack channel](https://join.slack.com/t/highfrequencybot/shared_invite/zt-jaut7r4m-Y17k4x5mcQES9a9swKuxbg).
### [Bugs / Issues](https://github.com/freqtrade/freqtrade/issues?q=is%3Aissue)
@@ -169,18 +166,18 @@ Please read our
[Contributing document](https://github.com/freqtrade/freqtrade/blob/develop/CONTRIBUTING.md)
to understand the requirements before sending your pull-requests.
Coding is not a neccessity to contribute - maybe start with improving our documentation?
Coding is not a necessity to contribute - maybe start with improving our documentation?
Issues labeled [good first issue](https://github.com/freqtrade/freqtrade/labels/good%20first%20issue) 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 [Slack](https://join.slack.com/t/highfrequencybot/shared_invite/enQtMjQ5NTM0OTYzMzY3LWMxYzE3M2MxNDdjMGM3ZTYwNzFjMGIwZGRjNTc3ZGU3MGE3NzdmZGMwNmU3NDM5ZTNmM2Y3NjRiNzk4NmM4OGE). This will ensure that interested parties can give valuable feedback on the feature, and let others know that you are working on it.
**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](https://discord.gg/MA9v74M) or [Slack](https://join.slack.com/t/highfrequencybot/shared_invite/zt-jaut7r4m-Y17k4x5mcQES9a9swKuxbg). 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 `master`.
**Important:** Always create your PR against the `develop` branch, not `stable`.
## Requirements
### Uptodate clock
### Up-to-date clock
The clock must be accurate, syncronized to a NTP server very frequently to avoid problems with communication to the exchanges.
The clock must be accurate, synchronized to a NTP server very frequently to avoid problems with communication to the exchanges.
### Min hardware required
@@ -195,4 +192,4 @@ To run this bot we recommend you a cloud instance with a minimum of:
- [git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git)
- [TA-Lib](https://mrjbq7.github.io/ta-lib/install.html)
- [virtualenv](https://virtualenv.pypa.io/en/stable/installation/) (Recommended)
- [Docker](https://www.docker.com/products/docker) (Recommended)
- [Docker](https://www.docker.com/products/docker) (Recommended)

View File

@@ -1,7 +0,0 @@
#!/usr/bin/env python3
import sys
from freqtrade.main import main, set_loggers
set_loggers()
main(sys.argv[1:])

Binary file not shown.

Binary file not shown.

View File

@@ -1,8 +1,14 @@
if [ ! -f "/usr/local/lib/libta_lib.a" ]; then
if [ -z "$1" ]; then
INSTALL_LOC=/usr/local
else
INSTALL_LOC=${1}
fi
echo "Installing to ${INSTALL_LOC}"
if [ ! -f "${INSTALL_LOC}/lib/libta_lib.a" ]; then
tar zxvf ta-lib-0.4.0-src.tar.gz
cd ta-lib \
&& sed -i.bak "s|0.00000001|0.000000000000000001 |g" src/ta_func/ta_utility.h \
&& ./configure \
&& ./configure --prefix=${INSTALL_LOC}/ \
&& make \
&& which sudo && sudo make install || make install \
&& cd ..

View File

@@ -0,0 +1,17 @@
# Downloads don't work automatically, since the URL is regenerated via javascript.
# Downloaded from https://www.lfd.uci.edu/~gohlke/pythonlibs/#ta-lib
# Invoke-WebRequest -Uri "https://download.lfd.uci.edu/pythonlibs/xxxxxxx/TA_Lib-0.4.17-cp37-cp37m-win_amd64.whl" -OutFile "TA_Lib-0.4.17-cp37-cp37m-win_amd64.whl"
python -m pip install --upgrade pip
$pyv = python -c "import sys; print(f'{sys.version_info.major}.{sys.version_info.minor}')"
if ($pyv -eq '3.7') {
pip install build_helpers\TA_Lib-0.4.19-cp37-cp37m-win_amd64.whl
}
if ($pyv -eq '3.8') {
pip install build_helpers\TA_Lib-0.4.19-cp38-cp38-win_amd64.whl
}
pip install -r requirements-dev.txt
pip install -e .

View File

@@ -1,21 +1,28 @@
#!/bin/sh
# - export TAG=`if [ "$TRAVIS_BRANCH" == "develop" ]; then echo "latest"; else echo $TRAVIS_BRANCH ; fi`
# Replace / with _ to create a valid tag
TAG=$(echo "${TRAVIS_BRANCH}" | sed -e "s/\//_/")
# Replace / with _ to create a valid tag
TAG=$(echo "${BRANCH_NAME}" | sed -e "s/\//_/g")
TAG_PLOT=${TAG}_plot
echo "Running for ${TAG}"
# Add commit and commit_message to docker container
echo "${TRAVIS_COMMIT} ${TRAVIS_COMMIT_MESSAGE}" > freqtrade_commit
echo "${GITHUB_SHA}" > freqtrade_commit
if [ "${TRAVIS_EVENT_TYPE}" = "cron" ]; then
echo "event ${TRAVIS_EVENT_TYPE}: full rebuild - skipping cache"
if [ "${GITHUB_EVENT_NAME}" = "schedule" ]; then
echo "event ${GITHUB_EVENT_NAME}: full rebuild - skipping cache"
docker build -t freqtrade:${TAG} .
else
echo "event ${TRAVIS_EVENT_TYPE}: building with cache"
echo "event ${GITHUB_EVENT_NAME}: building with cache"
# Pull last build to avoid rebuilding the whole image
docker pull ${IMAGE_NAME}:${TAG}
docker build --cache-from ${IMAGE_NAME}:${TAG} -t freqtrade:${TAG} .
fi
# Tag image for upload and next build step
docker tag freqtrade:$TAG ${IMAGE_NAME}:$TAG
docker build --cache-from freqtrade:${TAG} --build-arg sourceimage=${TAG} -t freqtrade:${TAG_PLOT} -f docker/Dockerfile.plot .
docker tag freqtrade:$TAG_PLOT ${IMAGE_NAME}:$TAG_PLOT
if [ $? -ne 0 ]; then
echo "failed building image"
@@ -23,33 +30,23 @@ if [ $? -ne 0 ]; then
fi
# Run backtest
docker run --rm -it -v $(pwd)/config.json.example:/freqtrade/config.json:ro freqtrade:${TAG} --datadir freqtrade/tests/testdata backtesting
docker run --rm -v $(pwd)/config.json.example:/freqtrade/config.json:ro -v $(pwd)/tests:/tests freqtrade:${TAG} backtesting --datadir /tests/testdata --strategy-path /tests/strategy/strats/ --strategy DefaultStrategy
if [ $? -ne 0 ]; then
echo "failed running backtest"
return 1
fi
# Tag image for upload
docker tag freqtrade:$TAG ${IMAGE_NAME}:$TAG
if [ $? -ne 0 ]; then
echo "failed tagging image"
return 1
fi
# Tag as latest for develop builds
if [ "${TRAVIS_BRANCH}" = "develop" ]; then
if [ "${TAG}" = "develop" ]; then
docker tag freqtrade:$TAG ${IMAGE_NAME}:latest
fi
# Login
echo "$DOCKER_PASS" | docker login -u $DOCKER_USER --password-stdin
if [ $? -ne 0 ]; then
echo "failed login"
return 1
fi
# Show all available images
docker images

View File

@@ -0,0 +1,36 @@
#!/bin/sh
# The below assumes a correctly setup docker buildx environment
# Replace / with _ to create a valid tag
TAG=$(echo "${BRANCH_NAME}" | sed -e "s/\//_/g")
PI_PLATFORM="linux/arm/v7"
echo "Running for ${TAG}"
CACHE_TAG=freqtradeorg/freqtrade_cache:${TAG}_cache
# Add commit and commit_message to docker container
echo "${GITHUB_SHA}" > freqtrade_commit
if [ "${GITHUB_EVENT_NAME}" = "schedule" ]; then
echo "event ${GITHUB_EVENT_NAME}: full rebuild - skipping cache"
docker buildx build \
--cache-to=type=registry,ref=${CACHE_TAG} \
-f Dockerfile.armhf \
--platform ${PI_PLATFORM} \
-t ${IMAGE_NAME}:${TAG} --push .
else
echo "event ${GITHUB_EVENT_NAME}: building with cache"
# Pull last build to avoid rebuilding the whole image
# docker pull --platform ${PI_PLATFORM} ${IMAGE_NAME}:${TAG}
docker buildx build \
--cache-from=type=registry,ref=${CACHE_TAG} \
--cache-to=type=registry,ref=${CACHE_TAG} \
-f Dockerfile.armhf \
--platform ${PI_PLATFORM} \
-t ${IMAGE_NAME}:${TAG} --push .
fi
if [ $? -ne 0 ]; then
echo "failed building image"
return 1
fi

View File

@@ -2,17 +2,18 @@
"max_open_trades": 3,
"stake_currency": "BTC",
"stake_amount": 0.05,
"tradable_balance_ratio": 0.99,
"fiat_display_currency": "USD",
"ticker_interval" : "5m",
"dry_run": false,
"trailing_stop": false,
"timeframe": "5m",
"dry_run": true,
"cancel_open_orders_on_exit": false,
"unfilledtimeout": {
"buy": 10,
"sell": 30
},
"bid_strategy": {
"ask_last_balance": 0.0,
"use_order_book": false,
"ask_last_balance": 0.0,
"order_book_top": 1,
"check_depth_of_market": {
"enabled": false,
@@ -22,7 +23,10 @@
"ask_strategy":{
"use_order_book": false,
"order_book_min": 1,
"order_book_max": 9
"order_book_max": 1,
"use_sell_signal": true,
"sell_profit_only": false,
"ignore_roi_if_buy_signal": false
},
"exchange": {
"name": "bittrex",
@@ -30,7 +34,8 @@
"secret": "your_exchange_secret",
"ccxt_config": {"enableRateLimit": true},
"ccxt_async_config": {
"enableRateLimit": false
"enableRateLimit": true,
"rateLimit": 500
},
"pair_whitelist": [
"ETH/BTC",
@@ -39,8 +44,8 @@
"DASH/BTC",
"ZEC/BTC",
"XLM/BTC",
"NXT/BTC",
"POWR/BTC",
"XRP/BTC",
"TRX/BTC",
"ADA/BTC",
"XMR/BTC"
],
@@ -48,16 +53,13 @@
"DOGE/BTC"
]
},
"experimental": {
"use_sell_signal": false,
"sell_profit_only": false,
"ignore_roi_if_buy_signal": false
},
"pairlists": [
{"method": "StaticPairList"}
],
"edge": {
"enabled": false,
"process_throttle_secs": 3600,
"calculate_since_number_of_days": 7,
"capital_available_percentage": 0.5,
"allowed_risk": 0.01,
"stoploss_range_min": -0.01,
"stoploss_range_max": -0.1,
@@ -69,10 +71,20 @@
"remove_pumps": false
},
"telegram": {
"enabled": true,
"enabled": false,
"token": "your_telegram_token",
"chat_id": "your_telegram_chat_id"
},
"api_server": {
"enabled": false,
"listen_ip_address": "127.0.0.1",
"listen_port": 8080,
"verbosity": "info",
"jwt_secret_key": "somethingrandom",
"CORS_origins": [],
"username": "",
"password": ""
},
"initial_state": "running",
"forcebuy_enable": false,
"internals": {

View File

@@ -2,17 +2,18 @@
"max_open_trades": 3,
"stake_currency": "BTC",
"stake_amount": 0.05,
"tradable_balance_ratio": 0.99,
"fiat_display_currency": "USD",
"ticker_interval" : "5m",
"timeframe": "5m",
"dry_run": true,
"trailing_stop": false,
"cancel_open_orders_on_exit": false,
"unfilledtimeout": {
"buy": 10,
"sell": 30
},
"bid_strategy": {
"ask_last_balance": 0.0,
"use_order_book": false,
"ask_last_balance": 0.0,
"order_book_top": 1,
"check_depth_of_market": {
"enabled": false,
@@ -22,7 +23,10 @@
"ask_strategy":{
"use_order_book": false,
"order_book_min": 1,
"order_book_max": 9
"order_book_max": 1,
"use_sell_signal": true,
"sell_profit_only": false,
"ignore_roi_if_buy_signal": false
},
"exchange": {
"name": "binance",
@@ -30,36 +34,37 @@
"secret": "your_exchange_secret",
"ccxt_config": {"enableRateLimit": true},
"ccxt_async_config": {
"enableRateLimit": false
"enableRateLimit": true,
"rateLimit": 200
},
"pair_whitelist": [
"AST/BTC",
"ETC/BTC",
"ETH/BTC",
"ALGO/BTC",
"ATOM/BTC",
"BAT/BTC",
"BCH/BTC",
"BRD/BTC",
"EOS/BTC",
"ETH/BTC",
"IOTA/BTC",
"LINK/BTC",
"LTC/BTC",
"MTH/BTC",
"NCASH/BTC",
"TNT/BTC",
"NEO/BTC",
"NXS/BTC",
"XMR/BTC",
"XLM/BTC",
"XRP/BTC"
"XRP/BTC",
"XTZ/BTC"
],
"pair_blacklist": [
"BNB/BTC"
]
},
"experimental": {
"use_sell_signal": false,
"sell_profit_only": false,
"ignore_roi_if_buy_signal": false
},
"pairlists": [
{"method": "StaticPairList"}
],
"edge": {
"enabled": false,
"process_throttle_secs": 3600,
"calculate_since_number_of_days": 7,
"capital_available_percentage": 0.5,
"allowed_risk": 0.01,
"stoploss_range_min": -0.01,
"stoploss_range_max": -0.1,
@@ -75,6 +80,16 @@
"token": "your_telegram_token",
"chat_id": "your_telegram_chat_id"
},
"api_server": {
"enabled": false,
"listen_ip_address": "127.0.0.1",
"listen_port": 8080,
"verbosity": "info",
"jwt_secret_key": "somethingrandom",
"CORS_origins": [],
"username": "",
"password": ""
},
"initial_state": "running",
"forcebuy_enable": false,
"internals": {

View File

@@ -2,13 +2,18 @@
"max_open_trades": 3,
"stake_currency": "BTC",
"stake_amount": 0.05,
"tradable_balance_ratio": 0.99,
"fiat_display_currency": "USD",
"amount_reserve_percent" : 0.05,
"dry_run": false,
"ticker_interval": "5m",
"amount_reserve_percent": 0.05,
"amend_last_stake_amount": false,
"last_stake_amount_min_ratio": 0.5,
"dry_run": true,
"cancel_open_orders_on_exit": false,
"timeframe": "5m",
"trailing_stop": false,
"trailing_stop_positive": 0.005,
"trailing_stop_positive_offset": 0.0051,
"trailing_only_offset_is_reached": false,
"minimal_roi": {
"40": 0.0,
"30": 0.01,
@@ -21,8 +26,9 @@
"sell": 30
},
"bid_strategy": {
"ask_last_balance": 0.0,
"price_side": "bid",
"use_order_book": false,
"ask_last_balance": 0.0,
"order_book_top": 1,
"check_depth_of_market": {
"enabled": false,
@@ -30,35 +36,55 @@
}
},
"ask_strategy":{
"price_side": "ask",
"use_order_book": false,
"order_book_min": 1,
"order_book_max": 9
"order_book_max": 1,
"use_sell_signal": true,
"sell_profit_only": false,
"ignore_roi_if_buy_signal": false
},
"order_types": {
"buy": "limit",
"sell": "limit",
"emergencysell": "market",
"stoploss": "market",
"stoploss_on_exchange": "false",
"stoploss_on_exchange": false,
"stoploss_on_exchange_interval": 60
},
"order_time_in_force": {
"buy": "gtc",
"sell": "gtc",
"sell": "gtc"
},
"pairlist": {
"method": "VolumePairList",
"config": {
"pairlists": [
{"method": "StaticPairList"},
{
"method": "VolumePairList",
"number_assets": 20,
"sort_key": "quoteVolume"
"sort_key": "quoteVolume",
"refresh_period": 1800
},
{"method": "AgeFilter", "min_days_listed": 10},
{"method": "PrecisionFilter"},
{"method": "PriceFilter", "low_price_ratio": 0.01, "min_price": 0.00000010},
{"method": "SpreadFilter", "max_spread_ratio": 0.005},
{
"method": "RangeStabilityFilter",
"lookback_days": 10,
"min_rate_of_change": 0.01,
"refresh_period": 1440
}
},
],
"exchange": {
"name": "bittrex",
"sandbox": false,
"key": "your_exchange_key",
"secret": "your_exchange_secret",
"password": "",
"ccxt_config": {"enableRateLimit": true},
"ccxt_async_config": {
"enableRateLimit": false,
"rateLimit": 500,
"aiohttp_trust_env": false
},
"pair_whitelist": [
@@ -69,20 +95,20 @@
"ZEC/BTC",
"XLM/BTC",
"NXT/BTC",
"POWR/BTC",
"TRX/BTC",
"ADA/BTC",
"XMR/BTC"
],
"pair_blacklist": [
"DOGE/BTC"
],
"outdated_offset": 5
"outdated_offset": 5,
"markets_refresh_interval": 60
},
"edge": {
"enabled": false,
"process_throttle_secs": 3600,
"calculate_since_number_of_days": 7,
"capital_available_percentage": 0.5,
"allowed_risk": 0.01,
"stoploss_range_min": -0.01,
"stoploss_range_max": -0.1,
@@ -93,22 +119,40 @@
"max_trade_duration_minute": 1440,
"remove_pumps": false
},
"experimental": {
"use_sell_signal": false,
"sell_profit_only": false,
"ignore_roi_if_buy_signal": false
},
"telegram": {
"enabled": true,
"token": "your_telegram_token",
"chat_id": "your_telegram_chat_id"
"chat_id": "your_telegram_chat_id",
"notification_settings": {
"status": "on",
"warning": "on",
"startup": "on",
"buy": "on",
"sell": "on",
"buy_cancel": "on",
"sell_cancel": "on"
}
},
"api_server": {
"enabled": false,
"listen_ip_address": "127.0.0.1",
"listen_port": 8080,
"verbosity": "info",
"jwt_secret_key": "somethingrandom",
"CORS_origins": [],
"username": "freqtrader",
"password": "SuperSecurePassword"
},
"db_url": "sqlite:///tradesv3.sqlite",
"initial_state": "running",
"forcebuy_enable": false,
"internals": {
"process_throttle_secs": 5
"process_throttle_secs": 5,
"heartbeat_interval": 60
},
"disable_dataframe_checks": false,
"strategy": "DefaultStrategy",
"strategy_path": "/some/folder/"
"strategy_path": "user_data/strategies/",
"dataformat_ohlcv": "json",
"dataformat_trades": "jsongz"
}

104
config_kraken.json.example Normal file
View File

@@ -0,0 +1,104 @@
{
"max_open_trades": 5,
"stake_currency": "EUR",
"stake_amount": 10,
"tradable_balance_ratio": 0.99,
"fiat_display_currency": "EUR",
"timeframe": "5m",
"dry_run": true,
"cancel_open_orders_on_exit": false,
"unfilledtimeout": {
"buy": 10,
"sell": 30
},
"bid_strategy": {
"use_order_book": false,
"ask_last_balance": 0.0,
"order_book_top": 1,
"check_depth_of_market": {
"enabled": false,
"bids_to_ask_delta": 1
}
},
"ask_strategy":{
"use_order_book": false,
"order_book_min": 1,
"order_book_max": 1,
"use_sell_signal": true,
"sell_profit_only": false,
"ignore_roi_if_buy_signal": false
},
"exchange": {
"name": "kraken",
"key": "your_exchange_key",
"secret": "your_exchange_key",
"ccxt_config": {"enableRateLimit": true},
"ccxt_async_config": {
"enableRateLimit": true,
"rateLimit": 1000
},
"pair_whitelist": [
"ADA/EUR",
"ATOM/EUR",
"BAT/EUR",
"BCH/EUR",
"BTC/EUR",
"DAI/EUR",
"DASH/EUR",
"EOS/EUR",
"ETC/EUR",
"ETH/EUR",
"LINK/EUR",
"LTC/EUR",
"QTUM/EUR",
"REP/EUR",
"WAVES/EUR",
"XLM/EUR",
"XMR/EUR",
"XRP/EUR",
"XTZ/EUR",
"ZEC/EUR"
],
"pair_blacklist": [
]
},
"pairlists": [
{"method": "StaticPairList"}
],
"edge": {
"enabled": false,
"process_throttle_secs": 3600,
"calculate_since_number_of_days": 7,
"allowed_risk": 0.01,
"stoploss_range_min": -0.01,
"stoploss_range_max": -0.1,
"stoploss_range_step": -0.01,
"minimum_winrate": 0.60,
"minimum_expectancy": 0.20,
"min_trade_number": 10,
"max_trade_duration_minute": 1440,
"remove_pumps": false
},
"telegram": {
"enabled": false,
"token": "your_telegram_token",
"chat_id": "your_telegram_chat_id"
},
"api_server": {
"enabled": false,
"listen_ip_address": "127.0.0.1",
"listen_port": 8080,
"verbosity": "info",
"jwt_secret_key": "somethingrandom",
"CORS_origins": [],
"username": "",
"password": ""
},
"initial_state": "running",
"forcebuy_enable": false,
"internals": {
"process_throttle_secs": 5
},
"download_trades": true
}

23
docker-compose.yml Normal file
View File

@@ -0,0 +1,23 @@
---
version: '3'
services:
freqtrade:
image: freqtradeorg/freqtrade:stable
# image: freqtradeorg/freqtrade:develop
# Use plotting image
# image: freqtradeorg/freqtrade:develop_plot
# Build step - only needed when additional dependencies are needed
# build:
# context: .
# dockerfile: "./Dockerfile.technical"
restart: unless-stopped
container_name: freqtrade
volumes:
- "./user_data:/freqtrade/user_data"
# Default command used when running `docker compose up`
command: >
trade
--logfile /freqtrade/user_data/logs/freqtrade.log
--db-url sqlite:////freqtrade/user_data/tradesv3.sqlite
--config /freqtrade/user_data/config.json
--strategy SampleStrategy

View File

@@ -2,6 +2,7 @@ FROM freqtradeorg/freqtrade:develop
# Install dependencies
COPY requirements-dev.txt /freqtrade/
RUN pip install numpy --no-cache-dir \
&& pip install -r requirements-dev.txt --no-cache-dir

View File

@@ -0,0 +1,7 @@
FROM freqtradeorg/freqtrade:develop_plot
RUN pip install jupyterlab --no-cache-dir
# Empty the ENTRYPOINT to allow all commands
ENTRYPOINT []

7
docker/Dockerfile.plot Normal file
View File

@@ -0,0 +1,7 @@
ARG sourceimage=develop
FROM freqtradeorg/freqtrade:${sourceimage}
# Install dependencies
COPY requirements-plot.txt /freqtrade/
RUN pip install -r requirements-plot.txt --no-cache-dir

View File

@@ -3,4 +3,4 @@ FROM freqtradeorg/freqtrade:develop
RUN apt-get update \
&& apt-get -y install git \
&& apt-get clean \
&& pip install git+https://github.com/berlinguyinca/technical
&& pip install git+https://github.com/freqtrade/technical

View File

@@ -0,0 +1,16 @@
---
version: '3'
services:
ft_jupyterlab:
build:
context: ..
dockerfile: docker/Dockerfile.jupyter
restart: unless-stopped
container_name: freqtrade
ports:
- "127.0.0.1:8888:8888"
volumes:
- "./user_data:/freqtrade/user_data"
# Default command used when running `docker compose up`
command: >
jupyter lab --port=8888 --ip 0.0.0.0 --allow-root

91
docs/advanced-hyperopt.md Normal file
View File

@@ -0,0 +1,91 @@
# Advanced Hyperopt
This page explains some advanced Hyperopt topics that may require higher
coding skills and Python knowledge than creation of an ordinal hyperoptimization
class.
## Derived hyperopt classes
Custom hyperop classes can be derived in the same way [it can be done for strategies](strategy-customization.md#derived-strategies).
Applying to hyperoptimization, as an example, you may override how dimensions are defined in your optimization hyperspace:
```python
class MyAwesomeHyperOpt(IHyperOpt):
...
# Uses default stoploss dimension
class MyAwesomeHyperOpt2(MyAwesomeHyperOpt):
@staticmethod
def stoploss_space() -> List[Dimension]:
# Override boundaries for stoploss
return [
Real(-0.33, -0.01, name='stoploss'),
]
```
and then quickly switch between hyperopt classes, running optimization process with hyperopt class you need in each particular case:
```
$ freqtrade hyperopt --hyperopt MyAwesomeHyperOpt --hyperopt-loss SharpeHyperOptLossDaily --strategy MyAwesomeStrategy ...
or
$ freqtrade hyperopt --hyperopt MyAwesomeHyperOpt2 --hyperopt-loss SharpeHyperOptLossDaily --strategy MyAwesomeStrategy ...
```
## Creating and using a custom loss function
To use a custom loss function class, make sure that the function `hyperopt_loss_function` is defined in your custom hyperopt loss class.
For the sample below, you then need to add the command line parameter `--hyperopt-loss SuperDuperHyperOptLoss` to your hyperopt call so this function is being used.
A sample of this can be found below, which is identical to the Default Hyperopt loss implementation. A full sample can be found in [userdata/hyperopts](https://github.com/freqtrade/freqtrade/blob/develop/freqtrade/templates/sample_hyperopt_loss.py).
``` python
from freqtrade.optimize.hyperopt import IHyperOptLoss
TARGET_TRADES = 600
EXPECTED_MAX_PROFIT = 3.0
MAX_ACCEPTED_TRADE_DURATION = 300
class SuperDuperHyperOptLoss(IHyperOptLoss):
"""
Defines the default loss function for hyperopt
"""
@staticmethod
def hyperopt_loss_function(results: DataFrame, trade_count: int,
min_date: datetime, max_date: datetime,
*args, **kwargs) -> float:
"""
Objective function, returns smaller number for better results
This is the legacy algorithm (used until now in freqtrade).
Weights are distributed as follows:
* 0.4 to trade duration
* 0.25: Avoiding trade loss
* 1.0 to total profit, compared to the expected value (`EXPECTED_MAX_PROFIT`) defined above
"""
total_profit = results['profit_percent'].sum()
trade_duration = results['trade_duration'].mean()
trade_loss = 1 - 0.25 * exp(-(trade_count - TARGET_TRADES) ** 2 / 10 ** 5.8)
profit_loss = max(0, 1 - total_profit / EXPECTED_MAX_PROFIT)
duration_loss = 0.4 * min(trade_duration / MAX_ACCEPTED_TRADE_DURATION, 1)
result = trade_loss + profit_loss + duration_loss
return result
```
Currently, the arguments are:
* `results`: DataFrame containing the result
The following columns are available in results (corresponds to the output-file of backtesting when used with `--export trades`):
`pair, profit_percent, profit_abs, open_time, close_time, open_index, close_index, trade_duration, open_at_end, open_rate, close_rate, sell_reason`
* `trade_count`: Amount of trades (identical to `len(results)`)
* `min_date`: Start date of the hyperopting TimeFrame
* `min_date`: End date of the hyperopting TimeFrame
This function needs to return a floating point number (`float`). Smaller numbers will be interpreted as better results. The parameters and balancing for this is up to you.
!!! Note
This function is called once per iteration - so please make sure to have this as optimized as possible to not slow hyperopt down unnecessarily.
!!! Note
Please keep the arguments `*args` and `**kwargs` in the interface to allow us to extend this interface later.

140
docs/advanced-setup.md Normal file
View File

@@ -0,0 +1,140 @@
# Advanced Post-installation Tasks
This page explains some advanced tasks and configuration options that can be performed after the bot installation and may be uselful in some environments.
If you do not know what things mentioned here mean, you probably do not need it.
## Running multiple instances of Freqtrade
This section will show you how to run multiple bots at the same time, on the same machine.
### Things to consider
* Use different database files.
* Use different Telegram bots (requires multiple different configuration files; applies only when Telegram is enabled).
* Use different ports (applies only when Freqtrade REST API webserver is enabled).
### Different database files
In order to keep track of your trades, profits, etc., freqtrade is using a SQLite database where it stores various types of information such as the trades you performed in the past and the current position(s) you are holding at any time. This allows you to keep track of your profits, but most importantly, keep track of ongoing activity if the bot process would be restarted or would be terminated unexpectedly.
Freqtrade will, by default, use separate database files for dry-run and live bots (this assumes no database-url is given in either configuration nor via command line argument).
For live trading mode, the default database will be `tradesv3.sqlite` and for dry-run it will be `tradesv3.dryrun.sqlite`.
The optional argument to the trade command used to specify the path of these files is `--db-url`, which requires a valid SQLAlchemy url.
So when you are starting a bot with only the config and strategy arguments in dry-run mode, the following 2 commands would have the same outcome.
``` bash
freqtrade trade -c MyConfig.json -s MyStrategy
# is equivalent to
freqtrade trade -c MyConfig.json -s MyStrategy --db-url sqlite:///tradesv3.dryrun.sqlite
```
It means that if you are running the trade command in two different terminals, for example to test your strategy both for trades in USDT and in another instance for trades in BTC, you will have to run them with different databases.
If you specify the URL of a database which does not exist, freqtrade will create one with the name you specified. So to test your custom strategy with BTC and USDT stake currencies, you could use the following commands (in 2 separate terminals):
``` bash
# Terminal 1:
freqtrade trade -c MyConfigBTC.json -s MyCustomStrategy --db-url sqlite:///user_data/tradesBTC.dryrun.sqlite
# Terminal 2:
freqtrade trade -c MyConfigUSDT.json -s MyCustomStrategy --db-url sqlite:///user_data/tradesUSDT.dryrun.sqlite
```
Conversely, if you wish to do the same thing in production mode, you will also have to create at least one new database (in addition to the default one) and specify the path to the "live" databases, for example:
``` bash
# Terminal 1:
freqtrade trade -c MyConfigBTC.json -s MyCustomStrategy --db-url sqlite:///user_data/tradesBTC.live.sqlite
# Terminal 2:
freqtrade trade -c MyConfigUSDT.json -s MyCustomStrategy --db-url sqlite:///user_data/tradesUSDT.live.sqlite
```
For more information regarding usage of the sqlite databases, for example to manually enter or remove trades, please refer to the [SQL Cheatsheet](sql_cheatsheet.md).
## Configure the bot running as a systemd service
Copy the `freqtrade.service` file to your systemd user directory (usually `~/.config/systemd/user`) and update `WorkingDirectory` and `ExecStart` to match your setup.
!!! Note
Certain systems (like Raspbian) don't load service unit files from the user directory. In this case, copy `freqtrade.service` into `/etc/systemd/user/` (requires superuser permissions).
After that you can start the daemon with:
```bash
systemctl --user start freqtrade
```
For this to be persistent (run when user is logged out) you'll need to enable `linger` for your freqtrade user.
```bash
sudo loginctl enable-linger "$USER"
```
If you run the bot as a service, you can use systemd service manager as a software watchdog monitoring freqtrade bot
state and restarting it in the case of failures. If the `internals.sd_notify` parameter is set to true in the
configuration or the `--sd-notify` command line option is used, the bot will send keep-alive ping messages to systemd
using the sd_notify (systemd notifications) protocol and will also tell systemd its current state (Running or Stopped)
when it changes.
The `freqtrade.service.watchdog` file contains an example of the service unit configuration file which uses systemd
as the watchdog.
!!! Note
The sd_notify communication between the bot and the systemd service manager will not work if the bot runs in a Docker container.
## Advanced Logging
On many Linux systems the bot can be configured to send its log messages to `syslog` or `journald` system services. Logging to a remote `syslog` server is also available on Windows. The special values for the `--logfile` command line option can be used for this.
### Logging to syslog
To send Freqtrade log messages to a local or remote `syslog` service use the `--logfile` command line option with the value in the following format:
* `--logfile syslog:<syslog_address>` -- send log messages to `syslog` service using the `<syslog_address>` as the syslog address.
The syslog address can be either a Unix domain socket (socket filename) or a UDP socket specification, consisting of IP address and UDP port, separated by the `:` character.
So, the following are the examples of possible usages:
* `--logfile syslog:/dev/log` -- log to syslog (rsyslog) using the `/dev/log` socket, suitable for most systems.
* `--logfile syslog` -- same as above, the shortcut for `/dev/log`.
* `--logfile syslog:/var/run/syslog` -- log to syslog (rsyslog) using the `/var/run/syslog` socket. Use this on MacOS.
* `--logfile syslog:localhost:514` -- log to local syslog using UDP socket, if it listens on port 514.
* `--logfile syslog:<ip>:514` -- log to remote syslog at IP address and port 514. This may be used on Windows for remote logging to an external syslog server.
Log messages are send to `syslog` with the `user` facility. So you can see them with the following commands:
* `tail -f /var/log/user`, or
* install a comprehensive graphical viewer (for instance, 'Log File Viewer' for Ubuntu).
On many systems `syslog` (`rsyslog`) fetches data from `journald` (and vice versa), so both `--logfile syslog` or `--logfile journald` can be used and the messages be viewed with both `journalctl` and a syslog viewer utility. You can combine this in any way which suites you better.
For `rsyslog` the messages from the bot can be redirected into a separate dedicated log file. To achieve this, add
```
if $programname startswith "freqtrade" then -/var/log/freqtrade.log
```
to one of the rsyslog configuration files, for example at the end of the `/etc/rsyslog.d/50-default.conf`.
For `syslog` (`rsyslog`), the reduction mode can be switched on. This will reduce the number of repeating messages. For instance, multiple bot Heartbeat messages will be reduced to a single message when nothing else happens with the bot. To achieve this, set in `/etc/rsyslog.conf`:
```
# Filter duplicated messages
$RepeatedMsgReduction on
```
### Logging to journald
This needs the `systemd` python package installed as the dependency, which is not available on Windows. Hence, the whole journald logging functionality is not available for a bot running on Windows.
To send Freqtrade log messages to `journald` system service use the `--logfile` command line option with the value in the following format:
* `--logfile journald` -- send log messages to `journald`.
Log messages are send to `journald` with the `user` facility. So you can see them with the following commands:
* `journalctl -f` -- shows Freqtrade log messages sent to `journald` along with other log messages fetched by `journald`.
* `journalctl -f -u freqtrade.service` -- this command can be used when the bot is run as a `systemd` service.
There are many other options in the `journalctl` utility to filter the messages, see manual pages for this utility.
On many systems `syslog` (`rsyslog`) fetches data from `journald` (and vice versa), so both `--logfile syslog` or `--logfile journald` can be used and the messages be viewed with both `journalctl` and a syslog viewer utility. You can combine this in any way which suites you better.

Binary file not shown.

After

Width:  |  Height:  |  Size: 211 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 190 KiB

BIN
docs/assets/plot-profit.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 121 KiB

View File

@@ -1,164 +1,120 @@
# Backtesting
This page explains how to validate your strategy performance by using
Backtesting.
This page explains how to validate your strategy performance by using Backtesting.
Backtesting requires historic data to be available.
To learn how to get data for the pairs and exchange you're interested in, head over to the [Data Downloading](data-download.md) section of the documentation.
## Test your strategy with Backtesting
Now you have good Buy and Sell strategies, you want to test it against
Now you have good Buy and Sell strategies and some historic data, you want to test it against
real data. This is what we call
[backtesting](https://en.wikipedia.org/wiki/Backtesting).
Backtesting will use the crypto-currencies (pair) from your config file
and load static tickers located in
[/freqtrade/tests/testdata](https://github.com/freqtrade/freqtrade/tree/develop/freqtrade/tests/testdata).
If the 5 min and 1 min ticker for the crypto-currencies to test is not
already in the `testdata` folder, backtesting will download them
automatically. Testdata files will not be updated until you specify it.
Backtesting will use the crypto-currencies (pairs) from your config file and load historical candle (OHCLV) data from `user_data/data/<exchange>` by default.
If no data is available for the exchange / pair / timeframe combination, backtesting will ask you to download them first using `freqtrade download-data`.
For details on downloading, please refer to the [Data Downloading](data-download.md) section in the documentation.
The result of backtesting will confirm you if your bot has better odds of making a profit than a loss.
The result of backtesting will confirm if your bot has better odds of making a profit than a loss.
The backtesting is very easy with freqtrade.
!!! Warning "Using dynamic pairlists for backtesting"
Using dynamic pairlists is possible, however it relies on the current market conditions - which will not reflect the historic status of the pairlist.
Also, when using pairlists other than StaticPairlist, reproducability of backtesting-results cannot be guaranteed.
Please read the [pairlists documentation](configuration.md#pairlists) for more information.
To achieve reproducible results, best generate a pairlist via the [`test-pairlist`](utils.md#test-pairlist) command and use that as static pairlist.
### Run a backtesting against the currencies listed in your config file
#### With 5 min tickers (Per default)
#### With 5 min candle (OHLCV) data (per default)
```bash
python3 ./freqtrade/main.py backtesting
freqtrade backtesting
```
#### With 1 min tickers
#### With 1 min candle (OHLCV) data
```bash
python3 ./freqtrade/main.py backtesting --ticker-interval 1m
freqtrade backtesting --timeframe 1m
```
#### Update cached pairs with the latest data
#### Using a different on-disk historical candle (OHLCV) data source
Assume you downloaded the history data from the Bittrex exchange and kept it in the `user_data/data/bittrex-20180101` directory.
You can then use this data for backtesting as follows:
```bash
python3 ./freqtrade/main.py backtesting --refresh-pairs-cached
```
#### With live data (do not alter your testdata files)
```bash
python3 ./freqtrade/main.py backtesting --live
```
#### Using a different on-disk ticker-data source
```bash
python3 ./freqtrade/main.py backtesting --datadir freqtrade/tests/testdata-20180101
freqtrade --datadir user_data/data/bittrex-20180101 backtesting
```
#### With a (custom) strategy file
```bash
python3 ./freqtrade/main.py -s TestStrategy backtesting
freqtrade backtesting -s SampleStrategy
```
Where `-s TestStrategy` refers to the class name within the strategy file `test_strategy.py` found in the `freqtrade/user_data/strategies` directory
Where `-s SampleStrategy` refers to the class name within the strategy file `sample_strategy.py` found in the `freqtrade/user_data/strategies` directory.
#### Comparing multiple Strategies
```bash
freqtrade backtesting --strategy-list SampleStrategy1 AwesomeStrategy --timeframe 5m
```
Where `SampleStrategy1` and `AwesomeStrategy` refer to class names of strategies.
#### Exporting trades to file
```bash
python3 ./freqtrade/main.py backtesting --export trades
freqtrade backtesting --export trades --config config.json --strategy SampleStrategy
```
The exported trades can be read using the following code for manual analysis, or can be used by the plotting script `plot_dataframe.py` in the scripts folder.
``` python
import json
from pathlib import Path
import pandas as pd
filename=Path('user_data/backtest_data/backtest-result.json')
with filename.open() as file:
data = json.load(file)
columns = ["pair", "profit", "opents", "closets", "index", "duration",
"open_rate", "close_rate", "open_at_end", "sell_reason"]
df = pd.DataFrame(data, columns=columns)
df['opents'] = pd.to_datetime(df['opents'],
unit='s',
utc=True,
infer_datetime_format=True
)
df['closets'] = pd.to_datetime(df['closets'],
unit='s',
utc=True,
infer_datetime_format=True
)
```
If you have some ideas for interesting / helpful backtest data analysis, feel free to submit a PR so the community can benefit from it.
The exported trades can be used for [further analysis](#further-backtest-result-analysis), or can be used by the plotting script `plot_dataframe.py` in the scripts directory.
#### Exporting trades to file specifying a custom filename
```bash
python3 ./freqtrade/main.py backtesting --export trades --export-filename=backtest_teststrategy.json
freqtrade backtesting --export trades --export-filename=backtest_samplestrategy.json
```
#### Running backtest with smaller testset
Please also read about the [strategy startup period](strategy-customization.md#strategy-startup-period).
Use the `--timerange` argument to change how much of the testset
you want to use. The last N ticks/timeframes will be used.
#### Supplying custom fee value
Example:
Sometimes your account has certain fee rebates (fee reductions starting with a certain account size or monthly volume), which are not visible to ccxt.
To account for this in backtesting, you can use the `--fee` command line option to supply this value to backtesting.
This fee must be a ratio, and will be applied twice (once for trade entry, and once for trade exit).
For example, if the buying and selling commission fee is 0.1% (i.e., 0.001 written as ratio), then you would run backtesting as the following:
```bash
python3 ./freqtrade/main.py backtesting --timerange=-200
freqtrade backtesting --fee 0.001
```
#### Advanced use of timerange
!!! Note
Only supply this option (or the corresponding configuration parameter) if you want to experiment with different fee values. By default, Backtesting fetches the default fee from the exchange pair/market info.
Doing `--timerange=-200` will get the last 200 timeframes
from your inputdata. You can also specify specific dates,
or a range span indexed by start and stop.
#### Running backtest with smaller testset by using timerange
Use the `--timerange` argument to change how much of the testset you want to use.
For example, running backtesting with the `--timerange=20190501-` option will use all available data starting with May 1st, 2019 from your inputdata.
```bash
freqtrade backtesting --timerange=20190501-
```
You can also specify particular dates or a range span indexed by start and stop.
The full timerange specification:
- Use last 123 tickframes of data: `--timerange=-123`
- Use first 123 tickframes of data: `--timerange=123-`
- Use tickframes from line 123 through 456: `--timerange=123-456`
- Use tickframes till 2018/01/31: `--timerange=-20180131`
- Use tickframes since 2018/01/31: `--timerange=20180131-`
- Use tickframes since 2018/01/31 till 2018/03/01 : `--timerange=20180131-20180301`
- Use tickframes between POSIX timestamps 1527595200 1527618600:
`--timerange=1527595200-1527618600`
#### Downloading new set of ticker data
To download new set of backtesting ticker data, you can use a download script.
If you are using Binance for example:
- create a folder `user_data/data/binance` and copy `pairs.json` in that folder.
- update the `pairs.json` to contain the currency pairs you are interested in.
```bash
mkdir -p user_data/data/binance
cp freqtrade/tests/testdata/pairs.json user_data/data/binance
```
Then run:
```bash
python scripts/download_backtest_data.py --exchange binance
```
This will download ticker data for all the currency pairs you defined in `pairs.json`.
- To use a different folder than the exchange specific default, use `--export user_data/data/some_directory`.
- To change the exchange used to download the tickers, use `--exchange`. Default is `bittrex`.
- To use `pairs.json` from some other folder, use `--pairs-file some_other_dir/pairs.json`.
- To download ticker data for only 10 days, use `--days 10`.
- Use `--timeframes` to specify which tickers to download. Default is `--timeframes 1m 5m` which will download 1-minute and 5-minute tickers.
For help about backtesting usage, please refer to [Backtesting commands](#backtesting-commands).
## Understand the backtesting result
The most important in the backtesting is to understand the result.
@@ -167,48 +123,67 @@ A backtesting result will look like that:
```
========================================================= BACKTESTING REPORT ========================================================
| pair | buy count | avg profit % | cum profit % | tot profit BTC | tot profit % | avg duration | profit | loss |
|:---------|------------:|---------------:|---------------:|-----------------:|---------------:|:---------------|---------:|-------:|
| ADA/BTC | 35 | -0.11 | -3.88 | -0.00019428 | -1.94 | 4:35:00 | 14 | 21 |
| ARK/BTC | 11 | -0.41 | -4.52 | -0.00022647 | -2.26 | 2:03:00 | 3 | 8 |
| BTS/BTC | 32 | 0.31 | 9.78 | 0.00048938 | 4.89 | 5:05:00 | 18 | 14 |
| DASH/BTC | 13 | -0.08 | -1.07 | -0.00005343 | -0.53 | 4:39:00 | 6 | 7 |
| ENG/BTC | 18 | 1.36 | 24.54 | 0.00122807 | 12.27 | 2:50:00 | 8 | 10 |
| EOS/BTC | 36 | 0.08 | 3.06 | 0.00015304 | 1.53 | 3:34:00 | 16 | 20 |
| ETC/BTC | 26 | 0.37 | 9.51 | 0.00047576 | 4.75 | 6:14:00 | 11 | 15 |
| ETH/BTC | 33 | 0.30 | 9.96 | 0.00049856 | 4.98 | 7:31:00 | 16 | 17 |
| IOTA/BTC | 32 | 0.03 | 1.09 | 0.00005444 | 0.54 | 3:12:00 | 14 | 18 |
| LSK/BTC | 15 | 1.75 | 26.26 | 0.00131413 | 13.13 | 2:58:00 | 6 | 9 |
| LTC/BTC | 32 | -0.04 | -1.38 | -0.00006886 | -0.69 | 4:49:00 | 11 | 21 |
| NANO/BTC | 17 | 1.26 | 21.39 | 0.00107058 | 10.70 | 1:55:00 | 10 | 7 |
| NEO/BTC | 23 | 0.82 | 18.97 | 0.00094936 | 9.48 | 2:59:00 | 10 | 13 |
| REQ/BTC | 9 | 1.17 | 10.54 | 0.00052734 | 5.27 | 3:47:00 | 4 | 5 |
| XLM/BTC | 16 | 1.22 | 19.54 | 0.00097800 | 9.77 | 3:15:00 | 7 | 9 |
| XMR/BTC | 23 | -0.18 | -4.13 | -0.00020696 | -2.07 | 5:30:00 | 12 | 11 |
| XRP/BTC | 35 | 0.66 | 22.96 | 0.00114897 | 11.48 | 3:49:00 | 12 | 23 |
| ZEC/BTC | 22 | -0.46 | -10.18 | -0.00050971 | -5.09 | 2:22:00 | 7 | 15 |
| TOTAL | 429 | 0.36 | 152.41 | 0.00762792 | 76.20 | 4:12:00 | 186 | 243 |
| Pair | Buys | Avg Profit % | Cum Profit % | Tot Profit BTC | Tot Profit % | Avg Duration | Wins | Draws | Losses |
|:---------|-------:|---------------:|---------------:|-----------------:|---------------:|:---------------|------:|-------:|--------:|
| ADA/BTC | 35 | -0.11 | -3.88 | -0.00019428 | -1.94 | 4:35:00 | 14 | 0 | 21 |
| ARK/BTC | 11 | -0.41 | -4.52 | -0.00022647 | -2.26 | 2:03:00 | 3 | 0 | 8 |
| BTS/BTC | 32 | 0.31 | 9.78 | 0.00048938 | 4.89 | 5:05:00 | 18 | 0 | 14 |
| DASH/BTC | 13 | -0.08 | -1.07 | -0.00005343 | -0.53 | 4:39:00 | 6 | 0 | 7 |
| ENG/BTC | 18 | 1.36 | 24.54 | 0.00122807 | 12.27 | 2:50:00 | 8 | 0 | 10 |
| EOS/BTC | 36 | 0.08 | 3.06 | 0.00015304 | 1.53 | 3:34:00 | 16 | 0 | 20 |
| ETC/BTC | 26 | 0.37 | 9.51 | 0.00047576 | 4.75 | 6:14:00 | 11 | 0 | 15 |
| ETH/BTC | 33 | 0.30 | 9.96 | 0.00049856 | 4.98 | 7:31:00 | 16 | 0 | 17 |
| IOTA/BTC | 32 | 0.03 | 1.09 | 0.00005444 | 0.54 | 3:12:00 | 14 | 0 | 18 |
| LSK/BTC | 15 | 1.75 | 26.26 | 0.00131413 | 13.13 | 2:58:00 | 6 | 0 | 9 |
| LTC/BTC | 32 | -0.04 | -1.38 | -0.00006886 | -0.69 | 4:49:00 | 11 | 0 | 21 |
| NANO/BTC | 17 | 1.26 | 21.39 | 0.00107058 | 10.70 | 1:55:00 | 10 | 0 | 7 |
| NEO/BTC | 23 | 0.82 | 18.97 | 0.00094936 | 9.48 | 2:59:00 | 10 | 0 | 13 |
| REQ/BTC | 9 | 1.17 | 10.54 | 0.00052734 | 5.27 | 3:47:00 | 4 | 0 | 5 |
| XLM/BTC | 16 | 1.22 | 19.54 | 0.00097800 | 9.77 | 3:15:00 | 7 | 0 | 9 |
| XMR/BTC | 23 | -0.18 | -4.13 | -0.00020696 | -2.07 | 5:30:00 | 12 | 0 | 11 |
| XRP/BTC | 35 | 0.66 | 22.96 | 0.00114897 | 11.48 | 3:49:00 | 12 | 0 | 23 |
| ZEC/BTC | 22 | -0.46 | -10.18 | -0.00050971 | -5.09 | 2:22:00 | 7 | 0 | 15 |
| TOTAL | 429 | 0.36 | 152.41 | 0.00762792 | 76.20 | 4:12:00 | 186 | 0 | 243 |
========================================================= SELL REASON STATS =========================================================
| Sell Reason | Count |
|:-------------------|--------:|
| trailing_stop_loss | 205 |
| stop_loss | 166 |
| sell_signal | 56 |
| force_sell | 2 |
| Sell Reason | Sells | Wins | Draws | Losses |
|:-------------------|--------:|------:|-------:|--------:|
| trailing_stop_loss | 205 | 150 | 0 | 55 |
| stop_loss | 166 | 0 | 0 | 166 |
| sell_signal | 56 | 36 | 0 | 20 |
| force_sell | 2 | 0 | 0 | 2 |
====================================================== LEFT OPEN TRADES REPORT ======================================================
| pair | buy count | avg profit % | cum profit % | tot profit BTC | tot profit % | avg duration | profit | loss |
|:---------|------------:|---------------:|---------------:|-----------------:|---------------:|:---------------|---------:|-------:|
| ADA/BTC | 1 | 0.89 | 0.89 | 0.00004434 | 0.44 | 6:00:00 | 1 | 0 |
| LTC/BTC | 1 | 0.68 | 0.68 | 0.00003421 | 0.34 | 2:00:00 | 1 | 0 |
| TOTAL | 2 | 0.78 | 1.57 | 0.00007855 | 0.78 | 4:00:00 | 2 | 0 |
| Pair | Buys | Avg Profit % | Cum Profit % | Tot Profit BTC | Tot Profit % | Avg Duration | Wins | Draws | Losses |
|:---------|-------:|---------------:|---------------:|-----------------:|---------------:|:---------------|------:|-------:|--------:|
| ADA/BTC | 1 | 0.89 | 0.89 | 0.00004434 | 0.44 | 6:00:00 | 1 | 0 | 0 |
| LTC/BTC | 1 | 0.68 | 0.68 | 0.00003421 | 0.34 | 2:00:00 | 1 | 0 | 0 |
| TOTAL | 2 | 0.78 | 1.57 | 0.00007855 | 0.78 | 4:00:00 | 2 | 0 | 0 |
=============== SUMMARY METRICS ===============
| Metric | Value |
|-----------------------+---------------------|
| Backtesting from | 2019-01-01 00:00:00 |
| Backtesting to | 2019-05-01 00:00:00 |
| Max open trades | 3 |
| | |
| Total trades | 429 |
| First trade | 2019-01-01 18:30:00 |
| First trade Pair | EOS/USDT |
| Total Profit % | 152.41% |
| Trades per day | 3.575 |
| Best day | 25.27% |
| Worst day | -30.67% |
| Avg. Duration Winners | 4:23:00 |
| Avg. Duration Loser | 6:55:00 |
| | |
| Max Drawdown | 50.63% |
| Drawdown Start | 2019-02-15 14:10:00 |
| Drawdown End | 2019-04-11 18:15:00 |
| Market change | -5.88% |
===============================================
```
The 1st table will contain all trades the bot made.
### Backtesting report table
The 2nd table will contain a recap of sell reasons.
The 3rd table will contain all trades the bot had to `forcesell` at the end of the backtest period to present a full picture.
These trades are also included in the first table, but are extracted separately for clarity.
The 1st table contains all trades the bot made, including "left open trades".
The last line will give you the overall performance of your strategy,
here:
@@ -217,22 +192,16 @@ here:
| TOTAL | 429 | 0.36 | 152.41 | 0.00762792 | 76.20 | 4:12:00 | 186 | 243 |
```
We understand the bot has made `429` trades for an average duration of
`4:12:00`, with a performance of `76.20%` (profit), that means it has
The bot has made `429` trades for an average duration of `4:12:00`, with a performance of `76.20%` (profit), that means it has
earned a total of `0.00762792 BTC` starting with a capital of 0.01 BTC.
The column `avg profit %` shows the average profit for all trades made while the column `cum profit %` sums all the profits/losses.
The column `tot profit %` shows instead the total profit % in relation to allocated capital
(`max_open_trades * stake_amount`). In the above results we have `max_open_trades=2 stake_amount=0.005` in config
so `(76.20/100) * (0.005 * 2) =~ 0.00762792 BTC`.
The column `avg profit %` shows the average profit for all trades made while the column `cum profit %` sums up all the profits/losses.
The column `tot profit %` shows instead the total profit % in relation to allocated capital (`max_open_trades * stake_amount`).
In the above results we have `max_open_trades=2` and `stake_amount=0.005` in config so `tot_profit %` will be `(76.20/100) * (0.005 * 2) =~ 0.00762792 BTC`.
As you will see your strategy performance will be influenced by your buy
strategy, your sell strategy, and also by the `minimal_roi` and
`stop_loss` you have set.
Your strategy performance is influenced by your buy strategy, your sell strategy, and also by the `minimal_roi` and `stop_loss` you have set.
As for an example if your minimal_roi is only `"0": 0.01`. You cannot
expect the bot to make more profit than 1% (because it will sell every
time a trade will reach 1%).
For example, if your `minimal_roi` is only `"0": 0.01` you cannot expect the bot to make more profit than 1% (because it will sell every time a trade reaches 1%).
```json
"minimal_roi": {
@@ -241,33 +210,115 @@ time a trade will reach 1%).
```
On the other hand, if you set a too high `minimal_roi` like `"0": 0.55`
(55%), there is a lot of chance that the bot will never reach this
profit. Hence, keep in mind that your performance is a mix of your
strategies, your configuration, and the crypto-currency you have set up.
(55%), there is almost no chance that the bot will ever reach this profit.
Hence, keep in mind that your performance is an integral mix of all different elements of the strategy, your configuration, and the crypto-currency pairs you have set up.
### Sell reasons table
The 2nd table contains a recap of sell reasons.
This table can tell you which area needs some additional work (e.g. all or many of the `sell_signal` trades are losses, so you should work on improving the sell signal, or consider disabling it).
### Left open trades table
The 3rd table contains all trades the bot had to `forcesell` at the end of the backtesting period to present you the full picture.
This is necessary to simulate realistic behavior, since the backtest period has to end at some point, while realistically, you could leave the bot running forever.
These trades are also included in the first table, but are also shown separately in this table for clarity.
### Summary metrics
The last element of the backtest report is the summary metrics table.
It contains some useful key metrics about performance of your strategy on backtesting data.
```
=============== SUMMARY METRICS ===============
| Metric | Value |
|-----------------------+---------------------|
| Backtesting from | 2019-01-01 00:00:00 |
| Backtesting to | 2019-05-01 00:00:00 |
| Max open trades | 3 |
| | |
| Total trades | 429 |
| First trade | 2019-01-01 18:30:00 |
| First trade Pair | EOS/USDT |
| Total Profit % | 152.41% |
| Trades per day | 3.575 |
| Best day | 25.27% |
| Worst day | -30.67% |
| Avg. Duration Winners | 4:23:00 |
| Avg. Duration Loser | 6:55:00 |
| | |
| Max Drawdown | 50.63% |
| Drawdown Start | 2019-02-15 14:10:00 |
| Drawdown End | 2019-04-11 18:15:00 |
| Market change | -5.88% |
===============================================
```
- `Backtesting from` / `Backtesting to`: Backtesting range (usually defined with the `--timerange` option).
- `Max open trades`: Setting of `max_open_trades` (or `--max-open-trades`) - to clearly see settings for this.
- `Total trades`: Identical to the total trades of the backtest output table.
- `First trade`: First trade entered.
- `First trade pair`: Which pair was part of the first trade.
- `Total Profit %`: Total profit per stake amount. Aligned to the TOTAL column of the first table.
- `Trades per day`: Total trades divided by the backtesting duration in days (this will give you information about how many trades to expect from the strategy).
- `Best day` / `Worst day`: Best and worst day based on daily profit.
- `Avg. Duration Winners` / `Avg. Duration Loser`: Average durations for winning and losing trades.
- `Max Drawdown`: Maximum drawdown experienced. For example, the value of 50% means that from highest to subsequent lowest point, a 50% drop was experienced).
- `Drawdown Start` / `Drawdown End`: Start and end datetime for this largest drawdown (can also be visualized via the `plot-dataframe` sub-command).
- `Market change`: Change of the market during the backtest period. Calculated as average of all pairs changes from the first to the last candle using the "close" column.
### Assumptions made by backtesting
Since backtesting lacks some detailed information about what happens within a candle, it needs to take a few assumptions:
- Buys happen at open-price
- Sell signal sells happen at open-price of the following candle
- Low happens before high for stoploss, protecting capital first
- ROI
- sells are compared to high - but the ROI value is used (e.g. ROI = 2%, high=5% - so the sell will be at 2%)
- sells are never "below the candle", so a ROI of 2% may result in a sell at 2.4% if low was at 2.4% profit
- Forcesells caused by `<N>=-1` ROI entries use low as sell value, unless N falls on the candle open (e.g. `120: -1` for 1h candles)
- Stoploss sells happen exactly at stoploss price, even if low was lower
- Trailing stoploss
- High happens first - adjusting stoploss
- Low uses the adjusted stoploss (so sells with large high-low difference are backtested correctly)
- Sell-reason does not explain if a trade was positive or negative, just what triggered the sell (this can look odd if negative ROI values are used)
- Stoploss (and trailing stoploss) is evaluated before ROI within one candle. So you can often see more trades with the `stoploss` and/or `trailing_stop` sell reason comparing to the results obtained with the same strategy in the Dry Run/Live Trade modes.
Taking these assumptions, backtesting tries to mirror real trading as closely as possible. However, backtesting will **never** replace running a strategy in dry-run mode.
Also, keep in mind that past results don't guarantee future success.
In addition to the above assumptions, strategy authors should carefully read the [Common Mistakes](strategy-customization.md#common-mistakes-when-developing-strategies) section, to avoid using data in backtesting which is not available in real market conditions.
### Further backtest-result analysis
To further analyze your backtest results, you can [export the trades](#exporting-trades-to-file).
You can then load the trades to perform further analysis as shown in our [data analysis](data-analysis.md#backtesting) backtesting section.
## Backtesting multiple strategies
To backtest multiple strategies, a list of Strategies can be provided.
To compare multiple strategies, a list of Strategies can be provided to backtesting.
This is limited to 1 ticker-interval per run, however, data is only loaded once from disk so if you have multiple
strategies you'd like to compare, this should give a nice runtime boost.
This is limited to 1 timeframe value per run. However, data is only loaded once from disk so if you have multiple
strategies you'd like to compare, this will give a nice runtime boost.
All listed Strategies need to be in the same folder.
All listed Strategies need to be in the same directory.
``` bash
freqtrade backtesting --timerange 20180401-20180410 --ticker-interval 5m --strategy-list Strategy001 Strategy002 --export trades
freqtrade backtesting --timerange 20180401-20180410 --timeframe 5m --strategy-list Strategy001 Strategy002 --export trades
```
This will save the results to `user_data/backtest_data/backtest-result-<strategy>.json`, injecting the strategy-name into the target filename.
This will save the results to `user_data/backtest_results/backtest-result-<strategy>.json`, injecting the strategy-name into the target filename.
There will be an additional table comparing win/losses of the different strategies (identical to the "Total" row in the first table).
Detailed output for all strategies one after the other will be available, so make sure to scroll up.
Detailed output for all strategies one after the other will be available, so make sure to scroll up to see the details per strategy.
```
=========================================================== Strategy Summary ===========================================================
| Strategy | buy count | avg profit % | cum profit % | tot profit BTC | tot profit % | avg duration | profit | loss |
|:------------|------------:|---------------:|---------------:|-----------------:|---------------:|:---------------|---------:|-------:|
| Strategy1 | 429 | 0.36 | 152.41 | 0.00762792 | 76.20 | 4:12:00 | 186 | 243 |
| Strategy2 | 1487 | -0.13 | -197.58 | -0.00988917 | -98.79 | 4:43:00 | 662 | 825 |
=========================================================== STRATEGY SUMMARY ===========================================================
| Strategy | Buys | Avg Profit % | Cum Profit % | Tot Profit BTC | Tot Profit % | Avg Duration | Wins | Draws | Losses |
|:------------|-------:|---------------:|---------------:|-----------------:|---------------:|:---------------|------:|-------:|-------:|
| Strategy1 | 429 | 0.36 | 152.41 | 0.00762792 | 76.20 | 4:12:00 | 186 | 0 | 243 |
| Strategy2 | 1487 | -0.13 | -197.58 | -0.00988917 | -98.79 | 4:43:00 | 662 | 0 | 825 |
```
## Next step

58
docs/bot-basics.md Normal file
View File

@@ -0,0 +1,58 @@
# Freqtrade basics
This page provides you some basic concepts on how Freqtrade works and operates.
## Freqtrade terminology
* Trade: Open position.
* Open Order: Order which is currently placed on the exchange, and is not yet complete.
* Pair: Tradable pair, usually in the format of Quote/Base (e.g. XRP/USDT).
* Timeframe: Candle length to use (e.g. `"5m"`, `"1h"`, ...).
* Indicators: Technical indicators (SMA, EMA, RSI, ...).
* Limit order: Limit orders which execute at the defined limit price or better.
* Market order: Guaranteed to fill, may move price depending on the order size.
## Fee handling
All profit calculations of Freqtrade include fees. For Backtesting / Hyperopt / Dry-run modes, the exchange default fee is used (lowest tier on the exchange). For live operations, fees are used as applied by the exchange (this includes BNB rebates etc.).
## Bot execution logic
Starting freqtrade in dry-run or live mode (using `freqtrade trade`) will start the bot and start the bot iteration loop.
By default, loop runs every few seconds (`internals.process_throttle_secs`) and does roughly the following in the following sequence:
* Fetch open trades from persistence.
* Calculate current list of tradable pairs.
* Download ohlcv data for the pairlist including all [informative pairs](strategy-customization.md#get-data-for-non-tradeable-pairs)
This step is only executed once per Candle to avoid unnecessary network traffic.
* Call `bot_loop_start()` strategy callback.
* Analyze strategy per pair.
* Call `populate_indicators()`
* Call `populate_buy_trend()`
* Call `populate_sell_trend()`
* Check timeouts for open orders.
* Calls `check_buy_timeout()` strategy callback for open buy orders.
* Calls `check_sell_timeout()` strategy callback for open sell orders.
* Verifies existing positions and eventually places sell orders.
* Considers stoploss, ROI and sell-signal.
* Determine sell-price based on `ask_strategy` configuration setting.
* Before a sell order is placed, `confirm_trade_exit()` strategy callback is called.
* Check if trade-slots are still available (if `max_open_trades` is reached).
* Verifies buy signal trying to enter new positions.
* Determine buy-price based on `bid_strategy` configuration setting.
* Before a buy order is placed, `confirm_trade_entry()` strategy callback is called.
This loop will be repeated again and again until the bot is stopped.
## Backtesting / Hyperopt execution logic
[backtesting](backtesting.md) or [hyperopt](hyperopt.md) do only part of the above logic, since most of the trading operations are fully simulated.
* Load historic data for configured pairlist.
* Calculate indicators (calls `populate_indicators()`).
* Calls `populate_buy_trend()` and `populate_sell_trend()`
* Loops per candle simulating entry and exit points.
* Generate backtest report output
!!! Note
Both Backtesting and Hyperopt include exchange default Fees in the calculation. Custom fees can be passed to backtesting / hyperopt by specifying the `--fee` argument.

View File

@@ -1,372 +0,0 @@
# Optimization
This page explains where to customize your strategies, and add new
indicators.
## Install a custom strategy file
This is very simple. Copy paste your strategy file into the folder
`user_data/strategies`.
Let assume you have a class called `AwesomeStrategy` in the file `awesome-strategy.py`:
1. Move your file into `user_data/strategies` (you should have `user_data/strategies/awesome-strategy.py`
2. Start the bot with the param `--strategy AwesomeStrategy` (the parameter is the class name)
```bash
python3 ./freqtrade/main.py --strategy AwesomeStrategy
```
## Change your strategy
The bot includes a default strategy file. However, we recommend you to
use your own file to not have to lose your parameters every time the default
strategy file will be updated on Github. Put your custom strategy file
into the folder `user_data/strategies`.
Best copy the test-strategy and modify this copy to avoid having bot-updates override your changes.
`cp user_data/strategies/test_strategy.py user_data/strategies/awesome-strategy.py`
### Anatomy of a strategy
A strategy file contains all the information needed to build a good strategy:
- Indicators
- Buy strategy rules
- Sell strategy rules
- Minimal ROI recommended
- Stoploss strongly recommended
The bot also include a sample strategy called `TestStrategy` you can update: `user_data/strategies/test_strategy.py`.
You can test it with the parameter: `--strategy TestStrategy`
```bash
python3 ./freqtrade/main.py --strategy AwesomeStrategy
```
**For the following section we will use the [user_data/strategies/test_strategy.py](https://github.com/freqtrade/freqtrade/blob/develop/user_data/strategies/test_strategy.py)
file as reference.**
!!! Note: Strategies and Backtesting
To avoid problems and unexpected differences between Backtesting and dry/live modes, please be aware
that during backtesting the full time-interval is passed to the `populate_*()` methods at once.
It is therefore best to use vectorized operations (across the whole dataframe, not loops) and
avoid index referencing (`df.iloc[-1]`), but instead use `df.shift()` to get to the previous candle.
### Customize Indicators
Buy and sell strategies need indicators. You can add more indicators by extending the list contained in the method `populate_indicators()` from your strategy file.
You should only add the indicators used in either `populate_buy_trend()`, `populate_sell_trend()`, or to populate another indicator, otherwise performance may suffer.
It's important to always return the dataframe without removing/modifying the columns `"open", "high", "low", "close", "volume"`, otherwise these fields would contain something unexpected.
Sample:
```python
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: Raw data from the exchange and parsed by parse_ticker_dataframe()
:param metadata: Additional information, like the currently traded pair
:return: a Dataframe with all mandatory indicators for the strategies
"""
dataframe['sar'] = ta.SAR(dataframe)
dataframe['adx'] = ta.ADX(dataframe)
stoch = ta.STOCHF(dataframe)
dataframe['fastd'] = stoch['fastd']
dataframe['fastk'] = stoch['fastk']
dataframe['blower'] = ta.BBANDS(dataframe, nbdevup=2, nbdevdn=2)['lowerband']
dataframe['sma'] = ta.SMA(dataframe, timeperiod=40)
dataframe['tema'] = ta.TEMA(dataframe, timeperiod=9)
dataframe['mfi'] = ta.MFI(dataframe)
dataframe['rsi'] = ta.RSI(dataframe)
dataframe['ema5'] = ta.EMA(dataframe, timeperiod=5)
dataframe['ema10'] = ta.EMA(dataframe, timeperiod=10)
dataframe['ema50'] = ta.EMA(dataframe, timeperiod=50)
dataframe['ema100'] = ta.EMA(dataframe, timeperiod=100)
dataframe['ao'] = awesome_oscillator(dataframe)
macd = ta.MACD(dataframe)
dataframe['macd'] = macd['macd']
dataframe['macdsignal'] = macd['macdsignal']
dataframe['macdhist'] = macd['macdhist']
hilbert = ta.HT_SINE(dataframe)
dataframe['htsine'] = hilbert['sine']
dataframe['htleadsine'] = hilbert['leadsine']
dataframe['plus_dm'] = ta.PLUS_DM(dataframe)
dataframe['plus_di'] = ta.PLUS_DI(dataframe)
dataframe['minus_dm'] = ta.MINUS_DM(dataframe)
dataframe['minus_di'] = ta.MINUS_DI(dataframe)
return dataframe
```
!!! Note "Want more indicator examples?"
Look into the [user_data/strategies/test_strategy.py](https://github.com/freqtrade/freqtrade/blob/develop/user_data/strategies/test_strategy.py).<br/>
Then uncomment indicators you need.
### Buy signal rules
Edit the method `populate_buy_trend()` in your strategy file to update your buy strategy.
It's important to always return the dataframe without removing/modifying the columns `"open", "high", "low", "close", "volume"`, otherwise these fields would contain something unexpected.
This will method will also define a new column, `"buy"`, which needs to contain 1 for buys, and 0 for "no action".
Sample from `user_data/strategies/test_strategy.py`:
```python
def populate_buy_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
"""
Based on TA indicators, populates the buy signal for the given dataframe
:param dataframe: DataFrame populated with indicators
:param metadata: Additional information, like the currently traded pair
:return: DataFrame with buy column
"""
dataframe.loc[
(
(dataframe['adx'] > 30) &
(dataframe['tema'] <= dataframe['bb_middleband']) &
(dataframe['tema'] > dataframe['tema'].shift(1))
),
'buy'] = 1
return dataframe
```
### Sell signal rules
Edit the method `populate_sell_trend()` into your strategy file to update your sell strategy.
Please note that the sell-signal is only used if `use_sell_signal` is set to true in the configuration.
It's important to always return the dataframe without removing/modifying the columns `"open", "high", "low", "close", "volume"`, otherwise these fields would contain something unexpected.
This will method will also define a new column, `"sell"`, which needs to contain 1 for sells, and 0 for "no action".
Sample from `user_data/strategies/test_strategy.py`:
```python
def populate_sell_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
"""
Based on TA indicators, populates the sell signal for the given dataframe
:param dataframe: DataFrame populated with indicators
:param metadata: Additional information, like the currently traded pair
:return: DataFrame with buy column
"""
dataframe.loc[
(
(dataframe['adx'] > 70) &
(dataframe['tema'] > dataframe['bb_middleband']) &
(dataframe['tema'] < dataframe['tema'].shift(1))
),
'sell'] = 1
return dataframe
```
### Minimal ROI
This dict defines the minimal Return On Investment (ROI) a trade should reach before selling, independent from the sell signal.
It is of the following format, with the dict key (left side of the colon) being the minutes passed since the trade opened, and the value (right side of the colon) being the percentage.
```python
minimal_roi = {
"40": 0.0,
"30": 0.01,
"20": 0.02,
"0": 0.04
}
```
The above configuration would therefore mean:
- Sell whenever 4% profit was reached
- Sell when 2% profit was reached (in effect after 20 minutes)
- Sell when 1% profit was reached (in effect after 30 minutes)
- Sell when trade is non-loosing (in effect after 40 minutes)
The calculation does include fees.
To disable ROI completely, set it to an insanely high number:
```python
minimal_roi = {
"0": 100
}
```
While technically not completely disabled, this would sell once the trade reaches 10000% Profit.
### Stoploss
Setting a stoploss is highly recommended to protect your capital from strong moves against you.
Sample:
``` python
stoploss = -0.10
```
This would signify a stoploss of -10%.
If your exchange supports it, it's recommended to also set `"stoploss_on_exchange"` in the order dict, so your stoploss is on the exchange and cannot be missed for network-problems (or other problems).
For more information on order_types please look [here](https://github.com/freqtrade/freqtrade/blob/develop/docs/configuration.md#understand-order_types).
### Ticker interval
This is the set of candles the bot should download and use for the analysis.
Common values are `"1m"`, `"5m"`, `"15m"`, `"1h"`, however all values supported by your exchange should work.
Please note that the same buy/sell signals may work with one interval, but not the other.
This setting is accessible within the strategy by using `self.ticker_interval`.
### Metadata dict
The metadata-dict (available for `populate_buy_trend`, `populate_sell_trend`, `populate_indicators`) contains additional information.
Currently this is `pair`, which can be accessed using `metadata['pair']` - and will return a pair in the format `XRP/BTC`.
The Metadata-dict should not be modified and does not persist information across multiple calls.
Instead, have a look at the section [Storing information](#Storing-information)
### Storing information
Storing information can be accomplished by crating a new dictionary within the strategy class.
The name of the variable can be choosen at will, but should be prefixed with `cust_` to avoid naming collisions with predefined strategy variables.
```python
class Awesomestrategy(IStrategy):
# Create custom dictionary
cust_info = {}
def populate_indicators(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
# Check if the entry already exists
if "crosstime" in self.cust_info[metadata["pair"]:
self.cust_info[metadata["pair"]["crosstime"] += 1
else:
self.cust_info[metadata["pair"]["crosstime"] = 1
```
!!! Warning:
The data is not persisted after a bot-restart (or config-reload). Also, the amount of data should be kept smallish (no DataFrames and such), otherwise the bot will start to consume a lot of memory and eventually run out of memory and crash.
!!! Note:
If the data is pair-specific, make sure to use pair as one of the keys in the dictionary.
### Additional data (DataProvider)
The strategy provides access to the `DataProvider`. This allows you to get additional data to use in your strategy.
!!!Note:
The DataProvier is currently not available during backtesting / hyperopt, but this is planned for the future.
All methods return `None` in case of failure (do not raise an exception).
Please always check if the `DataProvider` is available to avoid failures during backtesting.
#### Possible options for DataProvider
- `available_pairs` - Property with tuples listing cached pairs with their intervals. (pair, interval)
- `ohlcv(pair, ticker_interval)` - Currently cached ticker data for all pairs in the whitelist, returns DataFrame or empty DataFrame
- `historic_ohlcv(pair, ticker_interval)` - Data stored on disk
- `runmode` - Property containing the current runmode.
#### ohlcv / historic_ohlcv
``` python
if self.dp:
if dp.runmode == 'live':
if ('ETH/BTC', ticker_interval) in self.dp.available_pairs:
data_eth = self.dp.ohlcv(pair='ETH/BTC',
ticker_interval=ticker_interval)
else:
# Get historic ohlcv data (cached on disk).
history_eth = self.dp.historic_ohlcv(pair='ETH/BTC',
ticker_interval='1h')
```
!!! Warning: Warning about backtesting
Be carefull when using dataprovider in backtesting. `historic_ohlcv()` provides the full time-range in one go,
so please be aware of it and make sure to not "look into the future" to avoid surprises when running in dry/live mode).
#### Available Pairs
``` python
if self.dp:
for pair, ticker in self.dp.available_pairs:
print(f"available {pair}, {ticker}")
```
#### Get data for non-tradeable pairs
Data for additional, informative pairs (reference pairs) can be beneficial for some strategies.
Ohlcv data for these pairs will be downloaded as part of the regular whitelist refresh process and is available via `DataProvider` just as other pairs (see above).
These parts will **not** be traded unless they are also specified in the pair whitelist, or have been selected by Dynamic Whitelisting.
The pairs need to be specified as tuples in the format `("pair", "interval")`, with pair as the first and time interval as the second argument.
Sample:
``` python
def informative_pairs(self):
return [("ETH/USDT", "5m"),
("BTC/TUSD", "15m"),
]
```
!!! Warning:
As these pairs will be refreshed as part of the regular whitelist refresh, it's best to keep this list short.
All intervals and all pairs can be specified as long as they are available (and active) on the used exchange.
It is however better to use resampling to longer time-intervals when possible
to avoid hammering the exchange with too many requests and risk beeing blocked.
### Additional data - Wallets
The strategy provides access to the `Wallets` object. This contains the current balances on the exchange.
!!!NOTE:
Wallets is not available during backtesting / hyperopt.
Please always check if `Wallets` is available to avoid failures during backtesting.
``` python
if self.wallets:
free_eth = self.wallets.get_free('ETH')
used_eth = self.wallets.get_used('ETH')
total_eth = self.wallets.get_total('ETH')
```
#### Possible options for Wallets
- `get_free(asset)` - currently available balance to trade
- `get_used(asset)` - currently tied up balance (open orders)
- `get_total(asset)` - total available balance - sum of the 2 above
### Where is the default strategy?
The default buy strategy is located in the file
[freqtrade/default_strategy.py](https://github.com/freqtrade/freqtrade/blob/develop/freqtrade/strategy/default_strategy.py).
### Specify custom strategy location
If you want to use a strategy from a different folder you can pass `--strategy-path`
```bash
python3 ./freqtrade/main.py --strategy AwesomeStrategy --strategy-path /some/folder
```
### Further strategy ideas
To get additional Ideas for strategies, head over to our [strategy repository](https://github.com/freqtrade/freqtrade-strategies). Feel free to use them as they are - but results will depend on the current market situation, pairs used etc. - therefore please backtest the strategy for your exchange/desired pairs first, evaluate carefully, use at your own risk.
Feel free to use any of them as inspiration for your own strategies.
We're happy to accept Pull Requests containing new Strategies to that repo.
We also got a *strategy-sharing* channel in our [Slack community](https://join.slack.com/t/highfrequencybot/shared_invite/enQtMjQ5NTM0OTYzMzY3LWMxYzE3M2MxNDdjMGM3ZTYwNzFjMGIwZGRjNTc3ZGU3MGE3NzdmZGMwNmU3NDM5ZTNmM2Y3NjRiNzk4NmM4OGE) which is a great place to get and/or share ideas.
## Next step
Now you have a perfect strategy you probably want to backtest it.
Your next step is to learn [How to use the Backtesting](backtesting.md).

View File

@@ -2,61 +2,167 @@
This page explains the different parameters of the bot and how to run it.
!!! Note
If you've used `setup.sh`, don't forget to activate your virtual environment (`source .env/bin/activate`) before running freqtrade commands.
!!! Warning "Up-to-date clock"
The clock on the system running the bot must be accurate, synchronized to a NTP server frequently enough to avoid problems with communication to the exchanges.
## Bot commands
```
usage: main.py [-h] [-v] [--version] [-c PATH] [-d PATH] [-s NAME]
[--strategy-path PATH] [--customhyperopt NAME]
[--dynamic-whitelist [INT]] [--db-url PATH]
{backtesting,edge,hyperopt} ...
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:
{backtesting,edge,hyperopt}
backtesting backtesting module
edge edge module
hyperopt hyperopt module
{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, --verbose verbose mode (-vv for more, -vvv to get all messages)
--version show program\'s version number and exit
-c PATH, --config PATH
specify configuration file (default: config.json)
-d PATH, --datadir PATH
path to backtest data
-s NAME, --strategy NAME
specify strategy class name (default: DefaultStrategy)
--strategy-path PATH specify additional strategy lookup path
--customhyperopt NAME
specify hyperopt class name (default:
DefaultHyperOpts)
--dynamic-whitelist [INT]
dynamically generate and update whitelist based on 24h
BaseVolume (default: 20) DEPRECATED.
--db-url PATH Override trades database URL, this is useful if
dry_run is enabled or in custom deployments (default:
None)
-V, --version show program's version number and exit
```
### How to use a different config file?
### Bot trading commands
The bot allows you to select which config file you want to use. Per
default, the bot will load the file `./config.json`
```
usage: freqtrade trade [-h] [-v] [--logfile FILE] [-V] [-c PATH] [-d PATH]
[--userdir PATH] [-s NAME] [--strategy-path PATH]
[--db-url PATH] [--sd-notify] [--dry-run]
optional arguments:
-h, --help show this help message and exit
--db-url PATH Override trades database URL, this is useful in custom
deployments (default: `sqlite:///tradesv3.sqlite` for
Live Run mode, `sqlite:///tradesv3.dryrun.sqlite` for
Dry Run).
--sd-notify Notify systemd service manager.
--dry-run Enforce dry-run for trading (removes Exchange secrets
and simulates trades).
Common arguments:
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
--logfile FILE Log to the file specified. Special values are:
'syslog', 'journald'. See the documentation for more
details.
-V, --version show program's version number and exit
-c PATH, --config PATH
Specify configuration file (default:
`userdir/config.json` or `config.json` whichever
exists). Multiple --config options may be used. Can be
set to `-` to read config from stdin.
-d PATH, --datadir PATH
Path to directory with historical backtesting data.
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
Strategy arguments:
-s NAME, --strategy NAME
Specify strategy class name which will be used by the
bot.
--strategy-path PATH Specify additional strategy lookup path.
```
### How to specify which configuration file be used?
The bot allows you to select which configuration file you want to use by means of
the `-c/--config` command line option:
```bash
python3 ./freqtrade/main.py -c path/far/far/away/config.json
freqtrade trade -c path/far/far/away/config.json
```
Per default, the bot loads the `config.json` configuration file from the current
working directory.
### How to use multiple configuration files?
The bot allows you to use multiple configuration files by specifying multiple
`-c/--config` options in the command line. Configuration parameters
defined in the latter configuration files override parameters with the same name
defined in the previous configuration files specified in the command line earlier.
For example, you can make a separate configuration file with your key and secret
for the Exchange you use for trading, specify default configuration file with
empty key and secret values while running in the Dry Mode (which does not actually
require them):
```bash
freqtrade trade -c ./config.json
```
and specify both configuration files when running in the normal Live Trade Mode:
```bash
freqtrade trade -c ./config.json -c path/to/secrets/keys.config.json
```
This could help you hide your private Exchange key and Exchange secret on you local machine
by setting appropriate file permissions for the file which contains actual secrets and, additionally,
prevent unintended disclosure of sensitive private data when you publish examples
of your configuration in the project issues or in the Internet.
See more details on this technique with examples in the documentation page on
[configuration](configuration.md).
### Where to store custom data
Freqtrade allows the creation of a user-data directory using `freqtrade create-userdir --userdir someDirectory`.
This directory will look as follows:
```
user_data/
├── backtest_results
├── data
├── hyperopts
├── hyperopt_results
├── plot
└── strategies
```
You can add the entry "user_data_dir" setting to your configuration, to always point your bot to this directory.
Alternatively, pass in `--userdir` to every command.
The bot will fail to start if the directory does not exist, but will create necessary subdirectories.
This directory should contain your custom strategies, custom hyperopts and hyperopt loss functions, backtesting historical data (downloaded using either backtesting command or the download script) and plot outputs.
It is recommended to use version control to keep track of changes to your strategies.
### How to use **--strategy**?
This parameter will allow you to load your custom strategy class.
Per default without `--strategy` or `-s` the bot will load the
`DefaultStrategy` included with the bot (`freqtrade/strategy/default_strategy.py`).
To test the bot installation, you can use the `SampleStrategy` installed by the `create-userdir` subcommand (usually `user_data/strategy/sample_strategy.py`).
The bot will search your strategy file within `user_data/strategies` and `freqtrade/strategy`.
The bot will search your strategy file within `user_data/strategies`.
To use other directories, please read the next section about `--strategy-path`.
To load a strategy, simply pass the class name (e.g.: `CustomStrategy`) in this parameter.
@@ -65,54 +171,29 @@ In `user_data/strategies` you have a file `my_awesome_strategy.py` which has
a strategy class called `AwesomeStrategy` to load it:
```bash
python3 ./freqtrade/main.py --strategy AwesomeStrategy
freqtrade trade --strategy AwesomeStrategy
```
If the bot does not find your strategy file, it will display in an error
message the reason (File not found, or errors in your code).
Learn more about strategy file in [optimize your bot](https://github.com/freqtrade/freqtrade/blob/develop/docs/bot-optimization.md).
Learn more about strategy file in
[Strategy Customization](strategy-customization.md).
### How to use **--strategy-path**?
This parameter allows you to add an additional strategy lookup path, which gets
checked before the default locations (The passed path must be a folder!):
checked before the default locations (The passed path must be a directory!):
```bash
python3 ./freqtrade/main.py --strategy AwesomeStrategy --strategy-path /some/folder
freqtrade trade --strategy AwesomeStrategy --strategy-path /some/directory
```
#### How to install a strategy?
This is very simple. Copy paste your strategy file into the folder
This is very simple. Copy paste your strategy file into the directory
`user_data/strategies` or use `--strategy-path`. And voila, the bot is ready to use it.
### How to use **--dynamic-whitelist**?
!!! danger "DEPRECATED"
Dynamic-whitelist is deprecated. Please move your configurations to the configuration as outlined [here](/configuration/#dynamic-pairlists)
Per default `--dynamic-whitelist` will retrieve the 20 currencies based
on BaseVolume. This value can be changed when you run the script.
**By Default**
Get the 20 currencies based on BaseVolume.
```bash
python3 ./freqtrade/main.py --dynamic-whitelist
```
**Customize the number of currencies to retrieve**
Get the 30 currencies based on BaseVolume.
```bash
python3 ./freqtrade/main.py --dynamic-whitelist 30
```
**Exception**
`--dynamic-whitelist` must be greater than 0. If you enter 0 or a
negative value (e.g -2), `--dynamic-whitelist` will use the default
value (20).
### How to use **--db-url**?
When you run the bot in Dry-run mode, per default no transactions are
@@ -121,7 +202,7 @@ using `--db-url`. This can also be used to specify a custom database
in production mode. Example command:
```bash
python3 ./freqtrade/main.py -c config.json --db-url sqlite:///tradesv3.dry_run.sqlite
freqtrade trade -c config.json --db-url sqlite:///tradesv3.dry_run.sqlite
```
## Backtesting commands
@@ -129,125 +210,237 @@ python3 ./freqtrade/main.py -c config.json --db-url sqlite:///tradesv3.dry_run.s
Backtesting also uses the config specified via `-c/--config`.
```
usage: main.py backtesting [-h] [-i TICKER_INTERVAL] [--timerange TIMERANGE]
[--eps] [--dmmp] [-l] [-r]
[--strategy-list STRATEGY_LIST [STRATEGY_LIST ...]]
[--export EXPORT] [--export-filename PATH]
usage: freqtrade backtesting [-h] [-v] [--logfile FILE] [-V] [-c PATH]
[-d PATH] [--userdir PATH] [-s NAME]
[--strategy-path PATH] [-i TIMEFRAME]
[--timerange TIMERANGE] [--max-open-trades INT]
[--stake-amount STAKE_AMOUNT] [--fee FLOAT]
[--eps] [--dmmp]
[--strategy-list STRATEGY_LIST [STRATEGY_LIST ...]]
[--export EXPORT] [--export-filename PATH]
optional arguments:
-h, --help show this help message and exit
-i TICKER_INTERVAL, --ticker-interval TICKER_INTERVAL
specify ticker interval (1m, 5m, 30m, 1h, 1d)
-i TIMEFRAME, --timeframe TIMEFRAME, --ticker-interval TIMEFRAME
Specify ticker interval (`1m`, `5m`, `30m`, `1h`,
`1d`).
--timerange TIMERANGE
specify what timerange of data to use.
Specify what timerange of data to use.
--max-open-trades INT
Override the value of the `max_open_trades`
configuration setting.
--stake-amount STAKE_AMOUNT
Override the value of the `stake_amount` configuration
setting.
--fee FLOAT Specify fee ratio. Will be applied twice (on trade
entry and exit).
--eps, --enable-position-stacking
Allow buying the same pair multiple times (position
stacking)
stacking).
--dmmp, --disable-max-market-positions
Disable applying `max_open_trades` during backtest
(same as setting `max_open_trades` to a very high
number)
-l, --live using live data
-r, --refresh-pairs-cached
refresh the pairs files in tests/testdata with the
latest data from the exchange. Use it if you want to
run your backtesting with up-to-date data.
number).
--strategy-list STRATEGY_LIST [STRATEGY_LIST ...]
Provide a commaseparated list of strategies to
backtest Please note that ticker-interval needs to be
Provide a space-separated list of strategies to
backtest. Please note that ticker-interval needs to be
set either in config or via command line. When using
this together with --export trades, the strategy-name
is injected into the filename (so backtest-data.json
becomes backtest-data-DefaultStrategy.json
--export EXPORT export backtest results, argument are: trades Example
--export=trades
this together with `--export trades`, the strategy-
name is injected into the filename (so `backtest-
data.json` becomes `backtest-data-
DefaultStrategy.json`
--export EXPORT Export backtest results, argument are: trades.
Example: `--export=trades`
--export-filename PATH
Save backtest results to this filename requires
--export to be set as well Example --export-
filename=user_data/backtest_data/backtest_today.json
(default: user_data/backtest_data/backtest-
result.json)
Save backtest results to the file with this filename.
Requires `--export` to be set as well. Example:
`--export-filename=user_data/backtest_results/backtest
_today.json`
Common arguments:
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
--logfile FILE Log to the file specified. Special values are:
'syslog', 'journald'. See the documentation for more
details.
-V, --version show program's version number and exit
-c PATH, --config PATH
Specify configuration file (default:
`userdir/config.json` or `config.json` whichever
exists). Multiple --config options may be used. Can be
set to `-` to read config from stdin.
-d PATH, --datadir PATH
Path to directory with historical backtesting data.
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
Strategy arguments:
-s NAME, --strategy NAME
Specify strategy class name which will be used by the
bot.
--strategy-path PATH Specify additional strategy lookup path.
```
### How to use **--refresh-pairs-cached** parameter?
### Getting historic data for backtesting
The first time your run Backtesting, it will take the pairs you have
set in your config file and download data from Bittrex.
If for any reason you want to update your data set, you use
`--refresh-pairs-cached` to force Backtesting to update the data it has.
!!! Note
Use it only if you want to update your data set. You will not be able to come back to the previous version.
To test your strategy with latest data, we recommend continuing using
the parameter `-l` or `--live`.
The first time your run Backtesting, you will need to download some historic data first.
This can be accomplished by using `freqtrade download-data`.
Check the corresponding [Data Downloading](data-download.md) section for more details
## Hyperopt commands
To optimize your strategy, you can use hyperopt parameter hyperoptimization
to find optimal parameter values for your stategy.
to find optimal parameter values for your strategy.
```
usage: freqtrade hyperopt [-h] [-i TICKER_INTERVAL] [--eps] [--dmmp]
[--timerange TIMERANGE] [-e INT]
[-s {all,buy,roi,stoploss} [{all,buy,roi,stoploss} ...]]
usage: freqtrade hyperopt [-h] [-v] [--logfile FILE] [-V] [-c PATH] [-d PATH]
[--userdir PATH] [-s NAME] [--strategy-path PATH]
[-i TIMEFRAME] [--timerange TIMERANGE]
[--max-open-trades INT]
[--stake-amount STAKE_AMOUNT] [--fee FLOAT]
[--hyperopt NAME] [--hyperopt-path PATH] [--eps]
[-e INT]
[--spaces {all,buy,sell,roi,stoploss,trailing,default} [{all,buy,sell,roi,stoploss,trailing,default} ...]]
[--dmmp] [--print-all] [--no-color] [--print-json]
[-j JOBS] [--random-state INT] [--min-trades INT]
[--hyperopt-loss NAME]
optional arguments:
-h, --help show this help message and exit
-i TICKER_INTERVAL, --ticker-interval TICKER_INTERVAL
specify ticker interval (1m, 5m, 30m, 1h, 1d)
-i TIMEFRAME, --timeframe TIMEFRAME, --ticker-interval TIMEFRAME
Specify ticker interval (`1m`, `5m`, `30m`, `1h`,
`1d`).
--timerange TIMERANGE
Specify what timerange of data to use.
--max-open-trades INT
Override the value of the `max_open_trades`
configuration setting.
--stake-amount STAKE_AMOUNT
Override the value of the `stake_amount` configuration
setting.
--fee FLOAT Specify fee ratio. Will be applied twice (on trade
entry and exit).
--hyperopt NAME Specify hyperopt class name which will be used by the
bot.
--hyperopt-path PATH Specify additional lookup path for Hyperopt and
Hyperopt Loss functions.
--eps, --enable-position-stacking
Allow buying the same pair multiple times (position
stacking)
stacking).
-e INT, --epochs INT Specify number of epochs (default: 100).
--spaces {all,buy,sell,roi,stoploss,trailing,default} [{all,buy,sell,roi,stoploss,trailing,default} ...]
Specify which parameters to hyperopt. Space-separated
list.
--dmmp, --disable-max-market-positions
Disable applying `max_open_trades` during backtest
(same as setting `max_open_trades` to a very high
number)
--timerange TIMERANGE
specify what timerange of data to use.
--hyperopt PATH specify hyperopt file (default:
freqtrade/optimize/default_hyperopt.py)
-e INT, --epochs INT specify number of epochs (default: 100)
-s {all,buy,roi,stoploss} [{all,buy,roi,stoploss} ...], --spaces {all,buy,roi,stoploss} [{all,buy,roi,stoploss} ...]
Specify which parameters to hyperopt. Space separate
list. Default: all
number).
--print-all Print all results, not only the best ones.
--no-color Disable colorization of hyperopt results. May be
useful if you are redirecting output to a file.
--print-json Print output in JSON format.
-j JOBS, --job-workers JOBS
The number of concurrently running jobs for
hyperoptimization (hyperopt worker processes). If -1
(default), all CPUs are used, for -2, all CPUs but one
are used, etc. If 1 is given, no parallel computing
code is used at all.
--random-state INT Set random state to some positive integer for
reproducible hyperopt results.
--min-trades INT Set minimal desired number of trades for evaluations
in the hyperopt optimization path (default: 1).
--hyperopt-loss NAME Specify the class name of the hyperopt loss function
class (IHyperOptLoss). Different functions can
generate completely different results, since the
target for optimization is different. Built-in
Hyperopt-loss-functions are: ShortTradeDurHyperOptLoss,
OnlyProfitHyperOptLoss, SharpeHyperOptLoss,
SharpeHyperOptLossDaily, SortinoHyperOptLoss,
SortinoHyperOptLossDaily.
Common arguments:
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
--logfile FILE Log to the file specified. Special values are:
'syslog', 'journald'. See the documentation for more
details.
-V, --version show program's version number and exit
-c PATH, --config PATH
Specify configuration file (default:
`userdir/config.json` or `config.json` whichever
exists). Multiple --config options may be used. Can be
set to `-` to read config from stdin.
-d PATH, --datadir PATH
Path to directory with historical backtesting data.
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
Strategy arguments:
-s NAME, --strategy NAME
Specify strategy class name which will be used by the
bot.
--strategy-path PATH Specify additional strategy lookup path.
```
## Edge commands
To know your trade expectacny and winrate against historical data, you can use Edge.
To know your trade expectancy and winrate against historical data, you can use Edge.
```
usage: main.py edge [-h] [-i TICKER_INTERVAL] [--timerange TIMERANGE] [-r]
[--stoplosses STOPLOSS_RANGE]
usage: freqtrade edge [-h] [-v] [--logfile FILE] [-V] [-c PATH] [-d PATH]
[--userdir PATH] [-s NAME] [--strategy-path PATH]
[-i TIMEFRAME] [--timerange TIMERANGE]
[--max-open-trades INT] [--stake-amount STAKE_AMOUNT]
[--fee FLOAT] [--stoplosses STOPLOSS_RANGE]
optional arguments:
-h, --help show this help message and exit
-i TICKER_INTERVAL, --ticker-interval TICKER_INTERVAL
specify ticker interval (1m, 5m, 30m, 1h, 1d)
-i TIMEFRAME, --timeframe TIMEFRAME, --ticker-interval TIMEFRAME
Specify ticker interval (`1m`, `5m`, `30m`, `1h`,
`1d`).
--timerange TIMERANGE
specify what timerange of data to use.
-r, --refresh-pairs-cached
refresh the pairs files in tests/testdata with the
latest data from the exchange. Use it if you want to
run your edge with up-to-date data.
Specify what timerange of data to use.
--max-open-trades INT
Override the value of the `max_open_trades`
configuration setting.
--stake-amount STAKE_AMOUNT
Override the value of the `stake_amount` configuration
setting.
--fee FLOAT Specify fee ratio. Will be applied twice (on trade
entry and exit).
--stoplosses STOPLOSS_RANGE
defines a range of stoploss against which edge will
assess the strategythe format is "min,max,step"
(without any space).example:
--stoplosses=-0.01,-0.1,-0.001
Defines a range of stoploss values against which edge
will assess the strategy. The format is "min,max,step"
(without any space). Example:
`--stoplosses=-0.01,-0.1,-0.001`
Common arguments:
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
--logfile FILE Log to the file specified. Special values are:
'syslog', 'journald'. See the documentation for more
details.
-V, --version show program's version number and exit
-c PATH, --config PATH
Specify configuration file (default:
`userdir/config.json` or `config.json` whichever
exists). Multiple --config options may be used. Can be
set to `-` to read config from stdin.
-d PATH, --datadir PATH
Path to directory with historical backtesting data.
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
Strategy arguments:
-s NAME, --strategy NAME
Specify strategy class name which will be used by the
bot.
--strategy-path PATH Specify additional strategy lookup path.
```
To understand edge and how to read the results, please read the [edge documentation](edge.md).
## A parameter missing in the configuration?
All parameters for `main.py`, `backtesting`, `hyperopt` are referenced
in [misc.py](https://github.com/freqtrade/freqtrade/blob/develop/freqtrade/misc.py#L84)
## Next step
The optimal strategy of the bot will change with time depending of the market trends. The next step is to
[optimize your bot](bot-optimization.md).
[Strategy Customization](strategy-customization.md).

View File

@@ -1,111 +1,225 @@
# Configure the bot
This page explains how to configure your `config.json` file.
Freqtrade has many configurable features and possibilities.
By default, these settings are configured via the configuration file (see below).
## Setup config.json
## The Freqtrade configuration file
We recommend to copy and use the `config.json.example` as a template
The bot uses a set of configuration parameters during its operation that all together conform the bot configuration. It normally reads its configuration from a file (Freqtrade configuration file).
Per default, the bot loads the configuration from the `config.json` file, located in the current working directory.
You can specify a different configuration file used by the bot with the `-c/--config` command line option.
In some advanced use cases, multiple configuration files can be specified and used by the bot or the bot can read its configuration parameters from the process standard input stream.
If you used the [Quick start](installation.md/#quick-start) method for installing
the bot, the installation script should have already created the default configuration file (`config.json`) for you.
If default configuration file is not created we recommend you to copy and use the `config.json.example` as a template
for your bot configuration.
The table below will list all configuration parameters.
The Freqtrade configuration file is to be written in the JSON format.
Mandatory Parameters are marked as **Required**.
Additionally to the standard JSON syntax, you may use one-line `// ...` and multi-line `/* ... */` comments in your configuration files and trailing commas in the lists of parameters.
| Command | Default | Description |
|----------|---------|-------------|
| `max_open_trades` | 3 | **Required.** Number of trades open your bot will have. If -1 then it is ignored (i.e. potentially unlimited open trades)
| `stake_currency` | BTC | **Required.** Crypto-currency used for trading.
| `stake_amount` | 0.05 | **Required.** Amount of crypto-currency your bot will use for each trade. Per default, the bot will use (0.05 BTC x 3) = 0.15 BTC in total will be always engaged. Set it to `"unlimited"` to allow the bot to use all available balance.
| `amount_reserve_percent` | 0.05 | Reserve some amount in min pair stake amount. Default is 5%. The bot will reserve `amount_reserve_percent` + stop-loss value when calculating min pair stake amount in order to avoid possible trade refusals.
| `ticker_interval` | [1m, 5m, 30m, 1h, 1d] | The ticker interval to use (1min, 5 min, 30 min, 1 hour or 1 day). Default is 5 minutes. [Strategy Override](#parameters-in-strategy).
| `fiat_display_currency` | USD | **Required.** Fiat currency used to show your profits. More information below.
| `dry_run` | true | **Required.** Define if the bot must be in Dry-run or production mode.
| `process_only_new_candles` | false | If set to true indicators are processed only once a new candle arrives. If false each loop populates the indicators, this will mean the same candle is processed many times creating system load but can be useful of your strategy depends on tick data not only candle. [Strategy Override](#parameters-in-strategy).
| `minimal_roi` | See below | Set the threshold in percent the bot will use to sell a trade. More information below. [Strategy Override](#parameters-in-strategy).
| `stoploss` | -0.10 | Value of the stoploss in percent used by the bot. More information below. More details in the [stoploss documentation](stoploss.md). [Strategy Override](#parameters-in-strategy).
| `trailing_stop` | false | Enables trailing stop-loss (based on `stoploss` in either configuration or strategy file). More details in the [stoploss documentation](stoploss.md). [Strategy Override](#parameters-in-strategy).
| `trailing_stop_positive` | 0 | Changes stop-loss once profit has been reached. More details in the [stoploss documentation](stoploss.md). [Strategy Override](#parameters-in-strategy).
| `trailing_stop_positive_offset` | 0 | Offset on when to apply `trailing_stop_positive`. Percentage value which should be positive. More details in the [stoploss documentation](stoploss.md). [Strategy Override](#parameters-in-strategy).
| `unfilledtimeout.buy` | 10 | **Required.** How long (in minutes) the bot will wait for an unfilled buy order to complete, after which the order will be cancelled.
| `unfilledtimeout.sell` | 10 | **Required.** How long (in minutes) the bot will wait for an unfilled sell order to complete, after which the order will be cancelled.
| `bid_strategy.ask_last_balance` | 0.0 | **Required.** Set the bidding price. More information [below](#understand-ask_last_balance).
| `bid_strategy.use_order_book` | false | Allows buying of pair using the rates in Order Book Bids.
| `bid_strategy.order_book_top` | 0 | Bot will use the top N rate in Order Book Bids. Ie. a value of 2 will allow the bot to pick the 2nd bid rate in Order Book Bids.
| `bid_strategy. check_depth_of_market.enabled` | false | Does not buy if the % difference of buy orders and sell orders is met in Order Book.
| `bid_strategy. check_depth_of_market.bids_to_ask_delta` | 0 | The % difference of buy orders and sell orders found in Order Book. A value lesser than 1 means sell orders is greater, while value greater than 1 means buy orders is higher.
| `ask_strategy.use_order_book` | false | Allows selling of open traded pair using the rates in Order Book Asks.
| `ask_strategy.order_book_min` | 0 | Bot will scan from the top min to max Order Book Asks searching for a profitable rate.
| `ask_strategy.order_book_max` | 0 | Bot will scan from the top min to max Order Book Asks searching for a profitable rate.
| `order_types` | None | Configure order-types depending on the action (`"buy"`, `"sell"`, `"stoploss"`, `"stoploss_on_exchange"`). [More information below](#understand-order_types). [Strategy Override](#parameters-in-strategy).
| `order_time_in_force` | None | Configure time in force for buy and sell orders. [More information below](#understand-order_time_in_force). [Strategy Override](#parameters-in-strategy).
| `exchange.name` | bittrex | **Required.** Name of the exchange class to use. [List below](#user-content-what-values-for-exchangename).
| `exchange.key` | key | API key to use for the exchange. Only required when you are in production mode.
| `exchange.secret` | secret | API secret to use for the exchange. Only required when you are in production mode.
| `exchange.pair_whitelist` | [] | List of currency to use by the bot. Can be overrided with `--dynamic-whitelist` param.
| `exchange.pair_blacklist` | [] | List of currency the bot must avoid. Useful when using `--dynamic-whitelist` param.
| `exchange.ccxt_rate_limit` | True | DEPRECATED!! Have CCXT handle Exchange rate limits. Depending on the exchange, having this to false can lead to temporary bans from the exchange.
| `exchange.ccxt_config` | None | Additional CCXT parameters passed to the regular ccxt instance. Parameters may differ from exchange to exchange and are documented in the [ccxt documentation](https://ccxt.readthedocs.io/en/latest/manual.html#instantiation)
| `exchange.ccxt_async_config` | None | Additional CCXT parameters passed to the async ccxt instance. Parameters may differ from exchange to exchange and are documented in the [ccxt documentation](https://ccxt.readthedocs.io/en/latest/manual.html#instantiation)
| `edge` | false | Please refer to [edge configuration document](edge.md) for detailed explanation.
| `experimental.use_sell_signal` | false | Use your sell strategy in addition of the `minimal_roi`. [Strategy Override](#parameters-in-strategy).
| `experimental.sell_profit_only` | false | Waits until you have made a positive profit before taking a sell decision. [Strategy Override](#parameters-in-strategy).
| `experimental.ignore_roi_if_buy_signal` | false | Does not sell if the buy-signal is still active. Takes preference over `minimal_roi` and `use_sell_signal`. [Strategy Override](#parameters-in-strategy).
| `pairlist.method` | StaticPairList | Use Static whitelist. [More information below](#dynamic-pairlists).
| `pairlist.config` | None | Additional configuration for dynamic pairlists. [More information below](#dynamic-pairlists).
| `telegram.enabled` | true | **Required.** Enable or not the usage of Telegram.
| `telegram.token` | token | Your Telegram bot token. Only required if `telegram.enabled` is `true`.
| `telegram.chat_id` | chat_id | Your personal Telegram account id. Only required if `telegram.enabled` is `true`.
| `webhook.enabled` | false | Enable usage of Webhook notifications
| `webhook.url` | false | URL for the webhook. Only required if `webhook.enabled` is `true`. See the [webhook documentation](webhook-config.md) for more details.
| `webhook.webhookbuy` | false | Payload to send on buy. Only required if `webhook.enabled` is `true`. See the [webhook documentationV](webhook-config.md) for more details.
| `webhook.webhooksell` | false | Payload to send on sell. Only required if `webhook.enabled` is `true`. See the [webhook documentationV](webhook-config.md) for more details.
| `webhook.webhookstatus` | false | Payload to send on status calls. Only required if `webhook.enabled` is `true`. See the [webhook documentationV](webhook-config.md) for more details.
| `db_url` | `sqlite:///tradesv3.sqlite`| Declares database URL to use. NOTE: This defaults to `sqlite://` if `dry_run` is `True`.
| `initial_state` | running | Defines the initial application state. More information below.
| `forcebuy_enable` | false | Enables the RPC Commands to force a buy. More information below.
| `strategy` | DefaultStrategy | Defines Strategy class to use.
| `strategy_path` | null | Adds an additional strategy lookup path (must be a folder).
| `internals.process_throttle_secs` | 5 | **Required.** Set the process throttle. Value in second.
Do not worry if you are not familiar with JSON format -- simply open the configuration file with an editor of your choice, make some changes to the parameters you need, save your changes and, finally, restart the bot or, if it was previously stopped, run it again with the changes you made to the configuration. The bot validates syntax of the configuration file at startup and will warn you if you made any errors editing it, pointing out problematic lines.
### Parameters in strategy
## Configuration parameters
The following parameters can be set in either configuration or strategy.
Values in the configuration are always overwriting values set in the strategy.
The table below will list all configuration parameters available.
Freqtrade can also load many options via command line (CLI) arguments (check out the commands `--help` output for details).
The prevelance for all Options is as follows:
- CLI arguments override any other option
- Configuration files are used in sequence (last file wins), and override Strategy configurations.
- Strategy configurations are only used if they are not set via configuration or via command line arguments. These options are marked with [Strategy Override](#parameters-in-the-strategy) in the below table.
Mandatory parameters are marked as **Required**, which means that they are required to be set in one of the possible ways.
| Parameter | Description |
|------------|-------------|
| `max_open_trades` | **Required.** Number of open trades your bot is allowed to have. Only one open trade per pair is possible, so the length of your pairlist is another limitation which can apply. If -1 then it is ignored (i.e. potentially unlimited open trades, limited by the pairlist). [More information below](#configuring-amount-per-trade).<br> **Datatype:** Positive integer or -1.
| `stake_currency` | **Required.** Crypto-currency used for trading. [Strategy Override](#parameters-in-the-strategy). <br> **Datatype:** String
| `stake_amount` | **Required.** Amount of crypto-currency your bot will use for each trade. Set it to `"unlimited"` to allow the bot to use all available balance. [More information below](#configuring-amount-per-trade). [Strategy Override](#parameters-in-the-strategy). <br> **Datatype:** Positive float or `"unlimited"`.
| `tradable_balance_ratio` | Ratio of the total account balance the bot is allowed to trade. [More information below](#configuring-amount-per-trade). <br>*Defaults to `0.99` 99%).*<br> **Datatype:** Positive float between `0.1` and `1.0`.
| `amend_last_stake_amount` | Use reduced last stake amount if necessary. [More information below](#configuring-amount-per-trade). <br>*Defaults to `false`.* <br> **Datatype:** Boolean
| `last_stake_amount_min_ratio` | Defines minimum stake amount that has to be left and executed. Applies only to the last stake amount when it's amended to a reduced value (i.e. if `amend_last_stake_amount` is set to `true`). [More information below](#configuring-amount-per-trade). <br>*Defaults to `0.5`.* <br> **Datatype:** Float (as ratio)
| `amount_reserve_percent` | Reserve some amount in min pair stake amount. The bot will reserve `amount_reserve_percent` + stoploss value when calculating min pair stake amount in order to avoid possible trade refusals. <br>*Defaults to `0.05` (5%).* <br> **Datatype:** Positive Float as ratio.
| `timeframe` | The timeframe (former ticker interval) to use (e.g `1m`, `5m`, `15m`, `30m`, `1h` ...). [Strategy Override](#parameters-in-the-strategy). <br> **Datatype:** String
| `fiat_display_currency` | Fiat currency used to show your profits. [More information below](#what-values-can-be-used-for-fiat_display_currency). <br> **Datatype:** String
| `dry_run` | **Required.** Define if the bot must be in Dry Run or production mode. <br>*Defaults to `true`.* <br> **Datatype:** Boolean
| `dry_run_wallet` | Define the starting amount in stake currency for the simulated wallet used by the bot running in the Dry Run mode.<br>*Defaults to `1000`.* <br> **Datatype:** Float
| `cancel_open_orders_on_exit` | Cancel open orders when the `/stop` RPC command is issued, `Ctrl+C` is pressed or the bot dies unexpectedly. When set to `true`, this allows you to use `/stop` to cancel unfilled and partially filled orders in the event of a market crash. It does not impact open positions. <br>*Defaults to `false`.* <br> **Datatype:** Boolean
| `process_only_new_candles` | Enable processing of indicators only when new candles arrive. If false each loop populates the indicators, this will mean the same candle is processed many times creating system load but can be useful of your strategy depends on tick data not only candle. [Strategy Override](#parameters-in-the-strategy). <br>*Defaults to `false`.* <br> **Datatype:** Boolean
| `minimal_roi` | **Required.** Set the threshold as ratio the bot will use to sell a trade. [More information below](#understand-minimal_roi). [Strategy Override](#parameters-in-the-strategy). <br> **Datatype:** Dict
| `stoploss` | **Required.** Value as ratio of the stoploss used by the bot. More details in the [stoploss documentation](stoploss.md). [Strategy Override](#parameters-in-the-strategy). <br> **Datatype:** Float (as ratio)
| `trailing_stop` | Enables trailing stoploss (based on `stoploss` in either configuration or strategy file). More details in the [stoploss documentation](stoploss.md#trailing-stop-loss). [Strategy Override](#parameters-in-the-strategy). <br> **Datatype:** Boolean
| `trailing_stop_positive` | Changes stoploss once profit has been reached. More details in the [stoploss documentation](stoploss.md#trailing-stop-loss-custom-positive-loss). [Strategy Override](#parameters-in-the-strategy). <br> **Datatype:** Float
| `trailing_stop_positive_offset` | Offset on when to apply `trailing_stop_positive`. Percentage value which should be positive. More details in the [stoploss documentation](stoploss.md#trailing-stop-loss-only-once-the-trade-has-reached-a-certain-offset). [Strategy Override](#parameters-in-the-strategy). <br>*Defaults to `0.0` (no offset).* <br> **Datatype:** Float
| `trailing_only_offset_is_reached` | Only apply trailing stoploss when the offset is reached. [stoploss documentation](stoploss.md). [Strategy Override](#parameters-in-the-strategy). <br>*Defaults to `false`.* <br> **Datatype:** Boolean
| `unfilledtimeout.buy` | **Required.** How long (in minutes) the bot will wait for an unfilled buy order to complete, after which the order will be cancelled and repeated at current (new) price, as long as there is a signal. [Strategy Override](#parameters-in-the-strategy).<br> **Datatype:** Integer
| `unfilledtimeout.sell` | **Required.** How long (in minutes) the bot will wait for an unfilled sell order to complete, after which the order will be cancelled and repeated at current (new) price, as long as there is a signal. [Strategy Override](#parameters-in-the-strategy).<br> **Datatype:** Integer
| `bid_strategy.price_side` | Select the side of the spread the bot should look at to get the buy rate. [More information below](#buy-price-side).<br> *Defaults to `bid`.* <br> **Datatype:** String (either `ask` or `bid`).
| `bid_strategy.ask_last_balance` | **Required.** Set the bidding price. More information [below](#buy-price-without-orderbook-enabled).
| `bid_strategy.use_order_book` | Enable buying using the rates in [Order Book Bids](#buy-price-with-orderbook-enabled). <br> **Datatype:** Boolean
| `bid_strategy.order_book_top` | Bot will use the top N rate in Order Book Bids to buy. I.e. a value of 2 will allow the bot to pick the 2nd bid rate in [Order Book Bids](#buy-price-with-orderbook-enabled). <br>*Defaults to `1`.* <br> **Datatype:** Positive Integer
| `bid_strategy. check_depth_of_market.enabled` | Do not buy if the difference of buy orders and sell orders is met in Order Book. [Check market depth](#check-depth-of-market). <br>*Defaults to `false`.* <br> **Datatype:** Boolean
| `bid_strategy. check_depth_of_market.bids_to_ask_delta` | The difference ratio of buy orders and sell orders found in Order Book. A value below 1 means sell order size is greater, while value greater than 1 means buy order size is higher. [Check market depth](#check-depth-of-market) <br> *Defaults to `0`.* <br> **Datatype:** Float (as ratio)
| `ask_strategy.price_side` | Select the side of the spread the bot should look at to get the sell rate. [More information below](#sell-price-side).<br> *Defaults to `ask`.* <br> **Datatype:** String (either `ask` or `bid`).
| `ask_strategy.use_order_book` | Enable selling of open trades using [Order Book Asks](#sell-price-with-orderbook-enabled). <br> **Datatype:** Boolean
| `ask_strategy.order_book_min` | Bot will scan from the top min to max Order Book Asks searching for a profitable rate. <br>*Defaults to `1`.* <br> **Datatype:** Positive Integer
| `ask_strategy.order_book_max` | Bot will scan from the top min to max Order Book Asks searching for a profitable rate. <br>*Defaults to `1`.* <br> **Datatype:** Positive Integer
| `ask_strategy.use_sell_signal` | Use sell signals produced by the strategy in addition to the `minimal_roi`. [Strategy Override](#parameters-in-the-strategy). <br>*Defaults to `true`.* <br> **Datatype:** Boolean
| `ask_strategy.sell_profit_only` | Wait until the bot makes a positive profit before taking a sell decision. [Strategy Override](#parameters-in-the-strategy). <br>*Defaults to `false`.* <br> **Datatype:** Boolean
| `ask_strategy.ignore_roi_if_buy_signal` | Do not sell if the buy signal is still active. This setting takes preference over `minimal_roi` and `use_sell_signal`. [Strategy Override](#parameters-in-the-strategy). <br>*Defaults to `false`.* <br> **Datatype:** Boolean
| `order_types` | Configure order-types depending on the action (`"buy"`, `"sell"`, `"stoploss"`, `"stoploss_on_exchange"`). [More information below](#understand-order_types). [Strategy Override](#parameters-in-the-strategy).<br> **Datatype:** Dict
| `order_time_in_force` | Configure time in force for buy and sell orders. [More information below](#understand-order_time_in_force). [Strategy Override](#parameters-in-the-strategy). <br> **Datatype:** Dict
| `exchange.name` | **Required.** Name of the exchange class to use. [List below](#user-content-what-values-for-exchangename). <br> **Datatype:** String
| `exchange.sandbox` | Use the 'sandbox' version of the exchange, where the exchange provides a sandbox for risk-free integration. See [here](sandbox-testing.md) in more details.<br> **Datatype:** Boolean
| `exchange.key` | API key to use for the exchange. Only required when you are in production mode.<br>**Keep it in secret, do not disclose publicly.** <br> **Datatype:** String
| `exchange.secret` | API secret to use for the exchange. Only required when you are in production mode.<br>**Keep it in secret, do not disclose publicly.** <br> **Datatype:** String
| `exchange.password` | API password to use for the exchange. Only required when you are in production mode and for exchanges that use password for API requests.<br>**Keep it in secret, do not disclose publicly.** <br> **Datatype:** String
| `exchange.pair_whitelist` | List of pairs to use by the bot for trading and to check for potential trades during backtesting. Not used by VolumePairList (see [below](#pairlists-and-pairlist-handlers)). <br> **Datatype:** List
| `exchange.pair_blacklist` | List of pairs the bot must absolutely avoid for trading and backtesting (see [below](#pairlists-and-pairlist-handlers)). <br> **Datatype:** List
| `exchange.ccxt_config` | Additional CCXT parameters passed to both ccxt instances (sync and async). This is usually the correct place for ccxt configurations. Parameters may differ from exchange to exchange and are documented in the [ccxt documentation](https://ccxt.readthedocs.io/en/latest/manual.html#instantiation) <br> **Datatype:** Dict
| `exchange.ccxt_sync_config` | Additional CCXT parameters passed to the regular (sync) ccxt instance. Parameters may differ from exchange to exchange and are documented in the [ccxt documentation](https://ccxt.readthedocs.io/en/latest/manual.html#instantiation) <br> **Datatype:** Dict
| `exchange.ccxt_async_config` | Additional CCXT parameters passed to the async ccxt instance. Parameters may differ from exchange to exchange and are documented in the [ccxt documentation](https://ccxt.readthedocs.io/en/latest/manual.html#instantiation) <br> **Datatype:** Dict
| `exchange.markets_refresh_interval` | The interval in minutes in which markets are reloaded. <br>*Defaults to `60` minutes.* <br> **Datatype:** Positive Integer
| `exchange.skip_pair_validation` | Skip pairlist validation on startup.<br>*Defaults to `false`<br> **Datatype:** Boolean
| `edge.*` | Please refer to [edge configuration document](edge.md) for detailed explanation.
| `experimental.block_bad_exchanges` | Block exchanges known to not work with freqtrade. Leave on default unless you want to test if that exchange works now. <br>*Defaults to `true`.* <br> **Datatype:** Boolean
| `pairlists` | Define one or more pairlists to be used. [More information below](#pairlists-and-pairlist-handlers). <br>*Defaults to `StaticPairList`.* <br> **Datatype:** List of Dicts
| `telegram.enabled` | Enable the usage of Telegram. <br> **Datatype:** Boolean
| `telegram.token` | Your Telegram bot token. Only required if `telegram.enabled` is `true`. <br>**Keep it in secret, do not disclose publicly.** <br> **Datatype:** String
| `telegram.chat_id` | Your personal Telegram account id. Only required if `telegram.enabled` is `true`. <br>**Keep it in secret, do not disclose publicly.** <br> **Datatype:** String
| `webhook.enabled` | Enable usage of Webhook notifications <br> **Datatype:** Boolean
| `webhook.url` | URL for the webhook. Only required if `webhook.enabled` is `true`. See the [webhook documentation](webhook-config.md) for more details. <br> **Datatype:** String
| `webhook.webhookbuy` | Payload to send on buy. Only required if `webhook.enabled` is `true`. See the [webhook documentation](webhook-config.md) for more details. <br> **Datatype:** String
| `webhook.webhookbuycancel` | Payload to send on buy order cancel. Only required if `webhook.enabled` is `true`. See the [webhook documentation](webhook-config.md) for more details. <br> **Datatype:** String
| `webhook.webhooksell` | Payload to send on sell. Only required if `webhook.enabled` is `true`. See the [webhook documentation](webhook-config.md) for more details. <br> **Datatype:** String
| `webhook.webhooksellcancel` | Payload to send on sell order cancel. Only required if `webhook.enabled` is `true`. See the [webhook documentation](webhook-config.md) for more details. <br> **Datatype:** String
| `webhook.webhookstatus` | Payload to send on status calls. Only required if `webhook.enabled` is `true`. See the [webhook documentation](webhook-config.md) for more details. <br> **Datatype:** String
| `api_server.enabled` | Enable usage of API Server. See the [API Server documentation](rest-api.md) for more details. <br> **Datatype:** Boolean
| `api_server.listen_ip_address` | Bind IP address. See the [API Server documentation](rest-api.md) for more details. <br> **Datatype:** IPv4
| `api_server.listen_port` | Bind Port. See the [API Server documentation](rest-api.md) for more details. <br>**Datatype:** Integer between 1024 and 65535
| `api_server.verbosity` | Logging verbosity. `info` will print all RPC Calls, while "error" will only display errors. <br>**Datatype:** Enum, either `info` or `error`. Defaults to `info`.
| `api_server.username` | Username for API server. See the [API Server documentation](rest-api.md) for more details. <br>**Keep it in secret, do not disclose publicly.**<br> **Datatype:** String
| `api_server.password` | Password for API server. See the [API Server documentation](rest-api.md) for more details. <br>**Keep it in secret, do not disclose publicly.**<br> **Datatype:** String
| `db_url` | Declares database URL to use. NOTE: This defaults to `sqlite:///tradesv3.dryrun.sqlite` if `dry_run` is `true`, and to `sqlite:///tradesv3.sqlite` for production instances. <br> **Datatype:** String, SQLAlchemy connect string
| `initial_state` | Defines the initial application state. More information below. <br>*Defaults to `stopped`.* <br> **Datatype:** Enum, either `stopped` or `running`
| `forcebuy_enable` | Enables the RPC Commands to force a buy. More information below. <br> **Datatype:** Boolean
| `disable_dataframe_checks` | Disable checking the OHLCV dataframe returned from the strategy methods for correctness. Only use when intentionally changing the dataframe and understand what you are doing. [Strategy Override](#parameters-in-the-strategy).<br> *Defaults to `False`*. <br> **Datatype:** Boolean
| `strategy` | **Required** Defines Strategy class to use. Recommended to be set via `--strategy NAME`. <br> **Datatype:** ClassName
| `strategy_path` | Adds an additional strategy lookup path (must be a directory). <br> **Datatype:** String
| `internals.process_throttle_secs` | Set the process throttle. Value in second. <br>*Defaults to `5` seconds.* <br> **Datatype:** Positive Integer
| `internals.heartbeat_interval` | Print heartbeat message every N seconds. Set to 0 to disable heartbeat messages. <br>*Defaults to `60` seconds.* <br> **Datatype:** Positive Integer or 0
| `internals.sd_notify` | Enables use of the sd_notify protocol to tell systemd service manager about changes in the bot state and issue keep-alive pings. See [here](installation.md#7-optional-configure-freqtrade-as-a-systemd-service) for more details. <br> **Datatype:** Boolean
| `logfile` | Specifies logfile name. Uses a rolling strategy for log file rotation for 10 files with the 1MB limit per file. <br> **Datatype:** String
| `user_data_dir` | Directory containing user data. <br> *Defaults to `./user_data/`*. <br> **Datatype:** String
| `dataformat_ohlcv` | Data format to use to store historical candle (OHLCV) data. <br> *Defaults to `json`*. <br> **Datatype:** String
| `dataformat_trades` | Data format to use to store historical trades data. <br> *Defaults to `jsongz`*. <br> **Datatype:** String
### Parameters in the strategy
The following parameters can be set in either configuration file or strategy.
Values set in the configuration file always overwrite values set in the strategy.
* `minimal_roi`
* `ticker_interval`
* `timeframe`
* `stoploss`
* `trailing_stop`
* `trailing_stop_positive`
* `trailing_stop_positive_offset`
* `trailing_only_offset_is_reached`
* `process_only_new_candles`
* `order_types`
* `order_time_in_force`
* `use_sell_signal` (experimental)
* `sell_profit_only` (experimental)
* `ignore_roi_if_buy_signal` (experimental)
* `stake_currency`
* `stake_amount`
* `unfilledtimeout`
* `disable_dataframe_checks`
* `use_sell_signal` (ask_strategy)
* `sell_profit_only` (ask_strategy)
* `ignore_roi_if_buy_signal` (ask_strategy)
### Understand stake_amount
### Configuring amount per trade
`stake_amount` is an amount of crypto-currency your bot will use for each trade.
The minimal value is 0.0005. If there is not enough crypto-currency in
the account an exception is generated.
To allow the bot to trade all the available `stake_currency` in your account set
There are several methods to configure how much of the stake currency the bot will use to enter a trade. All methods respect the [available balance configuration](#available-balance) as explained below.
#### Available balance
By default, the bot assumes that the `complete amount - 1%` is at it's disposal, and when using [dynamic stake amount](#dynamic-stake-amount), it will split the complete balance into `max_open_trades` buckets per trade.
Freqtrade will reserve 1% for eventual fees when entering a trade and will therefore not touch that by default.
You can configure the "untouched" amount by using the `tradable_balance_ratio` setting.
For example, if you have 10 ETH available in your wallet on the exchange and `tradable_balance_ratio=0.5` (which is 50%), then the bot will use a maximum amount of 5 ETH for trading and considers this as available balance. The rest of the wallet is untouched by the trades.
!!! Warning
The `tradable_balance_ratio` setting applies to the current balance (free balance + tied up in trades). Therefore, assuming the starting balance of 1000, a configuration with `tradable_balance_ratio=0.99` will not guarantee that 10 currency units will always remain available on the exchange. For example, the free amount may reduce to 5 units if the total balance is reduced to 500 (either by a losing streak, or by withdrawing balance).
#### Amend last stake amount
Assuming we have the tradable balance of 1000 USDT, `stake_amount=400`, and `max_open_trades=3`.
The bot would open 2 trades, and will be unable to fill the last trading slot, since the requested 400 USDT are no longer available, since 800 USDT are already tied in other trades.
To overcome this, the option `amend_last_stake_amount` can be set to `True`, which will enable the bot to reduce stake_amount to the available balance in order to fill the last trade slot.
In the example above this would mean:
- Trade1: 400 USDT
- Trade2: 400 USDT
- Trade3: 200 USDT
!!! Note
This option only applies with [Static stake amount](#static-stake-amount) - since [Dynamic stake amount](#dynamic-stake-amount) divides the balances evenly.
!!! Note
The minimum last stake amount can be configured using `last_stake_amount_min_ratio` - which defaults to 0.5 (50%). This means that the minimum stake amount that's ever used is `stake_amount * 0.5`. This avoids very low stake amounts, that are close to the minimum tradable amount for the pair and can be refused by the exchange.
#### Static stake amount
The `stake_amount` configuration statically configures the amount of stake-currency your bot will use for each trade.
The minimal configuration value is 0.0001, however, please check your exchange's trading minimums for the stake currency you're using to avoid problems.
This setting works in combination with `max_open_trades`. The maximum capital engaged in trades is `stake_amount * max_open_trades`.
For example, the bot will at most use (0.05 BTC x 3) = 0.15 BTC, assuming a configuration of `max_open_trades=3` and `stake_amount=0.05`.
!!! Note
This setting respects the [available balance configuration](#available-balance).
#### Dynamic stake amount
Alternatively, you can use a dynamic stake amount, which will use the available balance on the exchange, and divide that equally by the amount of allowed trades (`max_open_trades`).
To configure this, set `stake_amount="unlimited"`. We also recommend to set `tradable_balance_ratio=0.99` (99%) - to keep a minimum balance for eventual fees.
In this case a trade amount is calculated as:
```python
currency_balance / (max_open_trades - current_open_trades)
```
To allow the bot to trade all the available `stake_currency` in your account (minus `tradable_balance_ratio`) set
```json
"stake_amount" : "unlimited",
"tradable_balance_ratio": 0.99,
```
In this case a trade amount is calclulated as:
!!! Note
This configuration will allow increasing / decreasing stakes depending on the performance of the bot (lower stake if bot is loosing, higher stakes if the bot has a winning record, since higher balances are available).
```python
currency_balanse / (max_open_trades - current_open_trades)
```
!!! Note "When using Dry-Run Mode"
When using `"stake_amount" : "unlimited",` in combination with Dry-Run, the balance will be simulated starting with a stake of `dry_run_wallet` which will evolve over time. It is therefore important to set `dry_run_wallet` to a sensible value (like 0.05 or 0.01 for BTC and 1000 or 100 for USDT, for example), otherwise it may simulate trades with 100 BTC (or more) or 0.05 USDT (or less) at once - which may not correspond to your real available balance or is less than the exchange minimal limit for the order amount for the stake currency.
### Understand minimal_roi
`minimal_roi` is a JSON object where the key is a duration
in minutes and the value is the minimum ROI in percent.
The `minimal_roi` configuration parameter is a JSON object where the key is a duration
in minutes and the value is the minimum ROI as ratio.
See the example below:
```json
@@ -117,89 +231,133 @@ See the example below:
},
```
Most of the strategy files already include the optimal `minimal_roi`
value. This parameter is optional. If you use it, it will take over the
Most of the strategy files already include the optimal `minimal_roi` value.
This parameter can be set in either Strategy or Configuration file. If you use it in the configuration file, it will override the
`minimal_roi` value from the strategy file.
If it is not set in either Strategy or Configuration, a default of 1000% `{"0": 10}` is used, and minimal roi is disabled unless your trade generates 1000% profit.
!!! Note "Special case to forcesell after a specific time"
A special case presents using `"<N>": -1` as ROI. This forces the bot to sell a trade after N Minutes, no matter if it's positive or negative, so represents a time-limited force-sell.
### Understand stoploss
`stoploss` is loss in percentage that should trigger a sale.
For example value `-0.10` will cause immediate sell if the
profit dips below -10% for a given trade. This parameter is optional.
Most of the strategy files already include the optimal `stoploss`
value. This parameter is optional. If you use it, it will take over the
`stoploss` value from the strategy file.
Go to the [stoploss documentation](stoploss.md) for more details.
### Understand trailing stoploss
Go to the [trailing stoploss Documentation](stoploss.md) for details on trailing stoploss.
Go to the [trailing stoploss Documentation](stoploss.md#trailing-stop-loss) for details on trailing stoploss.
### Understand initial_state
`initial_state` is an optional field that defines the initial application state.
The `initial_state` configuration parameter is an optional field that defines the initial application state.
Possible values are `running` or `stopped`. (default=`running`)
If the value is `stopped` the bot has to be started with `/start` first.
### Understand forcebuy_enable
`forcebuy_enable` enables the usage of forcebuy commands via Telegram.
The `forcebuy_enable` configuration parameter enables the usage of forcebuy commands via Telegram.
This is disabled for security reasons by default, and will show a warning message on startup if enabled.
You send `/forcebuy ETH/BTC` to the bot, who buys the pair and holds it until a regular sell-signal appears (ROI, stoploss, /forcesell).
For example, you can send `/forcebuy ETH/BTC` Telegram command when this feature if enabled to the bot,
who then buys the pair and holds it until a regular sell-signal (ROI, stoploss, /forcesell) appears.
This can be dangerous with some strategies, so use with care.
Can be dangerous with some strategies, so use with care
See [the telegram documentation](telegram-usage.md) for details on usage.
### Understand process_throttle_secs
`process_throttle_secs` is an optional field that defines in seconds how long the bot should wait
The `process_throttle_secs` configuration parameter is an optional field that defines in seconds how long the bot should wait
before asking the strategy if we should buy or a sell an asset. After each wait period, the strategy is asked again for
every opened trade wether or not we should sell, and for all the remaining pairs (either the dynamic list of pairs or
the static list of pairs) if we should buy.
### Understand ask_last_balance
`ask_last_balance` sets the bidding price. Value `0.0` will use `ask` price, `1.0` will
use the `last` price and values between those interpolate between ask and last
price. Using `ask` price will guarantee quick success in bid, but bot will also
end up paying more then would probably have been necessary.
### Understand order_types
`order_types` contains a dict mapping order-types to market-types as well as stoploss on or off exchange type and stoploss on exchange update interval in seconds. This allows to buy using limit orders, sell using limit-orders, and create stoploss orders using market. It also allows to set the stoploss "on exchange" which means stoploss order would be placed immediately once the buy order is fulfilled. In case stoploss on exchange and `trailing_stop` are both set, then the bot will use `stoploss_on_exchange_interval` to check it periodically and update it if necessary (e.x. in case of trailing stoploss).
This can be set in the configuration or in the strategy. Configuration overwrites strategy configurations.
The `order_types` configuration parameter maps actions (`buy`, `sell`, `stoploss`, `emergencysell`) to order-types (`market`, `limit`, ...) as well as configures stoploss to be on the exchange and defines stoploss on exchange update interval in seconds.
If this is configured, all 4 values (`"buy"`, `"sell"`, `"stoploss"` and `"stoploss_on_exchange"`) need to be present, otherwise the bot warn about it and will fail to start.
The below is the default which is used if this is not configured in either Strategy or configuration.
This allows to buy using limit orders, sell using
limit-orders, and create stoplosses using market orders. It also allows to set the
stoploss "on exchange" which means stoploss order would be placed immediately once
the buy order is fulfilled.
`order_types` set in the configuration file overwrites values set in the strategy as a whole, so you need to configure the whole `order_types` dictionary in one place.
If this is configured, the following 4 values (`buy`, `sell`, `stoploss` and
`stoploss_on_exchange`) need to be present, otherwise the bot will fail to start.
For information on (`emergencysell`,`stoploss_on_exchange`,`stoploss_on_exchange_interval`,`stoploss_on_exchange_limit_ratio`) please see stop loss documentation [stop loss on exchange](stoploss.md)
Syntax for Strategy:
```python
order_types = {
"buy": "limit",
"sell": "limit",
"emergencysell": "market",
"stoploss": "market",
"stoploss_on_exchange": False,
"stoploss_on_exchange_interval": 60,
"stoploss_on_exchange_limit_ratio": 0.99,
}
```
Configuration:
```json
"order_types": {
"buy": "limit",
"sell": "limit",
"emergencysell": "market",
"stoploss": "market",
"stoploss_on_exchange": False,
"stoploss_on_exchange": false,
"stoploss_on_exchange_interval": 60
},
}
```
!!! Note
!!! Note "Market order support"
Not all exchanges support "market" orders.
The following message will be shown if your exchange does not support market orders: `"Exchange <yourexchange> does not support market orders."`
The following message will be shown if your exchange does not support market orders:
`"Exchange <yourexchange> does not support market orders."` and the bot will refuse to start.
!!! Note
stoploss on exchange interval is not mandatory. Do not change it's value if you are unsure of what you are doing. For more information about how stoploss works please read [the stoploss documentation](stoploss.md).
!!! Warning "Using market orders"
Please carefully read the section [Market order pricing](#market-order-pricing) section when using market orders.
!!! Note "Stoploss on exchange"
`stoploss_on_exchange_interval` is not mandatory. Do not change its value if you are
unsure of what you are doing. For more information about how stoploss works please
refer to [the stoploss documentation](stoploss.md).
If `stoploss_on_exchange` is enabled and the stoploss is cancelled manually on the exchange, then the bot will create a new stoploss order.
!!! Warning "Warning: stoploss_on_exchange failures"
If stoploss on exchange creation fails for some reason, then an "emergency sell" is initiated. By default, this will sell the asset using a market order. The order-type for the emergency-sell can be changed by setting the `emergencysell` value in the `order_types` dictionary - however this is not advised.
### Understand order_time_in_force
`order_time_in_force` defines the policy by which the order is executed on the exchange. Three commonly used time in force are:<br/>
**GTC (Goog Till Canceled):**
This is most of the time the default time in force. It means the order will remain on exchange till it is canceled by user. It can be fully or partially fulfilled. If partially fulfilled, the remaining will stay on the exchange till cancelled.<br/>
**FOK (Full Or Kill):**
It means if the order is not executed immediately AND fully then it is canceled by the exchange.<br/>
The `order_time_in_force` configuration parameter defines the policy by which the order
is executed on the exchange. Three commonly used time in force are:
**GTC (Good Till Canceled):**
This is most of the time the default time in force. It means the order will remain
on exchange till it is canceled by user. It can be fully or partially fulfilled.
If partially fulfilled, the remaining will stay on the exchange till cancelled.
**FOK (Fill Or Kill):**
It means if the order is not executed immediately AND fully then it is canceled by the exchange.
**IOC (Immediate Or Canceled):**
It is the same as FOK (above) except it can be partially fulfilled. The remaining part is automatically cancelled by the exchange.
<br/>
`order_time_in_force` contains a dict buy and sell time in force policy. This can be set in the configuration or in the strategy. Configuration overwrites strategy configurations.<br/>
possible values are: `gtc` (default), `fok` or `ioc`.<br/>
It is the same as FOK (above) except it can be partially fulfilled. The remaining part
is automatically cancelled by the exchange.
The `order_time_in_force` parameter contains a dict with buy and sell time in force policy values.
This can be set in the configuration file or in the strategy.
Values set in the configuration file overwrites values set in the strategy.
The possible values are: `gtc` (default), `fok` or `ioc`.
``` python
"order_time_in_force": {
"buy": "gtc",
@@ -208,51 +366,232 @@ possible values are: `gtc` (default), `fok` or `ioc`.<br/>
```
!!! Warning
This is an ongoing work. For now it is supported only for binance and only for buy orders. Please don't change the default value unless you know what you are doing.
This is an ongoing work. For now it is supported only for binance and only for buy orders.
Please don't change the default value unless you know what you are doing.
### What values for exchange.name?
### Exchange configuration
Freqtrade is based on [CCXT library](https://github.com/ccxt/ccxt) that supports 115 cryptocurrency
Freqtrade is based on [CCXT library](https://github.com/ccxt/ccxt) that supports over 100 cryptocurrency
exchange markets and trading APIs. The complete up-to-date list can be found in the
[CCXT repo homepage](https://github.com/ccxt/ccxt/tree/master/python). However, the bot was tested
with only Bittrex and Binance.
The bot was tested with the following exchanges:
[CCXT repo homepage](https://github.com/ccxt/ccxt/tree/master/python).
However, the bot was tested by the development team with only Bittrex, Binance and Kraken,
so the these are the only officially supported exchanges:
- [Bittrex](https://bittrex.com/): "bittrex"
- [Binance](https://www.binance.com/): "binance"
- [Kraken](https://kraken.com/): "kraken"
Feel free to test other exchanges and submit your PR to improve the bot.
### What values for fiat_display_currency?
Some exchanges require special configuration, which can be found on the [Exchange-specific Notes](exchanges.md) documentation page.
#### Sample exchange configuration
A exchange configuration for "binance" would look as follows:
```json
"exchange": {
"name": "binance",
"key": "your_exchange_key",
"secret": "your_exchange_secret",
"ccxt_config": {"enableRateLimit": true},
"ccxt_async_config": {
"enableRateLimit": true,
"rateLimit": 200
},
```
This configuration enables binance, as well as rate limiting to avoid bans from the exchange.
`"rateLimit": 200` defines a wait-event of 0.2s between each call. This can also be completely disabled by setting `"enableRateLimit"` to false.
!!! Note
Optimal settings for rate limiting depend on the exchange and the size of the whitelist, so an ideal parameter will vary on many other settings.
We try to provide sensible defaults per exchange where possible, if you encounter bans please make sure that `"enableRateLimit"` is enabled and increase the `"rateLimit"` parameter step by step.
#### Advanced Freqtrade Exchange configuration
Advanced options can be configured using the `_ft_has_params` setting, which will override Defaults and exchange-specific behaviours.
Available options are listed in the exchange-class as `_ft_has_default`.
For example, to test the order type `FOK` with Kraken, and modify candle limit to 200 (so you only get 200 candles per API call):
```json
"exchange": {
"name": "kraken",
"_ft_has_params": {
"order_time_in_force": ["gtc", "fok"],
"ohlcv_candle_limit": 200
}
```
!!! Warning
Please make sure to fully understand the impacts of these settings before modifying them.
### What values can be used for fiat_display_currency?
The `fiat_display_currency` configuration parameter sets the base currency to use for the
conversion from coin to fiat in the bot Telegram reports.
The valid values are:
`fiat_display_currency` set the base currency to use for the conversion from coin to fiat in Telegram.
The valid values are:<br/>
```json
"AUD", "BRL", "CAD", "CHF", "CLP", "CNY", "CZK", "DKK", "EUR", "GBP", "HKD", "HUF", "IDR", "ILS", "INR", "JPY", "KRW", "MXN", "MYR", "NOK", "NZD", "PHP", "PKR", "PLN", "RUB", "SEK", "SGD", "THB", "TRY", "TWD", "ZAR", "USD"
```
In addition to FIAT currencies, a range of cryto currencies are supported.
In addition to fiat currencies, a range of cryto currencies are supported.
The valid values are:
```json
"BTC", "ETH", "XRP", "LTC", "BCH", "USDT"
```
## Switch to dry-run mode
## Prices used for orders
We recommend starting the bot in dry-run mode to see how your bot will
behave and how is the performance of your strategy. In Dry-run mode the
Prices for regular orders can be controlled via the parameter structures `bid_strategy` for buying and `ask_strategy` for selling.
Prices are always retrieved right before an order is placed, either by querying the exchange tickers or by using the orderbook data.
!!! Note
Orderbook data used by Freqtrade are the data retrieved from exchange by the ccxt's function `fetch_order_book()`, i.e. are usually data from the L2-aggregated orderbook, while the ticker data are the structures returned by the ccxt's `fetch_ticker()`/`fetch_tickers()` functions. Refer to the ccxt library [documentation](https://github.com/ccxt/ccxt/wiki/Manual#market-data) for more details.
!!! Warning "Using market orders"
Please read the section [Market order pricing](#market-order-pricing) section when using market orders.
### Buy price
#### Check depth of market
When check depth of market is enabled (`bid_strategy.check_depth_of_market.enabled=True`), the buy signals are filtered based on the orderbook depth (sum of all amounts) for each orderbook side.
Orderbook `bid` (buy) side depth is then divided by the orderbook `ask` (sell) side depth and the resulting delta is compared to the value of the `bid_strategy.check_depth_of_market.bids_to_ask_delta` parameter. The buy order is only executed if the orderbook delta is greater than or equal to the configured delta value.
!!! Note
A delta value below 1 means that `ask` (sell) orderbook side depth is greater than the depth of the `bid` (buy) orderbook side, while a value greater than 1 means opposite (depth of the buy side is higher than the depth of the sell side).
#### Buy price side
The configuration setting `bid_strategy.price_side` defines the side of the spread the bot looks for when buying.
The following displays an orderbook.
``` explanation
...
103
102
101 # ask
-------------Current spread
99 # bid
98
97
...
```
If `bid_strategy.price_side` is set to `"bid"`, then the bot will use 99 as buying price.
In line with that, if `bid_strategy.price_side` is set to `"ask"`, then the bot will use 101 as buying price.
Using `ask` price often guarantees quicker filled orders, but the bot can also end up paying more than what would have been necessary.
Taker fees instead of maker fees will most likely apply even when using limit buy orders.
Also, prices at the "ask" side of the spread are higher than prices at the "bid" side in the orderbook, so the order behaves similar to a market order (however with a maximum price).
#### Buy price with Orderbook enabled
When buying with the orderbook enabled (`bid_strategy.use_order_book=True`), Freqtrade fetches the `bid_strategy.order_book_top` entries from the orderbook and then uses the entry specified as `bid_strategy.order_book_top` on the configured side (`bid_strategy.price_side`) of the orderbook. 1 specifies the topmost entry in the orderbook, while 2 would use the 2nd entry in the orderbook, and so on.
#### Buy price without Orderbook enabled
The following section uses `side` as the configured `bid_strategy.price_side`.
When not using orderbook (`bid_strategy.use_order_book=False`), Freqtrade uses the best `side` price from the ticker if it's below the `last` traded price from the ticker. Otherwise (when the `side` price is above the `last` price), it calculates a rate between `side` and `last` price.
The `bid_strategy.ask_last_balance` configuration parameter controls this. A value of `0.0` will use `side` price, while `1.0` will use the `last` price and values between those interpolate between ask and last price.
### Sell price
#### Sell price side
The configuration setting `ask_strategy.price_side` defines the side of the spread the bot looks for when selling.
The following displays an orderbook:
``` explanation
...
103
102
101 # ask
-------------Current spread
99 # bid
98
97
...
```
If `ask_strategy.price_side` is set to `"ask"`, then the bot will use 101 as selling price.
In line with that, if `ask_strategy.price_side` is set to `"bid"`, then the bot will use 99 as selling price.
#### Sell price with Orderbook enabled
When selling with the orderbook enabled (`ask_strategy.use_order_book=True`), Freqtrade fetches the `ask_strategy.order_book_max` entries in the orderbook. Then each of the orderbook steps between `ask_strategy.order_book_min` and `ask_strategy.order_book_max` on the configured orderbook side are validated for a profitable sell-possibility based on the strategy configuration (`minimal_roi` conditions) and the sell order is placed at the first profitable spot.
!!! Note
Using `order_book_max` higher than `order_book_min` only makes sense when ask_strategy.price_side is set to `"ask"`.
The idea here is to place the sell order early, to be ahead in the queue.
A fixed slot (mirroring `bid_strategy.order_book_top`) can be defined by setting `ask_strategy.order_book_min` and `ask_strategy.order_book_max` to the same number.
!!! Warning "Order_book_max > 1 - increased risks for stoplosses!"
Using `ask_strategy.order_book_max` higher than 1 will increase the risk the stoploss on exchange is cancelled too early, since an eventual [stoploss on exchange](#understand-order_types) will be cancelled as soon as the order is placed.
Also, the sell order will remain on the exchange for `unfilledtimeout.sell` (or until it's filled) - which can lead to missed stoplosses (with or without using stoploss on exchange).
!!! Warning "Order_book_max > 1 in dry-run"
Using `ask_strategy.order_book_max` higher than 1 will result in improper dry-run results (significantly better than real orders executed on exchange), since dry-run assumes orders to be filled almost instantly.
It is therefore advised to not use this setting for dry-runs.
#### Sell price without Orderbook enabled
When not using orderbook (`ask_strategy.use_order_book=False`), the price at the `ask_strategy.price_side` side (defaults to `"ask"`) from the ticker will be used as the sell price.
### Market order pricing
When using market orders, prices should be configured to use the "correct" side of the orderbook to allow realistic pricing detection.
Assuming both buy and sell are using market orders, a configuration similar to the following might be used
``` jsonc
"order_types": {
"buy": "market",
"sell": "market"
// ...
},
"bid_strategy": {
"price_side": "ask",
// ...
},
"ask_strategy":{
"price_side": "bid",
// ...
},
```
Obviously, if only one side is using limit orders, different pricing combinations can be used.
--8<-- "includes/pairlists.md"
## Switch to Dry-run mode
We recommend starting the bot in the Dry-run mode to see how your bot will
behave and what is the performance of your strategy. In the Dry-run mode the
bot does not engage your money. It only runs a live simulation without
creating trades.
creating trades on the exchange.
1. Edit your `config.json` file
2. Switch dry-run to true and specify db_url for a persistent db
1. Edit your `config.json` configuration file.
2. Switch `dry-run` to `true` and specify `db_url` for a persistence database.
```json
"dry_run": true,
"db_url": "sqlite:///tradesv3.dryrun.sqlite",
```
3. Remove your Exchange API key (change them by fake api credentials)
3. Remove your Exchange API key and secret (change them by empty values or fake credentials):
```json
"exchange": {
@@ -263,40 +602,30 @@ creating trades.
}
```
Once you will be happy with your bot performance, you can switch it to
production mode.
Once you will be happy with your bot performance running in the Dry-run mode, you can switch it to production mode.
### Dynamic Pairlists
!!! Note
A simulated wallet is available during dry-run mode, and will assume a starting capital of `dry_run_wallet` (defaults to 1000).
Dynamic pairlists select pairs for you based on the logic configured.
The bot runs against all pairs (with that stake) on the exchange, and a number of assets (`number_assets`) is selected based on the selected criteria.
### Considerations for dry-run
By default, a Static Pairlist is used (configured as `"pair_whitelist"` under the `"exchange"` section of this configuration).
**Available Pairlist methods:**
* `"StaticPairList"`
* uses configuration from `exchange.pair_whitelist` and `exchange.pair_blacklist`
* `"VolumePairList"`
* Formerly available as `--dynamic-whitelist [<number_assets>]`
* Selects `number_assets` top pairs based on `sort_key`, which can be one of `askVolume`, `bidVolume` and `quoteVolume`, defaults to `quoteVolume`.
```json
"pairlist": {
"method": "VolumePairList",
"config": {
"number_assets": 20,
"sort_key": "quoteVolume"
}
},
```
* API-keys may or may not be provided. Only Read-Only operations (i.e. operations that do not alter account state) on the exchange are performed in the dry-run mode.
* Wallets (`/balance`) are simulated.
* Orders are simulated, and will not be posted to the exchange.
* In combination with `stoploss_on_exchange`, the stop_loss price is assumed to be filled.
* Open orders (not trades, which are stored in the database) are reset on bot restart.
## Switch to production mode
In production mode, the bot will engage your money. Be careful a wrong
In production mode, the bot will engage your money. Be careful, since a wrong
strategy can lose all your money. Be aware of what you are doing when
you run it in production mode.
### Setup your exchange account
You will need to create API Keys (usually you get `key` and `secret`, some exchanges require an additional `password`) from the Exchange website and you'll need to insert this into the appropriate fields in the configuration or when asked by the `freqtrade new-config` command.
API Keys are usually only required for live trading (trading for real money, bot running in "production mode", executing real orders on the exchange) and are not required for the bot running in dry-run (trade simulation) mode. When you setup the bot in dry-run mode, you may fill these fields with empty values.
### To switch your bot in production mode
**Edit your `config.json` file.**
@@ -316,12 +645,11 @@ you run it in production mode.
"secret": "08a9dc6db3d7b53e1acebd9275677f4b0a04f1a5",
...
}
```
!!! Note
If you have an exchange API key yet, [see our tutorial](/pre-requisite).
### Using proxy with FreqTrade
You should also make sure to read the [Exchanges](exchanges.md) section of the documentation to be aware of potential configuration details specific to your exchange.
### Using proxy with Freqtrade
To use a proxy with freqtrade, add the kwarg `"aiohttp_trust_env"=true` to the `"ccxt_async_kwargs"` dict in the exchange section of the configuration.
@@ -341,14 +669,13 @@ export HTTPS_PROXY="http://addr:port"
freqtrade
```
## Embedding Strategies
### Embedding Strategies
FreqTrade provides you with with an easy way to embed the strategy into your configuration file.
Freqtrade provides you with with an easy way to embed the strategy into your configuration file.
This is done by utilizing BASE64 encoding and providing this string at the strategy configuration field,
in your chosen config file.
#### Encoding a string as BASE64
### Encoding a string as BASE64
This is a quick example, how to generate the BASE64 string in python

123
docs/data-analysis.md Normal file
View File

@@ -0,0 +1,123 @@
# Analyzing bot data with Jupyter notebooks
You can analyze the results of backtests and trading history easily using Jupyter notebooks. Sample notebooks are located at `user_data/notebooks/` after initializing the user directory with `freqtrade create-userdir --userdir user_data`.
## Quick start with docker
Freqtrade provides a docker-compose file which starts up a jupyter lab server.
You can run this server using the following command: `docker-compose -f docker/docker-compose-jupyter.yml up`
This will create a dockercontainer running jupyter lab, which will be accessible using `https://127.0.0.1:8888/lab`.
Please use the link that's printed in the console after startup for simplified login.
For more information, Please visit the [Data analysis with Docker](docker_quickstart.md#data-analayis-using-docker-compose) section.
### Pro tips
* See [jupyter.org](https://jupyter.org/documentation) for usage instructions.
* Don't forget to start a Jupyter notebook server from within your conda or venv environment or use [nb_conda_kernels](https://github.com/Anaconda-Platform/nb_conda_kernels)*
* Copy the example notebook before use so your changes don't get overwritten with the next freqtrade update.
### Using virtual environment with system-wide Jupyter installation
Sometimes it can be desired to use a system-wide installation of Jupyter notebook, and use a jupyter kernel from the virtual environment.
This prevents you from installing the full jupyter suite multiple times per system, and provides an easy way to switch between tasks (freqtrade / other analytics tasks).
For this to work, first activate your virtual environment and run the following commands:
``` bash
# Activate virtual environment
source .env/bin/activate
pip install ipykernel
ipython kernel install --user --name=freqtrade
# Restart jupyter (lab / notebook)
# select kernel "freqtrade" in the notebook
```
!!! Note
This section is provided for completeness, the Freqtrade Team won't provide full support for problems with this setup and will recommend to install Jupyter in the virtual environment directly, as that is the easiest way to get jupyter notebooks up and running. For help with this setup please refer to the [Project Jupyter](https://jupyter.org/) [documentation](https://jupyter.org/documentation) or [help channels](https://jupyter.org/community).
!!! Warning
Some tasks don't work especially well in notebooks. For example, anything using asynchronous execution is a problem for Jupyter. Also, freqtrade's primary entry point is the shell cli, so using pure python in a notebook bypasses arguments that provide required objects and parameters to helper functions. You may need to set those values or create expected objects manually.
## Recommended workflow
| Task | Tool |
--- | ---
Bot operations | CLI
Repetitive tasks | Shell scripts
Data analysis & visualization | Notebook
1. Use the CLI to
* download historical data
* run a backtest
* run with real-time data
* export results
1. Collect these actions in shell scripts
* save complicated commands with arguments
* execute multi-step operations
* automate testing strategies and preparing data for analysis
1. Use a notebook to
* visualize data
* munge and plot to generate insights
## Example utility snippets
### Change directory to root
Jupyter notebooks execute from the notebook directory. The following snippet searches for the project root, so relative paths remain consistent.
```python
import os
from pathlib import Path
# Change directory
# Modify this cell to insure that the output shows the correct path.
# Define all paths relative to the project root shown in the cell output
project_root = "somedir/freqtrade"
i=0
try:
os.chdirdir(project_root)
assert Path('LICENSE').is_file()
except:
while i<4 and (not Path('LICENSE').is_file()):
os.chdir(Path(Path.cwd(), '../'))
i+=1
project_root = Path.cwd()
print(Path.cwd())
```
### Load multiple configuration files
This option can be useful to inspect the results of passing in multiple configs.
This will also run through the whole Configuration initialization, so the configuration is completely initialized to be passed to other methods.
``` python
import json
from freqtrade.configuration import Configuration
# Load config from multiple files
config = Configuration.from_files(["config1.json", "config2.json"])
# Show the config in memory
print(json.dumps(config['original_config'], indent=2))
```
For Interactive environments, have an additional configuration specifying `user_data_dir` and pass this in last, so you don't have to change directories while running the bot.
Best avoid relative paths, since this starts at the storage location of the jupyter notebook, unless the directory is changed.
``` json
{
"user_data_dir": "~/.freqtrade/"
}
```
### Further Data analysis documentation
* [Strategy debugging](strategy_analysis_example.md) - also available as Jupyter notebook (`user_data/notebooks/strategy_analysis_example.ipynb`)
* [Plotting](plotting.md)
Feel free to submit an issue or Pull Request enhancing this document if you would like to share ideas on how to best analyze the data.

328
docs/data-download.md Normal file
View File

@@ -0,0 +1,328 @@
# Data Downloading
## Getting data for backtesting and hyperopt
To download data (candles / OHLCV) needed for backtesting and hyperoptimization use the `freqtrade download-data` command.
If no additional parameter is specified, freqtrade will download data for `"1m"` and `"5m"` timeframes for the last 30 days.
Exchange and pairs will come from `config.json` (if specified using `-c/--config`).
Otherwise `--exchange` becomes mandatory.
You can use a relative timerange (`--days 20`) or an absolute starting point (`--timerange 20200101`). For incremental downloads, the relative approach should be used.
!!! Tip "Tip: Updating existing data"
If you already have backtesting data available in your data-directory and would like to refresh this data up to today, use `--days xx` with a number slightly higher than the missing number of days. Freqtrade will keep the available data and only download the missing data.
Be careful though: If the number is too small (which would result in a few missing days), the whole dataset will be removed and only xx days will be downloaded.
### Usage
```
usage: freqtrade download-data [-h] [-v] [--logfile FILE] [-V] [-c PATH]
[-d PATH] [--userdir PATH]
[-p PAIRS [PAIRS ...]] [--pairs-file FILE]
[--days INT] [--timerange TIMERANGE]
[--dl-trades] [--exchange EXCHANGE]
[-t {1m,3m,5m,15m,30m,1h,2h,4h,6h,8h,12h,1d,3d,1w,2w,1M,1y} [{1m,3m,5m,15m,30m,1h,2h,4h,6h,8h,12h,1d,3d,1w,2w,1M,1y} ...]]
[--erase]
[--data-format-ohlcv {json,jsongz,hdf5}]
[--data-format-trades {json,jsongz,hdf5}]
optional arguments:
-h, --help show this help message and exit
-p PAIRS [PAIRS ...], --pairs PAIRS [PAIRS ...]
Show profits for only these pairs. Pairs are space-
separated.
--pairs-file FILE File containing a list of pairs to download.
--days INT Download data for given number of days.
--timerange TIMERANGE
Specify what timerange of data to use.
--dl-trades Download trades instead of OHLCV data. The bot will
resample trades to the desired timeframe as specified
as --timeframes/-t.
--exchange EXCHANGE Exchange name (default: `bittrex`). Only valid if no
config is provided.
-t {1m,3m,5m,15m,30m,1h,2h,4h,6h,8h,12h,1d,3d,1w,2w,1M,1y} [{1m,3m,5m,15m,30m,1h,2h,4h,6h,8h,12h,1d,3d,1w,2w,1M,1y} ...], --timeframes {1m,3m,5m,15m,30m,1h,2h,4h,6h,8h,12h,1d,3d,1w,2w,1M,1y} [{1m,3m,5m,15m,30m,1h,2h,4h,6h,8h,12h,1d,3d,1w,2w,1M,1y} ...]
Specify which tickers to download. Space-separated
list. Default: `1m 5m`.
--erase Clean all existing data for the selected
exchange/pairs/timeframes.
--data-format-ohlcv {json,jsongz,hdf5}
Storage format for downloaded candle (OHLCV) data.
(default: `json`).
--data-format-trades {json,jsongz,hdf5}
Storage format for downloaded trades data. (default:
`jsongz`).
Common arguments:
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
--logfile FILE Log to the file specified. Special values are:
'syslog', 'journald'. See the documentation for more
details.
-V, --version show program's version number and exit
-c PATH, --config PATH
Specify configuration file (default:
`userdir/config.json` or `config.json` whichever
exists). Multiple --config options may be used. Can be
set to `-` to read config from stdin.
-d PATH, --datadir PATH
Path to directory with historical backtesting data.
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
```
!!! Note "Startup period"
`download-data` is a strategy-independent command. The idea is to download a big chunk of data once, and then iteratively increase the amount of data stored.
For that reason, `download-data` does not care about the "startup-period" defined in a strategy. It's up to the user to download additional days if the backtest should start at a specific point in time (while respecting startup period).
### Data format
Freqtrade currently supports 3 data-formats for both OHLCV and trades data:
* `json` (plain "text" json files)
* `jsongz` (a gzip-zipped version of json files)
* `hdf5` (a high performance datastore)
By default, OHLCV data is stored as `json` data, while trades data is stored as `jsongz` data.
This can be changed via the `--data-format-ohlcv` and `--data-format-trades` command line arguments respectively.
To persist this change, you can should also add the following snippet to your configuration, so you don't have to insert the above arguments each time:
``` jsonc
// ...
"dataformat_ohlcv": "hdf5",
"dataformat_trades": "hdf5",
// ...
```
If the default data-format has been changed during download, then the keys `dataformat_ohlcv` and `dataformat_trades` in the configuration file need to be adjusted to the selected dataformat as well.
!!! Note
You can convert between data-formats using the [convert-data](#sub-command-convert-data) and [convert-trade-data](#sub-command-convert-trade-data) methods.
#### Sub-command convert data
```
usage: freqtrade convert-data [-h] [-v] [--logfile FILE] [-V] [-c PATH]
[-d PATH] [--userdir PATH]
[-p PAIRS [PAIRS ...]] --format-from
{json,jsongz,hdf5} --format-to
{json,jsongz,hdf5} [--erase]
[-t {1m,3m,5m,15m,30m,1h,2h,4h,6h,8h,12h,1d,3d,1w,2w,1M,1y} [{1m,3m,5m,15m,30m,1h,2h,4h,6h,8h,12h,1d,3d,1w,2w,1M,1y} ...]]
optional arguments:
-h, --help show this help message and exit
-p PAIRS [PAIRS ...], --pairs PAIRS [PAIRS ...]
Show profits for only these pairs. Pairs are space-
separated.
--format-from {json,jsongz,hdf5}
Source format for data conversion.
--format-to {json,jsongz,hdf5}
Destination format for data conversion.
--erase Clean all existing data for the selected
exchange/pairs/timeframes.
-t {1m,3m,5m,15m,30m,1h,2h,4h,6h,8h,12h,1d,3d,1w,2w,1M,1y} [{1m,3m,5m,15m,30m,1h,2h,4h,6h,8h,12h,1d,3d,1w,2w,1M,1y} ...], --timeframes {1m,3m,5m,15m,30m,1h,2h,4h,6h,8h,12h,1d,3d,1w,2w,1M,1y} [{1m,3m,5m,15m,30m,1h,2h,4h,6h,8h,12h,1d,3d,1w,2w,1M,1y} ...]
Specify which tickers to download. Space-separated
list. Default: `1m 5m`.
Common arguments:
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
--logfile FILE Log to the file specified. Special values are:
'syslog', 'journald'. See the documentation for more
details.
-V, --version show program's version number and exit
-c PATH, --config PATH
Specify configuration file (default:
`userdir/config.json` or `config.json` whichever
exists). Multiple --config options may be used. Can be
set to `-` to read config from stdin.
-d PATH, --datadir PATH
Path to directory with historical backtesting data.
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
```
##### Example converting data
The following command will convert all candle (OHLCV) data available in `~/.freqtrade/data/binance` from json to jsongz, saving diskspace in the process.
It'll also remove original json data files (`--erase` parameter).
``` bash
freqtrade convert-data --format-from json --format-to jsongz --datadir ~/.freqtrade/data/binance -t 5m 15m --erase
```
#### Sub-command convert trade data
```
usage: freqtrade convert-trade-data [-h] [-v] [--logfile FILE] [-V] [-c PATH]
[-d PATH] [--userdir PATH]
[-p PAIRS [PAIRS ...]] --format-from
{json,jsongz,hdf5} --format-to
{json,jsongz,hdf5} [--erase]
optional arguments:
-h, --help show this help message and exit
-p PAIRS [PAIRS ...], --pairs PAIRS [PAIRS ...]
Show profits for only these pairs. Pairs are space-
separated.
--format-from {json,jsongz,hdf5}
Source format for data conversion.
--format-to {json,jsongz,hdf5}
Destination format for data conversion.
--erase Clean all existing data for the selected
exchange/pairs/timeframes.
Common arguments:
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
--logfile FILE Log to the file specified. Special values are:
'syslog', 'journald'. See the documentation for more
details.
-V, --version show program's version number and exit
-c PATH, --config PATH
Specify configuration file (default:
`userdir/config.json` or `config.json` whichever
exists). Multiple --config options may be used. Can be
set to `-` to read config from stdin.
-d PATH, --datadir PATH
Path to directory with historical backtesting data.
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
```
##### Example converting trades
The following command will convert all available trade-data in `~/.freqtrade/data/kraken` from jsongz to json.
It'll also remove original jsongz data files (`--erase` parameter).
``` bash
freqtrade convert-trade-data --format-from jsongz --format-to json --datadir ~/.freqtrade/data/kraken --erase
```
### Sub-command list-data
You can get a list of downloaded data using the `list-data` sub-command.
```
usage: freqtrade list-data [-h] [-v] [--logfile FILE] [-V] [-c PATH] [-d PATH]
[--userdir PATH] [--exchange EXCHANGE]
[--data-format-ohlcv {json,jsongz,hdf5}]
[-p PAIRS [PAIRS ...]]
optional arguments:
-h, --help show this help message and exit
--exchange EXCHANGE Exchange name (default: `bittrex`). Only valid if no
config is provided.
--data-format-ohlcv {json,jsongz,hdf5}
Storage format for downloaded candle (OHLCV) data.
(default: `json`).
-p PAIRS [PAIRS ...], --pairs PAIRS [PAIRS ...]
Show profits for only these pairs. Pairs are space-
separated.
Common arguments:
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
--logfile FILE Log to the file specified. Special values are:
'syslog', 'journald'. See the documentation for more
details.
-V, --version show program's version number and exit
-c PATH, --config PATH
Specify configuration file (default:
`userdir/config.json` or `config.json` whichever
exists). Multiple --config options may be used. Can be
set to `-` to read config from stdin.
-d PATH, --datadir PATH
Path to directory with historical backtesting data.
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
```
#### Example list-data
```bash
> freqtrade list-data --userdir ~/.freqtrade/user_data/
Found 33 pair / timeframe combinations.
pairs timeframe
---------- -----------------------------------------
ADA/BTC 5m, 15m, 30m, 1h, 2h, 4h, 6h, 12h, 1d
ADA/ETH 5m, 15m, 30m, 1h, 2h, 4h, 6h, 12h, 1d
ETH/BTC 5m, 15m, 30m, 1h, 2h, 4h, 6h, 12h, 1d
ETH/USDT 5m, 15m, 30m, 1h, 2h, 4h
```
### Pairs file
In alternative to the whitelist from `config.json`, a `pairs.json` file can be used.
If you are using Binance for example:
- create a directory `user_data/data/binance` and copy or create the `pairs.json` file in that directory.
- update the `pairs.json` file to contain the currency pairs you are interested in.
```bash
mkdir -p user_data/data/binance
cp freqtrade/tests/testdata/pairs.json user_data/data/binance
```
The format of the `pairs.json` file is a simple json list.
Mixing different stake-currencies is allowed for this file, since it's only used for downloading.
``` json
[
"ETH/BTC",
"ETH/USDT",
"BTC/USDT",
"XRP/ETH"
]
```
### Start download
Then run:
```bash
freqtrade download-data --exchange binance
```
This will download historical candle (OHLCV) data for all the currency pairs you defined in `pairs.json`.
### Other Notes
- To use a different directory than the exchange specific default, use `--datadir user_data/data/some_directory`.
- To change the exchange used to download the historical data from, please use a different configuration file (you'll probably need to adjust rate limits etc.)
- To use `pairs.json` from some other directory, use `--pairs-file some_other_dir/pairs.json`.
- To download historical candle (OHLCV) data for only 10 days, use `--days 10` (defaults to 30 days).
- To download historical candle (OHLCV) data from a fixed starting point, use `--timerange 20200101-` - which will download all data from January 1st, 2020. Eventually set end dates are ignored.
- Use `--timeframes` to specify what timeframe download the historical candle (OHLCV) data for. Default is `--timeframes 1m 5m` which will download 1-minute and 5-minute data.
- To use exchange, timeframe and list of pairs as defined in your configuration file, use the `-c/--config` option. With this, the script uses the whitelist defined in the config as the list of currency pairs to download data for and does not require the pairs.json file. You can combine `-c/--config` with most other options.
### Trades (tick) data
By default, `download-data` sub-command downloads Candles (OHLCV) data. Some exchanges also provide historic trade-data via their API.
This data can be useful if you need many different timeframes, since it is only downloaded once, and then resampled locally to the desired timeframes.
Since this data is large by default, the files use gzip by default. They are stored in your data-directory with the naming convention of `<pair>-trades.json.gz` (`ETH_BTC-trades.json.gz`). Incremental mode is also supported, as for historic OHLCV data, so downloading the data once per week with `--days 8` will create an incremental data-repository.
To use this mode, simply add `--dl-trades` to your call. This will swap the download method to download trades, and resamples the data locally.
Example call:
```bash
freqtrade download-data --exchange binance --pairs XRP/ETH ETH/BTC --days 20 --dl-trades
```
!!! Note
While this method uses async calls, it will be slow, since it requires the result of the previous call to generate the next request to the exchange.
!!! Warning
The historic trades are not available during Freqtrade dry-run and live trade modes because all exchanges tested provide this data with a delay of few 100 candles, so it's not suitable for real-time trading.
!!! Note "Kraken user"
Kraken users should read [this](exchanges.md#historic-kraken-data) before starting to download data.
## Next step
Great, you now have backtest data downloaded, so you can now start [backtesting](backtesting.md) your strategy.

35
docs/deprecated.md Normal file
View File

@@ -0,0 +1,35 @@
# Deprecated features
This page contains description of the command line arguments, configuration parameters
and the bot features that were declared as DEPRECATED by the bot development team
and are no longer supported. Please avoid their usage in your configuration.
## Removed features
### the `--refresh-pairs-cached` command line option
`--refresh-pairs-cached` in the context of backtesting, hyperopt and edge allows to refresh candle data for backtesting.
Since this leads to much confusion, and slows down backtesting (while not being part of backtesting) this has been singled out as a separate freqtrade sub-command `freqtrade download-data`.
This command line option was deprecated in 2019.7-dev (develop branch) and removed in 2019.9.
### The **--dynamic-whitelist** command line option
This command line option was deprecated in 2018 and removed freqtrade 2019.6-dev (develop branch)
and in freqtrade 2019.7.
### the `--live` command line option
`--live` in the context of backtesting allowed to download the latest tick data for backtesting.
Did only download the latest 500 candles, so was ineffective in getting good backtest data.
Removed in 2019-7-dev (develop branch) and in freqtrade 2019.8.
### Allow running multiple pairlists in sequence
The former `"pairlist"` section in the configuration has been removed, and is replaced by `"pairlists"` - being a list to specify a sequence of pairlists.
The old section of configuration parameters (`"pairlist"`) has been deprecated in 2019.11 and has been removed in 2020.4.
### deprecation of bidVolume and askVolume from volume-pairlist
Since only quoteVolume can be compared between assets, the other options (bidVolume, askVolume) have been deprecated in 2020.4, and have been removed in 2020.9.

View File

@@ -1,8 +1,8 @@
# Development Help
This page is intended for developers of FreqTrade, people who want to contribute to the FreqTrade codebase or documentation, or people who want to understand the source code of the application they're running.
This page is intended for developers of Freqtrade, people who want to contribute to the Freqtrade codebase or documentation, or people who want to understand the source code of the application they're running.
All contributions, bug reports, bug fixes, documentation improvements, enhancements and ideas are welcome. We [track issues](https://github.com/freqtrade/freqtrade/issues) on [GitHub](https://github.com) and also have a dev channel in [slack](https://join.slack.com/t/highfrequencybot/shared_invite/enQtMjQ5NTM0OTYzMzY3LWMxYzE3M2MxNDdjMGM3ZTYwNzFjMGIwZGRjNTc3ZGU3MGE3NzdmZGMwNmU3NDM5ZTNmM2Y3NjRiNzk4NmM4OGE) where you can ask questions.
All contributions, bug reports, bug fixes, documentation improvements, enhancements and ideas are welcome. We [track issues](https://github.com/freqtrade/freqtrade/issues) on [GitHub](https://github.com) and also have a dev channel on [discord](https://discord.gg/MA9v74M) or [slack](https://join.slack.com/t/highfrequencybot/shared_invite/zt-jaut7r4m-Y17k4x5mcQES9a9swKuxbg) where you can ask questions.
## Documentation
@@ -10,108 +10,305 @@ Documentation is available at [https://freqtrade.io](https://www.freqtrade.io/)
Special fields for the documentation (like Note boxes, ...) can be found [here](https://squidfunk.github.io/mkdocs-material/extensions/admonition/).
To test the documentation locally use the following commands.
``` bash
pip install -r docs/requirements-docs.txt
mkdocs serve
```
This will spin up a local server (usually on port 8000) so you can see if everything looks as you'd like it to.
## Developer setup
To configure a development environment, use best use the `setup.sh` script and answer "y" when asked "Do you want to install dependencies for dev [y/N]? ".
Alternatively (if your system is not supported by the setup.sh script), follow the manual installation process and run `pip3 install -r requirements-dev.txt`.
To configure a development environment, you can either use the provided [DevContainer](#devcontainer-setup), or use the `setup.sh` script and answer "y" when asked "Do you want to install dependencies for dev [y/N]? ".
Alternatively (e.g. if your system is not supported by the setup.sh script), follow the manual installation process and run `pip3 install -e .[all]`.
This will install all required tools for development, including `pytest`, `flake8`, `mypy`, and `coveralls`.
### Devcontainer setup
The fastest and easiest way to get started is to use [VSCode](https://code.visualstudio.com/) with the Remote container extension.
This gives developers the ability to start the bot with all required dependencies *without* needing to install any freqtrade specific dependencies on your local machine.
#### Devcontainer dependencies
* [VSCode](https://code.visualstudio.com/)
* [docker](https://docs.docker.com/install/)
* [Remote container extension documentation](https://code.visualstudio.com/docs/remote)
For more information about the [Remote container extension](https://code.visualstudio.com/docs/remote), best consult the documentation.
### Tests
New code should be covered by basic unittests. Depending on the complexity of the feature, Reviewers may request more in-depth unittests.
If necessary, the Freqtrade team can assist and give guidance with writing good tests (however please don't expect anyone to write the tests for you).
#### Checking log content in tests
Freqtrade uses 2 main methods to check log content in tests, `log_has()` and `log_has_re()` (to check using regex, in case of dynamic log-messages).
These are available from `conftest.py` and can be imported in any test module.
A sample check looks as follows:
``` python
from tests.conftest import log_has, log_has_re
def test_method_to_test(caplog):
method_to_test()
assert log_has("This event happened", caplog)
# Check regex with trailing number ...
assert log_has_re(r"This dynamic event happened and produced \d+", caplog)
```
## ErrorHandling
Freqtrade Exceptions all inherit from `FreqtradeException`.
This general class of error should however not be used directly. Instead, multiple specialized sub-Exceptions exist.
Below is an outline of exception inheritance hierarchy:
```
+ FreqtradeException
|
+---+ OperationalException
|
+---+ DependencyException
| |
| +---+ PricingError
| |
| +---+ ExchangeError
| |
| +---+ TemporaryError
| |
| +---+ DDosProtection
| |
| +---+ InvalidOrderException
| |
| +---+ RetryableOrderError
| |
| +---+ InsufficientFundsError
|
+---+ StrategyError
```
## Modules
### Dynamic Pairlist
### Pairlists
You have a great idea for a new pair selection algorithm you would like to try out? Great.
Hopefully you also want to contribute this back upstream.
Whatever your motivations are - This should get you off the ground in trying to develop a new Pairlist provider.
Whatever your motivations are - This should get you off the ground in trying to develop a new Pairlist Handler.
First of all, have a look at the [VolumePairList](https://github.com/freqtrade/freqtrade/blob/develop/freqtrade/pairlist/VolumePairList.py) provider, and best copy this file with a name of your new Pairlist Provider.
First of all, have a look at the [VolumePairList](https://github.com/freqtrade/freqtrade/blob/develop/freqtrade/pairlist/VolumePairList.py) Handler, and best copy this file with a name of your new Pairlist Handler.
This is a simple provider, which however serves as a good example on how to start developing.
This is a simple Handler, which however serves as a good example on how to start developing.
Next, modify the classname of the provider (ideally align this with the Filename).
Next, modify the class-name of the Handler (ideally align this with the module filename).
The base-class provides the an instance of the bot (`self._freqtrade`), as well as the configuration (`self._config`), and initiates both `_blacklist` and `_whitelist`.
The base-class provides an instance of the exchange (`self._exchange`) the pairlist manager (`self._pairlistmanager`), as well as the main configuration (`self._config`), the pairlist dedicated configuration (`self._pairlistconfig`) and the absolute position within the list of pairlists.
```python
self._freqtrade = freqtrade
self._exchange = exchange
self._pairlistmanager = pairlistmanager
self._config = config
self._whitelist = self._config['exchange']['pair_whitelist']
self._blacklist = self._config['exchange'].get('pair_blacklist', [])
self._pairlistconfig = pairlistconfig
self._pairlist_pos = pairlist_pos
```
Now, let's step through the methods which require actions:
#### configuration
#### Pairlist configuration
Configuration for PairListProvider is done in the bot configuration file in the element `"pairlist"`.
This Pairlist-object may contain a `"config"` dict with additional configurations for the configured pairlist.
By convention, `"number_assets"` is used to specify the maximum number of pairs to keep in the whitelist. Please follow this to ensure a consistent user experience.
Configuration for the chain of Pairlist Handlers is done in the bot configuration file in the element `"pairlists"`, an array of configuration parameters for each Pairlist Handlers in the chain.
Additional elements can be configured as needed. `VolumePairList` uses `"sort_key"` to specify the sorting value - however feel free to specify whatever is necessary for your great algorithm to be successfull and dynamic.
By convention, `"number_assets"` is used to specify the maximum number of pairs to keep in the pairlist. Please follow this to ensure a consistent user experience.
Additional parameters can be configured as needed. For instance, `VolumePairList` uses `"sort_key"` to specify the sorting value - however feel free to specify whatever is necessary for your great algorithm to be successful and dynamic.
#### short_desc
Returns a description used for Telegram messages.
This should contain the name of the Provider, as well as a short description containing the number of assets. Please follow the format `"PairlistName - top/bottom X pairs"`.
#### refresh_pairlist
This should contain the name of the Pairlist Handler, as well as a short description containing the number of assets. Please follow the format `"PairlistName - top/bottom X pairs"`.
#### gen_pairlist
Override this method if the Pairlist Handler can be used as the leading Pairlist Handler in the chain, defining the initial pairlist which is then handled by all Pairlist Handlers in the chain. Examples are `StaticPairList` and `VolumePairList`.
This is called with each iteration of the bot (only if the Pairlist Handler is at the first location) - so consider implementing caching for compute/network heavy calculations.
It must return the resulting pairlist (which may then be passed into the chain of Pairlist Handlers).
Validations are optional, the parent class exposes a `_verify_blacklist(pairlist)` and `_whitelist_for_active_markets(pairlist)` to do default filtering. Use this if you limit your result to a certain number of pairs - so the end-result is not shorter than expected.
#### filter_pairlist
This method is called for each Pairlist Handler in the chain by the pairlist manager.
Override this method and run all calculations needed in this method.
This is called with each iteration of the bot - so consider implementing caching for compute/network heavy calculations.
Assign the resulting whiteslist to `self._whitelist` and `self._blacklist` respectively. These will then be used to run the bot in this iteration. Pairs with open trades will be added to the whitelist to have the sell-methods run correctly.
It gets passed a pairlist (which can be the result of previous pairlists) as well as `tickers`, a pre-fetched version of `get_tickers()`.
Please also run `self._validate_whitelist(pairs)` and to check and remove pairs with inactive markets. This function is available in the Parent class (`StaticPairList`) and should ideally not be overwritten.
The default implementation in the base class simply calls the `_validate_pair()` method for each pair in the pairlist, but you may override it. So you should either implement the `_validate_pair()` in your Pairlist Handler or override `filter_pairlist()` to do something else.
If overridden, it must return the resulting pairlist (which may then be passed into the next Pairlist Handler in the chain).
Validations are optional, the parent class exposes a `_verify_blacklist(pairlist)` and `_whitelist_for_active_markets(pairlist)` to do default filters. Use this if you limit your result to a certain number of pairs - so the end result is not shorter than expected.
In `VolumePairList`, this implements different methods of sorting, does early validation so only the expected number of pairs is returned.
##### sample
``` python
def refresh_pairlist(self) -> None:
def filter_pairlist(self, pairlist: List[str], tickers: Dict) -> List[str]:
# Generate dynamic whitelist
pairs = self._gen_pair_whitelist(self._config['stake_currency'], self._sort_key)
# Validate whitelist to only have active market pairs
self._whitelist = self._validate_whitelist(pairs)[:self._number_pairs]
pairs = self._calculate_pairlist(pairlist, tickers)
return pairs
```
#### _gen_pair_whitelist
## Implement a new Exchange (WIP)
This is a simple method used by `VolumePairList` - however serves as a good example.
It implements caching (`@cached(TTLCache(maxsize=1, ttl=1800))`) as well as a configuration option to allow different (but similar) strategies to work with the same PairListProvider.
!!! Note
This section is a Work in Progress and is not a complete guide on how to test a new exchange with Freqtrade.
Most exchanges supported by CCXT should work out of the box.
### Stoploss On Exchange
Check if the new exchange supports Stoploss on Exchange orders through their API.
Since CCXT does not provide unification for Stoploss On Exchange yet, we'll need to implement the exchange-specific parameters ourselves. Best look at `binance.py` for an example implementation of this. You'll need to dig through the documentation of the Exchange's API on how exactly this can be done. [CCXT Issues](https://github.com/ccxt/ccxt/issues) may also provide great help, since others may have implemented something similar for their projects.
### Incomplete candles
While fetching candle (OHLCV) data, we may end up getting incomplete candles (depending on the exchange).
To demonstrate this, we'll use daily candles (`"1d"`) to keep things simple.
We query the api (`ct.fetch_ohlcv()`) for the timeframe and look at the date of the last entry. If this entry changes or shows the date of a "incomplete" candle, then we should drop this since having incomplete candles is problematic because indicators assume that only complete candles are passed to them, and will generate a lot of false buy signals. By default, we're therefore removing the last candle assuming it's incomplete.
To check how the new exchange behaves, you can use the following snippet:
``` python
import ccxt
from datetime import datetime
from freqtrade.data.converter import ohlcv_to_dataframe
ct = ccxt.binance()
timeframe = "1d"
pair = "XLM/BTC" # Make sure to use a pair that exists on that exchange!
raw = ct.fetch_ohlcv(pair, timeframe=timeframe)
# convert to dataframe
df1 = ohlcv_to_dataframe(raw, timeframe, pair=pair, drop_incomplete=False)
print(df1.tail(1))
print(datetime.utcnow())
```
``` output
date open high low close volume
499 2019-06-08 00:00:00+00:00 0.000007 0.000007 0.000007 0.000007 26264344.0
2019-06-09 12:30:27.873327
```
The output will show the last entry from the Exchange as well as the current UTC date.
If the day shows the same day, then the last candle can be assumed as incomplete and should be dropped (leave the setting `"ohlcv_partial_candle"` from the exchange-class untouched / True). Otherwise, set `"ohlcv_partial_candle"` to `False` to not drop Candles (shown in the example above).
Another way is to run this command multiple times in a row and observe if the volume is changing (while the date remains the same).
## Updating example notebooks
To keep the jupyter notebooks aligned with the documentation, the following should be ran after updating a example notebook.
``` bash
jupyter nbconvert --ClearOutputPreprocessor.enabled=True --inplace freqtrade/templates/strategy_analysis_example.ipynb
jupyter nbconvert --ClearOutputPreprocessor.enabled=True --to markdown freqtrade/templates/strategy_analysis_example.ipynb --stdout > docs/strategy_analysis_example.md
```
## Continuous integration
This documents some decisions taken for the CI Pipeline.
* CI runs on all OS variants, Linux (ubuntu), macOS and Windows.
* Docker images are build for the branches `stable` and `develop`.
* Docker images containing Plot dependencies are also available as `stable_plot` and `develop_plot`.
* Raspberry PI Docker images are postfixed with `_pi` - so tags will be `:stable_pi` and `develop_pi`.
* Docker images contain a file, `/freqtrade/freqtrade_commit` containing the commit this image is based of.
* Full docker image rebuilds are run once a week via schedule.
* Deployments run on ubuntu.
* ta-lib binaries are contained in the build_helpers directory to avoid fails related to external unavailability.
* All tests must pass for a PR to be merged to `stable` or `develop`.
## Creating a release
This part of the documentation is aimed at maintainers, and shows how to create a release.
### create release branch
### Create release branch
First, pick a commit that's about one week old (to not include latest additions to releases).
``` bash
# make sure you're in develop branch
git checkout develop
# create new branch
git checkout -b new_release
git checkout -b new_release <commitid>
```
* edit `freqtrade/__init__.py` and add the desired version (for example `0.18.0`)
* Commit this part
* push that branch to the remote and create a PR
Determine if crucial bugfixes have been made between this commit and the current state, and eventually cherry-pick these.
### create changelog from git commits
* Merge the release branch (stable) into this branch.
* Edit `freqtrade/__init__.py` and add the version matching the current date (for example `2019.7` for July 2019). Minor versions can be `2019.7.1` should we need to do a second release that month. Version numbers must follow allowed versions from PEP0440 to avoid failures pushing to pypi.
* Commit this part
* push that branch to the remote and create a PR against the stable branch
### Create changelog from git commits
!!! Note
Make sure that the `stable` branch is up-to-date!
``` bash
# Needs to be done before merging / pulling that branch.
git log --oneline --no-decorate --no-merges master..develop
git log --oneline --no-decorate --no-merges stable..new_release
```
To keep the release-log short, best wrap the full git changelog into a collapsible details section.
```markdown
<details>
<summary>Expand full changelog</summary>
... Full git changelog
</details>
```
### Create github release / tag
* Use the version-number specified as tag.
* Use "master" as reference (this step comes after the above PR is merged).
* use the above changelog as release comment (as codeblock)
Once the PR against stable is merged (best right after merging):
### After-release
* Use the button "Draft a new release" in the Github UI (subsection releases).
* Use the version-number specified as tag.
* Use "stable" as reference (this step comes after the above PR is merged).
* Use the above changelog as release comment (as codeblock)
* update version in develop to next valid version and postfix that with `-dev` (`0.18.0 -> 0.18.1-dev`)
## Releases
### pypi
!!! Note
This process is now automated as part of Github Actions.
To create a pypi release, please run the following commands:
Additional requirement: `wheel`, `twine` (for uploading), account on pypi with proper permissions.
``` bash
python setup.py sdist bdist_wheel
# For pypi test (to check if some change to the installation did work)
twine upload --repository-url https://test.pypi.org/legacy/ dist/*
# For production:
twine upload dist/*
```
Please don't push non-releases to the productive / real pypi instance.

201
docs/docker.md Normal file
View File

@@ -0,0 +1,201 @@
## Freqtrade with docker without docker-compose
!!! Warning
The below documentation is provided for completeness and assumes that you are familiar with running docker containers. If you're just starting out with Docker, we recommend to follow the [Quickstart](docker.md) instructions.
### Download the official Freqtrade docker image
Pull the image from docker hub.
Branches / tags available can be checked out on [Dockerhub tags page](https://hub.docker.com/r/freqtradeorg/freqtrade/tags/).
```bash
docker pull freqtradeorg/freqtrade:stable
# Optionally tag the repository so the run-commands remain shorter
docker tag freqtradeorg/freqtrade:stable freqtrade
```
To update the image, simply run the above commands again and restart your running container.
Should you require additional libraries, please [build the image yourself](#build-your-own-docker-image).
!!! Note "Docker image update frequency"
The official docker images with tags `stable`, `develop` and `latest` are automatically rebuild once a week to keep the base image up-to-date.
In addition to that, every merge to `develop` will trigger a rebuild for `develop` and `latest`.
### Prepare the configuration files
Even though you will use docker, you'll still need some files from the github repository.
#### Clone the git repository
Linux/Mac/Windows with WSL
```bash
git clone https://github.com/freqtrade/freqtrade.git
```
Windows with docker
```bash
git clone --config core.autocrlf=input https://github.com/freqtrade/freqtrade.git
```
#### Copy `config.json.example` to `config.json`
```bash
cd freqtrade
cp -n config.json.example config.json
```
> To understand the configuration options, please refer to the [Bot Configuration](configuration.md) page.
#### Create your database file
=== "Dry-Run"
``` bash
touch tradesv3.dryrun.sqlite
```
=== "Production"
``` bash
touch tradesv3.sqlite
```
!!! Warning "Database File Path"
Make sure to use the path to the correct database file when starting the bot in Docker.
### Build your own Docker image
Best start by pulling the official docker image from dockerhub as explained [here](#download-the-official-docker-image) to speed up building.
To add additional libraries to your docker image, best check out [Dockerfile.technical](https://github.com/freqtrade/freqtrade/blob/develop/docker/Dockerfile.technical) which adds the [technical](https://github.com/freqtrade/technical) module to the image.
```bash
docker build -t freqtrade -f docker/Dockerfile.technical .
```
If you are developing using Docker, use `docker/Dockerfile.develop` to build a dev Docker image, which will also set up develop dependencies:
```bash
docker build -f docker/Dockerfile.develop -t freqtrade-dev .
```
!!! Warning "Include your config file manually"
For security reasons, your configuration file will not be included in the image, you will need to bind mount it. It is also advised to bind mount an SQLite database file (see [5. Run a restartable docker image](#run-a-restartable-docker-image)") to keep it between updates.
#### Verify the Docker image
After the build process you can verify that the image was created with:
```bash
docker images
```
The output should contain the freqtrade image.
### Run the Docker image
You can run a one-off container that is immediately deleted upon exiting with the following command (`config.json` must be in the current working directory):
```bash
docker run --rm -v `pwd`/config.json:/freqtrade/config.json -it freqtrade
```
!!! Warning
In this example, the database will be created inside the docker instance and will be lost when you refresh your image.
#### Adjust timezone
By default, the container will use UTC timezone.
If you would like to change the timezone use the following commands:
=== "Linux"
``` bash
-v /etc/timezone:/etc/timezone:ro
# Complete command:
docker run --rm -v /etc/timezone:/etc/timezone:ro -v `pwd`/config.json:/freqtrade/config.json -it freqtrade
```
=== "MacOS"
```bash
docker run --rm -e TZ=`ls -la /etc/localtime | cut -d/ -f8-9` -v `pwd`/config.json:/freqtrade/config.json -it freqtrade
```
!!! Note "MacOS Issues"
The OSX Docker versions after 17.09.1 have a known issue whereby `/etc/localtime` cannot be shared causing Docker to not start.<br>
A work-around for this is to start with the MacOS command above
More information on this docker issue and work-around can be read [here](https://github.com/docker/for-mac/issues/2396).
### Run a restartable docker image
To run a restartable instance in the background (feel free to place your configuration and database files wherever it feels comfortable on your filesystem).
#### 1. Move your config file and database
The following will assume that you place your configuration / database files to `~/.freqtrade`, which is a hidden directory in your home directory. Feel free to use a different directory and replace the directory in the upcomming commands.
```bash
mkdir ~/.freqtrade
mv config.json ~/.freqtrade
mv tradesv3.sqlite ~/.freqtrade
```
#### 2. Run the docker image
```bash
docker run -d \
--name freqtrade \
-v ~/.freqtrade/config.json:/freqtrade/config.json \
-v ~/.freqtrade/user_data/:/freqtrade/user_data \
-v ~/.freqtrade/tradesv3.sqlite:/freqtrade/tradesv3.sqlite \
freqtrade trade --db-url sqlite:///tradesv3.sqlite --strategy MyAwesomeStrategy
```
!!! Note
When using docker, it's best to specify `--db-url` explicitly to ensure that the database URL and the mounted database file match.
!!! Note
All available bot command line parameters can be added to the end of the `docker run` command.
!!! Note
You can define a [restart policy](https://docs.docker.com/config/containers/start-containers-automatically/) in docker. It can be useful in some cases to use the `--restart unless-stopped` flag (crash of freqtrade or reboot of your system).
### Monitor your Docker instance
You can use the following commands to monitor and manage your container:
```bash
docker logs freqtrade
docker logs -f freqtrade
docker restart freqtrade
docker stop freqtrade
docker start freqtrade
```
For more information on how to operate Docker, please refer to the [official Docker documentation](https://docs.docker.com/).
!!! Note
You do not need to rebuild the image for configuration changes, it will suffice to edit `config.json` and restart the container.
### Backtest with docker
The following assumes that the download/setup of the docker image have been completed successfully.
Also, backtest-data should be available at `~/.freqtrade/user_data/`.
```bash
docker run -d \
--name freqtrade \
-v /etc/localtime:/etc/localtime:ro \
-v ~/.freqtrade/config.json:/freqtrade/config.json \
-v ~/.freqtrade/tradesv3.sqlite:/freqtrade/tradesv3.sqlite \
-v ~/.freqtrade/user_data/:/freqtrade/user_data/ \
freqtrade backtesting --strategy AwsomelyProfitableStrategy
```
Head over to the [Backtesting Documentation](backtesting.md) for more details.
!!! Note
Additional bot command line parameters can be appended after the image name (`freqtrade` in the above example).

191
docs/docker_quickstart.md Normal file
View File

@@ -0,0 +1,191 @@
# Using Freqtrade with Docker
## Install Docker
Start by downloading and installing Docker CE for your platform:
* [Mac](https://docs.docker.com/docker-for-mac/install/)
* [Windows](https://docs.docker.com/docker-for-windows/install/)
* [Linux](https://docs.docker.com/install/)
Optionally, [`docker-compose`](https://docs.docker.com/compose/install/) should be installed and available to follow the [docker quick start guide](#docker-quick-start).
Once you have Docker installed, simply prepare the config file (e.g. `config.json`) and run the image for `freqtrade` as explained below.
## Freqtrade with docker-compose
Freqtrade provides an official Docker image on [Dockerhub](https://hub.docker.com/r/freqtradeorg/freqtrade/), as well as a [docker-compose file](https://github.com/freqtrade/freqtrade/blob/develop/docker-compose.yml) ready for usage.
!!! Note
- The following section assumes that `docker` and `docker-compose` are installed and available to the logged in user.
- All below commands use relative directories and will have to be executed from the directory containing the `docker-compose.yml` file.
### Docker quick start
Create a new directory and place the [docker-compose file](https://github.com/freqtrade/freqtrade/blob/develop/docker-compose.yml) in this directory.
=== "PC/MAC/Linux"
``` bash
mkdir ft_userdata
cd ft_userdata/
# Download the docker-compose file from the repository
curl https://raw.githubusercontent.com/freqtrade/freqtrade/stable/docker-compose.yml -o docker-compose.yml
# Pull the freqtrade image
docker-compose pull
# Create user directory structure
docker-compose run --rm freqtrade create-userdir --userdir user_data
# Create configuration - Requires answering interactive questions
docker-compose run --rm freqtrade new-config --config user_data/config.json
```
=== "RaspberryPi"
``` bash
mkdir ft_userdata
cd ft_userdata/
# Download the docker-compose file from the repository
curl https://raw.githubusercontent.com/freqtrade/freqtrade/stable/docker-compose.yml -o docker-compose.yml
# Pull the freqtrade image
docker-compose pull
# Create user directory structure
docker-compose run --rm freqtrade create-userdir --userdir user_data
# Create configuration - Requires answering interactive questions
docker-compose run --rm freqtrade new-config --config user_data/config.json
```
!!! Note "Change your docker Image"
You have to change the docker image in the docker-compose file for your Raspberry build to work properly.
``` yml
image: freqtradeorg/freqtrade:stable_pi
# image: freqtradeorg/freqtrade:develop_pi
```
The above snippet creates a new directory called `ft_userdata`, downloads the latest compose file and pulls the freqtrade image.
The last 2 steps in the snippet create the directory with `user_data`, as well as (interactively) the default configuration based on your selections.
!!! Question "How to edit the bot configuration?"
You can edit the configuration at any time, which is available as `user_data/config.json` (within the directory `ft_userdata`) when using the above configuration.
You can also change the both Strategy and commands by editing the `docker-compose.yml` file.
#### Adding a custom strategy
1. The configuration is now available as `user_data/config.json`
2. Copy a custom strategy to the directory `user_data/strategies/`
3. add the Strategy' class name to the `docker-compose.yml` file
The `SampleStrategy` is run by default.
!!! Warning "`SampleStrategy` is just a demo!"
The `SampleStrategy` is there for your reference and give you ideas for your own strategy.
Please always backtest the strategy and use dry-run for some time before risking real money!
Once this is done, you're ready to launch the bot in trading mode (Dry-run or Live-trading, depending on your answer to the corresponding question you made above).
``` bash
docker-compose up -d
```
#### Docker-compose logs
Logs will be located at: `user_data/logs/freqtrade.log`.
You can check the latest log with the command `docker-compose logs -f`.
#### Database
The database will be at: `user_data/tradesv3.sqlite`
#### Updating freqtrade with docker-compose
To update freqtrade when using `docker-compose` is as simple as running the following 2 commands:
``` bash
# Download the latest image
docker-compose pull
# Restart the image
docker-compose up -d
```
This will first pull the latest image, and will then restart the container with the just pulled version.
!!! Warning "Check the Changelog"
You should always check the changelog for breaking changes / manual interventions required and make sure the bot starts correctly after the update.
### Editing the docker-compose file
Advanced users may edit the docker-compose file further to include all possible options or arguments.
All possible freqtrade arguments will be available by running `docker-compose run --rm freqtrade <command> <optional arguments>`.
!!! Note "`docker-compose run --rm`"
Including `--rm` will clean up the container after completion, and is highly recommended for all modes except trading mode (running with `freqtrade trade` command).
#### Example: Download data with docker-compose
Download backtesting data for 5 days for the pair ETH/BTC and 1h timeframe from Binance. The data will be stored in the directory `user_data/data/` on the host.
``` bash
docker-compose run --rm freqtrade download-data --pairs ETH/BTC --exchange binance --days 5 -t 1h
```
Head over to the [Data Downloading Documentation](data-download.md) for more details on downloading data.
#### Example: Backtest with docker-compose
Run backtesting in docker-containers for SampleStrategy and specified timerange of historical data, on 5m timeframe:
``` bash
docker-compose run --rm freqtrade backtesting --config user_data/config.json --strategy SampleStrategy --timerange 20190801-20191001 -i 5m
```
Head over to the [Backtesting Documentation](backtesting.md) to learn more.
### Additional dependencies with docker-compose
If your strategy requires dependencies not included in the default image (like [technical](https://github.com/freqtrade/technical)) - it will be necessary to build the image on your host.
For this, please create a Dockerfile containing installation steps for the additional dependencies (have a look at [docker/Dockerfile.technical](https://github.com/freqtrade/freqtrade/blob/develop/docker/Dockerfile.technical) for an example).
You'll then also need to modify the `docker-compose.yml` file and uncomment the build step, as well as rename the image to avoid naming collisions.
``` yaml
image: freqtrade_custom
build:
context: .
dockerfile: "./Dockerfile.<yourextension>"
```
You can then run `docker-compose build` to build the docker image, and run it using the commands described above.
## Plotting with docker-compose
Commands `freqtrade plot-profit` and `freqtrade plot-dataframe` ([Documentation](plotting.md)) are available by changing the image to `*_plot` in your docker-compose.yml file.
You can then use these commands as follows:
``` bash
docker-compose run --rm freqtrade plot-dataframe --strategy AwesomeStrategy -p BTC/ETH --timerange=20180801-20180805
```
The output will be stored in the `user_data/plot` directory, and can be opened with any modern browser.
## Data analayis using docker compose
Freqtrade provides a docker-compose file which starts up a jupyter lab server.
You can run this server using the following command:
``` bash
docker-compose --rm -f docker/docker-compose-jupyter.yml up
```
This will create a dockercontainer running jupyter lab, which will be accessible using `https://127.0.0.1:8888/lab`.
Please use the link that's printed in the console after startup for simplified login.
Since part of this image is built on your machine, it is recommended to rebuild the image from time to time to keep freqtrade (and dependencies) uptodate.
``` bash
docker-compose -f docker/docker-compose-jupyter.yml build --no-cache
```

View File

@@ -1,212 +1,291 @@
# Edge positioning
# Edge positioning
This page explains how to use Edge Positioning module in your bot in order to enter into a trade only if the trade has a reasonable win rate and risk reward ratio, and consequently adjust your position size and stoploss.
The `Edge Positioning` module uses probability to calculate your win rate and risk reward ration. It will use these statistics to control your strategy trade entry points, position side and, stoploss.
!!! Warning
Edge positioning is not compatible with dynamic whitelist. it overrides dynamic whitelist.
`Edge positioning` is not compatible with dynamic (volume-based) whitelist.
!!! Note
Edge won't consider anything else than buy/sell/stoploss signals. So trailing stoploss, ROI, and everything else will be ignored in its calculation.
`Edge Positioning` only considers *its own* buy/sell/stoploss signals. It ignores the stoploss, trailing stoploss, and ROI settings in the strategy configuration file.
`Edge Positioning` improves the performance of some trading strategies and *decreases* the performance of others.
## Introduction
Trading is all about probability. No one can claim that he has a strategy working all the time. You have to assume that sometimes you lose.<br/><br/>
But it doesn't mean there is no rule, it only means rules should work "most of the time". Let's play a game: we toss a coin, heads: I give you 10$, tails: You give me 10$. Is it an interesting game ? no, it is quite boring, isn't it?<br/><br/>
But let's say the probability that we have heads is 80%, and the probability that we have tails is 20%. Now it is becoming interesting ...
That means 10$ x 80% versus 10$ x 20%. 8$ versus 2$. That means over time you will win 8$ risking only 2$ on each toss of coin.<br/><br/>
Let's complicate it more: you win 80% of the time but only 2$, I win 20% of the time but 8$. The calculation is: 80% * 2$ versus 20% * 8$. It is becoming boring again because overtime you win $1.6$ (80% x 2$) and me $1.6 (20% * 8$) too.<br/><br/>
The question is: How do you calculate that? how do you know if you wanna play?
The answer comes to two factors:
- Win Rate
- Risk Reward Ratio
Trading strategies are not perfect. They are frameworks that are susceptible to the market and its indicators. Because the market is not at all predictable, sometimes a strategy will win and sometimes the same strategy will lose.
### Win Rate
Means over X trades what is the percentage of winning trades to total number of trades (note that we don't consider how much you gained but only If you won or not).
To obtain an edge in the market, a strategy has to make more money than it loses. Making money in trading is not only about *how often* the strategy makes or loses money.
!!! tip "It doesn't matter how often, but how much!"
A bad strategy might make 1 penny in *ten* transactions but lose 1 dollar in *one* transaction. If one only checks the number of winning trades, it would be misleading to think that the strategy is actually making a profit.
`W = (Number of winning trades) / (Total number of trades)`
The Edge Positioning module seeks to improve a strategy's winning probability and the money that the strategy will make *on the long run*.
We raise the following question[^1]:
!!! Question "Which trade is a better option?"
a) A trade with 80% of chance of losing $100 and 20% chance of winning $200<br/>
b) A trade with 100% of chance of losing $30
???+ Info "Answer"
The expected value of *a)* is smaller than the expected value of *b)*.<br/>
Hence, *b*) represents a smaller loss in the long run.<br/>
However, the answer is: *it depends*
Another way to look at it is to ask a similar question:
!!! Question "Which trade is a better option?"
a) A trade with 80% of chance of winning 100 and 20% chance of losing $200<br/>
b) A trade with 100% of chance of winning $30
Edge positioning tries to answer the hard questions about risk/reward and position size automatically, seeking to minimizes the chances of losing of a given strategy.
### Trading, winning and losing
Let's call $o$ the return of a single transaction $o$ where $o \in \mathbb{R}$. The collection $O = \{o_1, o_2, ..., o_N\}$ is the set of all returns of transactions made during a trading session. We say that $N$ is the cardinality of $O$, or, in lay terms, it is the number of transactions made in a trading session.
!!! Example
In a session where a strategy made three transactions we can say that $O = \{3.5, -1, 15\}$. That means that $N = 3$ and $o_1 = 3.5$, $o_2 = -1$, $o_3 = 15$.
A winning trade is a trade where a strategy *made* money. Making money means that the strategy closed the position in a value that returned a profit, after all deducted fees. Formally, a winning trade will have a return $o_i > 0$. Similarly, a losing trade will have a return $o_j \leq 0$. With that, we can discover the set of all winning trades, $T_{win}$, as follows:
$$ T_{win} = \{ o \in O | o > 0 \} $$
Similarly, we can discover the set of losing trades $T_{lose}$ as follows:
$$ T_{lose} = \{o \in O | o \leq 0\} $$
!!! Example
In a section where a strategy made three transactions $O = \{3.5, -1, 15, 0\}$:<br>
$T_{win} = \{3.5, 15\}$<br>
$T_{lose} = \{-1, 0\}$<br>
### Win Rate and Lose Rate
The win rate $W$ is the proportion of winning trades with respect to all the trades made by a strategy. We use the following function to compute the win rate:
$$W = \frac{|T_{win}|}{N}$$
Where $W$ is the win rate, $N$ is the number of trades and, $T_{win}$ is the set of all trades where the strategy made money.
Similarly, we can compute the rate of losing trades:
$$
L = \frac{|T_{lose}|}{N}
$$
Where $L$ is the lose rate, $N$ is the amount of trades made and, $T_{lose}$ is the set of all trades where the strategy lost money. Note that the above formula is the same as calculating $L = 1 W$ or $W = 1 L$
### Risk Reward Ratio
Risk Reward Ratio is a formula used to measure the expected gains of a given investment against the risk of loss. It is basically what you potentially win divided by what you potentially lose:
`R = Profit / Loss`
Risk Reward Ratio ($R$) is a formula used to measure the expected gains of a given investment against the risk of loss. It is basically what you potentially win divided by what you potentially lose. Formally:
Over time, on many trades, you can calculate your risk reward by dividing your average profit on winning trades by your average loss on losing trades:
$$ R = \frac{\text{potential_profit}}{\text{potential_loss}} $$
`Average profit = (Sum of profits) / (Number of winning trades)`
???+ Example "Worked example of $R$ calculation"
Let's say that you think that the price of *stonecoin* today is $10.0. You believe that, because they will start mining stonecoin, it will go up to $15.0 tomorrow. There is the risk that the stone is too hard, and the GPUs can't mine it, so the price might go to $0 tomorrow. You are planning to invest $100, which will give you 10 shares (100 / 10).
`Average loss = (Sum of losses) / (Number of losing trades)`
Your potential profit is calculated as:
`R = (Average profit) / (Average loss)`
$\begin{aligned}
\text{potential_profit} &= (\text{potential_price} - \text{entry_price}) * \frac{\text{investment}}{\text{entry_price}} \\
&= (15 - 10) * (100 / 10) \\
&= 50
\end{aligned}$
Since the price might go to $0, the $100 dollars invested could turn into 0.
We do however use a stoploss of 15% - so in the worst case, we'll sell 15% below entry price (or at 8.5$).
$\begin{aligned}
\text{potential_loss} &= (\text{entry_price} - \text{stoploss}) * \frac{\text{investment}}{\text{entry_price}} \\
&= (10 - 8.5) * (100 / 10)\\
&= 15
\end{aligned}$
We can compute the Risk Reward Ratio as follows:
$\begin{aligned}
R &= \frac{\text{potential_profit}}{\text{potential_loss}}\\
&= \frac{50}{15}\\
&= 3.33
\end{aligned}$<br>
What it effectively means is that the strategy have the potential to make 3.33$ for each $1 invested.
On a long horizon, that is, on many trades, we can calculate the risk reward by dividing the strategy' average profit on winning trades by the strategy' average loss on losing trades. We can calculate the average profit, $\mu_{win}$, as follows:
$$ \text{average_profit} = \mu_{win} = \frac{\text{sum_of_profits}}{\text{count_winning_trades}} = \frac{\sum^{o \in T_{win}} o}{|T_{win}|} $$
Similarly, we can calculate the average loss, $\mu_{lose}$, as follows:
$$ \text{average_loss} = \mu_{lose} = \frac{\text{sum_of_losses}}{\text{count_losing_trades}} = \frac{\sum^{o \in T_{lose}} o}{|T_{lose}|} $$
Finally, we can calculate the Risk Reward ratio, $R$, as follows:
$$ R = \frac{\text{average_profit}}{\text{average_loss}} = \frac{\mu_{win}}{\mu_{lose}}\\ $$
???+ Example "Worked example of $R$ calculation using mean profit/loss"
Let's say the strategy that we are using makes an average win $\mu_{win} = 2.06$ and an average loss $\mu_{loss} = 4.11$.<br>
We calculate the risk reward ratio as follows:<br>
$R = \frac{\mu_{win}}{\mu_{loss}} = \frac{2.06}{4.11} = 0.5012...$
### Expectancy
At this point we can combine W and R to create an expectancy ratio. This is a simple process of multiplying the risk reward ratio by the percentage of winning trades, and subtracting the percentage of losing trades, which is calculated as follows:
By combining the Win Rate $W$ and and the Risk Reward ratio $R$ to create an expectancy ratio $E$. A expectance ratio is the expected return of the investment made in a trade. We can compute the value of $E$ as follows:
Expectancy Ratio = (Risk Reward Ratio x Win Rate) Loss Rate
$$E = R * W - L$$
So lets say your Win rate is 28% and your Risk Reward Ratio is 5:
!!! Example "Calculating $E$"
Let's say that a strategy has a win rate $W = 0.28$ and a risk reward ratio $R = 5$. What this means is that the strategy is expected to make 5 times the investment around on 28% of the trades it makes. Working out the example:<br>
$E = R * W - L = 5 * 0.28 - 0.72 = 0.68$
<br>
`Expectancy = (5 * 0.28) - 0.72 = 0.68`
The expectancy worked out in the example above means that, on average, this strategy' trades will return 1.68 times the size of its losses. Said another way, the strategy makes $1.68 for every $1 it loses, on average.
Superficially, this means that on average you expect this strategys trades to return .68 times the size of your losers. This is important for two reasons: First, it may seem obvious, but you know right away that you have a positive return. Second, you now have a number you can compare to other candidate systems to make decisions about which ones you employ.
This is important for two reasons: First, it may seem obvious, but you know right away that you have a positive return. Second, you now have a number you can compare to other candidate systems to make decisions about which ones you employ.
It is important to remember that any system with an expectancy greater than 0 is profitable using past data. The key is finding one that will be profitable in the future.
You can also use this number to evaluate the effectiveness of modifications to this system.
You can also use this value to evaluate the effectiveness of modifications to this system.
**NOTICE:** It's important to keep in mind that Edge is testing your expectancy using historical data , there's no guarantee that you will have a similar edge in the future. It's still vital to do this testing in order to build confidence in your methodology, but be wary of "curve-fitting" your approach to the historical data as things are unlikely to play out the exact same way for future trades.
!!! Note
It's important to keep in mind that Edge is testing your expectancy using historical data, there's no guarantee that you will have a similar edge in the future. It's still vital to do this testing in order to build confidence in your methodology but be wary of "curve-fitting" your approach to the historical data as things are unlikely to play out the exact same way for future trades.
## How does it work?
If enabled in config, Edge will go through historical data with a range of stoplosses in order to find buy and sell/stoploss signals. It then calculates win rate and expectancy over X trades for each stoploss. Here is an example:
Edge combines dynamic stoploss, dynamic positions, and whitelist generation into one isolated module which is then applied to the trading strategy. If enabled in config, Edge will go through historical data with a range of stoplosses in order to find buy and sell/stoploss signals. It then calculates win rate and expectancy over *N* trades for each stoploss. Here is an example:
| Pair | Stoploss | Win Rate | Risk Reward Ratio | Expectancy |
|----------|:-------------:|-------------:|------------------:|-----------:|
| XZC/ETH | -0.03 | 0.52 |1.359670 | 0.228 |
| XZC/ETH | -0.01 | 0.50 |1.176384 | 0.088 |
| XZC/ETH | -0.02 | 0.51 |1.115941 | 0.079 |
| XZC/ETH | -0.03 | 0.52 |1.359670 | 0.228 |
| XZC/ETH | -0.04 | 0.51 |1.234539 | 0.117 |
The goal here is to find the best stoploss for the strategy in order to have the maximum expectancy. In the above example stoploss at 3% leads to the maximum expectancy according to historical data.
The goal here is to find the best stoploss for the strategy in order to have the maximum expectancy. In the above example stoploss at $3%$ leads to the maximum expectancy according to historical data.
Edge then forces stoploss to your strategy dynamically.
Edge module then forces stoploss value it evaluated to your strategy dynamically.
### Position size
Edge dictates the stake amount for each trade to the bot according to the following factors:
Edge dictates the amount at stake for each trade to the bot according to the following factors:
- Allowed capital at risk
- Stoploss
Allowed capital at risk is calculated as follows:
**allowed capital at risk** = **capital_available_percentage** X **allowed risk per trade**
```
Allowed capital at risk = (Capital available_percentage) X (Allowed risk per trade)
```
**Stoploss** is calculated as described above against historical data.
Stoploss is calculated as described above with respect to historical data.
Your position size then will be:
The position size is calculated as follows:
**position size** = **allowed capital at risk** / **stoploss**
```
Position size = (Allowed capital at risk) / Stoploss
```
Example:<br/>
Let's say the stake currency is ETH and you have 10 ETH on the exchange, your **capital_available_percentage** is 50% and you would allow 1% of risk for each trade. thus your available capital for trading is **10 x 0.5 = 5 ETH** and allowed capital at risk would be **5 x 0.01 = 0.05 ETH**. <br/>
Let's assume Edge has calculated that for **XLM/ETH** market your stoploss should be at 2%. So your position size will be **0.05 / 0.02 = 2.5ETH**.<br/>
Bot takes a position of 2.5ETH on XLM/ETH (call it trade 1). Up next, you receive another buy signal while trade 1 is still open. This time on BTC/ETH market. Edge calculated stoploss for this market at 4%. So your position size would be 0.05 / 0.04 = 1.25ETH (call it trade 2).<br/>
Note that available capital for trading didnt change for trade 2 even if you had already trade 1. The available capital doesnt mean the free amount on your wallet.<br/>
Now you have two trades open. The Bot receives yet another buy signal for another market: **ADA/ETH**. This time the stoploss is calculated at 1%. So your position size is **0.05 / 0.01 = 5ETH**. But there are already 4ETH blocked in two previous trades. So the position size for this third trade would be 1ETH.<br/>
Available capital doesnt change before a position is sold. Lets assume that trade 1 receives a sell signal and it is sold with a profit of 1ETH. Your total capital on exchange would be 11 ETH and the available capital for trading becomes 5.5ETH. <br/>
So the Bot receives another buy signal for trade 4 with a stoploss at 2% then your position size would be **0.055 / 0.02 = 2.75**.
Example:
Let's say the stake currency is **ETH** and there is $10$ **ETH** on the wallet. The capital available percentage is $50%$ and the allowed risk per trade is $1\%$. Thus, the available capital for trading is $10 * 0.5 = 5$ **ETH** and the allowed capital at risk would be $5 * 0.01 = 0.05$ **ETH**.
- **Trade 1:** The strategy detects a new buy signal in the **XLM/ETH** market. `Edge Positioning` calculates a stoploss of $2\%$ and a position of $0.05 / 0.02 = 2.5$ **ETH**. The bot takes a position of $2.5$ **ETH** in the **XLM/ETH** market.
- **Trade 2:** The strategy detects a buy signal on the **BTC/ETH** market while **Trade 1** is still open. `Edge Positioning` calculates the stoploss of $4\%$ on this market. Thus, **Trade 2** position size is $0.05 / 0.04 = 1.25$ **ETH**.
!!! Tip "Available Capital $\neq$ Available in wallet"
The available capital for trading didn't change in **Trade 2** even with **Trade 1** still open. The available capital **is not** the free amount in the wallet.
- **Trade 3:** The strategy detects a buy signal in the **ADA/ETH** market. `Edge Positioning` calculates a stoploss of $1\%$ and a position of $0.05 / 0.01 = 5$ **ETH**. Since **Trade 1** has $2.5$ **ETH** blocked and **Trade 2** has $1.25$ **ETH** blocked, there is only $5 - 1.25 - 2.5 = 1.25$ **ETH** available. Hence, the position size of **Trade 3** is $1.25$ **ETH**.
!!! Tip "Available Capital Updates"
The available capital does not change before a position is sold. After a trade is closed the Available Capital goes up if the trade was profitable or goes down if the trade was a loss.
- The strategy detects a sell signal in the **XLM/ETH** market. The bot exits **Trade 1** for a profit of $1$ **ETH**. The total capital in the wallet becomes $11$ **ETH** and the available capital for trading becomes $5.5$ **ETH**.
- **Trade 4** The strategy detects a new buy signal int the **XLM/ETH** market. `Edge Positioning` calculates the stoploss of $2%$, and the position size of $0.055 / 0.02 = 2.75$ **ETH**.
## Configurations
Edge has following configurations:
#### enabled
If true, then Edge will run periodically.<br/>
(default to false)
#### process_throttle_secs
How often should Edge run in seconds? <br/>
(default to 3600 so one hour)
#### calculate_since_number_of_days
Number of days of data against which Edge calculates Win Rate, Risk Reward and Expectancy
Note that it downloads historical data so increasing this number would lead to slowing down the bot.<br/>
(default to 7)
#### capital_available_percentage
This is the percentage of the total capital on exchange in stake currency. <br/>
As an example if you have 10 ETH available in your wallet on the exchange and this value is 0.5 (which is 50%), then the bot will use a maximum amount of 5 ETH for trading and considers it as available capital.<br/>
(default to 0.5)
#### allowed_risk
Percentage of allowed risk per trade.<br/>
(default to 0.01 [1%])
#### stoploss_range_min
Minimum stoploss.<br/>
(default to -0.01)
#### stoploss_range_max
Maximum stoploss.<br/>
(default to -0.10)
#### stoploss_range_step
As an example if this is set to -0.01 then Edge will test the strategy for [-0.01, -0,02, -0,03 ..., -0.09, -0.10] ranges.
Note than having a smaller step means having a bigger range which could lead to slow calculation. <br/>
if you set this parameter to -0.001, you then slow down the Edge calculation by a factor of 10. <br/>
(default to -0.01)
#### minimum_winrate
It filters pairs which don't have at least minimum_winrate.
This comes handy if you want to be conservative and don't comprise win rate in favor of risk reward ratio.<br/>
(default to 0.60)
#### minimum_expectancy
It filters paris which have an expectancy lower than this number .
Having an expectancy of 0.20 means if you put 10$ on a trade you expect a 12$ return.<br/>
(default to 0.20)
#### min_trade_number
When calculating W and R and E (expectancy) against historical data, you always want to have a minimum number of trades. The more this number is the more Edge is reliable. Having a win rate of 100% on a single trade doesn't mean anything at all. But having a win rate of 70% over past 100 trades means clearly something. <br/>
(default to 10, it is highly recommended not to decrease this number)
#### max_trade_duration_minute
Edge will filter out trades with long duration. If a trade is profitable after 1 month, it is hard to evaluate the strategy based on it. But if most of trades are profitable and they have maximum duration of 30 minutes, then it is clearly a good sign.<br/>
**NOTICE:** While configuring this value, you should take into consideration your ticker interval. as an example filtering out trades having duration less than one day for a strategy which has 4h interval does not make sense. default value is set assuming your strategy interval is relatively small (1m or 5m, etc).<br/>
(default to 1 day, 1440 = 60 * 24)
#### remove_pumps
Edge will remove sudden pumps in a given market while going through historical data. However, given that pumps happen very often in crypto markets, we recommend you keep this off.<br/>
(default to false)
Edge module has following configuration options:
| Parameter | Description |
|------------|-------------|
| `enabled` | If true, then Edge will run periodically. <br>*Defaults to `false`.* <br> **Datatype:** Boolean
| `process_throttle_secs` | How often should Edge run in seconds. <br>*Defaults to `3600` (once per hour).* <br> **Datatype:** Integer
| `calculate_since_number_of_days` | Number of days of data against which Edge calculates Win Rate, Risk Reward and Expectancy. <br> **Note** that it downloads historical data so increasing this number would lead to slowing down the bot. <br>*Defaults to `7`.* <br> **Datatype:** Integer
| `allowed_risk` | Ratio of allowed risk per trade. <br>*Defaults to `0.01` (1%)).* <br> **Datatype:** Float
| `stoploss_range_min` | Minimum stoploss. <br>*Defaults to `-0.01`.* <br> **Datatype:** Float
| `stoploss_range_max` | Maximum stoploss. <br>*Defaults to `-0.10`.* <br> **Datatype:** Float
| `stoploss_range_step` | As an example if this is set to -0.01 then Edge will test the strategy for `[-0.01, -0,02, -0,03 ..., -0.09, -0.10]` ranges. <br> **Note** than having a smaller step means having a bigger range which could lead to slow calculation. <br> If you set this parameter to -0.001, you then slow down the Edge calculation by a factor of 10. <br>*Defaults to `-0.001`.* <br> **Datatype:** Float
| `minimum_winrate` | It filters out pairs which don't have at least minimum_winrate. <br>This comes handy if you want to be conservative and don't comprise win rate in favour of risk reward ratio. <br>*Defaults to `0.60`.* <br> **Datatype:** Float
| `minimum_expectancy` | It filters out pairs which have the expectancy lower than this number. <br>Having an expectancy of 0.20 means if you put 10$ on a trade you expect a 12$ return. <br>*Defaults to `0.20`.* <br> **Datatype:** Float
| `min_trade_number` | When calculating *W*, *R* and *E* (expectancy) against historical data, you always want to have a minimum number of trades. The more this number is the more Edge is reliable. <br>Having a win rate of 100% on a single trade doesn't mean anything at all. But having a win rate of 70% over past 100 trades means clearly something. <br>*Defaults to `10` (it is highly recommended not to decrease this number).* <br> **Datatype:** Integer
| `max_trade_duration_minute` | Edge will filter out trades with long duration. If a trade is profitable after 1 month, it is hard to evaluate the strategy based on it. But if most of trades are profitable and they have maximum duration of 30 minutes, then it is clearly a good sign.<br>**NOTICE:** While configuring this value, you should take into consideration your timeframe. As an example filtering out trades having duration less than one day for a strategy which has 4h interval does not make sense. Default value is set assuming your strategy interval is relatively small (1m or 5m, etc.).<br>*Defaults to `1440` (one day).* <br> **Datatype:** Integer
| `remove_pumps` | Edge will remove sudden pumps in a given market while going through historical data. However, given that pumps happen very often in crypto markets, we recommend you keep this off.<br>*Defaults to `false`.* <br> **Datatype:** Boolean
## Running Edge independently
You can run Edge independently in order to see in details the result. Here is an example:
```bash
python3 ./freqtrade/main.py edge
``` bash
freqtrade edge
```
An example of its output:
| pair | stoploss | win rate | risk reward ratio | required risk reward | expectancy | total number of trades | average duration (min) |
|:----------|-----------:|-----------:|--------------------:|-----------------------:|-------------:|-------------------------:|-------------------------:|
| AGI/BTC | -0.02 | 0.64 | 5.86 | 0.56 | 3.41 | 14 | 54 |
| NXS/BTC | -0.03 | 0.64 | 2.99 | 0.57 | 1.54 | 11 | 26 |
| LEND/BTC | -0.02 | 0.82 | 2.05 | 0.22 | 1.50 | 11 | 36 |
| VIA/BTC | -0.01 | 0.55 | 3.01 | 0.83 | 1.19 | 11 | 48 |
| MTH/BTC | -0.09 | 0.56 | 2.82 | 0.80 | 1.12 | 18 | 52 |
| ARDR/BTC | -0.04 | 0.42 | 3.14 | 1.40 | 0.73 | 12 | 42 |
| BCPT/BTC | -0.01 | 0.71 | 1.34 | 0.40 | 0.67 | 14 | 30 |
| WINGS/BTC | -0.02 | 0.56 | 1.97 | 0.80 | 0.65 | 27 | 42 |
| VIBE/BTC | -0.02 | 0.83 | 0.91 | 0.20 | 0.59 | 12 | 35 |
| MCO/BTC | -0.02 | 0.79 | 0.97 | 0.27 | 0.55 | 14 | 31 |
| GNT/BTC | -0.02 | 0.50 | 2.06 | 1.00 | 0.53 | 18 | 24 |
| HOT/BTC | -0.01 | 0.17 | 7.72 | 4.81 | 0.50 | 209 | 7 |
| SNM/BTC | -0.03 | 0.71 | 1.06 | 0.42 | 0.45 | 17 | 38 |
| APPC/BTC | -0.02 | 0.44 | 2.28 | 1.27 | 0.44 | 25 | 43 |
| NEBL/BTC | -0.03 | 0.63 | 1.29 | 0.58 | 0.44 | 19 | 59 |
| **pair** | **stoploss** | **win rate** | **risk reward ratio** | **required risk reward** | **expectancy** | **total number of trades** | **average duration (min)** |
|:----------|-----------:|-----------:|--------------------:|-----------------------:|-------------:|-----------------:|---------------:|
| **AGI/BTC** | -0.02 | 0.64 | 5.86 | 0.56 | 3.41 | 14 | 54 |
| **NXS/BTC** | -0.03 | 0.64 | 2.99 | 0.57 | 1.54 | 11 | 26 |
| **LEND/BTC** | -0.02 | 0.82 | 2.05 | 0.22 | 1.50 | 11 | 36 |
| **VIA/BTC** | -0.01 | 0.55 | 3.01 | 0.83 | 1.19 | 11 | 48 |
| **MTH/BTC** | -0.09 | 0.56 | 2.82 | 0.80 | 1.12 | 18 | 52 |
| **ARDR/BTC** | -0.04 | 0.42 | 3.14 | 1.40 | 0.73 | 12 | 42 |
| **BCPT/BTC** | -0.01 | 0.71 | 1.34 | 0.40 | 0.67 | 14 | 30 |
| **WINGS/BTC** | -0.02 | 0.56 | 1.97 | 0.80 | 0.65 | 27 | 42 |
| **VIBE/BTC** | -0.02 | 0.83 | 0.91 | 0.20 | 0.59 | 12 | 35 |
| **MCO/BTC** | -0.02 | 0.79 | 0.97 | 0.27 | 0.55 | 14 | 31 |
| **GNT/BTC** | -0.02 | 0.50 | 2.06 | 1.00 | 0.53 | 18 | 24 |
| **HOT/BTC** | -0.01 | 0.17 | 7.72 | 4.81 | 0.50 | 209 | 7 |
| **SNM/BTC** | -0.03 | 0.71 | 1.06 | 0.42 | 0.45 | 17 | 38 |
| **APPC/BTC** | -0.02 | 0.44 | 2.28 | 1.27 | 0.44 | 25 | 43 |
| **NEBL/BTC** | -0.03 | 0.63 | 1.29 | 0.58 | 0.44 | 19 | 59 |
Edge produced the above table by comparing `calculate_since_number_of_days` to `minimum_expectancy` to find `min_trade_number` historical information based on the config file. The timerange Edge uses for its comparisons can be further limited by using the `--timerange` switch.
In live and dry-run modes, after the `process_throttle_secs` has passed, Edge will again process `calculate_since_number_of_days` against `minimum_expectancy` to find `min_trade_number`. If no `min_trade_number` is found, the bot will return "whitelist empty". Depending on the trade strategy being deployed, "whitelist empty" may be return much of the time - or *all* of the time. The use of Edge may also cause trading to occur in bursts, though this is rare.
If you encounter "whitelist empty" a lot, condsider tuning `calculate_since_number_of_days`, `minimum_expectancy` and `min_trade_number` to align to the trading frequency of your strategy.
### Update cached pairs with the latest data
```bash
python3 ./freqtrade/main.py edge --refresh-pairs-cached
```
Edge requires historic data the same way as backtesting does.
Please refer to the [Data Downloading](data-download.md) section of the documentation for details.
### Precising stoploss range
```bash
python3 ./freqtrade/main.py edge --stoplosses=-0.01,-0.1,-0.001 #min,max,step
freqtrade edge --stoplosses=-0.01,-0.1,-0.001 #min,max,step
```
### Advanced use of timerange
```bash
python3 ./freqtrade/main.py edge --timerange=20181110-20181113
freqtrade edge --timerange=20181110-20181113
```
Doing --timerange=-200 will get the last 200 timeframes from your inputdata. You can also specify specific dates, or a range span indexed by start and stop.
Doing `--timerange=-20190901` will get all available data until September 1st (excluding September 1st 2019).
The full timerange specification:
* Use last 123 tickframes of data: --timerange=-123
* Use first 123 tickframes of data: --timerange=123-
* Use tickframes from line 123 through 456: --timerange=123-456
* Use tickframes till 2018/01/31: --timerange=-20180131
* Use tickframes since 2018/01/31: --timerange=20180131-
* Use tickframes since 2018/01/31 till 2018/03/01 : --timerange=20180131-20180301
* Use tickframes between POSIX timestamps 1527595200 1527618600: --timerange=1527595200-1527618600
* Use tickframes till 2018/01/31: `--timerange=-20180131`
* Use tickframes since 2018/01/31: `--timerange=20180131-`
* Use tickframes since 2018/01/31 till 2018/03/01 : `--timerange=20180131-20180301`
* Use tickframes between POSIX timestamps 1527595200 1527618600: `--timerange=1527595200-1527618600`
[^1]: Question extracted from MIT Opencourseware S096 - Mathematics with applications in Finance: https://ocw.mit.edu/courses/mathematics/18-s096-topics-in-mathematics-with-applications-in-finance-fall-2013/

119
docs/exchanges.md Normal file
View File

@@ -0,0 +1,119 @@
# Exchange-specific Notes
This page combines common gotchas and informations which are exchange-specific and most likely don't apply to other exchanges.
## Binance
!!! Tip "Stoploss on Exchange"
Binance supports `stoploss_on_exchange` and uses stop-loss-limit orders. It provides great advantages, so we recommend to benefit from it.
### Blacklists
For Binance, please add `"BNB/<STAKE>"` to your blacklist to avoid issues.
Accounts having BNB accounts use this to pay for fees - if your first trade happens to be on `BNB`, further trades will consume this position and make the initial BNB order unsellable as the expected amount is not there anymore.
### Binance sites
Binance has been split into 3, and users must use the correct ccxt exchange ID for their exchange, otherwise API keys are not recognized.
* [binance.com](https://www.binance.com/) - International users. Use exchange id: `binance`.
* [binance.us](https://www.binance.us/) - US based users. Use exchange id: `binanceus`.
* [binance.je](https://www.binance.je/) - Binance Jersey, trading fiat currencies. Use exchange id: `binanceje`.
## Kraken
!!! Tip "Stoploss on Exchange"
Kraken supports `stoploss_on_exchange` and can use both stop-loss-market and stop-loss-limit orders. It provides great advantages, so we recommend to benefit from it.
You can use either `"limit"` or `"market"` in the `order_types.stoploss` configuration setting to decide which type to use.
### Historic Kraken data
The Kraken API does only provide 720 historic candles, which is sufficient for Freqtrade dry-run and live trade modes, but is a problem for backtesting.
To download data for the Kraken exchange, using `--dl-trades` is mandatory, otherwise the bot will download the same 720 candles over and over, and you'll not have enough backtest data.
Due to the heavy rate-limiting applied by Kraken, the following configuration section should be used to download data:
``` json
"ccxt_async_config": {
"enableRateLimit": true,
"rateLimit": 3100
},
```
## Bittrex
### Order types
Bittrex does not support market orders. If you have a message at the bot startup about this, you should change order type values set in your configuration and/or in the strategy from `"market"` to `"limit"`. See some more details on this [here in the FAQ](faq.md#im-getting-the-exchange-bittrex-does-not-support-market-orders-message-and-cannot-run-my-strategy).
### Restricted markets
Bittrex split its exchange into US and International versions.
The International version has more pairs available, however the API always returns all pairs, so there is currently no automated way to detect if you're affected by the restriction.
If you have restricted pairs in your whitelist, you'll get a warning message in the log on Freqtrade startup for each restricted pair.
The warning message will look similar to the following:
``` output
[...] Message: bittrex {"success":false,"message":"RESTRICTED_MARKET","result":null,"explanation":null}"
```
If you're an "International" customer on the Bittrex exchange, then this warning will probably not impact you.
If you're a US customer, the bot will fail to create orders for these pairs, and you should remove them from your whitelist.
You can get a list of restricted markets by using the following snippet:
``` python
import ccxt
ct = ccxt.bittrex()
_ = ct.load_markets()
res = [ f"{x['MarketCurrency']}/{x['BaseCurrency']}" for x in ct.publicGetMarkets()['result'] if x['IsRestricted']]
print(res)
```
## FTX
!!! Tip "Stoploss on Exchange"
FTX supports `stoploss_on_exchange` and can use both stop-loss-market and stop-loss-limit orders. It provides great advantages, so we recommend to benefit from it.
You can use either `"limit"` or `"market"` in the `order_types.stoploss` configuration setting to decide which type of stoploss shall be used.
### Using subaccounts
To use subaccounts with FTX, you need to edit the configuration and add the following:
``` json
"exchange": {
"ccxt_config": {
"headers": {
"FTX-SUBACCOUNT": "name"
}
},
}
```
!!! Note
Older versions of freqtrade may require this key to be added to `"ccxt_async_config"` as well.
## All exchanges
Should you experience constant errors with Nonce (like `InvalidNonce`), it is best to regenerate the API keys. Resetting Nonce is difficult and it's usually easier to regenerate the API keys.
## Random notes for other exchanges
* The Ocean (exchange id: `theocean`) exchange uses Web3 functionality and requires `web3` python package to be installed:
```shell
$ pip3 install web3
```
### Getting latest price / Incomplete candles
Most exchanges return current incomplete candle via their OHLCV/klines API interface.
By default, Freqtrade assumes that incomplete candle is fetched from the exchange and removes the last candle assuming it's the incomplete candle.
Whether your exchange returns incomplete candles or not can be checked using [the helper script](developer.md#Incomplete-candles) from the Contributor documentation.
Due to the danger of repainting, Freqtrade does not allow you to use this incomplete candle.
However, if it is based on the need for the latest price for your strategy - then this requirement can be acquired using the [data provider](strategy-customization.md#possible-options-for-dataprovider) from within the strategy.

View File

@@ -1,12 +1,31 @@
# freqtrade FAQ
# Freqtrade FAQ
#### I have waited 5 minutes, why hasn't the bot made any trades yet?!
## Beginner Tips & Tricks
Depending on the buy strategy, the amount of whitelisted coins, the
* When you work with your strategy & hyperopt file you should use a proper code editor like vscode or Pycharm. A good code editor will provide syntax highlighting as well as line numbers, making it easy to find syntax errors (most likely, pointed out by Freqtrade during startup).
## Freqtrade common issues
### The bot does not start
Running the bot with `freqtrade trade --config config.json` does show the output `freqtrade: command not found`.
This could have the following reasons:
* The virtual environment is not active
* run `source .env/bin/activate` to activate the virtual environment
* The installation did not work correctly.
* Please check the [Installation documentation](installation.md).
### I have waited 5 minutes, why hasn't the bot made any trades yet?!
* Depending on the buy strategy, the amount of whitelisted coins, the
situation of the market etc, it can take up to hours to find good entry
position for a trade. Be patient!
#### I have made 12 trades already, why is my total profit negative?!
* Or it may because of a configuration error? Best check the logs, it's usually telling you if the bot is simply not getting buy signals (only heartbeat messages), or if there is something wrong (errors / exceptions in the log).
### I have made 12 trades already, why is my total profit negative?!
I understand your disappointment but unfortunately 12 trades is just
not enough to say anything. If you run backtesting, you can see that our
@@ -17,54 +36,149 @@ of course constantly aim to improve the bot but it will _always_ be a
gamble, which should leave you with modest wins on monthly basis but
you can't say much from few trades.
#### Id like to change the stake amount. Can I just stop the bot with
/stop and then change the config.json and run it again?
### Id like to change the stake amount. Can I just stop the bot with /stop and then change the config.json and run it again?
Not quite. Trades are persisted to a database but the configuration is
currently only read when the bot is killed and restarted. `/stop` more
like pauses. You can stop your bot, adjust settings and start it again.
#### I want to improve the bot with a new strategy
### I want to improve the bot with a new strategy
That's great. We have a nice backtesting and hyperoptimizing setup. See
That's great. We have a nice backtesting and hyperoptimization setup. See
the tutorial [here|Testing-new-strategies-with-Hyperopt](bot-usage.md#hyperopt-commands).
#### Is there a setting to only SELL the coins being held and not
perform anymore BUYS?
### Is there a setting to only SELL the coins being held and not perform anymore BUYS?
You can use the `/forcesell all` command from Telegram.
### I want to run multiple bots on the same machine
Please look at the [advanced setup documentation Page](advanced-setup.md#running-multiple-instances-of-freqtrade).
### I'm getting "Missing data fillup" messages in the log
This message is just a warning that the latest candles had missing candles in them.
Depending on the exchange, this can indicate that the pair didn't have a trade for the timeframe you are using - and the exchange does only return candles with volume.
On low volume pairs, this is a rather common occurance.
If this happens for all pairs in the pairlist, this might indicate a recent exchange downtime. Please check your exchange's public channels for details.
Irrespectively of the reason, Freqtrade will fill up these candles with "empty" candles, where open, high, low and close are set to the previous candle close - and volume is empty. In a chart, this will look like a `_` - and is aligned with how exchanges usually represent 0 volume candles.
### I'm getting the "RESTRICTED_MARKET" message in the log
Currently known to happen for US Bittrex users.
Read [the Bittrex section about restricted markets](exchanges.md#restricted-markets) for more information.
### I'm getting the "Exchange Bittrex does not support market orders." message and cannot run my strategy
As the message says, Bittrex does not support market orders and you have one of the [order types](configuration.md/#understand-order_types) set to "market". Probably your strategy was written with other exchanges in mind and sets "market" orders for "stoploss" orders, which is correct and preferable for most of the exchanges supporting market orders (but not for Bittrex).
To fix it for Bittrex, redefine order types in the strategy to use "limit" instead of "market":
```
order_types = {
...
'stoploss': 'limit',
...
}
```
Same fix should be done in the configuration file, if order types are defined in your custom config rather than in the strategy.
### How do I search the bot logs for something?
By default, the bot writes its log into stderr stream. This is implemented this way so that you can easily separate the bot's diagnostics messages from Backtesting, Edge and Hyperopt results, output from other various Freqtrade utility sub-commands, as well as from the output of your custom `print()`'s you may have inserted into your strategy. So if you need to search the log messages with the grep utility, you need to redirect stderr to stdout and disregard stdout.
* In unix shells, this normally can be done as simple as:
```shell
$ freqtrade --some-options 2>&1 >/dev/null | grep 'something'
```
(note, `2>&1` and `>/dev/null` should be written in this order)
* Bash interpreter also supports so called process substitution syntax, you can grep the log for a string with it as:
```shell
$ freqtrade --some-options 2> >(grep 'something') >/dev/null
```
or
```shell
$ freqtrade --some-options 2> >(grep -v 'something' 1>&2)
```
* You can also write the copy of Freqtrade log messages to a file with the `--logfile` option:
```shell
$ freqtrade --logfile /path/to/mylogfile.log --some-options
```
and then grep it as:
```shell
$ cat /path/to/mylogfile.log | grep 'something'
```
or even on the fly, as the bot works and the log file grows:
```shell
$ tail -f /path/to/mylogfile.log | grep 'something'
```
from a separate terminal window.
On Windows, the `--logfile` option is also supported by Freqtrade and you can use the `findstr` command to search the log for the string of interest:
```
> type \path\to\mylogfile.log | findstr "something"
```
## Hyperopt module
### How many epoch do I need to get a good Hyperopt result?
Per default Hyperopts without `-e` or `--epochs` parameter will only
run 100 epochs, means 100 evals of your triggers, guards, .... Too few
Per default Hyperopt called without the `-e`/`--epochs` command line option will only
run 100 epochs, means 100 evals of your triggers, guards, ... Too few
to find a great result (unless if you are very lucky), so you probably
have to run it for 10.000 or more. But it will take an eternity to
compute.
We recommend you to run it at least 10.000 epochs:
Since hyperopt uses Bayesian search, running for too many epochs may not produce greater results.
It's therefore recommended to run between 500-1000 epochs over and over until you hit at least 10.000 epochs in total (or are satisfied with the result). You can best judge by looking at the results - if the bot keeps discovering better strategies, it's best to keep on going.
```bash
python3 ./freqtrade/main.py hyperopt -e 10000
freqtrade hyperopt --hyperop SampleHyperopt --hyperopt-loss SharpeHyperOptLossDaily --strategy SampleStrategy -e 1000
```
or if you want intermediate result to see
```bash
for i in {1..100}; do python3 ./freqtrade/main.py hyperopt -e 100; done
```
### Why does it take a long time to run hyperopt?
#### Why it is so long to run hyperopt?
Finding a great Hyperopt results takes time.
* Discovering a great strategy with Hyperopt takes time. Study www.freqtrade.io, the Freqtrade Documentation page, join the Freqtrade [Slack community](https://join.slack.com/t/highfrequencybot/shared_invite/zt-jaut7r4m-Y17k4x5mcQES9a9swKuxbg) - or the Freqtrade [discord community](https://discord.gg/X89cVG). While you patiently wait for the most advanced, free crypto bot in the world, to hand you a possible golden strategy specially designed just for you.
If you wonder why it takes a while to find great hyperopt results
* If you wonder why it can take from 20 minutes to days to do 1000 epochs here are some answers:
This answer was written during the release 0.15.1, when we had:
This answer was written during the under the release 0.15.1, when we had
:
- 8 triggers
- 9 guards: let's say we evaluate even 10 values from each
- 1 stoploss calculation: let's say we want 10 values from that too to
be evaluated
- 1 stoploss calculation: let's say we want 10 values from that too to be evaluated
The following calculation is still very rough and not very precise
but it will give the idea. With only these triggers and guards there is
already 8*10^9*10 evaluations. A roughly total of 80 billion evals.
already 8\*10^9\*10 evaluations. A roughly total of 80 billion evals.
Did you run 100 000 evals? Congrats, you've done roughly 1 / 100 000 th
of the search space.
of the search space, assuming that the bot never tests the same parameters more than once.
* The time it takes to run 1000 hyperopt epochs depends on things like: The available cpu, hard-disk, ram, timeframe, timerange, indicator settings, indicator count, amount of coins that hyperopt test strategies on and the resulting trade count - which can be 650 trades in a year or 10.0000 trades depending if the strategy aims for big profits by trading rarely or for many low profit trades.
Example: 4% profit 650 times vs 0,3% profit a trade 10.000 times in a year. If we assume you set the --timerange to 365 days.
Example:
`freqtrade --config config.json --strategy SampleStrategy --hyperopt SampleHyperopt -e 1000 --timerange 20190601-20200601`
## Edge module
### Edge implements interesting approach for controlling position size, is there any theory behind it?
The Edge module is mostly a result of brainstorming of [@mishaker](https://github.com/mishaker) and [@creslinux](https://github.com/creslinux) freqtrade team members.
You can find further info on expectancy, win rate, risk management and position size in the following sources:
- https://www.tradeciety.com/ultimate-math-guide-for-traders/
- http://www.vantharp.com/tharp-concepts/expectancy.asp
- https://samuraitradingacademy.com/trading-expectancy/
- https://www.learningmarkets.com/determining-expectancy-in-your-trading/
- http://www.lonestocktrader.com/make-money-trading-positive-expectancy/
- https://www.babypips.com/trading/trade-expectancy-matter

View File

@@ -6,63 +6,125 @@ algorithms included in the `scikit-optimize` package to accomplish this. The
search will burn all your CPU cores, make your laptop sound like a fighter jet
and still take a long time.
In general, the search for best parameters starts with a few random combinations (see [below](#reproducible-results) for more details) and then uses Bayesian search with a ML regressor algorithm (currently ExtraTreesRegressor) to quickly find a combination of parameters in the search hyperspace that minimizes the value of the [loss function](#loss-functions).
Hyperopt requires historic data to be available, just as backtesting does.
To learn how to get data for the pairs and exchange you're interested in, head over to the [Data Downloading](data-download.md) section of the documentation.
!!! Bug
Hyperopt will crash when used with only 1 CPU Core as found out in [Issue #1133](https://github.com/freqtrade/freqtrade/issues/1133)
Hyperopt can crash when used with only 1 CPU Core as found out in [Issue #1133](https://github.com/freqtrade/freqtrade/issues/1133)
## Install hyperopt dependencies
Since Hyperopt dependencies are not needed to run the bot itself, are heavy, can not be easily built on some platforms (like Raspberry PI), they are not installed by default. Before you run Hyperopt, you need to install the corresponding dependencies, as described in this section below.
!!! Note
Since Hyperopt is a resource intensive process, running it on a Raspberry Pi is not recommended nor supported.
### Docker
The docker-image includes hyperopt dependencies, no further action needed.
### Easy installation script (setup.sh) / Manual installation
```bash
source .env/bin/activate
pip install -r requirements-hyperopt.txt
```
## Prepare Hyperopting
Before we start digging into Hyperopt, we recommend you to take a look at
an example hyperopt file located into [user_data/hyperopts/](https://github.com/freqtrade/freqtrade/blob/develop/user_data/hyperopts/test_hyperopt.py)
the sample hyperopt file located in [user_data/hyperopts/](https://github.com/freqtrade/freqtrade/blob/develop/freqtrade/templates/sample_hyperopt.py).
Configuring hyperopt is similar to writing your own strategy, and many tasks will be similar and a lot of code can be copied across from the strategy.
Configuring hyperopt is similar to writing your own strategy, and many tasks will be similar.
### Checklist on all tasks / possibilities in hyperopt
!!! Tip "About this page"
For this page, we will be using a fictional strategy called `AwesomeStrategy` - which will be optimized using the `AwesomeHyperopt` class.
Depending on the space you want to optimize, only some of the below are required.
The simplest way to get started is to use the following, command, which will create a new hyperopt file from a template, which will be located under `user_data/hyperopts/AwesomeHyperopt.py`.
``` bash
freqtrade new-hyperopt --hyperopt AwesomeHyperopt
```
### Hyperopt checklist
Checklist on all tasks / possibilities in hyperopt
Depending on the space you want to optimize, only some of the below are required:
* fill `populate_indicators` - probably a copy from your strategy
* fill `buy_strategy_generator` - for buy signal optimization
* fill `indicator_space` - for buy signal optimzation
* fill `indicator_space` - for buy signal optimization
* fill `sell_strategy_generator` - for sell signal optimization
* fill `sell_indicator_space` - for sell signal optimzation
* fill `roi_space` - for ROI optimization
* fill `generate_roi_table` - for ROI optimization (if you need more than 3 entries)
* fill `stoploss_space` - stoploss optimization
* Optional but recommended
* copy `populate_buy_trend` from your strategy - otherwise default-strategy will be used
* copy `populate_sell_trend` from your strategy - otherwise default-strategy will be used
* fill `sell_indicator_space` - for sell signal optimization
### 1. Install a Custom Hyperopt File
!!! Note
`populate_indicators` needs to create all indicators any of thee spaces may use, otherwise hyperopt will not work.
Put your hyperopt file into the folder`user_data/hyperopts`.
Optional in hyperopt - can also be loaded from a strategy (recommended):
Let assume you want a hyperopt file `awesome_hyperopt.py`:
Copy the file `user_data/hyperopts/sample_hyperopt.py` into `user_data/hyperopts/awesome_hyperopt.py`
* copy `populate_indicators` from your strategy - otherwise default-strategy will be used
* copy `populate_buy_trend` from your strategy - otherwise default-strategy will be used
* copy `populate_sell_trend` from your strategy - otherwise default-strategy will be used
### 2. Configure your Guards and Triggers
!!! Note
You always have to provide a strategy to Hyperopt, even if your custom Hyperopt class contains all methods.
Assuming the optional methods are not in your hyperopt file, please use `--strategy AweSomeStrategy` which contains these methods so hyperopt can use these methods instead.
Rarely you may also need to override:
* `roi_space` - for custom ROI optimization (if you need the ranges for the ROI parameters in the optimization hyperspace that differ from default)
* `generate_roi_table` - for custom ROI optimization (if you need the ranges for the values in the ROI table that differ from default or the number of entries (steps) in the ROI table which differs from the default 4 steps)
* `stoploss_space` - for custom stoploss optimization (if you need the range for the stoploss parameter in the optimization hyperspace that differs from default)
* `trailing_space` - for custom trailing stop optimization (if you need the ranges for the trailing stop parameters in the optimization hyperspace that differ from default)
!!! Tip "Quickly optimize ROI, stoploss and trailing stoploss"
You can quickly optimize the spaces `roi`, `stoploss` and `trailing` without changing anything (i.e. without creation of a "complete" Hyperopt class with dimensions, parameters, triggers and guards, as described in this document) from the default hyperopt template by relying on your strategy to do most of the calculations.
```python
# Have a working strategy at hand.
freqtrade new-hyperopt --hyperopt EmptyHyperopt
freqtrade hyperopt --hyperopt EmptyHyperopt --hyperopt-loss SharpeHyperOptLossDaily --spaces roi stoploss trailing --strategy MyWorkingStrategy --config config.json -e 100
```
### Create a Custom Hyperopt File
Let assume you want a hyperopt file `AwesomeHyperopt.py`:
``` bash
freqtrade new-hyperopt --hyperopt AwesomeHyperopt
```
This command will create a new hyperopt file from a template, allowing you to get started quickly.
### Configure your Guards and Triggers
There are two places you need to change in your hyperopt file to add a new buy hyperopt for testing:
- Inside `indicator_space()` - the parameters hyperopt shall be optimizing.
- Inside `populate_buy_trend()` - applying the parameters.
* Inside `indicator_space()` - the parameters hyperopt shall be optimizing.
* Inside `populate_buy_trend()` - applying the parameters.
There you have two different types of indicators: 1. `guards` and 2. `triggers`.
1. Guards are conditions like "never buy if ADX < 10", or never buy if current price is over EMA10.
2. Triggers are ones that actually trigger buy in specific moment, like "buy when EMA5 crosses over EMA10" or "buy when close price touches lower bollinger band".
2. Triggers are ones that actually trigger buy in specific moment, like "buy when EMA5 crosses over EMA10" or "buy when close price touches lower Bollinger band".
Hyperoptimization will, for each eval round, pick one trigger and possibly
multiple guards. The constructed strategy will be something like
"*buy exactly when close price touches lower bollinger band, BUT only if
!!! Hint "Guards and Triggers"
Technically, there is no difference between Guards and Triggers.
However, this guide will make this distinction to make it clear that signals should not be "sticking".
Sticking signals are signals that are active for multiple candles. This can lead into buying a signal late (right before the signal disappears - which means that the chance of success is a lot lower than right at the beginning).
Hyper-optimization will, for each epoch round, pick one trigger and possibly
multiple guards. The constructed strategy will be something like "*buy exactly when close price touches lower Bollinger band, BUT only if
ADX > 10*".
If you have updated the buy strategy, ie. changed the contents of
`populate_buy_trend()` method you have to update the `guards` and
`triggers` hyperopts must use.
If you have updated the buy strategy, i.e. changed the contents of `populate_buy_trend()` method, you have to update the `guards` and `triggers` your hyperopt must use correspondingly.
#### Sell optimization
Similar to the buy-signal above, sell-signals can also be optimized.
Similar to the buy-signal above, sell-signals can also be optimized.
Place the corresponding settings into the following methods
* Inside `sell_indicator_space()` - the parameters hyperopt shall be optimizing.
@@ -71,6 +133,12 @@ Place the corresponding settings into the following methods
The configuration and rules are the same than for buy signals.
To avoid naming collisions in the search-space, please prefix all sell-spaces with `sell-`.
#### Using timeframe as a part of the Strategy
The Strategy class exposes the timeframe value as the `self.timeframe` attribute.
The same value is available as class-attribute `HyperoptName.timeframe`.
In the case of the linked sample-value this would be `AwesomeHyperopt.timeframe`.
## Solving a Mystery
Let's say you are curious: should you use MACD crossings or lower Bollinger
@@ -97,14 +165,14 @@ We will start by defining a search space:
Above definition says: I have five parameters I want you to randomly combine
to find the best combination. Two of them are integer values (`adx-value`
and `rsi-value`) and I want you test in the range of values 20 to 40.
and `rsi-value`) and I want you test in the range of values 20 to 40.
Then we have three category variables. First two are either `True` or `False`.
We use these to either enable or disable the ADX and RSI guards. The last
one we call `trigger` and use it to decide which buy trigger we want to use.
So let's write the buy strategy using these values:
``` python
```python
def populate_buy_trend(dataframe: DataFrame) -> DataFrame:
conditions = []
# GUARDS AND TRENDS
@@ -122,81 +190,142 @@ So let's write the buy strategy using these values:
dataframe['macd'], dataframe['macdsignal']
))
dataframe.loc[
reduce(lambda x, y: x & y, conditions),
'buy'] = 1
# Check that volume is not 0
conditions.append(dataframe['volume'] > 0)
if conditions:
dataframe.loc[
reduce(lambda x, y: x & y, conditions),
'buy'] = 1
return dataframe
return populate_buy_trend
```
Hyperopting will now call this `populate_buy_trend` as many times you ask it (`epochs`)
with different value combinations. It will then use the given historical data and make
buys based on the buy signals generated with the above function and based on the results
it will end with telling you which paramter combination produced the best profits.
Hyperopt will now call `populate_buy_trend()` many times (`epochs`) with different value combinations.
It will use the given historical data and make buys based on the buy signals generated with the above function.
Based on the results, hyperopt will tell you which parameter combination produced the best results (based on the configured [loss function](#loss-functions)).
The search for best parameters starts with a few random combinations and then uses a
regressor algorithm (currently ExtraTreesRegressor) to quickly find a parameter combination
that minimizes the value of the objective function `calculate_loss` in `hyperopt.py`.
!!! Note
The above setup expects to find ADX, RSI and Bollinger Bands in the populated indicators.
When you want to test an indicator that isn't used by the bot currently, remember to
add it to the `populate_indicators()` method in your strategy or hyperopt file.
The above setup expects to find ADX, RSI and Bollinger Bands in the populated indicators.
When you want to test an indicator that isn't used by the bot currently, remember to
add it to the `populate_indicators()` method in `hyperopt.py`.
## Loss-functions
Each hyperparameter tuning requires a target. This is usually defined as a loss function (sometimes also called objective function), which should decrease for more desirable results, and increase for bad results.
A loss function must be specified via the `--hyperopt-loss <Class-name>` argument (or optionally via the configuration under the `"hyperopt_loss"` key).
This class should be in its own file within the `user_data/hyperopts/` directory.
Currently, the following loss functions are builtin:
* `ShortTradeDurHyperOptLoss` (default legacy Freqtrade hyperoptimization loss function) - Mostly for short trade duration and avoiding losses.
* `OnlyProfitHyperOptLoss` (which takes only amount of profit into consideration)
* `SharpeHyperOptLoss` (optimizes Sharpe Ratio calculated on trade returns relative to standard deviation)
* `SharpeHyperOptLossDaily` (optimizes Sharpe Ratio calculated on **daily** trade returns relative to standard deviation)
* `SortinoHyperOptLoss` (optimizes Sortino Ratio calculated on trade returns relative to **downside** standard deviation)
* `SortinoHyperOptLossDaily` (optimizes Sortino Ratio calculated on **daily** trade returns relative to **downside** standard deviation)
Creation of a custom loss function is covered in the [Advanced Hyperopt](advanced-hyperopt.md) part of the documentation.
## Execute Hyperopt
Once you have updated your hyperopt configuration you can run it.
Because hyperopt tries a lot of combinations to find the best parameters it will take time you will have the result (more than 30 mins).
Because hyperopt tries a lot of combinations to find the best parameters it will take time to get a good result. More time usually results in better results.
We strongly recommend to use `screen` or `tmux` to prevent any connection loss.
```bash
python3 ./freqtrade/main.py --hyperopt <hyperoptname> -c config.json hyperopt -e 5000 --spaces all
freqtrade hyperopt --config config.json --hyperopt <hyperoptname> --hyperopt-loss <hyperoptlossname> --strategy <strategyname> -e 500 --spaces all
```
Use `<hyperoptname>` as the name of the custom hyperopt used.
Use `<hyperoptname>` as the name of the custom hyperopt used.
The `-e` flag will set how many evaluations hyperopt will do. We recommend
running at least several thousand evaluations.
The `-e` option will set how many evaluations hyperopt will do. Since hyperopt uses Bayesian search, running too many epochs at once may not produce greater results. Experience has shown that best results are usually not improving much after 500-1000 epochs.
Doing multiple runs (executions) with a few 1000 epochs and different random state will most likely produce different results.
The `--spaces all` flag determines that all possible parameters should be optimized. Possibilities are listed below.
The `--spaces all` option determines that all possible parameters should be optimized. Possibilities are listed below.
!!! Warning
When switching parameters or changing configuration options, the file `user_data/hyperopt_results.pickle` should be removed. It's used to be able to continue interrupted calculations, but does not detect changes to settings or the hyperopt file.
!!! Note
Hyperopt will store hyperopt results with the timestamp of the hyperopt start time.
Reading commands (`hyperopt-list`, `hyperopt-show`) can use `--hyperopt-filename <filename>` to read and display older hyperopt results.
You can find a list of filenames with `ls -l user_data/hyperopt_results/`.
### Execute Hyperopt with Different Ticker-Data Source
### Execute Hyperopt with different historical data source
If you would like to hyperopt parameters using an alternate ticker data that
you have on-disk, use the `--datadir PATH` option. Default hyperopt will
use data from directory `user_data/data`.
If you would like to hyperopt parameters using an alternate historical data set that
you have on-disk, use the `--datadir PATH` option. By default, hyperopt
uses data from directory `user_data/data`.
### Running Hyperopt with Smaller Testset
### Running Hyperopt with a smaller test-set
Use the `--timerange` argument to change how much of the testset
you want to use. The last N ticks/timeframes will be used.
Example:
Use the `--timerange` argument to change how much of the test-set you want to use.
For example, to use one month of data, pass the following parameter to the hyperopt call:
```bash
python3 ./freqtrade/main.py hyperopt --timerange -200
freqtrade hyperopt --hyperopt <hyperoptname> --strategy <strategyname> --timerange 20180401-20180501
```
### Running Hyperopt using methods from a strategy
Hyperopt can reuse `populate_indicators`, `populate_buy_trend`, `populate_sell_trend` from your strategy, assuming these methods are **not** in your custom hyperopt file, and a strategy is provided.
```bash
freqtrade hyperopt --hyperopt AwesomeHyperopt --hyperopt-loss SharpeHyperOptLossDaily --strategy AwesomeStrategy
```
### Running Hyperopt with Smaller Search Space
Use the `--spaces` argument to limit the search space used by hyperopt.
Letting Hyperopt optimize everything is a huuuuge search space. Often it
might make more sense to start by just searching for initial buy algorithm.
Or maybe you just want to optimize your stoploss or roi table for that awesome
new buy strategy you have.
Use the `--spaces` option to limit the search space used by hyperopt.
Letting Hyperopt optimize everything is a huuuuge search space.
Often it might make more sense to start by just searching for initial buy algorithm.
Or maybe you just want to optimize your stoploss or roi table for that awesome new buy strategy you have.
Legal values are:
- `all`: optimize everything
- `buy`: just search for a new buy strategy
- `sell`: just search for a new sell strategy
- `roi`: just optimize the minimal profit table for your strategy
- `stoploss`: search for the best stoploss value
- space-separated list of any of the above values for example `--spaces roi stoploss`
* `all`: optimize everything
* `buy`: just search for a new buy strategy
* `sell`: just search for a new sell strategy
* `roi`: just optimize the minimal profit table for your strategy
* `stoploss`: search for the best stoploss value
* `trailing`: search for the best trailing stop values
* `default`: `all` except `trailing`
* space-separated list of any of the above values for example `--spaces roi stoploss`
The default Hyperopt Search Space, used when no `--space` command line option is specified, does not include the `trailing` hyperspace. We recommend you to run optimization for the `trailing` hyperspace separately, when the best parameters for other hyperspaces were found, validated and pasted into your custom strategy.
### Position stacking and disabling max market positions
In some situations, you may need to run Hyperopt (and Backtesting) with the
`--eps`/`--enable-position-staking` and `--dmmp`/`--disable-max-market-positions` arguments.
By default, hyperopt emulates the behavior of the Freqtrade Live Run/Dry Run, where only one
open trade is allowed for every traded pair. The total number of trades open for all pairs
is also limited by the `max_open_trades` setting. During Hyperopt/Backtesting this may lead to
some potential trades to be hidden (or masked) by previously open trades.
The `--eps`/`--enable-position-stacking` argument allows emulation of buying the same pair multiple times,
while `--dmmp`/`--disable-max-market-positions` disables applying `max_open_trades`
during Hyperopt/Backtesting (which is equal to setting `max_open_trades` to a very high
number).
!!! Note
Dry/live runs will **NOT** use position stacking - therefore it does make sense to also validate the strategy without this as it's closer to reality.
You can also enable position stacking in the configuration file by explicitly setting
`"position_stacking"=true`.
### Reproducible results
The search for optimal parameters starts with a few (currently 30) random combinations in the hyperspace of parameters, random Hyperopt epochs. These random epochs are marked with an asterisk character (`*`) in the first column in the Hyperopt output.
The initial state for generation of these random values (random state) is controlled by the value of the `--random-state` command line option. You can set it to some arbitrary value of your choice to obtain reproducible results.
If you have not set this value explicitly in the command line options, Hyperopt seeds the random state with some random value for you. The random state value for each Hyperopt run is shown in the log, so you can copy and paste it into the `--random-state` command line option to repeat the set of the initial random epochs used.
If you have not changed anything in the command line options, configuration, timerange, Strategy and Hyperopt classes, historical data and the Loss Function -- you should obtain same hyper-optimization results with same random state value used.
## Understand the Hyperopt Result
@@ -205,8 +334,10 @@ Given the following result from hyperopt:
```
Best result:
135 trades. Avg profit 0.57%. Total profit 0.03871918 BTC (0.7722Σ%). Avg duration 180.4 mins.
with values:
44/100: 135 trades. Avg profit 0.57%. Total profit 0.03871918 BTC (0.7722Σ%). Avg duration 180.4 mins. Objective: 1.94367
Buy hyperspace params:
{ 'adx-value': 44,
'rsi-value': 29,
'adx-enabled': False,
@@ -225,12 +356,11 @@ method, what those values match to.
So for example you had `rsi-value: 29.0` so we would look at `rsi`-block, that translates to the following code block:
```
```python
(dataframe['rsi'] < 29.0)
```
Translating your whole hyperopt result as the new buy-signal
would then look like:
Translating your whole hyperopt result as the new buy-signal would then look like:
```python
def populate_buy_trend(self, dataframe: DataFrame) -> DataFrame:
@@ -243,55 +373,144 @@ def populate_buy_trend(self, dataframe: DataFrame) -> DataFrame:
return dataframe
```
By default, hyperopt prints colorized results -- epochs with positive profit are printed in the green color. This highlighting helps you find epochs that can be interesting for later analysis. Epochs with zero total profit or with negative profits (losses) are printed in the normal color. If you do not need colorization of results (for instance, when you are redirecting hyperopt output to a file) you can switch colorization off by specifying the `--no-color` option in the command line.
You can use the `--print-all` command line option if you would like to see all results in the hyperopt output, not only the best ones. When `--print-all` is used, current best results are also colorized by default -- they are printed in bold (bright) style. This can also be switched off with the `--no-color` command line option.
!!! Note "Windows and color output"
Windows does not support color-output natively, therefore it is automatically disabled. To have color-output for hyperopt running under windows, please consider using WSL.
### Understand Hyperopt ROI results
If you are optimizing ROI, you're result will look as follows and include a ROI table.
If you are optimizing ROI (i.e. if optimization search-space contains 'all', 'default' or 'roi'), your result will look as follows and include a ROI table:
```
Best result:
135 trades. Avg profit 0.57%. Total profit 0.03871918 BTC (0.7722Σ%). Avg duration 180.4 mins.
with values:
{ 'adx-value': 44,
'rsi-value': 29,
'adx-enabled': false,
'rsi-enabled': True,
'trigger': 'bb_lower',
'roi_t1': 40,
'roi_t2': 57,
'roi_t3': 21,
'roi_p1': 0.03634636907306948,
'roi_p2': 0.055237357937802885,
'roi_p3': 0.015163796015548354,
'stoploss': -0.37996664668703606
}
44/100: 135 trades. Avg profit 0.57%. Total profit 0.03871918 BTC (0.7722Σ%). Avg duration 180.4 mins. Objective: 1.94367
ROI table:
{ 0: 0.10674752302642071,
21: 0.09158372701087236,
78: 0.03634636907306948,
{ 0: 0.10674,
21: 0.09158,
78: 0.03634,
118: 0}
```
This would translate to the following ROI table:
In order to use this best ROI table found by Hyperopt in backtesting and for live trades/dry-run, copy-paste it as the value of the `minimal_roi` attribute of your custom strategy:
``` python
minimal_roi = {
"118": 0,
"78": 0.0363463,
"21": 0.0915,
"0": 0.106
```
# Minimal ROI designed for the strategy.
# This attribute will be overridden if the config file contains "minimal_roi"
minimal_roi = {
0: 0.10674,
21: 0.09158,
78: 0.03634,
118: 0
}
```
### Validate backtest result
As stated in the comment, you can also use it as the value of the `minimal_roi` setting in the configuration file.
#### Default ROI Search Space
If you are optimizing ROI, Freqtrade creates the 'roi' optimization hyperspace for you -- it's the hyperspace of components for the ROI tables. By default, each ROI table generated by the Freqtrade consists of 4 rows (steps). Hyperopt implements adaptive ranges for ROI tables with ranges for values in the ROI steps that depend on the timeframe used. By default the values vary in the following ranges (for some of the most used timeframes, values are rounded to 5 digits after the decimal point):
| # step | 1m | | 5m | | 1h | | 1d | |
| ------ | ------ | ----------------- | -------- | ----------- | ---------- | ----------------- | ------------ | ----------------- |
| 1 | 0 | 0.01161...0.11992 | 0 | 0.03...0.31 | 0 | 0.06883...0.71124 | 0 | 0.12178...1.25835 |
| 2 | 2...8 | 0.00774...0.04255 | 10...40 | 0.02...0.11 | 120...480 | 0.04589...0.25238 | 2880...11520 | 0.08118...0.44651 |
| 3 | 4...20 | 0.00387...0.01547 | 20...100 | 0.01...0.04 | 240...1200 | 0.02294...0.09177 | 5760...28800 | 0.04059...0.16237 |
| 4 | 6...44 | 0.0 | 30...220 | 0.0 | 360...2640 | 0.0 | 8640...63360 | 0.0 |
These ranges should be sufficient in most cases. The minutes in the steps (ROI dict keys) are scaled linearly depending on the timeframe used. The ROI values in the steps (ROI dict values) are scaled logarithmically depending on the timeframe used.
If you have the `generate_roi_table()` and `roi_space()` methods in your custom hyperopt file, remove them in order to utilize these adaptive ROI tables and the ROI hyperoptimization space generated by Freqtrade by default.
Override the `roi_space()` method if you need components of the ROI tables to vary in other ranges. Override the `generate_roi_table()` and `roi_space()` methods and implement your own custom approach for generation of the ROI tables during hyperoptimization if you need a different structure of the ROI tables or other amount of rows (steps).
A sample for these methods can be found in [sample_hyperopt_advanced.py](https://github.com/freqtrade/freqtrade/blob/develop/freqtrade/templates/sample_hyperopt_advanced.py).
### Understand Hyperopt Stoploss results
If you are optimizing stoploss values (i.e. if optimization search-space contains 'all', 'default' or 'stoploss'), your result will look as follows and include stoploss:
```
Best result:
44/100: 135 trades. Avg profit 0.57%. Total profit 0.03871918 BTC (0.7722Σ%). Avg duration 180.4 mins. Objective: 1.94367
Buy hyperspace params:
{ 'adx-value': 44,
'rsi-value': 29,
'adx-enabled': False,
'rsi-enabled': True,
'trigger': 'bb_lower'}
Stoploss: -0.27996
```
In order to use this best stoploss value found by Hyperopt in backtesting and for live trades/dry-run, copy-paste it as the value of the `stoploss` attribute of your custom strategy:
``` python
# Optimal stoploss designed for the strategy
# This attribute will be overridden if the config file contains "stoploss"
stoploss = -0.27996
```
As stated in the comment, you can also use it as the value of the `stoploss` setting in the configuration file.
#### Default Stoploss Search Space
If you are optimizing stoploss values, Freqtrade creates the 'stoploss' optimization hyperspace for you. By default, the stoploss values in that hyperspace vary in the range -0.35...-0.02, which is sufficient in most cases.
If you have the `stoploss_space()` method in your custom hyperopt file, remove it in order to utilize Stoploss hyperoptimization space generated by Freqtrade by default.
Override the `stoploss_space()` method and define the desired range in it if you need stoploss values to vary in other range during hyperoptimization. A sample for this method can be found in [user_data/hyperopts/sample_hyperopt_advanced.py](https://github.com/freqtrade/freqtrade/blob/develop/freqtrade/templates/sample_hyperopt_advanced.py).
### Understand Hyperopt Trailing Stop results
If you are optimizing trailing stop values (i.e. if optimization search-space contains 'all' or 'trailing'), your result will look as follows and include trailing stop parameters:
```
Best result:
45/100: 606 trades. Avg profit 1.04%. Total profit 0.31555614 BTC ( 630.48Σ%). Avg duration 150.3 mins. Objective: -1.10161
Trailing stop:
{ 'trailing_only_offset_is_reached': True,
'trailing_stop': True,
'trailing_stop_positive': 0.02001,
'trailing_stop_positive_offset': 0.06038}
```
In order to use these best trailing stop parameters found by Hyperopt in backtesting and for live trades/dry-run, copy-paste them as the values of the corresponding attributes of your custom strategy:
``` python
# Trailing stop
# These attributes will be overridden if the config file contains corresponding values.
trailing_stop = True
trailing_stop_positive = 0.02001
trailing_stop_positive_offset = 0.06038
trailing_only_offset_is_reached = True
```
As stated in the comment, you can also use it as the values of the corresponding settings in the configuration file.
#### Default Trailing Stop Search Space
If you are optimizing trailing stop values, Freqtrade creates the 'trailing' optimization hyperspace for you. By default, the `trailing_stop` parameter is always set to True in that hyperspace, the value of the `trailing_only_offset_is_reached` vary between True and False, the values of the `trailing_stop_positive` and `trailing_stop_positive_offset` parameters vary in the ranges 0.02...0.35 and 0.01...0.1 correspondingly, which is sufficient in most cases.
Override the `trailing_space()` method and define the desired range in it if you need values of the trailing stop parameters to vary in other ranges during hyperoptimization. A sample for this method can be found in [user_data/hyperopts/sample_hyperopt_advanced.py](https://github.com/freqtrade/freqtrade/blob/develop/freqtrade/templates/sample_hyperopt_advanced.py).
## Show details of Hyperopt results
After you run Hyperopt for the desired amount of epochs, you can later list all results for analysis, select only best or profitable once, and show the details for any of the epochs previously evaluated. This can be done with the `hyperopt-list` and `hyperopt-show` sub-commands. The usage of these sub-commands is described in the [Utils](utils.md#list-hyperopt-results) chapter.
## Validate backtesting results
Once the optimized strategy has been implemented into your strategy, you should backtest this strategy to make sure everything is working as expected.
To archive the same results (number of trades, ...) than during hyperopt, please use the command line flag `--disable-max-market-positions`.
This setting is the default for hyperopt for speed reasons. You can overwrite this in the configuration by setting `"position_stacking"=false` or by changing the relevant line in your hyperopt file [here](https://github.com/freqtrade/freqtrade/blob/develop/freqtrade/optimize/hyperopt.py#L283).
!!! Note:
Dry/live runs will **NOT** use position stacking - therefore it does make sense to also validate the strategy without this as it's closer to reality.
To achieve same results (number of trades, their durations, profit, etc.) than during Hyperopt, please use same configuration and parameters (timerange, timeframe, ...) used for hyperopt `--dmmp`/`--disable-max-market-positions` and `--eps`/`--enable-position-stacking` for Backtesting.
## Next Step
Now you have a perfect bot and want to control it from Telegram. Your
next step is to learn the [Telegram usage](telegram-usage.md).
Should results don't match, please double-check to make sure you transferred all conditions correctly.
Pay special care to the stoploss (and trailing stoploss) parameters, as these are often set in configuration files, which override changes to the strategy.
You should also carefully review the log of your backtest to ensure that there were no parameters inadvertently set by the configuration (like `stoploss` or `trailing_stop`).

170
docs/includes/pairlists.md Normal file
View File

@@ -0,0 +1,170 @@
## Pairlists and Pairlist Handlers
Pairlist Handlers define the list of pairs (pairlist) that the bot should trade. They are configured in the `pairlists` section of the configuration settings.
In your configuration, you can use Static Pairlist (defined by the [`StaticPairList`](#static-pair-list) Pairlist Handler) and Dynamic Pairlist (defined by the [`VolumePairList`](#volume-pair-list) Pairlist Handler).
Additionally, [`AgeFilter`](#agefilter), [`PrecisionFilter`](#precisionfilter), [`PriceFilter`](#pricefilter), [`ShuffleFilter`](#shufflefilter) and [`SpreadFilter`](#spreadfilter) act as Pairlist Filters, removing certain pairs and/or moving their positions in the pairlist.
If multiple Pairlist Handlers are used, they are chained and a combination of all Pairlist Handlers forms the resulting pairlist the bot uses for trading and backtesting. Pairlist Handlers are executed in the sequence they are configured. You should always configure either `StaticPairList` or `VolumePairList` as the starting Pairlist Handler.
Inactive markets are always removed from the resulting pairlist. Explicitly blacklisted pairs (those in the `pair_blacklist` configuration setting) are also always removed from the resulting pairlist.
### Available Pairlist Handlers
* [`StaticPairList`](#static-pair-list) (default, if not configured differently)
* [`VolumePairList`](#volume-pair-list)
* [`AgeFilter`](#agefilter)
* [`PrecisionFilter`](#precisionfilter)
* [`PriceFilter`](#pricefilter)
* [`ShuffleFilter`](#shufflefilter)
* [`SpreadFilter`](#spreadfilter)
* [`RangeStabilityFilter`](#rangestabilityfilter)
!!! Tip "Testing pairlists"
Pairlist configurations can be quite tricky to get right. Best use the [`test-pairlist`](utils.md#test-pairlist) utility sub-command to test your configuration quickly.
#### Static Pair List
By default, the `StaticPairList` method is used, which uses a statically defined pair whitelist from the configuration.
It uses configuration from `exchange.pair_whitelist` and `exchange.pair_blacklist`.
```json
"pairlists": [
{"method": "StaticPairList"}
],
```
By default, only currently enabled pairs are allowed.
To skip pair validation against active markets, set `"allow_inactive": true` within the `StaticPairList` configuration.
This can be useful for backtesting expired pairs (like quarterly spot-markets).
This option must be configured along with `exchange.skip_pair_validation` in the exchange configuration.
#### Volume Pair List
`VolumePairList` employs sorting/filtering of pairs by their trading volume. It selects `number_assets` top pairs with sorting based on the `sort_key` (which can only be `quoteVolume`).
When used in the chain of Pairlist Handlers in a non-leading position (after StaticPairList and other Pairlist Filters), `VolumePairList` considers outputs of previous Pairlist Handlers, adding its sorting/selection of the pairs by the trading volume.
When used on the leading position of the chain of Pairlist Handlers, it does not consider `pair_whitelist` configuration setting, but selects the top assets from all available markets (with matching stake-currency) on the exchange.
The `refresh_period` setting allows to define the period (in seconds), at which the pairlist will be refreshed. Defaults to 1800s (30 minutes).
`VolumePairList` is based on the ticker data from exchange, as reported by the ccxt library:
* The `quoteVolume` is the amount of quote (stake) currency traded (bought or sold) in last 24 hours.
```json
"pairlists": [{
"method": "VolumePairList",
"number_assets": 20,
"sort_key": "quoteVolume",
"refresh_period": 1800
}],
```
#### AgeFilter
Removes pairs that have been listed on the exchange for less than `min_days_listed` days (defaults to `10`).
When pairs are first listed on an exchange they can suffer huge price drops and volatility
in the first few days while the pair goes through its price-discovery period. Bots can often
be caught out buying before the pair has finished dropping in price.
This filter allows freqtrade to ignore pairs until they have been listed for at least `min_days_listed` days.
#### PrecisionFilter
Filters low-value coins which would not allow setting stoplosses.
#### PriceFilter
The `PriceFilter` allows filtering of pairs by price. Currently the following price filters are supported:
* `min_price`
* `max_price`
* `low_price_ratio`
The `min_price` setting removes pairs where the price is below the specified price. This is useful if you wish to avoid trading very low-priced pairs.
This option is disabled by default, and will only apply if set to > 0.
The `max_price` setting removes pairs where the price is above the specified price. This is useful if you wish to trade only low-priced pairs.
This option is disabled by default, and will only apply if set to > 0.
The `low_price_ratio` setting removes pairs where a raise of 1 price unit (pip) is above the `low_price_ratio` ratio.
This option is disabled by default, and will only apply if set to > 0.
For `PriceFiler` at least one of its `min_price`, `max_price` or `low_price_ratio` settings must be applied.
Calculation example:
Min price precision for SHITCOIN/BTC is 8 decimals. If its price is 0.00000011 - one price step above would be 0.00000012, which is ~9% higher than the previous price value. You may filter out this pair by using PriceFilter with `low_price_ratio` set to 0.09 (9%) or with `min_price` set to 0.00000011, correspondingly.
!!! Warning "Low priced pairs"
Low priced pairs with high "1 pip movements" are dangerous since they are often illiquid and it may also be impossible to place the desired stoploss, which can often result in high losses since price needs to be rounded to the next tradable price - so instead of having a stoploss of -5%, you could end up with a stoploss of -9% simply due to price rounding.
#### ShuffleFilter
Shuffles (randomizes) pairs in the pairlist. It can be used for preventing the bot from trading some of the pairs more frequently then others when you want all pairs be treated with the same priority.
!!! Tip
You may set the `seed` value for this Pairlist to obtain reproducible results, which can be useful for repeated backtesting sessions. If `seed` is not set, the pairs are shuffled in the non-repeatable random order.
#### SpreadFilter
Removes pairs that have a difference between asks and bids above the specified ratio, `max_spread_ratio` (defaults to `0.005`).
Example:
If `DOGE/BTC` maximum bid is 0.00000026 and minimum ask is 0.00000027, the ratio is calculated as: `1 - bid/ask ~= 0.037` which is `> 0.005` and this pair will be filtered out.
#### RangeStabilityFilter
Removes pairs where the difference between lowest low and highest high over `lookback_days` days is below `min_rate_of_change`. Since this is a filter that requires additional data, the results are cached for `refresh_period`.
In the below example:
If the trading range over the last 10 days is <1%, remove the pair from the whitelist.
```json
"pairlists": [
{
"method": "RangeStabilityFilter",
"lookback_days": 10,
"min_rate_of_change": 0.01,
"refresh_period": 1440
}
]
```
!!! Tip
This Filter can be used to automatically remove stable coin pairs, which have a very low trading range, and are therefore extremely difficult to trade with profit.
### Full example of Pairlist Handlers
The below example blacklists `BNB/BTC`, uses `VolumePairList` with `20` assets, sorting pairs by `quoteVolume` and applies both [`PrecisionFilter`](#precisionfilter) and [`PriceFilter`](#price-filter), filtering all assets where 1 price unit is > 1%. Then the `SpreadFilter` is applied and pairs are finally shuffled with the random seed set to some predefined value.
```json
"exchange": {
"pair_whitelist": [],
"pair_blacklist": ["BNB/BTC"]
},
"pairlists": [
{
"method": "VolumePairList",
"number_assets": 20,
"sort_key": "quoteVolume",
},
{"method": "AgeFilter", "min_days_listed": 10},
{"method": "PrecisionFilter"},
{"method": "PriceFilter", "low_price_ratio": 0.01},
{"method": "SpreadFilter", "max_spread_ratio": 0.005},
{
"method": "RangeStabilityFilter",
"lookback_days": 10,
"min_rate_of_change": 0.01,
"refresh_period": 1440
},
{"method": "ShuffleFilter", "seed": 42}
],
```

View File

@@ -1,5 +1,5 @@
# Freqtrade
[![Build Status](https://travis-ci.org/freqtrade/freqtrade.svg?branch=develop)](https://travis-ci.org/freqtrade/freqtrade)
[![Freqtrade CI](https://github.com/freqtrade/freqtrade/workflows/Freqtrade%20CI/badge.svg)](https://github.com/freqtrade/freqtrade/actions/)
[![Coverage Status](https://coveralls.io/repos/github/freqtrade/freqtrade/badge.svg?branch=develop&service=github)](https://coveralls.io/github/freqtrade/freqtrade?branch=develop)
[![Maintainability](https://api.codeclimate.com/v1/badges/5737e6d668200b7518ff/maintainability)](https://codeclimate.com/github/freqtrade/freqtrade/maintainability)
@@ -8,60 +8,65 @@
<!-- Place this tag where you want the button to render. -->
<a class="github-button" href="https://github.com/freqtrade/freqtrade/fork" data-icon="octicon-repo-forked" data-size="large" aria-label="Fork freqtrade/freqtrade on GitHub">Fork</a>
<!-- Place this tag where you want the button to render. -->
<a class="github-button" href="https://github.com/freqtrade/freqtrade/archive/master.zip" data-icon="octicon-cloud-download" data-size="large" aria-label="Download freqtrade/freqtrade on GitHub">Download</a>
<a class="github-button" href="https://github.com/freqtrade/freqtrade/archive/stable.zip" data-icon="octicon-cloud-download" data-size="large" aria-label="Download freqtrade/freqtrade on GitHub">Download</a>
<!-- Place this tag where you want the button to render. -->
<a class="github-button" href="https://github.com/freqtrade" data-size="large" aria-label="Follow @freqtrade on GitHub">Follow @freqtrade</a>
## Introduction
Freqtrade is a cryptocurrency trading bot written in Python.
Freqtrade is a crypto-currency algorithmic trading software developed in python (3.6+) and supported on Windows, macOS and Linux.
!!! Danger "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.
We strongly recommend you to have basic coding skills and Python knowledge. Do not hesitate to read the source code and understand the mechanisms of this bot, algorithms and techniques implemented in it.
## Features
- Based on Python 3.6+: For botting on any operating system - Windows, macOS and Linux
- Persistence: Persistence is achieved through sqlite
- Dry-run: Run the bot without playing 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.
- Develop your Strategy: Write your strategy in python, using [pandas](https://pandas.pydata.org/). Example strategies to inspire you are available in the [strategy repository](https://github.com/freqtrade/freqtrade-strategies).
- Download market data: Download historical data of the exchange and the markets your may want to trade with.
- Backtest: Test your strategy on downloaded historical data.
- Optimize: Find the best parameters for your strategy using hyperoptimization which employs machining learning methods. You can optimize buy, sell, take profit (ROI), stop-loss and trailing stop-loss parameters for your strategy.
- Select markets: Create your static list or use an automatic one based on top traded volumes and/or prices (not available during backtesting). You can also explicitly blacklist markets you don't want to trade.
- Run: Test your strategy with simulated money (Dry-Run mode) or deploy it with real money (Live-Trade mode).
- Run using Edge (optional module): The concept is to find the best historical [trade expectancy](edge.md#expectancy) by markets based on variation of the stop-loss and then allow/reject markets to trade. The sizing of the trade is based on a risk of a percentage of your capital.
- Control/Monitor: Use Telegram or a REST API (start/stop the bot, show profit/loss, daily summary, current open trades results, etc.).
- Analyse: Further analysis can be performed on either Backtesting data or Freqtrade trading history (SQL database), including automated standard plots, and methods to load the data into [interactive environments](data-analysis.md).
## Requirements
### Uptodate clock
The clock must be accurate, syncronized to a NTP server very frequently to avoid problems with communication to the exchanges.
### Hardware requirements
To run this bot we recommend you a cloud instance with a minimum of:
To run this bot we recommend you a linux cloud instance with a minimum of:
- 2GB RAM
- 1GB disk space
- 2vCPU
### Software requirements
- Docker (Recommended)
Alternatively
- Python 3.6.x
- pip
- pip (pip3)
- git
- TA-Lib
- virtualenv (Recommended)
- Docker (Recommended)
## Support
Help / Slack
For any questions not covered by the documentation or for further information about the bot, we encourage you to join our slack channel.
Click [here](https://join.slack.com/t/highfrequencybot/shared_invite/enQtMjQ5NTM0OTYzMzY3LWMxYzE3M2MxNDdjMGM3ZTYwNzFjMGIwZGRjNTc3ZGU3MGE3NzdmZGMwNmU3NDM5ZTNmM2Y3NjRiNzk4NmM4OGE) to join Slack channel.
### 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](https://discord.gg/MA9v74M).
You can also join our [Slack channel](https://join.slack.com/t/highfrequencybot/shared_invite/zt-jaut7r4m-Y17k4x5mcQES9a9swKuxbg).
## Ready to try?
Begin by reading our installation guide [here](installation).
Begin by reading our installation guide [for docker](docker_quickstart.md) (recommended), or for [installation without docker](installation.md).

View File

@@ -1,293 +1,10 @@
# Installation
This page explains how to prepare your environment for running the bot.
Please consider using the prebuilt [docker images](docker.md) to get started quickly while trying out freqtrade evaluating how it operates.
## Prerequisite
Before running your bot in production you will need to setup few
external API. In production mode, the bot required valid Bittrex API
credentials and a Telegram bot (optional but recommended).
- [Setup your exchange account](#setup-your-exchange-account)
- [Backtesting commands](#setup-your-telegram-bot)
### Setup your exchange account
*To be completed, please feel free to complete this section.*
### Setup your Telegram bot
The only things you need is a working Telegram bot and its API token.
Below we explain how to create your Telegram Bot, and how to get your
Telegram user id.
### 1. Create your Telegram bot
**1.1. Start a chat with https://telegram.me/BotFather**
**1.2. Send the message `/newbot`. ** *BotFather response:*
```
Alright, a new bot. How are we going to call it? Please choose a name for your bot.
```
**1.3. Choose the public name of your bot (e.x. `Freqtrade bot`)**
*BotFather response:*
```
Good. Now let's choose a username for your bot. It must end in `bot`. Like this, for example: TetrisBot or tetris_bot.
```
**1.4. Choose the name id of your bot (e.x "`My_own_freqtrade_bot`")**
**1.5. Father bot will return you the token (API key)**<br/>
Copy it and keep it you will use it for the config parameter `token`.
*BotFather response:*
```hl_lines="4"
Done! Congratulations on your new bot. You will find it at t.me/My_own_freqtrade_bot. You can now add a description, about section and profile picture for your bot, see /help for a list of commands. By the way, when you've finished creating your cool bot, ping our Bot Support if you want a better username for it. Just make sure the bot is fully operational before you do this.
Use this token to access the HTTP API:
521095879:AAEcEZEL7ADJ56FtG_qD0bQJSKETbXCBCi0
For a description of the Bot API, see this page: https://core.telegram.org/bots/api
```
**1.6. Don't forget to start the conversation with your bot, by clicking /START button**
### 2. Get your user id
**2.1. Talk to https://telegram.me/userinfobot**
**2.2. Get your "Id", you will use it for the config parameter
`chat_id`.**
<hr/>
## Quick start
Freqtrade provides a Linux/MacOS script to install all dependencies and help you to configure the bot.
```bash
git clone git@github.com:freqtrade/freqtrade.git
cd freqtrade
git checkout develop
./setup.sh --install
```
!!! Note
Windows installation is explained [here](#windows).
<hr/>
## Easy Installation - Linux Script
If you are on Debian, Ubuntu or MacOS a freqtrade provides a script to Install, Update, Configure, and Reset your bot.
```bash
$ ./setup.sh
usage:
-i,--install Install freqtrade from scratch
-u,--update Command git pull to update.
-r,--reset Hard reset your develop/master branch.
-c,--config Easy config generator (Will override your existing file).
```
** --install **
This script will install everything you need to run the bot:
* Mandatory software as: `Python3`, `ta-lib`, `wget`
* Setup your virtualenv
* Configure your `config.json` file
This script is a combination of `install script` `--reset`, `--config`
** --update **
Update parameter will pull the last version of your current branch and update your virtualenv.
** --reset **
Reset parameter will hard reset your branch (only if you are on `master` or `develop`) and recreate your virtualenv.
** --config **
Config parameter is a `config.json` configurator. This script will ask you questions to setup your bot and create your `config.json`.
------
## Automatic Installation - Docker
Start by downloading Docker for your platform:
* [Mac](https://www.docker.com/products/docker#/mac)
* [Windows](https://www.docker.com/products/docker#/windows)
* [Linux](https://www.docker.com/products/docker#/linux)
Once you have Docker installed, simply create the config file (e.g. `config.json`) and then create a Docker image for `freqtrade` using the Dockerfile in this repo.
### 1. Prepare the Bot
**1.1. Clone the git repository**
Linux/Mac/Windows with WSL
```bash
git clone https://github.com/freqtrade/freqtrade.git
```
Windows with docker
```bash
git clone --config core.autocrlf=input https://github.com/freqtrade/freqtrade.git
```
**1.2. (Optional) Checkout the develop branch**
```bash
git checkout develop
```
**1.3. Go into the new directory**
```bash
cd freqtrade
```
**1.4. Copy `config.json.example` to `config.json`**
```bash
cp -n config.json.example config.json
```
> To edit the config please refer to the [Bot Configuration](configuration.md) page.
**1.5. Create your database file *(optional - the bot will create it if it is missing)**
Production
```bash
touch tradesv3.sqlite
````
Dry-Run
```bash
touch tradesv3.dryrun.sqlite
```
### 2. Download or build the docker image
Either use the prebuilt image from docker hub - or build the image yourself if you would like more control on which version is used.
Branches / tags available can be checked out on [Dockerhub](https://hub.docker.com/r/freqtradeorg/freqtrade/tags/).
**2.1. Download the docker image**
Pull the image from docker hub and (optionally) change the name of the image
```bash
docker pull freqtradeorg/freqtrade:develop
# Optionally tag the repository so the run-commands remain shorter
docker tag freqtradeorg/freqtrade:develop freqtrade
```
To update the image, simply run the above commands again and restart your running container.
**2.2. Build the Docker image**
```bash
cd freqtrade
docker build -t freqtrade .
```
If you are developing using Docker, use `Dockerfile.develop` to build a dev Docker image, which will also set up develop dependencies:
```bash
docker build -f ./Dockerfile.develop -t freqtrade-dev .
```
For security reasons, your configuration file will not be included in the image, you will need to bind mount it. It is also advised to bind mount an SQLite database file (see the "5. Run a restartable docker image" section) to keep it between updates.
### 3. Verify the Docker image
After the build process you can verify that the image was created with:
```bash
docker images
```
### 4. Run the Docker image
You can run a one-off container that is immediately deleted upon exiting with the following command (`config.json` must be in the current working directory):
```bash
docker run --rm -v /etc/localtime:/etc/localtime:ro -v `pwd`/config.json:/freqtrade/config.json -it freqtrade
```
There is known issue in OSX Docker versions after 17.09.1, whereby /etc/localtime cannot be shared causing Docker to not start. A work-around for this is to start with the following cmd.
```bash
docker run --rm -e TZ=`ls -la /etc/localtime | cut -d/ -f8-9` -v `pwd`/config.json:/freqtrade/config.json -it freqtrade
```
More information on this docker issue and work-around can be read [here](https://github.com/docker/for-mac/issues/2396).
In this example, the database will be created inside the docker instance and will be lost when you will refresh your image.
### 5. Run a restartable docker image
To run a restartable instance in the background (feel free to place your configuration and database files wherever it feels comfortable on your filesystem).
**5.1. Move your config file and database**
```bash
mkdir ~/.freqtrade
mv config.json ~/.freqtrade
mv tradesv3.sqlite ~/.freqtrade
```
**5.2. Run the docker image**
```bash
docker run -d \
--name freqtrade \
-v /etc/localtime:/etc/localtime:ro \
-v ~/.freqtrade/config.json:/freqtrade/config.json \
-v ~/.freqtrade/tradesv3.sqlite:/freqtrade/tradesv3.sqlite \
freqtrade --db-url sqlite:///tradesv3.sqlite
```
!!! Note
db-url defaults to `sqlite:///tradesv3.sqlite` but it defaults to `sqlite://` if `dry_run=True` is being used.
To override this behaviour use a custom db-url value: i.e.: `--db-url sqlite:///tradesv3.dryrun.sqlite`
### 6. Monitor your Docker instance
You can then use the following commands to monitor and manage your container:
```bash
docker logs freqtrade
docker logs -f freqtrade
docker restart freqtrade
docker stop freqtrade
docker start freqtrade
```
For more information on how to operate Docker, please refer to the [official Docker documentation](https://docs.docker.com/).
!!! Note
You do not need to rebuild the image for configuration changes, it will suffice to edit `config.json` and restart the container.
### 7. Backtest with docker
The following assumes that the above steps (1-4) have been completed successfully.
Also, backtest-data should be available at `~/.freqtrade/user_data/`.
```bash
docker run -d \
--name freqtrade \
-v /etc/localtime:/etc/localtime:ro \
-v ~/.freqtrade/config.json:/freqtrade/config.json \
-v ~/.freqtrade/tradesv3.sqlite:/freqtrade/tradesv3.sqlite \
-v ~/.freqtrade/user_data/:/freqtrade/user_data/ \
freqtrade --strategy AwsomelyProfitableStrategy backtesting
```
Head over to the [Backtesting Documentation](backtesting.md) for more details.
!!! Note
Additional parameters can be appended after the image name (`freqtrade` in the above example).
------
## Custom Installation
We've included/collected install instructions for Ubuntu 16.04, MacOS, and Windows. These are guidelines and your success may vary with other distros.
OS Specific steps are listed first, the [Common](#common) section below is necessary for all systems.
### Requirements
@@ -296,53 +13,133 @@ Click each one for install guide:
* [Python >= 3.6.x](http://docs.python-guide.org/en/latest/starting/installation/)
* [pip](https://pip.pypa.io/en/stable/installing/)
* [git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git)
* [virtualenv](https://virtualenv.pypa.io/en/stable/installation/) (Recommended)
* [TA-Lib](https://mrjbq7.github.io/ta-lib/install.html)
* [virtualenv](https://virtualenv.pypa.io/en/stable/installation.html) (Recommended)
* [TA-Lib](https://mrjbq7.github.io/ta-lib/install.html) (install instructions below)
### Linux - Ubuntu 16.04
We also recommend a [Telegram bot](telegram-usage.md#setup-your-telegram-bot), which is optional but recommended.
#### Install Python 3.6, Git, and wget
!!! Warning "Up-to-date clock"
The clock on the system running the bot must be accurate, synchronized to a NTP server frequently enough to avoid problems with communication to the exchanges.
## Quick start
Freqtrade provides the Linux/MacOS Easy Installation script to install all dependencies and help you configure the bot.
!!! Note
Windows installation is explained [here](#windows).
The easiest way to install and run Freqtrade is to clone the bot Github repository and then run the Easy Installation script, if it's available for your platform.
!!! Note "Version considerations"
When cloning the repository the default working branch has the name `develop`. This branch contains all last features (can be considered as relatively stable, thanks to automated tests). The `stable` branch contains the code of the last release (done usually once per month on an approximately one week old snapshot of the `develop` branch to prevent packaging bugs, so potentially it's more stable).
!!! Note
Python3.6 or higher and the corresponding `pip` are assumed to be available. The install-script will warn you and stop if that's not the case. `git` is also needed to clone the Freqtrade repository.
This can be achieved with the following commands:
```bash
sudo add-apt-repository ppa:jonathonf/python-3.6
sudo apt-get update
sudo apt-get install python3.6 python3.6-venv python3.6-dev build-essential autoconf libtool pkg-config make wget git
git clone https://github.com/freqtrade/freqtrade.git
cd freqtrade
# git checkout stable # Optional, see (1)
./setup.sh --install
```
#### Raspberry Pi / Raspbian
(1) This command switches the cloned repository to the use of the `stable` branch. It's not needed if you wish to stay on the `develop` branch. You may later switch between branches at any time with the `git checkout stable`/`git checkout develop` commands.
Before installing FreqTrade on a Raspberry Pi running the official Raspbian Image, make sure you have at least Python 3.6 installed. The default image only provides Python 3.5. Probably the easiest way to get a recent version of python is [miniconda](https://repo.continuum.io/miniconda/).
## Easy Installation Script (Linux/MacOS)
The following assumes that miniconda3 is installed and available in your environment. Last miniconda3 installation file use python 3.4, we will update to python 3.6 on this installation.
It's recommended to use (mini)conda for this as installation/compilation of `numpy`, `scipy` and `pandas` takes a long time.
If you have installed it from (mini)conda, you can remove `numpy`, `scipy`, and `pandas` from `requirements.txt` before you install it with `pip`.
Additional package to install on your Raspbian, `libffi-dev` required by cryptography (from python-telegram-bot).
``` bash
conda config --add channels rpi
conda install python=3.6
conda create -n freqtrade python=3.6
conda activate freqtrade
conda install scipy pandas numpy
sudo apt install libffi-dev
python3 -m pip install -r requirements.txt
python3 -m pip install -e .
```
### MacOS
#### Install Python 3.6, git and wget
If you are on Debian, Ubuntu or MacOS Freqtrade provides the script to install, update, configure and reset the codebase of your bot.
```bash
brew install python3 git wget
$ ./setup.sh
usage:
-i,--install Install freqtrade from scratch
-u,--update Command git pull to update.
-r,--reset Hard reset your develop/stable branch.
-c,--config Easy config generator (Will override your existing file).
```
** --install **
With this option, the script will install the bot and most dependencies:
You will need to have git and python3.6+ installed beforehand for this to work.
* Mandatory software as: `ta-lib`
* Setup your virtualenv under `.env/`
This option is a combination of installation tasks, `--reset` and `--config`.
** --update **
This option will pull the last version of your current branch and update your virtualenv. Run the script with this option periodically to update your bot.
** --reset **
This option will hard reset your branch (only if you are on either `stable` or `develop`) and recreate your virtualenv.
** --config **
DEPRECATED - use `freqtrade new-config -c config.json` instead.
### Activate your virtual environment
Each time you open a new terminal, you must run `source .env/bin/activate`.
------
## Custom Installation
We've included/collected install instructions for Ubuntu 16.04, MacOS, and Windows. These are guidelines and your success may vary with other distros.
OS Specific steps are listed first, the [Common](#common) section below is necessary for all systems.
!!! Note
Python3.6 or higher and the corresponding pip are assumed to be available.
=== "Ubuntu 16.04"
#### Install necessary dependencies
```bash
sudo apt-get update
sudo apt-get install build-essential git
```
=== "RaspberryPi/Raspbian"
The following assumes the latest [Raspbian Buster lite image](https://www.raspberrypi.org/downloads/raspbian/) from at least September 2019.
This image comes with python3.7 preinstalled, making it easy to get freqtrade up and running.
Tested using a Raspberry Pi 3 with the Raspbian Buster lite image, all updates applied.
``` bash
sudo apt-get install python3-venv libatlas-base-dev
git clone https://github.com/freqtrade/freqtrade.git
cd freqtrade
bash setup.sh -i
```
!!! Note "Installation duration"
Depending on your internet speed and the Raspberry Pi version, installation can take multiple hours to complete.
!!! Note
The above does not install hyperopt dependencies. To install these, please use `python3 -m pip install -e .[hyperopt]`.
We do not advise to run hyperopt on a Raspberry Pi, since this is a very resource-heavy operation, which should be done on powerful machine.
### Common
#### 1. Install TA-Lib
Use the provided ta-lib installation script
```bash
sudo ./build_helpers/install_ta-lib.sh
```
!!! Note
This will use the ta-lib tar.gz included in this repository.
##### TA-Lib manual installation
Official webpage: https://mrjbq7.github.io/ta-lib/install.html
```bash
@@ -370,115 +167,79 @@ python3 -m venv .env
source .env/bin/activate
```
#### 3. Install FreqTrade
#### 3. Install Freqtrade
Clone the git repository:
```bash
git clone https://github.com/freqtrade/freqtrade.git
```
Optionally checkout the stable/master branch:
```bash
git checkout master
```
#### 4. Initialize the configuration
```bash
cd freqtrade
cp config.json.example config.json
git checkout stable
```
#### 4. Install python dependencies
``` bash
python3 -m pip install --upgrade pip
python3 -m pip install -e .
```
#### 5. Initialize the configuration
```bash
# Initialize the user_directory
freqtrade create-userdir --userdir user_data/
# Create a new configuration file
freqtrade new-config --config config.json
```
> *To edit the config please refer to [Bot Configuration](configuration.md).*
#### 5. Install python dependencies
``` bash
pip3 install --upgrade pip
pip3 install -r requirements.txt
pip3 install -e .
```
#### 6. Run the Bot
If this is the first time you run the bot, ensure you are running it in Dry-run `"dry_run": true,` otherwise it will start to buy and sell coins.
```bash
python3.6 ./freqtrade/main.py -c config.json
freqtrade trade -c config.json
```
*Note*: If you run the bot on a server, you should consider using [Docker](#automatic-installation---docker) a terminal multiplexer like `screen` or [`tmux`](https://en.wikipedia.org/wiki/Tmux) to avoid that the bot is stopped on logout.
*Note*: If you run the bot on a server, you should consider using [Docker](docker.md) or a terminal multiplexer like `screen` or [`tmux`](https://en.wikipedia.org/wiki/Tmux) to avoid that the bot is stopped on logout.
#### 7. [Optional] Configure `freqtrade` as a `systemd` service
#### 7. (Optional) Post-installation Tasks
From the freqtrade repo... copy `freqtrade.service` to your systemd user directory (usually `~/.config/systemd/user`) and update `WorkingDirectory` and `ExecStart` to match your setup.
After that you can start the daemon with:
```bash
systemctl --user start freqtrade
```
For this to be persistent (run when user is logged out) you'll need to enable `linger` for your freqtrade user.
```bash
sudo loginctl enable-linger "$USER"
```
On Linux, as an optional post-installation task, you may wish to setup the bot to run as a `systemd` service or configure it to send the log messages to the `syslog`/`rsyslog` or `journald` daemons. See [Advanced Logging](advanced-setup.md#advanced-logging) for details.
------
## Windows
### Anaconda
We recommend that Windows users use [Docker](#docker) as this will work much easier and smoother (also more secure).
Freqtrade can also be installed using Anaconda (or Miniconda).
If that is not possible, try using the Windows Linux subsystem (WSL) - for which the Ubuntu instructions should work.
If that is not available on your system, feel free to try the instructions below, which led to success for some.
### Install freqtrade manually
#### Clone the git repository
```bash
git clone https://github.com/freqtrade/freqtrade.git
```
copy paste `config.json` to ``\path\freqtrade-develop\freqtrade`
#### Install ta-lib
Install ta-lib according to the [ta-lib documentation](https://github.com/mrjbq7/ta-lib#windows).
As compiling from source on windows has heavy dependencies (requires a partial visual studio installation), there is also a repository of unofficial precompiled windows Wheels [here](https://www.lfd.uci.edu/~gohlke/pythonlibs/#ta-lib), which needs to be downloaded and installed using `pip install TA_Lib0.4.17cp36cp36mwin32.whl` (make sure to use the version matching your python version)
```cmd
>cd \path\freqtrade-develop
>python -m venv .env
>cd .env\Scripts
>activate.bat
>cd \path\freqtrade-develop
REM optionally install ta-lib from wheel
REM >pip install TA_Lib0.4.17cp36cp36mwin32.whl
>pip install -r requirements.txt
>pip install -e .
>python freqtrade\main.py
```
> Thanks [Owdr](https://github.com/Owdr) for the commands. Source: [Issue #222](https://github.com/freqtrade/freqtrade/issues/222)
#### Error during installation under Windows
!!! Note
This requires the [ta-lib](#1-install-ta-lib) C-library to be installed first. See below.
``` bash
error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools": http://landinghub.visualstudio.com/visual-cpp-build-tools
conda env create -f environment.yml
```
Unfortunately, many packages requiring compilation don't provide a pre-build wheel. It is therefore mandatory to have a C/C++ compiler installed and available for your python environment to use.
-----
## Troubleshooting
The easiest way is to download install Microsoft Visual Studio Community [here](https://visualstudio.microsoft.com/downloads/) and make sure to install "Common Tools for Visual C++" to enable building c code on Windows. Unfortunately, this is a heavy download / dependency (~4Gb) so you might want to consider WSL or docker first.
### MacOS installation error
---
Newer versions of MacOS may have installation failed with errors like `error: command 'g++' failed with exit status 1`.
This error will require explicit installation of the SDK Headers, which are not installed by default in this version of MacOS.
For MacOS 10.14, this can be accomplished with the below command.
``` bash
open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
```
If this file is inexistent, then you're probably on a different version of MacOS, so you may need to consult the internet for specific resolution details.
-----
Now you have an environment ready, the next step is
[Bot Configuration](configuration.md).

View File

@@ -0,0 +1,12 @@
window.MathJax = {
tex: {
inlineMath: [["\\(", "\\)"]],
displayMath: [["\\[", "\\]"]],
processEscapes: true,
processEnvironments: true
},
options: {
ignoreHtmlClass: ".*|",
processHtmlClass: "arithmatex"
}
};

View File

@@ -49,4 +49,6 @@
</nav>
<!-- Place this tag in your head or just before your close body tag. -->
<script async defer src="https://buttons.github.io/buttons.js"></script>
</header>
<script src="https://code.jquery.com/jquery-3.4.1.min.js"
integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script>
</header>

View File

@@ -1,88 +1,299 @@
# Plotting
This page explains how to plot prices, indicator, profits.
## Installation
This page explains how to plot prices, indicators and profits.
Plotting scripts use Plotly library. Install/upgrade it with:
## Installation / Setup
Plotting modules use the Plotly library. You can install / upgrade this by running the following command:
``` bash
pip install -U -r requirements-plot.txt
```
pip install --upgrade plotly
```
At least version 2.3.0 is required.
## Plot price and indicators
Usage for the price plotter:
The `freqtrade plot-dataframe` subcommand shows an interactive graph with three subplots:
* Main plot with candlestics and indicators following price (sma/ema)
* Volume bars
* Additional indicators as specified by `--indicators2`
![plot-dataframe](assets/plot-dataframe.png)
Possible arguments:
```
script/plot_dataframe.py [-h] [-p pairs] [--live]
usage: freqtrade plot-dataframe [-h] [-v] [--logfile FILE] [-V] [-c PATH]
[-d PATH] [--userdir PATH] [-s NAME]
[--strategy-path PATH] [-p PAIRS [PAIRS ...]]
[--indicators1 INDICATORS1 [INDICATORS1 ...]]
[--indicators2 INDICATORS2 [INDICATORS2 ...]]
[--plot-limit INT] [--db-url PATH]
[--trade-source {DB,file}] [--export EXPORT]
[--export-filename PATH]
[--timerange TIMERANGE] [-i TIMEFRAME]
[--no-trades]
optional arguments:
-h, --help show this help message and exit
-p PAIRS [PAIRS ...], --pairs PAIRS [PAIRS ...]
Show profits for only these pairs. Pairs are space-
separated.
--indicators1 INDICATORS1 [INDICATORS1 ...]
Set indicators from your strategy you want in the
first row of the graph. Space-separated list. Example:
`ema3 ema5`. Default: `['sma', 'ema3', 'ema5']`.
--indicators2 INDICATORS2 [INDICATORS2 ...]
Set indicators from your strategy you want in the
third row of the graph. Space-separated list. Example:
`fastd fastk`. Default: `['macd', 'macdsignal']`.
--plot-limit INT Specify tick limit for plotting. Notice: too high
values cause huge files. Default: 750.
--db-url PATH Override trades database URL, this is useful in custom
deployments (default: `sqlite:///tradesv3.sqlite` for
Live Run mode, `sqlite:///tradesv3.dryrun.sqlite` for
Dry Run).
--trade-source {DB,file}
Specify the source for trades (Can be DB or file
(backtest file)) Default: file
--export EXPORT Export backtest results, argument are: trades.
Example: `--export=trades`
--export-filename PATH
Save backtest results to the file with this filename.
Requires `--export` to be set as well. Example:
`--export-filename=user_data/backtest_results/backtest
_today.json`
--timerange TIMERANGE
Specify what timerange of data to use.
-i TIMEFRAME, --timeframe TIMEFRAME, --ticker-interval TIMEFRAME
Specify ticker interval (`1m`, `5m`, `30m`, `1h`,
`1d`).
--no-trades Skip using trades from backtesting file and DB.
Common arguments:
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
--logfile FILE Log to the file specified. Special values are:
'syslog', 'journald'. See the documentation for more
details.
-V, --version show program's version number and exit
-c PATH, --config PATH
Specify configuration file (default:
`userdir/config.json` or `config.json` whichever
exists). Multiple --config options may be used. Can be
set to `-` to read config from stdin.
-d PATH, --datadir PATH
Path to directory with historical backtesting data.
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
Strategy arguments:
-s NAME, --strategy NAME
Specify strategy class name which will be used by the
bot.
--strategy-path PATH Specify additional strategy lookup path.
```
Example
```
python scripts/plot_dataframe.py -p BTC/ETH
Example:
``` bash
freqtrade plot-dataframe -p BTC/ETH
```
The `-p` pairs argument, can be used to specify
pairs you would like to plot.
The `-p/--pairs` argument can be used to specify pairs you would like to plot.
**Advanced use**
!!! Note
The `freqtrade plot-dataframe` subcommand generates one plot-file per pair.
To plot multiple pairs, separate them with a comma:
```
python scripts/plot_dataframe.py -p BTC/ETH,XRP/ETH
Specify custom indicators.
Use `--indicators1` for the main plot and `--indicators2` for the subplot below (if values are in a different range than prices).
!!! Tip
You will almost certainly want to specify a custom strategy! This can be done by adding `-s Classname` / `--strategy ClassName` to the command.
``` bash
freqtrade plot-dataframe --strategy AwesomeStrategy -p BTC/ETH --indicators1 sma ema --indicators2 macd
```
To plot the current live price use the `--live` flag:
```
python scripts/plot_dataframe.py -p BTC/ETH --live
### Further usage examples
To plot multiple pairs, separate them with a space:
``` bash
freqtrade plot-dataframe --strategy AwesomeStrategy -p BTC/ETH XRP/ETH
```
To plot a timerange (to zoom in):
```
python scripts/plot_dataframe.py -p BTC/ETH --timerange=100-200
```
Timerange doesn't work with live data.
To plot a timerange (to zoom in)
To plot trades stored in a database use `--db-url` argument:
```
python scripts/plot_dataframe.py --db-url sqlite:///tradesv3.dry_run.sqlite -p BTC/ETH
``` bash
freqtrade plot-dataframe --strategy AwesomeStrategy -p BTC/ETH --timerange=20180801-20180805
```
To plot a test strategy the strategy should have first be backtested.
The results may then be plotted with the -s argument:
To plot trades stored in a database use `--db-url` in combination with `--trade-source DB`:
``` bash
freqtrade plot-dataframe --strategy AwesomeStrategy --db-url sqlite:///tradesv3.dry_run.sqlite -p BTC/ETH --trade-source DB
```
python scripts/plot_dataframe.py -s Strategy_Name -p BTC/ETH --datadir user_data/data/<exchange_name>/
To plot trades from a backtesting result, use `--export-filename <filename>`
``` bash
freqtrade plot-dataframe --strategy AwesomeStrategy --export-filename user_data/backtest_results/backtest-result.json -p BTC/ETH
```
### Plot dataframe basics
![plot-dataframe2](assets/plot-dataframe2.png)
The `plot-dataframe` subcommand requires backtesting data, a strategy and either a backtesting-results file or a database, containing trades corresponding to the strategy.
The resulting plot will have the following elements:
* Green triangles: Buy signals from the strategy. (Note: not every buy signal generates a trade, compare to cyan circles.)
* Red triangles: Sell signals from the strategy. (Also, not every sell signal terminates a trade, compare to red and green squares.)
* Cyan circles: Trade entry points.
* Red squares: Trade exit points for trades with loss or 0% profit.
* Green squares: Trade exit points for profitable trades.
* Indicators with values corresponding to the candle scale (e.g. SMA/EMA), as specified with `--indicators1`.
* Volume (bar chart at the bottom of the main chart).
* Indicators with values in different scales (e.g. MACD, RSI) below the volume bars, as specified with `--indicators2`.
!!! Note "Bollinger Bands"
Bollinger bands are automatically added to the plot if the columns `bb_lowerband` and `bb_upperband` exist, and are painted as a light blue area spanning from the lower band to the upper band.
#### Advanced plot configuration
An advanced plot configuration can be specified in the strategy in the `plot_config` parameter.
Additional features when using plot_config include:
* Specify colors per indicator
* Specify additional subplots
The sample plot configuration below specifies fixed colors for the indicators. Otherwise consecutive plots may produce different colorschemes each time, making comparisons difficult.
It also allows multiple subplots to display both MACD and RSI at the same time.
Sample configuration with inline comments explaining the process:
``` python
plot_config = {
'main_plot': {
# Configuration for main plot indicators.
# Specifies `ema10` to be red, and `ema50` to be a shade of gray
'ema10': {'color': 'red'},
'ema50': {'color': '#CCCCCC'},
# By omitting color, a random color is selected.
'sar': {},
},
'subplots': {
# Create subplot MACD
"MACD": {
'macd': {'color': 'blue'},
'macdsignal': {'color': 'orange'},
},
# Additional subplot RSI
"RSI": {
'rsi': {'color': 'red'},
}
}
}
```
!!! Note
The above configuration assumes that `ema10`, `ema50`, `macd`, `macdsignal` and `rsi` are columns in the DataFrame created by the strategy.
## Plot profit
The profit plotter show a picture with three plots:
1) Average closing price for all pairs
2) The summarized profit made by backtesting.
Note that this is not the real-world profit, but
more of an estimate.
3) Each pair individually profit
![plot-profit](assets/plot-profit.png)
The first graph is good to get a grip of how the overall market
progresses.
The `plot-profit` subcommand shows an interactive graph with three plots:
The second graph will show how you algorithm works or doesnt.
Perhaps you want an algorithm that steadily makes small profits,
or one that acts less seldom, but makes big swings.
* Average closing price for all pairs.
* The summarized profit made by backtesting.
Note that this is not the real-world profit, but more of an estimate.
* Profit for each individual pair.
The third graph can be useful to spot outliers, events in pairs
that makes profit spikes.
The first graph is good to get a grip of how the overall market progresses.
Usage for the profit plotter:
The second graph will show if your algorithm works or doesn't.
Perhaps you want an algorithm that steadily makes small profits, or one that acts less often, but makes big swings.
This graph will also highlight the start (and end) of the Max drawdown period.
The third graph can be useful to spot outliers, events in pairs that cause profit spikes.
Possible options for the `freqtrade plot-profit` subcommand:
```
script/plot_profit.py [-h] [-p pair] [--datadir directory] [--ticker_interval num]
usage: freqtrade plot-profit [-h] [-v] [--logfile FILE] [-V] [-c PATH]
[-d PATH] [--userdir PATH] [-s NAME]
[--strategy-path PATH] [-p PAIRS [PAIRS ...]]
[--timerange TIMERANGE] [--export EXPORT]
[--export-filename PATH] [--db-url PATH]
[--trade-source {DB,file}] [-i TIMEFRAME]
optional arguments:
-h, --help show this help message and exit
-p PAIRS [PAIRS ...], --pairs PAIRS [PAIRS ...]
Show profits for only these pairs. Pairs are space-
separated.
--timerange TIMERANGE
Specify what timerange of data to use.
--export EXPORT Export backtest results, argument are: trades.
Example: `--export=trades`
--export-filename PATH
Save backtest results to the file with this filename.
Requires `--export` to be set as well. Example:
`--export-filename=user_data/backtest_results/backtest
_today.json`
--db-url PATH Override trades database URL, this is useful in custom
deployments (default: `sqlite:///tradesv3.sqlite` for
Live Run mode, `sqlite:///tradesv3.dryrun.sqlite` for
Dry Run).
--trade-source {DB,file}
Specify the source for trades (Can be DB or file
(backtest file)) Default: file
-i TIMEFRAME, --timeframe TIMEFRAME, --ticker-interval TIMEFRAME
Specify ticker interval (`1m`, `5m`, `30m`, `1h`,
`1d`).
Common arguments:
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
--logfile FILE Log to the file specified. Special values are:
'syslog', 'journald'. See the documentation for more
details.
-V, --version show program's version number and exit
-c PATH, --config PATH
Specify configuration file (default:
`userdir/config.json` or `config.json` whichever
exists). Multiple --config options may be used. Can be
set to `-` to read config from stdin.
-d PATH, --datadir PATH
Path to directory with historical backtesting data.
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
Strategy arguments:
-s NAME, --strategy NAME
Specify strategy class name which will be used by the
bot.
--strategy-path PATH Specify additional strategy lookup path.
```
The `-p` pair argument, can be used to plot a single pair
The `-p/--pairs` argument, can be used to limit the pairs that are considered for this calculation.
Example
Examples:
Use custom backtest-export file
``` bash
freqtrade plot-profit -p LTC/BTC --export-filename user_data/backtest_results/backtest-result.json
```
python3 scripts/plot_profit.py --datadir ../freqtrade/freqtrade/tests/testdata-20171221/ -p BTC_LTC
Use custom database
``` bash
freqtrade plot-profit -p LTC/BTC --db-url sqlite:///tradesv3.sqlite --trade-source DB
```
``` bash
freqtrade --datadir user_data/data/binance_save/ plot-profit -p LTC/BTC
```

View File

@@ -1 +1,3 @@
mkdocs-material==3.1.0
mkdocs-material==6.1.6
mdx_truly_sane_lists==1.2
pymdown-extensions==8.0.1

308
docs/rest-api.md Normal file
View File

@@ -0,0 +1,308 @@
# REST API Usage
## Configuration
Enable the rest API by adding the api_server section to your configuration and setting `api_server.enabled` to `true`.
Sample configuration:
``` json
"api_server": {
"enabled": true,
"listen_ip_address": "127.0.0.1",
"listen_port": 8080,
"verbosity": "info",
"jwt_secret_key": "somethingrandom",
"CORS_origins": [],
"username": "Freqtrader",
"password": "SuperSecret1!"
},
```
!!! Danger "Security warning"
By default, the configuration listens on localhost only (so it's not reachable from other systems). We strongly recommend to not expose this API to the internet and choose a strong, unique password, since others will potentially be able to control your bot.
!!! Danger "Password selection"
Please make sure to select a very strong, unique password to protect your bot from unauthorized access.
You can then access the API by going to `http://127.0.0.1:8080/api/v1/ping` in a browser to check if the API is running correctly.
This should return the response:
``` output
{"status":"pong"}
```
All other endpoints return sensitive info and require authentication and are therefore not available through a web browser.
To generate a secure password, either use a password manager, or use the below code snipped.
``` python
import secrets
secrets.token_hex()
```
!!! Hint
Use the same method to also generate a JWT secret key (`jwt_secret_key`).
### Configuration with docker
If you run your bot using docker, you'll need to have the bot listen to incoming connections. The security is then handled by docker.
``` json
"api_server": {
"enabled": true,
"listen_ip_address": "0.0.0.0",
"listen_port": 8080
},
```
Add the following to your docker command:
``` bash
-p 127.0.0.1:8080:8080
```
A complete sample-command may then look as follows:
```bash
docker run -d \
--name freqtrade \
-v ~/.freqtrade/config.json:/freqtrade/config.json \
-v ~/.freqtrade/user_data/:/freqtrade/user_data \
-v ~/.freqtrade/tradesv3.sqlite:/freqtrade/tradesv3.sqlite \
-p 127.0.0.1:8080:8080 \
freqtrade trade --db-url sqlite:///tradesv3.sqlite --strategy MyAwesomeStrategy
```
!!! Danger "Security warning"
By using `-p 8080:8080` the API is available to everyone connecting to the server under the correct port, so others may be able to control your bot.
## Consuming the API
You can consume the API by using the script `scripts/rest_client.py`.
The client script only requires the `requests` module, so Freqtrade does not need to be installed on the system.
``` bash
python3 scripts/rest_client.py <command> [optional parameters]
```
By default, the script assumes `127.0.0.1` (localhost) and port `8080` to be used, however you can specify a configuration file to override this behaviour.
### Minimalistic client config
``` json
{
"api_server": {
"enabled": true,
"listen_ip_address": "0.0.0.0",
"listen_port": 8080
}
}
```
``` bash
python3 scripts/rest_client.py --config rest_config.json <command> [optional parameters]
```
## Available endpoints
| Command | Description |
|----------|-------------|
| `ping` | Simple command testing the API Readiness - requires no authentication.
| `start` | Starts the trader.
| `stop` | Stops the trader.
| `stopbuy` | Stops the trader from opening new trades. Gracefully closes open trades according to their rules.
| `reload_config` | Reloads the configuration file.
| `trades` | List last trades.
| `delete_trade <trade_id>` | Remove trade from the database. Tries to close open orders. Requires manual handling of this trade on the exchange.
| `show_config` | Shows part of the current configuration with relevant settings to operation.
| `logs` | Shows last log messages.
| `status` | Lists all open trades.
| `count` | Displays number of trades used and available.
| `locks` | Displays currently locked pairs.
| `profit` | Display a summary of your profit/loss from close trades and some stats about your performance.
| `forcesell <trade_id>` | Instantly sells the given trade (Ignoring `minimum_roi`).
| `forcesell all` | Instantly sells all open trades (Ignoring `minimum_roi`).
| `forcebuy <pair> [rate]` | Instantly buys the given pair. Rate is optional. (`forcebuy_enable` must be set to True)
| `performance` | Show performance of each finished trade grouped by pair.
| `balance` | Show account balance per currency.
| `daily <n>` | Shows profit or loss per day, over the last n days (n defaults to 7).
| `whitelist` | Show the current whitelist.
| `blacklist [pair]` | Show the current blacklist, or adds a pair to the blacklist.
| `edge` | Show validated pairs by Edge if it is enabled.
| `pair_candles` | Returns dataframe for a pair / timeframe combination while the bot is running. **Alpha**
| `pair_history` | Returns an analyzed dataframe for a given timerange, analyzed by a given strategy. **Alpha**
| `plot_config` | Get plot config from the strategy (or nothing if not configured). **Alpha**
| `strategies` | List strategies in strategy directory. **Alpha**
| `strategy <strategy>` | Get specific Strategy content. **Alpha**
| `available_pairs` | List available backtest data. **Alpha**
| `version` | Show version.
!!! Warning "Alpha status"
Endpoints labeled with *Alpha status* above may change at any time without notice.
Possible commands can be listed from the rest-client script using the `help` command.
``` bash
python3 scripts/rest_client.py help
```
``` output
Possible commands:
available_pairs
Return available pair (backtest data) based on timeframe / stake_currency selection
:param timeframe: Only pairs with this timeframe available.
:param stake_currency: Only pairs that include this timeframe
balance
Get the account balance.
blacklist
Show the current blacklist.
:param add: List of coins to add (example: "BNB/BTC")
count
Return the amount of open trades.
daily
Return the amount of open trades.
delete_trade
Delete trade from the database.
Tries to close open orders. Requires manual handling of this asset on the exchange.
:param trade_id: Deletes the trade with this ID from the database.
edge
Return information about edge.
forcebuy
Buy an asset.
:param pair: Pair to buy (ETH/BTC)
:param price: Optional - price to buy
forcesell
Force-sell a trade.
:param tradeid: Id of the trade (can be received via status command)
logs
Show latest logs.
:param limit: Limits log messages to the last <limit> logs. No limit to get all the trades.
pair_candles
Return live dataframe for <pair><timeframe>.
:param pair: Pair to get data for
:param timeframe: Only pairs with this timeframe available.
:param limit: Limit result to the last n candles.
pair_history
Return historic, analyzed dataframe
:param pair: Pair to get data for
:param timeframe: Only pairs with this timeframe available.
:param strategy: Strategy to analyze and get values for
:param timerange: Timerange to get data for (same format than --timerange endpoints)
performance
Return the performance of the different coins.
plot_config
Return plot configuration if the strategy defines one.
profit
Return the profit summary.
reload_config
Reload configuration.
show_config
Returns part of the configuration, relevant for trading operations.
start
Start the bot if it's in the stopped state.
status
Get the status of open trades.
stop
Stop the bot. Use `start` to restart.
stopbuy
Stop buying (but handle sells gracefully). Use `reload_config` to reset.
strategies
Lists available strategies
strategy
Get strategy details
:param strategy: Strategy class name
trades
Return trades history.
:param limit: Limits trades to the X last trades. No limit to get all the trades.
version
Return the version of the bot.
whitelist
Show the current whitelist.
```
## Advanced API usage using JWT tokens
!!! Note
The below should be done in an application (a Freqtrade REST API client, which fetches info via API), and is not intended to be used on a regular basis.
Freqtrade's REST API also offers JWT (JSON Web Tokens).
You can login using the following command, and subsequently use the resulting access_token.
``` bash
> curl -X POST --user Freqtrader http://localhost:8080/api/v1/token/login
{"access_token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpYXQiOjE1ODkxMTk2ODEsIm5iZiI6MTU4OTExOTY4MSwianRpIjoiMmEwYmY0NWUtMjhmOS00YTUzLTlmNzItMmM5ZWVlYThkNzc2IiwiZXhwIjoxNTg5MTIwNTgxLCJpZGVudGl0eSI6eyJ1IjoiRnJlcXRyYWRlciJ9LCJmcmVzaCI6ZmFsc2UsInR5cGUiOiJhY2Nlc3MifQ.qt6MAXYIa-l556OM7arBvYJ0SDI9J8bIk3_glDujF5g","refresh_token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpYXQiOjE1ODkxMTk2ODEsIm5iZiI6MTU4OTExOTY4MSwianRpIjoiZWQ1ZWI3YjAtYjMwMy00YzAyLTg2N2MtNWViMjIxNWQ2YTMxIiwiZXhwIjoxNTkxNzExNjgxLCJpZGVudGl0eSI6eyJ1IjoiRnJlcXRyYWRlciJ9LCJ0eXBlIjoicmVmcmVzaCJ9.d1AT_jYICyTAjD0fiQAr52rkRqtxCjUGEMwlNuuzgNQ"}
> access_token="eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpYXQiOjE1ODkxMTk2ODEsIm5iZiI6MTU4OTExOTY4MSwianRpIjoiMmEwYmY0NWUtMjhmOS00YTUzLTlmNzItMmM5ZWVlYThkNzc2IiwiZXhwIjoxNTg5MTIwNTgxLCJpZGVudGl0eSI6eyJ1IjoiRnJlcXRyYWRlciJ9LCJmcmVzaCI6ZmFsc2UsInR5cGUiOiJhY2Nlc3MifQ.qt6MAXYIa-l556OM7arBvYJ0SDI9J8bIk3_glDujF5g"
# Use access_token for authentication
> curl -X GET --header "Authorization: Bearer ${access_token}" http://localhost:8080/api/v1/count
```
Since the access token has a short timeout (15 min) - the `token/refresh` request should be used periodically to get a fresh access token:
``` bash
> curl -X POST --header "Authorization: Bearer ${refresh_token}"http://localhost:8080/api/v1/token/refresh
{"access_token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpYXQiOjE1ODkxMTk5NzQsIm5iZiI6MTU4OTExOTk3NCwianRpIjoiMDBjNTlhMWUtMjBmYS00ZTk0LTliZjAtNWQwNTg2MTdiZDIyIiwiZXhwIjoxNTg5MTIwODc0LCJpZGVudGl0eSI6eyJ1IjoiRnJlcXRyYWRlciJ9LCJmcmVzaCI6ZmFsc2UsInR5cGUiOiJhY2Nlc3MifQ.1seHlII3WprjjclY6DpRhen0rqdF4j6jbvxIhUFaSbs"}
```
## CORS
All web-based frontends are subject to [CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS) - Cross-Origin Resource Sharing.
Since most of the requests to the Freqtrade API must be authenticated, a proper CORS policy is key to avoid security problems.
Also, the standard disallows `*` CORS policies for requests with credentials, so this setting must be set appropriately.
Users can configure this themselves via the `CORS_origins` configuration setting.
It consists of a list of allowed sites that are allowed to consume resources from the bot's API.
Assuming your application is deployed as `https://frequi.freqtrade.io/home/` - this would mean that the following configuration becomes necessary:
```jsonc
{
//...
"jwt_secret_key": "somethingrandom",
"CORS_origins": ["https://frequi.freqtrade.io"],
//...
}
```
!!! Note
We strongly recommend to also set `jwt_secret_key` to something random and known only to yourself to avoid unauthorized access to your bot.

View File

@@ -1,104 +1,59 @@
# Sandbox API testing
Where an exchange provides a sandbox for risk-free integration, or end-to-end, testing CCXT provides access to these.
Some exchanges provide sandboxes or testbeds for risk-free testing, while running the bot against a real exchange.
With some configuration, freqtrade (in combination with ccxt) provides access to these.
This document is a *light overview of configuring Freqtrade and GDAX sandbox.
This can be useful to developers and trader alike as Freqtrade is quite customisable.
This document is an overview to configure Freqtrade to be used with sandboxes.
This can be useful to developers and trader alike.
When testing your API connectivity, make sure to use the following URLs.
***Website**
https://public.sandbox.gdax.com
***REST API**
https://api-public.sandbox.gdax.com
## Exchanges known to have a sandbox / testnet
* [binance](https://testnet.binance.vision/)
* [coinbasepro](https://public.sandbox.pro.coinbase.com)
* [gemini](https://exchange.sandbox.gemini.com/)
* [huobipro](https://www.testnet.huobi.pro/)
* [kucoin](https://sandbox.kucoin.com/)
* [phemex](https://testnet.phemex.com/)
!!! Note
We did not test correct functioning of all of the above testnets. Please report your experiences with each sandbox.
---
# Configure a Sandbox account on Gdax
## Configure a Sandbox account
Aim of this document section
When testing your API connectivity, make sure to use the appropriate sandbox / testnet URL.
- An sanbox account
- create 2FA (needed to create an API)
- Add test 50BTC to account
- Create :
- - API-KEY
- - API-Secret
- - API Password
In general, you should follow these steps to enable an exchange's sandbox:
## Acccount
* Figure out if an exchange has a sandbox (most likely by using google or the exchange's support documents)
* Create a sandbox account (often the sandbox-account requires separate registration)
* [Add some test assets to account](#add-test-funds)
* Create API keys
This link will redirect to the sandbox main page to login / create account dialogues:
https://public.sandbox.pro.coinbase.com/orders/
### Add test funds
After registration and Email confimation you wil be redirected into your sanbox account. It is easy to verify you're in sandbox by checking the URL bar.
> https://public.sandbox.pro.coinbase.com/
Usually, sandbox exchanges allow depositing funds directly via web-interface.
You should make sure to have a realistic amount of funds available to your test-account, so results are representable of your real account funds.
## Enable 2Fa (a prerequisite to creating sandbox API Keys)
!!! Warning
Test exchanges will **NEVER** require your real credit card or banking details!
From within sand box site select your profile, top right.
>Or as a direct link: https://public.sandbox.pro.coinbase.com/profile
## Configure freqtrade to use a exchange's sandbox
From the menu panel to the left of the screen select
> Security: "*View or Update*"
In the new site select "enable authenticator" as typical google Authenticator.
- open Google Authenticator on your phone
- scan barcode
- enter your generated 2fa
## Enable API Access
From within sandbox select profile>api>create api-keys
>or as a direct link: https://public.sandbox.pro.coinbase.com/profile/api
Click on "create one" and ensure **view** and **trade** are "checked" and sumbit your 2FA
- **Copy and paste the Passphase** into a notepade this will be needed later
- **Copy and paste the API Secret** popup into a notepad this will needed later
- **Copy and paste the API Key** into a notepad this will needed later
## Add 50 BTC test funds
To add funds, use the web interface deposit and withdraw buttons.
To begin select 'Wallets' from the top menu.
> Or as a direct link: https://public.sandbox.pro.coinbase.com/wallets
- Deposits (bottom left of screen)
- - Deposit Funds Bitcoin
- - - Coinbase BTC Wallet
- - - - Max (50 BTC)
- - - - - Deposit
*This process may be repeated for other currencies, ETH as example*
---
# Configure Freqtrade to use Gax Sandbox
The aim of this document section
- Enable sandbox URLs in Freqtrade
- Configure API
- - secret
- - key
- - passphrase
## Sandbox URLs
### Sandbox URLs
Freqtrade makes use of CCXT which in turn provides a list of URLs to Freqtrade.
These include `['test']` and `['api']`.
- `[Test]` if available will point to an Exchanges sandbox.
- `[Api]` normally used, and resolves to live API target on the exchange
* `[Test]` if available will point to an Exchanges sandbox.
* `[Api]` normally used, and resolves to live API target on the exchange.
To make use of sandbox / test add "sandbox": true, to your config.json
```json
"exchange": {
"name": "gdax",
"name": "coinbasepro",
"sandbox": true,
"key": "5wowfxemogxeowo;heiohgmd",
"secret": "/ZMH1P62rCVmwefewrgcewX8nh4gob+lywxfwfxwwfxwfNsH1ySgvWCUR/w==",
@@ -106,36 +61,57 @@ To make use of sandbox / test add "sandbox": true, to your config.json
"outdated_offset": 5
"pair_whitelist": [
"BTC/USD"
]
},
"datadir": "user_data/data/coinbasepro_sandbox"
```
Also insert your
Also the following information:
- api-key (noted earlier)
- api-secret (noted earlier)
- password (the passphrase - noted earlier)
* api-key (created for the sandbox webpage)
* api-secret (noted earlier)
* password (the passphrase - noted earlier)
!!! Tip "Different data directory"
We also recommend to set `datadir` to something identifying downloaded data as sandbox data, to avoid having sandbox data mixed with data from the real exchange.
This can be done by adding the `"datadir"` key to the configuration.
Now, whenever you use this configuration, your data directory will be set to this directory.
---
## You should now be ready to test your sandbox
Ensure Freqtrade logs show the sandbox URL, and trades made are shown in sandbox.
** Typically the BTC/USD has the most activity in sandbox to test against.
Ensure Freqtrade logs show the sandbox URL, and trades made are shown in sandbox. Also make sure to select a pair which shows at least some decent value (which very often is BTC/<somestablecoin>).
## GDAX - Old Candles problem
## Common problems with sandbox exchanges
It is my experience that GDAX sandbox candles may be 20+- minutes out of date. This can cause trades to fail as one of Freqtrades safety checks.
Sandbox exchange instances often have very low volume, which can cause some problems which usually are not seen on a real exchange instance.
To disable this check, add / change the `"outdated_offset"` parameter in the exchange section of your configuration to adjust for this delay.
Example based on the above configuration:
### Old Candles problem
```json
"exchange": {
"name": "gdax",
"sandbox": true,
"key": "5wowfxemogxeowo;heiohgmd",
"secret": "/ZMH1P62rCVmwefewrgcewX8nh4gob+lywxfwfxwwfxwfNsH1ySgvWCUR/w==",
"password": "1bkjfkhfhfu6sr",
"outdated_offset": 30
"pair_whitelist": [
"BTC/USD"
```
Since Sandboxes often have low volume, candles can be quite old and show no volume.
To disable the error "Outdated history for pair ...", best increase the parameter `"outdated_offset"` to a number that seems realistic for the sandbox you're using.
### Unfilled orders
Sandboxes often have very low volumes - which means that many trades can go unfilled, or can go unfilled for a very long time.
To mitigate this, you can try to match the first order on the opposite orderbook side using the following configuration:
``` jsonc
"order_types": {
"buy": "limit",
"sell": "limit"
// ...
},
"bid_strategy": {
"price_side": "ask",
// ...
},
"ask_strategy":{
"price_side": "bid",
// ...
},
```
The configuration is similar to the suggested configuration for market orders - however by using limit-orders you can avoid moving the price too much, and you can set the worst price you might get.

View File

@@ -1,13 +1,29 @@
# SQL Helper
This page constains some help if you want to edit your sqlite db.
This page contains some help if you want to edit your sqlite db.
## Install sqlite3
**Ubuntu/Debian installation**
Sqlite3 is a terminal based sqlite application.
Feel free to use a visual Database editor like SqliteBrowser if you feel more comfortable with that.
### Ubuntu/Debian installation
```bash
sudo apt-get install sqlite3
```
### Using sqlite3 via docker-compose
The freqtrade docker image does contain sqlite3, so you can edit the database without having to install anything on the host system.
``` bash
docker-compose exec freqtrade /bin/bash
sqlite3 <databasefile>.sqlite
```
## Open the DB
```bash
sqlite3
.open <filepath>
@@ -16,78 +32,70 @@ sqlite3
## Table structure
### List tables
```bash
.tables
```
### Display table structure
```bash
.schema <table_name>
```
### Trade table structure
```sql
CREATE TABLE trades (
id INTEGER NOT NULL,
exchange VARCHAR NOT NULL,
pair VARCHAR NOT NULL,
is_open BOOLEAN NOT NULL,
fee_open FLOAT NOT NULL,
fee_close FLOAT NOT NULL,
open_rate FLOAT,
open_rate_requested FLOAT,
close_rate FLOAT,
close_rate_requested FLOAT,
close_profit FLOAT,
stake_amount FLOAT NOT NULL,
amount FLOAT,
open_date DATETIME NOT NULL,
close_date DATETIME,
open_order_id VARCHAR,
PRIMARY KEY (id),
CHECK (is_open IN (0, 1))
);
```
## Get all trades in the table
```sql
SELECT * FROM trades;
```
## Fix trade still open after a /forcesell
## Fix trade still open after a manual sell on the exchange
!!! Warning
Manually selling a pair on the exchange will not be detected by the bot and it will try to sell anyway. Whenever possible, forcesell <tradeid> should be used to accomplish the same thing.
It is strongly advised to backup your database file before making any manual changes.
!!! Note
This should not be necessary after /forcesell, as forcesell orders are closed automatically by the bot on the next iteration.
```sql
UPDATE trades
SET is_open=0, close_date=<close_date>, close_rate=<close_rate>, close_profit=close_rate/open_rate-1
SET is_open=0,
close_date=<close_date>,
close_rate=<close_rate>,
close_profit = close_rate / open_rate - 1,
close_profit_abs = (amount * <close_rate> * (1 - fee_close) - (amount * (open_rate * (1 - fee_open)))),
sell_reason=<sell_reason>
WHERE id=<trade_ID_to_update>;
```
**Example:**
### Example
```sql
UPDATE trades
SET is_open=0, close_date='2017-12-20 03:08:45.103418', close_rate=0.19638016, close_profit=0.0496
SET is_open=0,
close_date='2020-06-20 03:08:45.103418',
close_rate=0.19638016,
close_profit=0.0496,
close_profit_abs = (amount * 0.19638016 * (1 - fee_close) - (amount * (open_rate * (1 - fee_open)))),
sell_reason='force_sell'
WHERE id=31;
```
## Insert manually a new trade
## Remove trade from the database
!!! Tip "Use RPC Methods to delete trades"
Consider using `/delete <tradeid>` via telegram or rest API. That's the recommended way to deleting trades.
If you'd still like to remove a trade from the database directly, you can use the below query.
```sql
INSERT
INTO trades (exchange, pair, is_open, fee_open, fee_close, open_rate, stake_amount, amount, open_date)
VALUES ('BITTREX', 'BTC_<COIN>', 1, 0.0025, 0.0025, <open_rate>, <stake_amount>, <amount>, '<datetime>')
DELETE FROM trades WHERE id = <tradeid>;
```
**Example:**
```sql
INSERT INTO trades (exchange, pair, is_open, fee_open, fee_close, open_rate, stake_amount, amount, open_date) VALUES ('BITTREX', 'BTC_ETC', 1, 0.0025, 0.0025, 0.00258580, 0.002, 0.7715262081, '2017-11-28 12:44:24.000000')
```
## Fix wrong fees in the table
If your DB was created before
[PR#200](https://github.com/freqtrade/freqtrade/pull/200) was merged
(before 12/23/17).
```sql
UPDATE trades SET fee=0.0025 WHERE fee=0.005;
DELETE FROM trades WHERE id = 31;
```
!!! Warning
This will remove this trade from the database. Please make sure you got the correct id and **NEVER** run this query without the `where` clause.

View File

@@ -1,62 +1,192 @@
# Stop Loss support
# Stop Loss
The `stoploss` configuration parameter is loss as ratio that should trigger a sale.
For example, value `-0.10` will cause immediate sell if the profit dips below -10% for a given trade. This parameter is optional.
Most of the strategy files already include the optimal `stoploss` value.
!!! Info
All stoploss properties mentioned in this file can be set in the Strategy, or in the configuration.
<ins>Configuration values will override the strategy values.</ins>
## Stop Loss On-Exchange/Freqtrade
Those stoploss modes can be *on exchange* or *off exchange*.
These modes can be configured with these values:
``` python
'emergencysell': 'market',
'stoploss_on_exchange': False
'stoploss_on_exchange_interval': 60,
'stoploss_on_exchange_limit_ratio': 0.99
```
!!! Note
Stoploss on exchange is only supported for Binance (stop-loss-limit), Kraken (stop-loss-market, stop-loss-limit) and FTX (stop limit and stop-market) as of now.
<ins>Do not set too low/tight stoploss value if using stop loss on exchange!</ins>
If set to low/tight then you have greater risk of missing fill on the order and stoploss will not work.
### stoploss_on_exchange and stoploss_on_exchange_limit_ratio
Enable or Disable stop loss on exchange.
If the stoploss is *on exchange* it means a stoploss limit order is placed on the exchange immediately after buy order happens successfully. This will protect you against sudden crashes in market as the order will be in the queue immediately and if market goes down then the order has more chance of being fulfilled.
If `stoploss_on_exchange` uses limit orders, the exchange needs 2 prices, the stoploss_price and the Limit price.
`stoploss` defines the stop-price where the limit order is placed - and limit should be slightly below this.
If an exchange supports both limit and market stoploss orders, then the value of `stoploss` will be used to determine the stoploss type.
Calculation example: we bought the asset at 100\$.
Stop-price is 95\$, then limit would be `95 * 0.99 = 94.05$` - so the limit order fill can happen between 95$ and 94.05$.
For example, assuming the stoploss is on exchange, and trailing stoploss is enabled, and the market is going up, then the bot automatically cancels the previous stoploss order and puts a new one with a stop value higher than the previous stoploss order.
!!! Note
If `stoploss_on_exchange` is enabled and the stoploss is cancelled manually on the exchange, then the bot will create a new stoploss order.
### stoploss_on_exchange_interval
In case of stoploss on exchange there is another parameter called `stoploss_on_exchange_interval`. This configures the interval in seconds at which the bot will check the stoploss and update it if necessary.
The bot cannot do these every 5 seconds (at each iteration), otherwise it would get banned by the exchange.
So this parameter will tell the bot how often it should update the stoploss order. The default value is 60 (1 minute).
This same logic will reapply a stoploss order on the exchange should you cancel it accidentally.
### emergencysell
`emergencysell` is an optional value, which defaults to `market` and is used when creating stop loss on exchange orders fails.
The below is the default which is used if not changed in strategy or configuration file.
Example from strategy file:
``` python
order_types = {
'buy': 'limit',
'sell': 'limit',
'emergencysell': 'market',
'stoploss': 'market',
'stoploss_on_exchange': True,
'stoploss_on_exchange_interval': 60,
'stoploss_on_exchange_limit_ratio': 0.99
}
```
## Stop Loss Types
At this stage the bot contains the following stoploss support modes:
1. static stop loss, defined in either the strategy or configuration.
2. trailing stop loss, defined in the configuration.
3. trailing stop loss, custom positive loss, defined in configuration.
1. Static stop loss.
2. Trailing stop loss.
3. Trailing stop loss, custom positive loss.
4. Trailing stop loss only once the trade has reached a certain offset.
!!! Note
All stoploss properties can be configured in either Strategy or configuration. Configuration values override strategy values.
### Static Stop Loss
Those stoploss modes can be *on exchange* or *off exchange*. If the stoploss is *on exchange* it means a stoploss limit order is placed on the exchange immediately after buy order happens successfuly. This will protect you against sudden crashes in market as the order will be in the queue immediately and if market goes down then the order has more chance of being fulfilled.
This is very simple, you define a stop loss of x (as a ratio of price, i.e. x * 100% of price). This will try to sell the asset once the loss exceeds the defined loss.
In case of stoploss on exchange there is another parameter called `stoploss_on_exchange_interval`. This configures the interval in seconds at which the bot will check the stoploss and update it if necessary. As an example in case of trailing stoploss if the order is on the exchange and the market is going up then the bot automatically cancels the previous stoploss order and put a new one with a stop value higher than previous one. It is clear that the bot cannot do it every 5 seconds otherwise it gets banned. So this parameter will tell the bot how often it should update the stoploss order. The default value is 60 (1 minute).
Example of stop loss:
!!! Note
Stoploss on exchange is only supported for Binance as of now.
## Static Stop Loss
This is very simple, basically you define a stop loss of x in your strategy file or alternative in the configuration, which
will overwrite the strategy definition. This will basically try to sell your asset, the second the loss exceeds the defined loss.
## Trail Stop Loss
The initial value for this stop loss, is defined in your strategy or configuration. Just as you would define your Stop Loss normally.
To enable this Feauture all you have to do is to define the configuration element:
``` json
"trailing_stop" : True
``` python
stoploss = -0.10
```
This will now activate an algorithm, which automatically moves your stop loss up every time the price of your asset increases.
For example, simplified math:
For example, simplified math,
* the bot buys an asset at a price of 100$
* the stop loss is defined at -10%
* the stop loss would get triggered once the asset drops below 90$
* you buy an asset at a price of 100$
* your stop loss is defined at 2%
* which means your stop loss, gets triggered once your asset dropped below 98$
* assuming your asset now increases to 102$
* your stop loss, will now be 2% of 102$ or 99.96$
* now your asset drops in value to 101$, your stop loss, will still be 99.96$
### Trailing Stop Loss
basically what this means is that your stop loss will be adjusted to be always be 2% of the highest observed price
The initial value for this is `stoploss`, just as you would define your static Stop loss.
To enable trailing stoploss:
### Custom positive loss
Due to demand, it is possible to have a default stop loss, when you are in the red with your buy, but once your profit surpasses a certain percentage,
the system will utilize a new stop loss, which can be a different value. For example your default stop loss is 5%, but once you have 1.1% profit,
it will be changed to be only a 1% stop loss, which trails the green candles until it goes below them.
Both values can be configured in the main configuration file and requires `"trailing_stop": true` to be set to true.
``` json
"trailing_stop_positive": 0.01,
"trailing_stop_positive_offset": 0.011,
``` python
stoploss = -0.10
trailing_stop = True
```
The 0.01 would translate to a 1% stop loss, once you hit 1.1% profit.
This will now activate an algorithm, which automatically moves the stop loss up every time the price of your asset increases.
You should also make sure to have this value (`trailing_stop_positive_offset`) lower than your minimal ROI, otherwise minimal ROI will apply first and sell your trade.
For example, simplified math:
* the bot buys an asset at a price of 100$
* the stop loss is defined at -10%
* the stop loss would get triggered once the asset drops below 90$
* assuming the asset now increases to 102$
* the stop loss will now be -10% of 102$ = 91.8$
* now the asset drops in value to 101\$, the stop loss will still be 91.8$ and would trigger at 91.8$.
In summary: The stoploss will be adjusted to be always be -10% of the highest observed price.
### Trailing stop loss, custom positive loss
It is also possible to have a default stop loss, when you are in the red with your buy (buy - fee), but once you hit positive result the system will utilize a new stop loss, which can have a different value.
For example, your default stop loss is -10%, but once you have more than 0% profit (example 0.1%) a different trailing stoploss will be used.
!!! Note
If you want the stoploss to only be changed when you break even of making a profit (what most users want) please refer to next section with [offset enabled](#Trailing-stop-loss-only-once-the-trade-has-reached-a-certain-offset).
Both values require `trailing_stop` to be set to true and `trailing_stop_positive` with a value.
``` python
stoploss = -0.10
trailing_stop = True
trailing_stop_positive = 0.02
```
For example, simplified math:
* the bot buys an asset at a price of 100$
* the stop loss is defined at -10%
* the stop loss would get triggered once the asset drops below 90$
* assuming the asset now increases to 102$
* the stop loss will now be -2% of 102$ = 99.96$ (99.96$ stop loss will be locked in and will follow asset price increments with -2%)
* now the asset drops in value to 101\$, the stop loss will still be 99.96$ and would trigger at 99.96$
The 0.02 would translate to a -2% stop loss.
Before this, `stoploss` is used for the trailing stoploss.
### Trailing stop loss only once the trade has reached a certain offset
It is also possible to use a static stoploss until the offset is reached, and then trail the trade to take profits once the market turns.
If `"trailing_only_offset_is_reached": true` then the trailing stoploss is only activated once the offset is reached. Until then, the stoploss remains at the configured `stoploss`.
This option can be used with or without `trailing_stop_positive`, but uses `trailing_stop_positive_offset` as offset.
``` python
trailing_stop_positive_offset = 0.011
trailing_only_offset_is_reached = True
```
Configuration (offset is buy-price + 3%):
``` python
stoploss = -0.10
trailing_stop = True
trailing_stop_positive = 0.02
trailing_stop_positive_offset = 0.03
trailing_only_offset_is_reached = True
```
For example, simplified math:
* the bot buys an asset at a price of 100$
* the stop loss is defined at -10%
* the stop loss would get triggered once the asset drops below 90$
* stoploss will remain at 90$ unless asset increases to or above our configured offset
* assuming the asset now increases to 103$ (where we have the offset configured)
* the stop loss will now be -2% of 103$ = 100.94$
* now the asset drops in value to 101\$, the stop loss will still be 100.94$ and would trigger at 100.94$
!!! Tip
Make sure to have this value (`trailing_stop_positive_offset`) lower than minimal ROI, otherwise minimal ROI will apply first and sell the trade.
## Changing stoploss on open trades
A stoploss on an open trade can be changed by changing the value in the configuration or strategy and use the `/reload_config` command (alternatively, completely stopping and restarting the bot also works).
The new stoploss value will be applied to open trades (and corresponding log-messages will be generated).
### Limitations
Stoploss values cannot be changed if `trailing_stop` is enabled and the stoploss has already been adjusted, or if [Edge](edge.md) is enabled (since Edge would recalculate stoploss based on the current market situation).

222
docs/strategy-advanced.md Normal file
View File

@@ -0,0 +1,222 @@
# Advanced Strategies
This page explains some advanced concepts available for strategies.
If you're just getting started, please be familiar with the methods described in the [Strategy Customization](strategy-customization.md) documentation and with the [Freqtrade basics](bot-basics.md) first.
[Freqtrade basics](bot-basics.md) describes in which sequence each method described below is called, which can be helpful to understand which method to use for your custom needs.
!!! Note
All callback methods described below should only be implemented in a strategy if they are actually used.
## Custom order timeout rules
Simple, timebased order-timeouts can be configured either via strategy or in the configuration in the `unfilledtimeout` section.
However, freqtrade also offers a custom callback for both ordertypes, which allows you to decide based on custom criteria if a order did time out or not.
!!! Note
Unfilled order timeouts are not relevant during backtesting or hyperopt, and are only relevant during real (live) trading. Therefore these methods are only called in these circumstances.
### Custom order timeout example
A simple example, which applies different unfilled-timeouts depending on the price of the asset can be seen below.
It applies a tight timeout for higher priced assets, while allowing more time to fill on cheap coins.
The function must return either `True` (cancel order) or `False` (keep order alive).
``` python
from datetime import datetime, timedelta
from freqtrade.persistence import Trade
class Awesomestrategy(IStrategy):
# ... populate_* methods
# Set unfilledtimeout to 25 hours, since our maximum timeout from below is 24 hours.
unfilledtimeout = {
'buy': 60 * 25,
'sell': 60 * 25
}
def check_buy_timeout(self, pair: str, trade: 'Trade', order: dict, **kwargs) -> bool:
if trade.open_rate > 100 and trade.open_date < datetime.utcnow() - timedelta(minutes=5):
return True
elif trade.open_rate > 10 and trade.open_date < datetime.utcnow() - timedelta(minutes=3):
return True
elif trade.open_rate < 1 and trade.open_date < datetime.utcnow() - timedelta(hours=24):
return True
return False
def check_sell_timeout(self, pair: str, trade: 'Trade', order: dict, **kwargs) -> bool:
if trade.open_rate > 100 and trade.open_date < datetime.utcnow() - timedelta(minutes=5):
return True
elif trade.open_rate > 10 and trade.open_date < datetime.utcnow() - timedelta(minutes=3):
return True
elif trade.open_rate < 1 and trade.open_date < datetime.utcnow() - timedelta(hours=24):
return True
return False
```
!!! Note
For the above example, `unfilledtimeout` must be set to something bigger than 24h, otherwise that type of timeout will apply first.
### Custom order timeout example (using additional data)
``` python
from datetime import datetime
from freqtrade.persistence import Trade
class Awesomestrategy(IStrategy):
# ... populate_* methods
# Set unfilledtimeout to 25 hours, since our maximum timeout from below is 24 hours.
unfilledtimeout = {
'buy': 60 * 25,
'sell': 60 * 25
}
def check_buy_timeout(self, pair: str, trade: Trade, order: dict, **kwargs) -> bool:
ob = self.dp.orderbook(pair, 1)
current_price = ob['bids'][0][0]
# Cancel buy order if price is more than 2% above the order.
if current_price > order['price'] * 1.02:
return True
return False
def check_sell_timeout(self, pair: str, trade: Trade, order: dict, **kwargs) -> bool:
ob = self.dp.orderbook(pair, 1)
current_price = ob['asks'][0][0]
# Cancel sell order if price is more than 2% below the order.
if current_price < order['price'] * 0.98:
return True
return False
```
## Bot loop start callback
A simple callback which is called once at the start of every bot throttling iteration.
This can be used to perform calculations which are pair independent (apply to all pairs), loading of external data, etc.
``` python
import requests
class Awesomestrategy(IStrategy):
# ... populate_* methods
def bot_loop_start(self, **kwargs) -> None:
"""
Called at the start of the bot iteration (one loop).
Might be used to perform pair-independent tasks
(e.g. gather some remote resource for comparison)
:param **kwargs: Ensure to keep this here so updates to this won't break your strategy.
"""
if self.config['runmode'].value in ('live', 'dry_run'):
# Assign this to the class by using self.*
# can then be used by populate_* methods
self.remote_data = requests.get('https://some_remote_source.example.com')
```
## Bot order confirmation
### Trade entry (buy order) confirmation
`confirm_trade_entry()` can be used to abort a trade entry at the latest second (maybe because the price is not what we expect).
``` python
class Awesomestrategy(IStrategy):
# ... populate_* methods
def confirm_trade_entry(self, pair: str, order_type: str, amount: float, rate: float,
time_in_force: str, **kwargs) -> bool:
"""
Called right before placing a buy order.
Timing for this function is critical, so avoid doing heavy computations or
network requests in this method.
For full documentation please go to https://www.freqtrade.io/en/latest/strategy-advanced/
When not implemented by a strategy, returns True (always confirming).
:param pair: Pair that's about to be bought.
:param order_type: Order type (as configured in order_types). usually limit or market.
:param amount: Amount in target (quote) currency that's going to be traded.
:param rate: Rate that's going to be used when using limit orders
:param time_in_force: Time in force. Defaults to GTC (Good-til-cancelled).
:param **kwargs: Ensure to keep this here so updates to this won't break your strategy.
:return bool: When True is returned, then the buy-order is placed on the exchange.
False aborts the process
"""
return True
```
### Trade exit (sell order) confirmation
`confirm_trade_exit()` can be used to abort a trade exit (sell) at the latest second (maybe because the price is not what we expect).
``` python
from freqtrade.persistence import Trade
class Awesomestrategy(IStrategy):
# ... populate_* methods
def confirm_trade_exit(self, pair: str, trade: Trade, order_type: str, amount: float,
rate: float, time_in_force: str, sell_reason: str, **kwargs) -> bool:
"""
Called right before placing a regular sell order.
Timing for this function is critical, so avoid doing heavy computations or
network requests in this method.
For full documentation please go to https://www.freqtrade.io/en/latest/strategy-advanced/
When not implemented by a strategy, returns True (always confirming).
:param pair: Pair that's about to be sold.
:param order_type: Order type (as configured in order_types). usually limit or market.
:param amount: Amount in quote currency.
:param rate: Rate that's going to be used when using limit orders
:param time_in_force: Time in force. Defaults to GTC (Good-til-cancelled).
:param sell_reason: Sell reason.
Can be any of ['roi', 'stop_loss', 'stoploss_on_exchange', 'trailing_stop_loss',
'sell_signal', 'force_sell', 'emergency_sell']
:param **kwargs: Ensure to keep this here so updates to this won't break your strategy.
:return bool: When True is returned, then the sell-order is placed on the exchange.
False aborts the process
"""
if sell_reason == 'force_sell' and trade.calc_profit_ratio(rate) < 0:
# Reject force-sells with negative profit
# This is just a sample, please adjust to your needs
# (this does not necessarily make sense, assuming you know when you're force-selling)
return False
return True
```
## Derived strategies
The strategies can be derived from other strategies. This avoids duplication of your custom strategy code. You can use this technique to override small parts of your main strategy, leaving the rest untouched:
``` python
class MyAwesomeStrategy(IStrategy):
...
stoploss = 0.13
trailing_stop = False
# All other attributes and methods are here as they
# should be in any custom strategy...
...
class MyAwesomeStrategy2(MyAwesomeStrategy):
# Override something
stoploss = 0.08
trailing_stop = True
```
Both attributes and methods may be overriden, altering behavior of the original strategy in a way you need.

View File

@@ -0,0 +1,776 @@
# Strategy Customization
This page explains how to customize your strategies, add new indicators and set up trading rules.
Please familiarize yourself with [Freqtrade basics](bot-basics.md) first, which provides overall info on how the bot operates.
## Install a custom strategy file
This is very simple. Copy paste your strategy file into the directory `user_data/strategies`.
Let assume you have a class called `AwesomeStrategy` in the file `AwesomeStrategy.py`:
1. Move your file into `user_data/strategies` (you should have `user_data/strategies/AwesomeStrategy.py`
2. Start the bot with the param `--strategy AwesomeStrategy` (the parameter is the class name)
```bash
freqtrade trade --strategy AwesomeStrategy
```
## Develop your own strategy
The bot includes a default strategy file.
Also, several other strategies are available in the [strategy repository](https://github.com/freqtrade/freqtrade-strategies).
You will however most likely have your own idea for a strategy.
This document intends to help you develop one for yourself.
To get started, use `freqtrade new-strategy --strategy AwesomeStrategy`.
This will create a new strategy file from a template, which will be located under `user_data/strategies/AwesomeStrategy.py`.
!!! Note
This is just a template file, which will most likely not be profitable out of the box.
### Anatomy of a strategy
A strategy file contains all the information needed to build a good strategy:
- Indicators
- Buy strategy rules
- Sell strategy rules
- Minimal ROI recommended
- Stoploss strongly recommended
The bot also include a sample strategy called `SampleStrategy` you can update: `user_data/strategies/sample_strategy.py`.
You can test it with the parameter: `--strategy SampleStrategy`
Additionally, there is an attribute called `INTERFACE_VERSION`, which defines the version of the strategy interface the bot should use.
The current version is 2 - which is also the default when it's not set explicitly in the strategy.
Future versions will require this to be set.
```bash
freqtrade trade --strategy AwesomeStrategy
```
**For the following section we will use the [user_data/strategies/sample_strategy.py](https://github.com/freqtrade/freqtrade/blob/develop/freqtrade/templates/sample_strategy.py)
file as reference.**
!!! Note "Strategies and Backtesting"
To avoid problems and unexpected differences between Backtesting and dry/live modes, please be aware
that during backtesting the full time range is passed to the `populate_*()` methods at once.
It is therefore best to use vectorized operations (across the whole dataframe, not loops) and
avoid index referencing (`df.iloc[-1]`), but instead use `df.shift()` to get to the previous candle.
!!! Warning "Warning: Using future data"
Since backtesting passes the full time range to the `populate_*()` methods, the strategy author
needs to take care to avoid having the strategy utilize data from the future.
Some common patterns for this are listed in the [Common Mistakes](#common-mistakes-when-developing-strategies) section of this document.
### Customize Indicators
Buy and sell strategies need indicators. You can add more indicators by extending the list contained in the method `populate_indicators()` from your strategy file.
You should only add the indicators used in either `populate_buy_trend()`, `populate_sell_trend()`, or to populate another indicator, otherwise performance may suffer.
It's important to always return the dataframe without removing/modifying the columns `"open", "high", "low", "close", "volume"`, otherwise these fields would contain something unexpected.
Sample:
```python
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
"""
dataframe['sar'] = ta.SAR(dataframe)
dataframe['adx'] = ta.ADX(dataframe)
stoch = ta.STOCHF(dataframe)
dataframe['fastd'] = stoch['fastd']
dataframe['fastk'] = stoch['fastk']
dataframe['blower'] = ta.BBANDS(dataframe, nbdevup=2, nbdevdn=2)['lowerband']
dataframe['sma'] = ta.SMA(dataframe, timeperiod=40)
dataframe['tema'] = ta.TEMA(dataframe, timeperiod=9)
dataframe['mfi'] = ta.MFI(dataframe)
dataframe['rsi'] = ta.RSI(dataframe)
dataframe['ema5'] = ta.EMA(dataframe, timeperiod=5)
dataframe['ema10'] = ta.EMA(dataframe, timeperiod=10)
dataframe['ema50'] = ta.EMA(dataframe, timeperiod=50)
dataframe['ema100'] = ta.EMA(dataframe, timeperiod=100)
dataframe['ao'] = awesome_oscillator(dataframe)
macd = ta.MACD(dataframe)
dataframe['macd'] = macd['macd']
dataframe['macdsignal'] = macd['macdsignal']
dataframe['macdhist'] = macd['macdhist']
hilbert = ta.HT_SINE(dataframe)
dataframe['htsine'] = hilbert['sine']
dataframe['htleadsine'] = hilbert['leadsine']
dataframe['plus_dm'] = ta.PLUS_DM(dataframe)
dataframe['plus_di'] = ta.PLUS_DI(dataframe)
dataframe['minus_dm'] = ta.MINUS_DM(dataframe)
dataframe['minus_di'] = ta.MINUS_DI(dataframe)
return dataframe
```
!!! Note "Want more indicator examples?"
Look into the [user_data/strategies/sample_strategy.py](https://github.com/freqtrade/freqtrade/blob/develop/freqtrade/templates/sample_strategy.py).
Then uncomment indicators you need.
### Strategy startup period
Most indicators have an instable startup period, in which they are either not available, or the calculation is incorrect. This can lead to inconsistencies, since Freqtrade does not know how long this instable period should be.
To account for this, the strategy can be assigned the `startup_candle_count` attribute.
This should be set to the maximum number of candles that the strategy requires to calculate stable indicators.
In this example strategy, this should be set to 100 (`startup_candle_count = 100`), since the longest needed history is 100 candles.
``` python
dataframe['ema100'] = ta.EMA(dataframe, timeperiod=100)
```
By letting the bot know how much history is needed, backtest trades can start at the specified timerange during backtesting and hyperopt.
!!! Warning
`startup_candle_count` should be below `ohlcv_candle_limit` (which is 500 for most exchanges) - since only this amount of candles will be available during Dry-Run/Live Trade operations.
#### Example
Let's try to backtest 1 month (January 2019) of 5m candles using an example strategy with EMA100, as above.
``` bash
freqtrade backtesting --timerange 20190101-20190201 --timeframe 5m
```
Assuming `startup_candle_count` is set to 100, backtesting knows it needs 100 candles to generate valid buy signals. It will load data from `20190101 - (100 * 5m)` - which is ~2019-12-31 15:30:00.
If this data is available, indicators will be calculated with this extended timerange. The instable startup period (up to 2019-01-01 00:00:00) will then be removed before starting backtesting.
!!! Note
If data for the startup period is not available, then the timerange will be adjusted to account for this startup period - so Backtesting would start at 2019-01-01 08:30:00.
### Buy signal rules
Edit the method `populate_buy_trend()` in your strategy file to update your buy strategy.
It's important to always return the dataframe without removing/modifying the columns `"open", "high", "low", "close", "volume"`, otherwise these fields would contain something unexpected.
This will method will also define a new column, `"buy"`, which needs to contain 1 for buys, and 0 for "no action".
Sample from `user_data/strategies/sample_strategy.py`:
```python
def populate_buy_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
"""
Based on TA indicators, populates the buy signal for the given dataframe
:param dataframe: DataFrame populated with indicators
:param metadata: Additional information, like the currently traded pair
:return: DataFrame with buy column
"""
dataframe.loc[
(
(qtpylib.crossed_above(dataframe['rsi'], 30)) & # Signal: RSI crosses above 30
(dataframe['tema'] <= dataframe['bb_middleband']) & # Guard
(dataframe['tema'] > dataframe['tema'].shift(1)) & # Guard
(dataframe['volume'] > 0) # Make sure Volume is not 0
),
'buy'] = 1
return dataframe
```
!!! Note
Buying requires sellers to buy from - therefore volume needs to be > 0 (`dataframe['volume'] > 0`) to make sure that the bot does not buy/sell in no-activity periods.
### Sell signal rules
Edit the method `populate_sell_trend()` into your strategy file to update your sell strategy.
Please note that the sell-signal is only used if `use_sell_signal` is set to true in the configuration.
It's important to always return the dataframe without removing/modifying the columns `"open", "high", "low", "close", "volume"`, otherwise these fields would contain something unexpected.
This will method will also define a new column, `"sell"`, which needs to contain 1 for sells, and 0 for "no action".
Sample from `user_data/strategies/sample_strategy.py`:
```python
def populate_sell_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
"""
Based on TA indicators, populates the sell signal for the given dataframe
:param dataframe: DataFrame populated with indicators
:param metadata: Additional information, like the currently traded pair
:return: DataFrame with buy column
"""
dataframe.loc[
(
(qtpylib.crossed_above(dataframe['rsi'], 70)) & # Signal: RSI crosses above 70
(dataframe['tema'] > dataframe['bb_middleband']) & # Guard
(dataframe['tema'] < dataframe['tema'].shift(1)) & # Guard
(dataframe['volume'] > 0) # Make sure Volume is not 0
),
'sell'] = 1
return dataframe
```
### Minimal ROI
This dict defines the minimal Return On Investment (ROI) a trade should reach before selling, independent from the sell signal.
It is of the following format, with the dict key (left side of the colon) being the minutes passed since the trade opened, and the value (right side of the colon) being the percentage.
```python
minimal_roi = {
"40": 0.0,
"30": 0.01,
"20": 0.02,
"0": 0.04
}
```
The above configuration would therefore mean:
- Sell whenever 4% profit was reached
- Sell when 2% profit was reached (in effect after 20 minutes)
- Sell when 1% profit was reached (in effect after 30 minutes)
- Sell when trade is non-loosing (in effect after 40 minutes)
The calculation does include fees.
To disable ROI completely, set it to an insanely high number:
```python
minimal_roi = {
"0": 100
}
```
While technically not completely disabled, this would sell once the trade reaches 10000% Profit.
To use times based on candle duration (timeframe), the following snippet can be handy.
This will allow you to change the timeframe for the strategy, and ROI times will still be set as candles (e.g. after 3 candles ...)
``` python
from freqtrade.exchange import timeframe_to_minutes
class AwesomeStrategy(IStrategy):
timeframe = "1d"
timeframe_mins = timeframe_to_minutes(timeframe)
minimal_roi = {
"0": 0.05, # 5% for the first 3 candles
str(timeframe_mins * 3)): 0.02, # 2% after 3 candles
str(timeframe_mins * 6)): 0.01, # 1% After 6 candles
}
```
### Stoploss
Setting a stoploss is highly recommended to protect your capital from strong moves against you.
Sample:
``` python
stoploss = -0.10
```
This would signify a stoploss of -10%.
For the full documentation on stoploss features, look at the dedicated [stoploss page](stoploss.md).
If your exchange supports it, it's recommended to also set `"stoploss_on_exchange"` in the order_types dictionary, so your stoploss is on the exchange and cannot be missed due to network problems, high load or other reasons.
For more information on order_types please look [here](configuration.md#understand-order_types).
### Timeframe (formerly ticker interval)
This is the set of candles the bot should download and use for the analysis.
Common values are `"1m"`, `"5m"`, `"15m"`, `"1h"`, however all values supported by your exchange should work.
Please note that the same buy/sell signals may work well with one timeframe, but not with the others.
This setting is accessible within the strategy methods as the `self.timeframe` attribute.
### Metadata dict
The metadata-dict (available for `populate_buy_trend`, `populate_sell_trend`, `populate_indicators`) contains additional information.
Currently this is `pair`, which can be accessed using `metadata['pair']` - and will return a pair in the format `XRP/BTC`.
The Metadata-dict should not be modified and does not persist information across multiple calls.
Instead, have a look at the section [Storing information](#Storing-information)
### Storing information
Storing information can be accomplished by creating a new dictionary within the strategy class.
The name of the variable can be chosen at will, but should be prefixed with `cust_` to avoid naming collisions with predefined strategy variables.
```python
class Awesomestrategy(IStrategy):
# Create custom dictionary
cust_info = {}
def populate_indicators(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
# Check if the entry already exists
if not metadata["pair"] in self._cust_info:
# Create empty entry for this pair
self._cust_info[metadata["pair"]] = {}
if "crosstime" in self.cust_info[metadata["pair"]:
self.cust_info[metadata["pair"]]["crosstime"] += 1
else:
self.cust_info[metadata["pair"]]["crosstime"] = 1
```
!!! Warning
The data is not persisted after a bot-restart (or config-reload). Also, the amount of data should be kept smallish (no DataFrames and such), otherwise the bot will start to consume a lot of memory and eventually run out of memory and crash.
!!! Note
If the data is pair-specific, make sure to use pair as one of the keys in the dictionary.
***
## Additional data (informative_pairs)
### Get data for non-tradeable pairs
Data for additional, informative pairs (reference pairs) can be beneficial for some strategies.
OHLCV data for these pairs will be downloaded as part of the regular whitelist refresh process and is available via `DataProvider` just as other pairs (see below).
These parts will **not** be traded unless they are also specified in the pair whitelist, or have been selected by Dynamic Whitelisting.
The pairs need to be specified as tuples in the format `("pair", "timeframe")`, with pair as the first and timeframe as the second argument.
Sample:
``` python
def informative_pairs(self):
return [("ETH/USDT", "5m"),
("BTC/TUSD", "15m"),
]
```
A full sample can be found [in the DataProvider section](#complete-data-provider-sample).
!!! Warning
As these pairs will be refreshed as part of the regular whitelist refresh, it's best to keep this list short.
All timeframes and all pairs can be specified as long as they are available (and active) on the used exchange.
It is however better to use resampling to longer timeframes whenever possible
to avoid hammering the exchange with too many requests and risk being blocked.
***
## Additional data (DataProvider)
The strategy provides access to the `DataProvider`. This allows you to get additional data to use in your strategy.
All methods return `None` in case of failure (do not raise an exception).
Please always check the mode of operation to select the correct method to get data (samples see below).
!!! Warning "Hyperopt"
Dataprovider is available during hyperopt, however it can only be used in `populate_indicators()` within a strategy.
It is not available in `populate_buy()` and `populate_sell()` methods, nor in `populate_indicators()`, if this method located in the hyperopt file.
### Possible options for DataProvider
- [`available_pairs`](#available_pairs) - Property with tuples listing cached pairs with their timeframe (pair, timeframe).
- [`current_whitelist()`](#current_whitelist) - Returns a current list of whitelisted pairs. Useful for accessing dynamic whitelists (i.e. VolumePairlist)
- [`get_pair_dataframe(pair, timeframe)`](#get_pair_dataframepair-timeframe) - This is a universal method, which returns either historical data (for backtesting) or cached live data (for the Dry-Run and Live-Run modes).
- [`get_analyzed_dataframe(pair, timeframe)`](#get_analyzed_dataframepair-timeframe) - Returns the analyzed dataframe (after calling `populate_indicators()`, `populate_buy()`, `populate_sell()`) and the time of the latest analysis.
- `historic_ohlcv(pair, timeframe)` - Returns historical data stored on disk.
- `market(pair)` - Returns market data for the pair: fees, limits, precisions, activity flag, etc. See [ccxt documentation](https://github.com/ccxt/ccxt/wiki/Manual#markets) for more details on the Market data structure.
- `ohlcv(pair, timeframe)` - Currently cached candle (OHLCV) data for the pair, returns DataFrame or empty DataFrame.
- [`orderbook(pair, maximum)`](#orderbookpair-maximum) - Returns latest orderbook data for the pair, a dict with bids/asks with a total of `maximum` entries.
- [`ticker(pair)`](#tickerpair) - Returns current ticker data for the pair. See [ccxt documentation](https://github.com/ccxt/ccxt/wiki/Manual#price-tickers) for more details on the Ticker data structure.
- `runmode` - Property containing the current runmode.
### Example Usages
### *available_pairs*
``` python
if self.dp:
for pair, timeframe in self.dp.available_pairs:
print(f"available {pair}, {timeframe}")
```
### *current_whitelist()*
Imagine you've developed a strategy that trades the `5m` timeframe using signals generated from a `1d` timeframe on the top 10 volume pairs by volume.
The strategy might look something like this:
*Scan through the top 10 pairs by volume using the `VolumePairList` every 5 minutes and use a 14 day RSI to buy and sell.*
Due to the limited available data, it's very difficult to resample our `5m` candles into daily candles for use in a 14 day RSI. Most exchanges limit us to just 500 candles which effectively gives us around 1.74 daily candles. We need 14 days at least!
Since we can't resample our data we will have to use an informative pair; and since our whitelist will be dynamic we don't know which pair(s) to use.
This is where calling `self.dp.current_whitelist()` comes in handy.
```python
def informative_pairs(self):
# get access to all pairs available in whitelist.
pairs = self.dp.current_whitelist()
# Assign tf to each pair so they can be downloaded and cached for strategy.
informative_pairs = [(pair, '1d') for pair in pairs]
return informative_pairs
```
### *get_pair_dataframe(pair, timeframe)*
``` python
# fetch live / historical candle (OHLCV) data for the first informative pair
if self.dp:
inf_pair, inf_timeframe = self.informative_pairs()[0]
informative = self.dp.get_pair_dataframe(pair=inf_pair,
timeframe=inf_timeframe)
```
!!! Warning "Warning about backtesting"
Be careful when using dataprovider in backtesting. `historic_ohlcv()` (and `get_pair_dataframe()`
for the backtesting runmode) provides the full time-range in one go,
so please be aware of it and make sure to not "look into the future" to avoid surprises when running in dry/live mode.
### *get_analyzed_dataframe(pair, timeframe)*
This method is used by freqtrade internally to determine the last signal.
It can also be used in specific callbacks to get the signal that caused the action (see [Advanced Strategy Documentation](strategy-advanced.md) for more details on available callbacks).
``` python
# fetch current dataframe
if self.dp:
dataframe, last_updated = self.dp.get_analyzed_dataframe(pair=metadata['pair'],
timeframe=self.timeframe)
```
!!! Note "No data available"
Returns an empty dataframe if the requested pair was not cached.
This should not happen when using whitelisted pairs.
### *orderbook(pair, maximum)*
``` python
if self.dp:
if self.dp.runmode.value in ('live', 'dry_run'):
ob = self.dp.orderbook(metadata['pair'], 1)
dataframe['best_bid'] = ob['bids'][0][0]
dataframe['best_ask'] = ob['asks'][0][0]
```
!!! Warning
The order book is not part of the historic data which means backtesting and hyperopt will not work correctly if this method is used.
### *ticker(pair)*
``` python
if self.dp:
if self.dp.runmode.value in ('live', 'dry_run'):
ticker = self.dp.ticker(metadata['pair'])
dataframe['last_price'] = ticker['last']
dataframe['volume24h'] = ticker['quoteVolume']
dataframe['vwap'] = ticker['vwap']
```
!!! Warning
Although the ticker data structure is a part of the ccxt Unified Interface, the values returned by this method can
vary for different exchanges. For instance, many exchanges do not return `vwap` values, the FTX exchange
does not always fills in the `last` field (so it can be None), etc. So you need to carefully verify the ticker
data returned from the exchange and add appropriate error handling / defaults.
!!! Warning "Warning about backtesting"
This method will always return up-to-date values - so usage during backtesting / hyperopt will lead to wrong results.
### Complete Data-provider sample
```python
from freqtrade.strategy import IStrategy, merge_informative_pair
from pandas import DataFrame
class SampleStrategy(IStrategy):
# strategy init stuff...
timeframe = '5m'
# more strategy init stuff..
def informative_pairs(self):
# get access to all pairs available in whitelist.
pairs = self.dp.current_whitelist()
# Assign tf to each pair so they can be downloaded and cached for strategy.
informative_pairs = [(pair, '1d') for pair in pairs]
# Optionally Add additional "static" pairs
informative_pairs += [("ETH/USDT", "5m"),
("BTC/TUSD", "15m"),
]
return informative_pairs
def populate_indicators(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
if not self.dp:
# Don't do anything if DataProvider is not available.
return dataframe
inf_tf = '1d'
# Get the informative pair
informative = self.dp.get_pair_dataframe(pair=metadata['pair'], timeframe=inf_tf)
# Get the 14 day rsi
informative['rsi'] = ta.RSI(informative, timeperiod=14)
# Use the helper function merge_informative_pair to safely merge the pair
# Automatically renames the columns and merges a shorter timeframe dataframe and a longer timeframe informative pair
# use ffill to have the 1d value available in every row throughout the day.
# Without this, comparisons between columns of the original and the informative pair would only work once per day.
# Full documentation of this method, see below
dataframe = merge_informative_pair(dataframe, informative, self.timeframe, inf_tf, ffill=True)
# Calculate rsi of the original dataframe (5m timeframe)
dataframe['rsi'] = ta.RSI(dataframe, timeperiod=14)
# Do other stuff
# ...
return dataframe
def populate_buy_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
dataframe.loc[
(
(qtpylib.crossed_above(dataframe['rsi'], 30)) & # Signal: RSI crosses above 30
(dataframe['rsi_1d'] < 30) & # Ensure daily RSI is < 30
(dataframe['volume'] > 0) # Ensure this candle had volume (important for backtesting)
),
'buy'] = 1
```
***
## Helper functions
### *merge_informative_pair()*
This method helps you merge an informative pair to a regular dataframe without lookahead bias.
It's there to help you merge the dataframe in a safe and consistent way.
Options:
- Rename the columns for you to create unique columns
- Merge the dataframe without lookahead bias
- Forward-fill (optional)
All columns of the informative dataframe will be available on the returning dataframe in a renamed fashion:
!!! Example "Column renaming"
Assuming `inf_tf = '1d'` the resulting columns will be:
``` python
'date', 'open', 'high', 'low', 'close', 'rsi' # from the original dataframe
'date_1d', 'open_1d', 'high_1d', 'low_1d', 'close_1d', 'rsi_1d' # from the informative dataframe
```
??? Example "Column renaming - 1h"
Assuming `inf_tf = '1h'` the resulting columns will be:
``` python
'date', 'open', 'high', 'low', 'close', 'rsi' # from the original dataframe
'date_1h', 'open_1h', 'high_1h', 'low_1h', 'close_1h', 'rsi_1h' # from the informative dataframe
```
??? Example "Custom implementation"
A custom implementation for this is possible, and can be done as follows:
``` python
# Shift date by 1 candle
# This is necessary since the data is always the "open date"
# and a 15m candle starting at 12:15 should not know the close of the 1h candle from 12:00 to 13:00
minutes = timeframe_to_minutes(inf_tf)
# Only do this if the timeframes are different:
informative['date_merge'] = informative["date"] + pd.to_timedelta(minutes, 'm')
# Rename columns to be unique
informative.columns = [f"{col}_{inf_tf}" for col in informative.columns]
# Assuming inf_tf = '1d' - then the columns will now be:
# date_1d, open_1d, high_1d, low_1d, close_1d, rsi_1d
# Combine the 2 dataframes
# all indicators on the informative sample MUST be calculated before this point
dataframe = pd.merge(dataframe, informative, left_on='date', right_on=f'date_merge_{inf_tf}', how='left')
# FFill to have the 1d value available in every row throughout the day.
# Without this, comparisons would only work once per day.
dataframe = dataframe.ffill()
```
!!! Warning "Informative timeframe < timeframe"
Using informative timeframes smaller than the dataframe timeframe is not recommended with this method, as it will not use any of the additional information this would provide.
To use the more detailed information properly, more advanced methods should be applied (which are out of scope for freqtrade documentation, as it'll depend on the respective need).
***
## Additional data (Wallets)
The strategy provides access to the `Wallets` object. This contains the current balances on the exchange.
!!! Note
Wallets is not available during backtesting / hyperopt.
Please always check if `Wallets` is available to avoid failures during backtesting.
``` python
if self.wallets:
free_eth = self.wallets.get_free('ETH')
used_eth = self.wallets.get_used('ETH')
total_eth = self.wallets.get_total('ETH')
```
### Possible options for Wallets
- `get_free(asset)` - currently available balance to trade
- `get_used(asset)` - currently tied up balance (open orders)
- `get_total(asset)` - total available balance - sum of the 2 above
***
## Additional data (Trades)
A history of Trades can be retrieved in the strategy by querying the database.
At the top of the file, import Trade.
```python
from freqtrade.persistence import Trade
```
The following example queries for the current pair and trades from today, however other filters can easily be added.
``` python
if self.config['runmode'].value in ('live', 'dry_run'):
trades = Trade.get_trades([Trade.pair == metadata['pair'],
Trade.open_date > datetime.utcnow() - timedelta(days=1),
Trade.is_open == False,
]).order_by(Trade.close_date).all()
# Summarize profit for this pair.
curdayprofit = sum(trade.close_profit for trade in trades)
```
Get amount of stake_currency currently invested in Trades:
``` python
if self.config['runmode'].value in ('live', 'dry_run'):
total_stakes = Trade.total_open_trades_stakes()
```
Retrieve performance per pair.
Returns a List of dicts per pair.
``` python
if self.config['runmode'].value in ('live', 'dry_run'):
performance = Trade.get_overall_performance()
```
Sample return value: ETH/BTC had 5 trades, with a total profit of 1.5% (ratio of 0.015).
``` json
{'pair': "ETH/BTC", 'profit': 0.015, 'count': 5}
```
!!! Warning
Trade history is not available during backtesting or hyperopt.
## Prevent trades from happening for a specific pair
Freqtrade locks pairs automatically for the current candle (until that candle is over) when a pair is sold, preventing an immediate re-buy of that pair.
Locked pairs will show the message `Pair <pair> is currently locked.`.
### Locking pairs from within the strategy
Sometimes it may be desired to lock a pair after certain events happen (e.g. multiple losing trades in a row).
Freqtrade has an easy method to do this from within the strategy, by calling `self.lock_pair(pair, until, [reason])`.
`until` must be a datetime object in the future, after which trading will be re-enabled for that pair, while `reason` is an optional string detailing why the pair was locked.
Locks can also be lifted manually, by calling `self.unlock_pair(pair)`.
To verify if a pair is currently locked, use `self.is_pair_locked(pair)`.
!!! Note
Locked pairs will always be rounded up to the next candle. So assuming a `5m` timeframe, a lock with `until` set to 10:18 will lock the pair until the candle from 10:15-10:20 will be finished.
!!! Warning
Locking pairs is not available during backtesting.
#### Pair locking example
``` python
from freqtrade.persistence import Trade
from datetime import timedelta, datetime, timezone
# Put the above lines a the top of the strategy file, next to all the other imports
# --------
# Within populate indicators (or populate_buy):
if self.config['runmode'].value in ('live', 'dry_run'):
# fetch closed trades for the last 2 days
trades = Trade.get_trades([Trade.pair == metadata['pair'],
Trade.open_date > datetime.utcnow() - timedelta(days=2),
Trade.is_open == False,
]).all()
# Analyze the conditions you'd like to lock the pair .... will probably be different for every strategy
sumprofit = sum(trade.close_profit for trade in trades)
if sumprofit < 0:
# Lock pair for 12 hours
self.lock_pair(metadata['pair'], until=datetime.now(timezone.utc) + timedelta(hours=12))
```
## Print created dataframe
To inspect the created dataframe, you can issue a print-statement in either `populate_buy_trend()` or `populate_sell_trend()`.
You may also want to print the pair so it's clear what data is currently shown.
``` python
def populate_buy_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
dataframe.loc[
(
#>> whatever condition<<<
),
'buy'] = 1
# Print the Analyzed pair
print(f"result for {metadata['pair']}")
# Inspect the last 5 rows
print(dataframe.tail())
return dataframe
```
Printing more than a few rows is also possible (simply use `print(dataframe)` instead of `print(dataframe.tail())`), however not recommended, as that will be very verbose (~500 lines per pair every 5 seconds).
## Common mistakes when developing strategies
Backtesting analyzes the whole time-range at once for performance reasons. Because of this, strategy authors need to make sure that strategies do not look-ahead into the future.
This is a common pain-point, which can cause huge differences between backtesting and dry/live run methods, since they all use data which is not available during dry/live runs, so these strategies will perform well during backtesting, but will fail / perform badly in real conditions.
The following lists some common patterns which should be avoided to prevent frustration:
- don't use `shift(-1)`. This uses data from the future, which is not available.
- don't use `.iloc[-1]` or any other absolute position in the dataframe, this will be different between dry-run and backtesting.
- don't use `dataframe['volume'].mean()`. This uses the full DataFrame for backtesting, including data from the future. Use `dataframe['volume'].rolling(<window>).mean()` instead
- don't use `.resample('1h')`. This uses the left border of the interval, so moves data from an hour to the start of the hour. Use `.resample('1h', label='right')` instead.
## Further strategy ideas
To get additional Ideas for strategies, head over to our [strategy repository](https://github.com/freqtrade/freqtrade-strategies). Feel free to use them as they are - but results will depend on the current market situation, pairs used etc. - therefore please backtest the strategy for your exchange/desired pairs first, evaluate carefully, use at your own risk.
Feel free to use any of them as inspiration for your own strategies.
We're happy to accept Pull Requests containing new Strategies to that repo.
## Next step
Now you have a perfect strategy you probably want to backtest it.
Your next step is to learn [How to use the Backtesting](backtesting.md).

View File

@@ -0,0 +1,196 @@
# Strategy analysis example
Debugging a strategy can be time-consuming. Freqtrade offers helper functions to visualize raw data.
The following assumes you work with SampleStrategy, data for 5m timeframe from Binance and have downloaded them into the data directory in the default location.
## Setup
```python
from pathlib import Path
from freqtrade.configuration import Configuration
# Customize these according to your needs.
# Initialize empty configuration object
config = Configuration.from_files([])
# Optionally, use existing configuration file
# config = Configuration.from_files(["config.json"])
# Define some constants
config["timeframe"] = "5m"
# Name of the strategy class
config["strategy"] = "SampleStrategy"
# Location of the data
data_location = Path(config['user_data_dir'], 'data', 'binance')
# Pair to analyze - Only use one pair here
pair = "BTC_USDT"
```
```python
# Load data using values set above
from freqtrade.data.history import load_pair_history
candles = load_pair_history(datadir=data_location,
timeframe=config["timeframe"],
pair=pair)
# Confirm success
print("Loaded " + str(len(candles)) + f" rows of data for {pair} from {data_location}")
candles.head()
```
## Load and run strategy
* Rerun each time the strategy file is changed
```python
# Load strategy using values set above
from freqtrade.resolvers import StrategyResolver
strategy = StrategyResolver.load_strategy(config)
# Generate buy/sell signals using strategy
df = strategy.analyze_ticker(candles, {'pair': pair})
df.tail()
```
### Display the trade details
* Note that using `data.head()` would also work, however most indicators have some "startup" data at the top of the dataframe.
* Some possible problems
* Columns with NaN values at the end of the dataframe
* Columns used in `crossed*()` functions with completely different units
* Comparison with full backtest
* having 200 buy signals as output for one pair from `analyze_ticker()` does not necessarily mean that 200 trades will be made during backtesting.
* Assuming you use only one condition such as, `df['rsi'] < 30` as buy condition, this will generate multiple "buy" signals for each pair in sequence (until rsi returns > 29). The bot will only buy on the first of these signals (and also only if a trade-slot ("max_open_trades") is still available), or on one of the middle signals, as soon as a "slot" becomes available.
```python
# Report results
print(f"Generated {df['buy'].sum()} buy signals")
data = df.set_index('date', drop=False)
data.tail()
```
## Load existing objects into a Jupyter notebook
The following cells assume that you have already generated data using the cli.
They will allow you to drill deeper into your results, and perform analysis which otherwise would make the output very difficult to digest due to information overload.
### Load backtest results to pandas dataframe
Analyze a trades dataframe (also used below for plotting)
```python
from freqtrade.data.btanalysis import load_backtest_data, load_backtest_stats
# if backtest_dir points to a directory, it'll automatically load the last backtest file.
backtest_dir = config["user_data_dir"] / "backtest_results"
# backtest_dir can also point to a specific file
# backtest_dir = config["user_data_dir"] / "backtest_results/backtest-result-2020-07-01_20-04-22.json"
```
```python
# You can get the full backtest statistics by using the following command.
# This contains all information used to generate the backtest result.
stats = load_backtest_stats(backtest_dir)
strategy = 'SampleStrategy'
# All statistics are available per strategy, so if `--strategy-list` was used during backtest, this will be reflected here as well.
# Example usages:
print(stats['strategy'][strategy]['results_per_pair'])
# Get pairlist used for this backtest
print(stats['strategy'][strategy]['pairlist'])
# Get market change (average change of all pairs from start to end of the backtest period)
print(stats['strategy'][strategy]['market_change'])
# Maximum drawdown ()
print(stats['strategy'][strategy]['max_drawdown'])
# Maximum drawdown start and end
print(stats['strategy'][strategy]['drawdown_start'])
print(stats['strategy'][strategy]['drawdown_end'])
# Get strategy comparison (only relevant if multiple strategies were compared)
print(stats['strategy_comparison'])
```
```python
# Load backtested trades as dataframe
trades = load_backtest_data(backtest_dir)
# Show value-counts per pair
trades.groupby("pair")["sell_reason"].value_counts()
```
### Load live trading results into a pandas dataframe
In case you did already some trading and want to analyze your performance
```python
from freqtrade.data.btanalysis import load_trades_from_db
# Fetch trades from database
trades = load_trades_from_db("sqlite:///tradesv3.sqlite")
# Display results
trades.groupby("pair")["sell_reason"].value_counts()
```
## Analyze the loaded trades for trade parallelism
This can be useful to find the best `max_open_trades` parameter, when used with backtesting in conjunction with `--disable-max-market-positions`.
`analyze_trade_parallelism()` returns a timeseries dataframe with an "open_trades" column, specifying the number of open trades for each candle.
```python
from freqtrade.data.btanalysis import analyze_trade_parallelism
# Analyze the above
parallel_trades = analyze_trade_parallelism(trades, '5m')
parallel_trades.plot()
```
## Plot results
Freqtrade offers interactive plotting capabilities based on plotly.
```python
from freqtrade.plot.plotting import generate_candlestick_graph
# Limit graph period to keep plotly quick and reactive
# Filter trades to one pair
trades_red = trades.loc[trades['pair'] == pair]
data_red = data['2019-06-01':'2019-06-10']
# Generate candlestick graph
graph = generate_candlestick_graph(pair=pair,
data=data_red,
trades=trades_red,
indicators1=['sma20', 'ema50', 'ema55'],
indicators2=['rsi', 'macd', 'macdsignal', 'macdhist']
)
```
```python
# Show graph inline
# graph.show()
# Render graph in a seperate window
graph.show(renderer="browser")
```
Feel free to submit an issue or Pull Request enhancing this document if you would like to share ideas on how to best analyze the data.

View File

@@ -0,0 +1,13 @@
.rst-versions {
font-size: .7rem;
color: white;
}
.rst-versions.rst-badge .rst-current-version {
font-size: .7rem;
color: white;
}
.rst-versions .rst-other-versions {
color: white;
}

View File

@@ -1,34 +1,123 @@
# Telegram usage
This page explains how to command your bot with Telegram.
## Setup your Telegram bot
## Prerequisite
To control your bot with Telegram, you need first to
[set up a Telegram bot](installation.md)
and add your Telegram API keys into your config file.
Below we explain how to create your Telegram Bot, and how to get your
Telegram user id.
### 1. Create your Telegram bot
Start a chat with the [Telegram BotFather](https://telegram.me/BotFather)
Send the message `/newbot`.
*BotFather response:*
> Alright, a new bot. How are we going to call it? Please choose a name for your bot.
Choose the public name of your bot (e.x. `Freqtrade bot`)
*BotFather response:*
> Good. Now let's choose a username for your bot. It must end in `bot`. Like this, for example: TetrisBot or tetris_bot.
Choose the name id of your bot and send it to the BotFather (e.g. "`My_own_freqtrade_bot`")
*BotFather response:*
> Done! Congratulations on your new bot. You will find it at `t.me/yourbots_name_bot`. You can now add a description, about section and profile picture for your bot, see /help for a list of commands. By the way, when you've finished creating your cool bot, ping our Bot Support if you want a better username for it. Just make sure the bot is fully operational before you do this.
> Use this token to access the HTTP API: `22222222:APITOKEN`
> For a description of the Bot API, see this page: https://core.telegram.org/bots/api Father bot will return you the token (API key)
Copy the API Token (`22222222:APITOKEN` in the above example) and keep use it for the config parameter `token`.
Don't forget to start the conversation with your bot, by clicking `/START` button
### 2. Telegram user_id
#### Get your user id
Talk to the [userinfobot](https://telegram.me/userinfobot)
Get your "Id", you will use it for the config parameter `chat_id`.
#### Use Group id
You can use bots in telegram groups by just adding them to the group. You can find the group id by first adding a [RawDataBot](https://telegram.me/rawdatabot) to your group. The Group id is shown as id in the `"chat"` section, which the RawDataBot will send to you:
``` json
"chat":{
"id":-1001332619709
}
```
For the Freqtrade configuration, you can then use the the full value (including `-` if it's there) as string:
```json
"chat_id": "-1001332619709"
```
## Control telegram noise
Freqtrade provides means to control the verbosity of your telegram bot.
Each setting has the following possible values:
* `on` - Messages will be sent, and user will be notified.
* `silent` - Message will be sent, Notification will be without sound / vibration.
* `off` - Skip sending a message-type all together.
Example configuration showing the different settings:
``` json
"telegram": {
"enabled": true,
"token": "your_telegram_token",
"chat_id": "your_telegram_chat_id",
"notification_settings": {
"status": "silent",
"warning": "on",
"startup": "off",
"buy": "silent",
"sell": "on",
"buy_cancel": "silent",
"sell_cancel": "on"
}
},
```
## Telegram commands
Per default, the Telegram bot shows predefined commands. Some commands
are only available by sending them to the bot. The table below list the
official commands. You can ask at any moment for help with `/help`.
| Command | Default | Description |
|----------|---------|-------------|
| `/start` | | Starts the trader
| `/stop` | | Stops the trader
| `/reload_conf` | | Reloads the configuration file
| `/status` | | Lists all open trades
| `/status table` | | List all open trades in a table format
| `/count` | | Displays number of trades used and available
| `/profit` | | Display a summary of your profit/loss from close trades and some stats about your performance
| `/forcesell <trade_id>` | | Instantly sells the given trade (Ignoring `minimum_roi`).
| `/forcesell all` | | Instantly sells all open trades (Ignoring `minimum_roi`).
| `/forcebuy <pair> [rate]` | | Instantly buys the given pair. Rate is optional. (`forcebuy_enable` must be set to True)
| `/performance` | | Show performance of each finished trade grouped by pair
| `/balance` | | Show account balance per currency
| `/daily <n>` | 7 | Shows profit or loss per day, over the last n days
| `/help` | | Show help message
| `/version` | | Show version
| Command | Description |
|----------|-------------|
| `/start` | Starts the trader
| `/stop` | Stops the trader
| `/stopbuy` | Stops the trader from opening new trades. Gracefully closes open trades according to their rules.
| `/reload_config` | Reloads the configuration file
| `/show_config` | Shows part of the current configuration with relevant settings to operation
| `/logs [limit]` | Show last log messages.
| `/status` | Lists all open trades
| `/status table` | List all open trades in a table format. Pending buy orders are marked with an asterisk (*) Pending sell orders are marked with a double asterisk (**)
| `/trades [limit]` | List all recently closed trades in a table format.
| `/delete <trade_id>` | Delete a specific trade from the Database. Tries to close open orders. Requires manual handling of this trade on the exchange.
| `/count` | Displays number of trades used and available
| `/profit` | Display a summary of your profit/loss from close trades and some stats about your performance
| `/forcesell <trade_id>` | Instantly sells the given trade (Ignoring `minimum_roi`).
| `/forcesell all` | Instantly sells all open trades (Ignoring `minimum_roi`).
| `/forcebuy <pair> [rate]` | Instantly buys the given pair. Rate is optional. (`forcebuy_enable` must be set to True)
| `/performance` | Show performance of each finished trade grouped by pair
| `/balance` | Show account balance per currency
| `/daily <n>` | Shows profit or loss per day, over the last n days (n defaults to 7)
| `/whitelist` | Show the current whitelist
| `/blacklist [pair]` | Show the current blacklist, or adds a pair to the blacklist.
| `/edge` | Show validated pairs by Edge if it is enabled.
| `/help` | Show help message
| `/version` | Show version
## Telegram commands in action
@@ -43,24 +132,37 @@ Below, example of Telegram message you will receive for each command.
> `Stopping trader ...`
> **Status:** `stopped`
## /status
### /stopbuy
> **status:** `Setting max_open_trades to 0. Run /reload_config to reset.`
Prevents the bot from opening new trades by temporarily setting "max_open_trades" to 0. Open trades will be handled via their regular rules (ROI / Sell-signal, stoploss, ...).
After this, give the bot time to close off open trades (can be checked via `/status table`).
Once all positions are sold, run `/stop` to completely stop the bot.
`/reload_config` resets "max_open_trades" to the value set in the configuration and resets this command.
!!! Warning
The stop-buy signal is ONLY active while the bot is running, and is not persisted anyway, so restarting the bot will cause this to reset.
### /status
For each open trade, the bot will send you the following message.
> **Trade ID:** `123`
> **Current Pair:** CVC/BTC
> **Open Since:** `1 days ago`
> **Amount:** `26.64180098`
> **Open Rate:** `0.00007489`
> **Close Rate:** `None`
> **Current Rate:** `0.00007489`
> **Close Profit:** `None`
> **Current Profit:** `12.95%`
> **Open Order:** `None`
> **Trade ID:** `123` `(since 1 days ago)`
> **Current Pair:** CVC/BTC
> **Open Since:** `1 days ago`
> **Amount:** `26.64180098`
> **Open Rate:** `0.00007489`
> **Current Rate:** `0.00007489`
> **Current Profit:** `12.95%`
> **Stoploss:** `0.00007389 (-0.02%)`
## /status table
### /status table
Return the status of all open trades in a table format.
```
ID Pair Since Profit
---- -------- ------- --------
@@ -68,68 +170,71 @@ Return the status of all open trades in a table format.
123 CVC/BTC 1 h 12.95%
```
## /count
### /count
Return the number of trades used and available.
```
current max
--------- -----
2 10
```
## /profit
### /profit
Return a summary of your profit/loss and performance.
> **ROI:** Close trades
> ∙ `0.00485701 BTC (258.45%)`
> ∙ `62.968 USD`
> **ROI:** All trades
> ∙ `0.00255280 BTC (143.43%)`
> ∙ `33.095 EUR`
>
> **Total Trade Count:** `138`
> **First Trade opened:** `3 days ago`
> **Latest Trade opened:** `2 minutes ago`
> **Avg. Duration:** `2:33:45`
> **Best Performing:** `PAY/BTC: 50.23%`
> **ROI:** Close trades
> ∙ `0.00485701 BTC (258.45%)`
> ∙ `62.968 USD`
> **ROI:** All trades
> ∙ `0.00255280 BTC (143.43%)`
> ∙ `33.095 EUR`
>
> **Total Trade Count:** `138`
> **First Trade opened:** `3 days ago`
> **Latest Trade opened:** `2 minutes ago`
> **Avg. Duration:** `2:33:45`
> **Best Performing:** `PAY/BTC: 50.23%`
## /forcesell <trade_id>
### /forcesell <trade_id>
> **BITTREX:** Selling BTC/LTC with limit `0.01650000 (profit: ~-4.07%, -0.00008168)`
## /forcebuy <pair>
### /forcebuy <pair>
> **BITTREX**: Buying ETH/BTC with limit `0.03400000` (`1.000000 ETH`, `225.290 USD`)
> **BITTREX:** Buying ETH/BTC with limit `0.03400000` (`1.000000 ETH`, `225.290 USD`)
Note that for this to work, `forcebuy_enable` needs to be set to true.
## /performance
[More details](configuration.md/#understand-forcebuy_enable)
### /performance
Return the performance of each crypto-currency the bot has sold.
> Performance:
> 1. `RCN/BTC 57.77%`
> 2. `PAY/BTC 56.91%`
> 3. `VIB/BTC 47.07%`
> 4. `SALT/BTC 30.24%`
> 5. `STORJ/BTC 27.24%`
> ...
> 1. `RCN/BTC 57.77%`
> 2. `PAY/BTC 56.91%`
> 3. `VIB/BTC 47.07%`
> 4. `SALT/BTC 30.24%`
> 5. `STORJ/BTC 27.24%`
> ...
## /balance
### /balance
Return the balance of all crypto-currency your have on the exchange.
> **Currency:** BTC
> **Available:** 3.05890234
> **Balance:** 3.05890234
> **Pending:** 0.0
> **Currency:** BTC
> **Available:** 3.05890234
> **Balance:** 3.05890234
> **Pending:** 0.0
> **Currency:** CVC
> **Available:** 86.64180098
> **Balance:** 86.64180098
> **Pending:** 0.0
> **Currency:** CVC
> **Available:** 86.64180098
> **Balance:** 86.64180098
> **Pending:** 0.0
## /daily <n>
### /daily <n>
Per default `/daily` will return the 7 last days.
The example below if for `/daily 3`:
@@ -143,6 +248,38 @@ Day Profit BTC Profit USD
2018-01-01 0.00269130 BTC 34.986 USD
```
## /version
### /whitelist
Shows the current whitelist
> Using whitelist `StaticPairList` with 22 pairs
> `IOTA/BTC, NEO/BTC, TRX/BTC, VET/BTC, ADA/BTC, ETC/BTC, NCASH/BTC, DASH/BTC, XRP/BTC, XVG/BTC, EOS/BTC, LTC/BTC, OMG/BTC, BTG/BTC, LSK/BTC, ZEC/BTC, HOT/BTC, IOTX/BTC, XMR/BTC, AST/BTC, XLM/BTC, NANO/BTC`
### /blacklist [pair]
Shows the current blacklist.
If Pair is set, then this pair will be added to the pairlist.
Also supports multiple pairs, separated by a space.
Use `/reload_config` to reset the blacklist.
> Using blacklist `StaticPairList` with 2 pairs
>`DODGE/BTC`, `HOT/BTC`.
### /edge
Shows pairs validated by Edge along with their corresponding win-rate, expectancy and stoploss values.
> **Edge only validated following pairs:**
```
Pair Winrate Expectancy Stoploss
-------- --------- ------------ ----------
DOCK/ETH 0.522727 0.881821 -0.03
PHX/ETH 0.677419 0.560488 -0.03
HOT/ETH 0.733333 0.490492 -0.03
HC/ETH 0.588235 0.280988 -0.02
ARDR/ETH 0.366667 0.143059 -0.01
```
### /version
> **Version:** `0.14.3`

604
docs/utils.md Normal file
View File

@@ -0,0 +1,604 @@
# Utility Subcommands
Besides the Live-Trade and Dry-Run run modes, the `backtesting`, `edge` and `hyperopt` optimization subcommands, and the `download-data` subcommand which prepares historical data, the bot contains a number of utility subcommands. They are described in this section.
## Create userdir
Creates the directory structure to hold your files for freqtrade.
Will also create strategy and hyperopt examples for you to get started.
Can be used multiple times - using `--reset` will reset the sample strategy and hyperopt files to their default state.
```
usage: freqtrade create-userdir [-h] [--userdir PATH] [--reset]
optional arguments:
-h, --help show this help message and exit
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
--reset Reset sample files to their original state.
```
!!! Warning
Using `--reset` may result in loss of data, since this will overwrite all sample files without asking again.
```
├── backtest_results
├── data
├── hyperopt_results
├── hyperopts
│   ├── sample_hyperopt_advanced.py
│   ├── sample_hyperopt_loss.py
│   └── sample_hyperopt.py
├── notebooks
│   └── strategy_analysis_example.ipynb
├── plot
└── strategies
└── sample_strategy.py
```
## Create new config
Creates a new configuration file, asking some questions which are important selections for a configuration.
```
usage: freqtrade new-config [-h] [-c PATH]
optional arguments:
-h, --help show this help message and exit
-c PATH, --config PATH
Specify configuration file (default: `config.json`). Multiple --config options may be used. Can be set to `-`
to read config from stdin.
```
!!! Warning
Only vital questions are asked. Freqtrade offers a lot more configuration possibilities, which are listed in the [Configuration documentation](configuration.md#configuration-parameters)
### Create config examples
```
$ freqtrade new-config --config config_binance.json
? Do you want to enable Dry-run (simulated trades)? Yes
? Please insert your stake currency: BTC
? Please insert your stake amount: 0.05
? Please insert max_open_trades (Integer or 'unlimited'): 3
? Please insert your desired timeframe (e.g. 5m): 5m
? Please insert your display Currency (for reporting): USD
? Select exchange binance
? Do you want to enable Telegram? No
```
## Create new strategy
Creates a new strategy from a template similar to SampleStrategy.
The file will be named inline with your class name, and will not overwrite existing files.
Results will be located in `user_data/strategies/<strategyclassname>.py`.
``` output
usage: freqtrade new-strategy [-h] [--userdir PATH] [-s NAME]
[--template {full,minimal,advanced}]
optional arguments:
-h, --help show this help message and exit
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
-s NAME, --strategy NAME
Specify strategy class name which will be used by the
bot.
--template {full,minimal,advanced}
Use a template which is either `minimal`, `full`
(containing multiple sample indicators) or `advanced`.
Default: `full`.
```
### Sample usage of new-strategy
```bash
freqtrade new-strategy --strategy AwesomeStrategy
```
With custom user directory
```bash
freqtrade new-strategy --userdir ~/.freqtrade/ --strategy AwesomeStrategy
```
Using the advanced template (populates all optional functions and methods)
```bash
freqtrade new-strategy --strategy AwesomeStrategy --template advanced
```
## Create new hyperopt
Creates a new hyperopt from a template similar to SampleHyperopt.
The file will be named inline with your class name, and will not overwrite existing files.
Results will be located in `user_data/hyperopts/<classname>.py`.
``` output
usage: freqtrade new-hyperopt [-h] [--userdir PATH] [--hyperopt NAME]
[--template {full,minimal,advanced}]
optional arguments:
-h, --help show this help message and exit
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
--hyperopt NAME Specify hyperopt class name which will be used by the
bot.
--template {full,minimal,advanced}
Use a template which is either `minimal`, `full`
(containing multiple sample indicators) or `advanced`.
Default: `full`.
```
### Sample usage of new-hyperopt
```bash
freqtrade new-hyperopt --hyperopt AwesomeHyperopt
```
With custom user directory
```bash
freqtrade new-hyperopt --userdir ~/.freqtrade/ --hyperopt AwesomeHyperopt
```
## List Strategies and List Hyperopts
Use the `list-strategies` subcommand to see all strategies in one particular directory and the `list-hyperopts` subcommand to list custom Hyperopts.
These subcommands are useful for finding problems in your environment with loading strategies or hyperopt classes: modules with strategies or hyperopt classes that contain errors and failed to load are printed in red (LOAD FAILED), while strategies or hyperopt classes with duplicate names are printed in yellow (DUPLICATE NAME).
```
usage: freqtrade list-strategies [-h] [-v] [--logfile FILE] [-V] [-c PATH]
[-d PATH] [--userdir PATH]
[--strategy-path PATH] [-1] [--no-color]
optional arguments:
-h, --help show this help message and exit
--strategy-path PATH Specify additional strategy lookup path.
-1, --one-column Print output in one column.
--no-color Disable colorization of hyperopt results. May be
useful if you are redirecting output to a file.
Common arguments:
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
--logfile FILE Log to the file specified. Special values are:
'syslog', 'journald'. See the documentation for more
details.
-V, --version show program's version number and exit
-c PATH, --config PATH
Specify configuration file (default: `config.json`).
Multiple --config options may be used. Can be set to
`-` to read config from stdin.
-d PATH, --datadir PATH
Path to directory with historical backtesting data.
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
```
```
usage: freqtrade list-hyperopts [-h] [-v] [--logfile FILE] [-V] [-c PATH]
[-d PATH] [--userdir PATH]
[--hyperopt-path PATH] [-1] [--no-color]
optional arguments:
-h, --help show this help message and exit
--hyperopt-path PATH Specify additional lookup path for Hyperopt and
Hyperopt Loss functions.
-1, --one-column Print output in one column.
--no-color Disable colorization of hyperopt results. May be
useful if you are redirecting output to a file.
Common arguments:
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
--logfile FILE Log to the file specified. Special values are:
'syslog', 'journald'. See the documentation for more
details.
-V, --version show program's version number and exit
-c PATH, --config PATH
Specify configuration file (default: `config.json`).
Multiple --config options may be used. Can be set to
`-` to read config from stdin.
-d PATH, --datadir PATH
Path to directory with historical backtesting data.
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
```
!!! Warning
Using these commands will try to load all python files from a directory. This can be a security risk if untrusted files reside in this directory, since all module-level code is executed.
Example: Search default strategies and hyperopts directories (within the default userdir).
``` bash
freqtrade list-strategies
freqtrade list-hyperopts
```
Example: Search strategies and hyperopts directory within the userdir.
``` bash
freqtrade list-strategies --userdir ~/.freqtrade/
freqtrade list-hyperopts --userdir ~/.freqtrade/
```
Example: Search dedicated strategy path.
``` bash
freqtrade list-strategies --strategy-path ~/.freqtrade/strategies/
```
Example: Search dedicated hyperopt path.
``` bash
freqtrade list-hyperopt --hyperopt-path ~/.freqtrade/hyperopts/
```
## List Exchanges
Use the `list-exchanges` subcommand to see the exchanges available for the bot.
```
usage: freqtrade list-exchanges [-h] [-1] [-a]
optional arguments:
-h, --help show this help message and exit
-1, --one-column Print output in one column.
-a, --all Print all exchanges known to the ccxt library.
```
* Example: see exchanges available for the bot:
```
$ freqtrade list-exchanges
Exchanges available for Freqtrade: _1btcxe, acx, allcoin, bequant, bibox, binance, binanceje, binanceus, bitbank, bitfinex, bitfinex2, bitkk, bitlish, bitmart, bittrex, bitz, bleutrade, btcalpha, btcmarkets, btcturk, buda, cex, cobinhood, coinbaseprime, coinbasepro, coinex, cointiger, coss, crex24, digifinex, dsx, dx, ethfinex, fcoin, fcoinjp, gateio, gdax, gemini, hitbtc2, huobipro, huobiru, idex, kkex, kraken, kucoin, kucoin2, kuna, lbank, mandala, mercado, oceanex, okcoincny, okcoinusd, okex, okex3, poloniex, rightbtc, theocean, tidebit, upbit, zb
```
* Example: see all exchanges supported by the ccxt library (including 'bad' ones, i.e. those that are known to not work with Freqtrade):
```
$ freqtrade list-exchanges -a
All exchanges supported by the ccxt library: _1btcxe, acx, adara, allcoin, anxpro, bcex, bequant, bibox, bigone, binance, binanceje, binanceus, bit2c, bitbank, bitbay, bitfinex, bitfinex2, bitflyer, bitforex, bithumb, bitkk, bitlish, bitmart, bitmex, bitso, bitstamp, bitstamp1, bittrex, bitz, bl3p, bleutrade, braziliex, btcalpha, btcbox, btcchina, btcmarkets, btctradeim, btctradeua, btcturk, buda, bxinth, cex, chilebit, cobinhood, coinbase, coinbaseprime, coinbasepro, coincheck, coinegg, coinex, coinexchange, coinfalcon, coinfloor, coingi, coinmarketcap, coinmate, coinone, coinspot, cointiger, coolcoin, coss, crex24, crypton, deribit, digifinex, dsx, dx, ethfinex, exmo, exx, fcoin, fcoinjp, flowbtc, foxbit, fybse, gateio, gdax, gemini, hitbtc, hitbtc2, huobipro, huobiru, ice3x, idex, independentreserve, indodax, itbit, kkex, kraken, kucoin, kucoin2, kuna, lakebtc, latoken, lbank, liquid, livecoin, luno, lykke, mandala, mercado, mixcoins, negociecoins, nova, oceanex, okcoincny, okcoinusd, okex, okex3, paymium, poloniex, rightbtc, southxchange, stronghold, surbitcoin, theocean, therock, tidebit, tidex, upbit, vaultoro, vbtc, virwox, xbtce, yobit, zaif, zb
```
## List Timeframes
Use the `list-timeframes` subcommand to see the list of timeframes (ticker intervals) available for the exchange.
```
usage: freqtrade list-timeframes [-h] [-v] [--logfile FILE] [-V] [-c PATH] [-d PATH] [--userdir PATH] [--exchange EXCHANGE] [-1]
optional arguments:
-h, --help show this help message and exit
--exchange EXCHANGE Exchange name (default: `bittrex`). Only valid if no config is provided.
-1, --one-column Print output in one column.
Common arguments:
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
--logfile FILE Log to the file specified. Special values are: 'syslog', 'journald'. See the documentation for more details.
-V, --version show program's version number and exit
-c PATH, --config PATH
Specify configuration file (default: `config.json`). Multiple --config options may be used. Can be set to `-`
to read config from stdin.
-d PATH, --datadir PATH
Path to directory with historical backtesting data.
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
```
* Example: see the timeframes for the 'binance' exchange, set in the configuration file:
```
$ freqtrade list-timeframes -c config_binance.json
...
Timeframes available for the exchange `binance`: 1m, 3m, 5m, 15m, 30m, 1h, 2h, 4h, 6h, 8h, 12h, 1d, 3d, 1w, 1M
```
* Example: enumerate exchanges available for Freqtrade and print timeframes supported by each of them:
```
$ for i in `freqtrade list-exchanges -1`; do freqtrade list-timeframes --exchange $i; done
```
## List pairs/list markets
The `list-pairs` and `list-markets` subcommands allow to see the pairs/markets available on exchange.
Pairs are markets with the '/' character between the base currency part and the quote currency part in the market symbol.
For example, in the 'ETH/BTC' pair 'ETH' is the base currency, while 'BTC' is the quote currency.
For pairs traded by Freqtrade the pair quote currency is defined by the value of the `stake_currency` configuration setting.
You can print info about any pair/market with these subcommands - and you can filter output by quote-currency using `--quote BTC`, or by base-currency using `--base ETH` options correspondingly.
These subcommands have same usage and same set of available options:
```
usage: freqtrade list-markets [-h] [-v] [--logfile FILE] [-V] [-c PATH]
[-d PATH] [--userdir PATH] [--exchange EXCHANGE]
[--print-list] [--print-json] [-1] [--print-csv]
[--base BASE_CURRENCY [BASE_CURRENCY ...]]
[--quote QUOTE_CURRENCY [QUOTE_CURRENCY ...]]
[-a]
usage: freqtrade list-pairs [-h] [-v] [--logfile FILE] [-V] [-c PATH]
[-d PATH] [--userdir PATH] [--exchange EXCHANGE]
[--print-list] [--print-json] [-1] [--print-csv]
[--base BASE_CURRENCY [BASE_CURRENCY ...]]
[--quote QUOTE_CURRENCY [QUOTE_CURRENCY ...]] [-a]
optional arguments:
-h, --help show this help message and exit
--exchange EXCHANGE Exchange name (default: `bittrex`). Only valid if no
config is provided.
--print-list Print list of pairs or market symbols. By default data
is printed in the tabular format.
--print-json Print list of pairs or market symbols in JSON format.
-1, --one-column Print output in one column.
--print-csv Print exchange pair or market data in the csv format.
--base BASE_CURRENCY [BASE_CURRENCY ...]
Specify base currency(-ies). Space-separated list.
--quote QUOTE_CURRENCY [QUOTE_CURRENCY ...]
Specify quote currency(-ies). Space-separated list.
-a, --all Print all pairs or market symbols. By default only
active ones are shown.
Common arguments:
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
--logfile FILE Log to the file specified. Special values are:
'syslog', 'journald'. See the documentation for more
details.
-V, --version show program's version number and exit
-c PATH, --config PATH
Specify configuration file (default: `config.json`).
Multiple --config options may be used. Can be set to
`-` to read config from stdin.
-d PATH, --datadir PATH
Path to directory with historical backtesting data.
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
```
By default, only active pairs/markets are shown. Active pairs/markets are those that can currently be traded
on the exchange. The see the list of all pairs/markets (not only the active ones), use the `-a`/`-all` option.
Pairs/markets are sorted by its symbol string in the printed output.
### Examples
* Print the list of active pairs with quote currency USD on exchange, specified in the default
configuration file (i.e. pairs on the "Bittrex" exchange) in JSON format:
```
$ freqtrade list-pairs --quote USD --print-json
```
* Print the list of all pairs on the exchange, specified in the `config_binance.json` configuration file
(i.e. on the "Binance" exchange) with base currencies BTC or ETH and quote currencies USDT or USD, as the
human-readable list with summary:
```
$ freqtrade list-pairs -c config_binance.json --all --base BTC ETH --quote USDT USD --print-list
```
* Print all markets on exchange "Kraken", in the tabular format:
```
$ freqtrade list-markets --exchange kraken --all
```
## Test pairlist
Use the `test-pairlist` subcommand to test the configuration of [dynamic pairlists](configuration.md#pairlists).
Requires a configuration with specified `pairlists` attribute.
Can be used to generate static pairlists to be used during backtesting / hyperopt.
```
usage: freqtrade test-pairlist [-h] [-c PATH]
[--quote QUOTE_CURRENCY [QUOTE_CURRENCY ...]]
[-1] [--print-json]
optional arguments:
-h, --help show this help message and exit
-c PATH, --config PATH
Specify configuration file (default: `config.json`).
Multiple --config options may be used. Can be set to
`-` to read config from stdin.
--quote QUOTE_CURRENCY [QUOTE_CURRENCY ...]
Specify quote currency(-ies). Space-separated list.
-1, --one-column Print output in one column.
--print-json Print list of pairs or market symbols in JSON format.
```
### Examples
Show whitelist when using a [dynamic pairlist](configuration.md#pairlists).
```
freqtrade test-pairlist --config config.json --quote USDT BTC
```
## List Hyperopt results
You can list the hyperoptimization epochs the Hyperopt module evaluated previously with the `hyperopt-list` sub-command.
```
usage: freqtrade hyperopt-list [-h] [-v] [--logfile FILE] [-V] [-c PATH]
[-d PATH] [--userdir PATH] [--best]
[--profitable] [--min-trades INT]
[--max-trades INT] [--min-avg-time FLOAT]
[--max-avg-time FLOAT] [--min-avg-profit FLOAT]
[--max-avg-profit FLOAT]
[--min-total-profit FLOAT]
[--max-total-profit FLOAT]
[--min-objective FLOAT] [--max-objective FLOAT]
[--no-color] [--print-json] [--no-details]
[--hyperopt-filename PATH] [--export-csv FILE]
optional arguments:
-h, --help show this help message and exit
--best Select only best epochs.
--profitable Select only profitable epochs.
--min-trades INT Select epochs with more than INT trades.
--max-trades INT Select epochs with less than INT trades.
--min-avg-time FLOAT Select epochs above average time.
--max-avg-time FLOAT Select epochs below average time.
--min-avg-profit FLOAT
Select epochs above average profit.
--max-avg-profit FLOAT
Select epochs below average profit.
--min-total-profit FLOAT
Select epochs above total profit.
--max-total-profit FLOAT
Select epochs below total profit.
--min-objective FLOAT
Select epochs above objective.
--max-objective FLOAT
Select epochs below objective.
--no-color Disable colorization of hyperopt results. May be
useful if you are redirecting output to a file.
--print-json Print output in JSON format.
--no-details Do not print best epoch details.
--hyperopt-filename FILENAME
Hyperopt result filename.Example: `--hyperopt-
filename=hyperopt_results_2020-09-27_16-20-48.pickle`
--export-csv FILE Export to CSV-File. This will disable table print.
Example: --export-csv hyperopt.csv
Common arguments:
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
--logfile FILE Log to the file specified. Special values are:
'syslog', 'journald'. See the documentation for more
details.
-V, --version show program's version number and exit
-c PATH, --config PATH
Specify configuration file (default:
`userdir/config.json` or `config.json` whichever
exists). Multiple --config options may be used. Can be
set to `-` to read config from stdin.
-d PATH, --datadir PATH
Path to directory with historical backtesting data.
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
```
!!! Note
`hyperopt-list` will automatically use the latest available hyperopt results file.
You can override this using the `--hyperopt-filename` argument, and specify another, available filename (without path!).
### Examples
List all results, print details of the best result at the end:
```
freqtrade hyperopt-list
```
List only epochs with positive profit. Do not print the details of the best epoch, so that the list can be iterated in a script:
```
freqtrade hyperopt-list --profitable --no-details
```
## Show details of Hyperopt results
You can show the details of any hyperoptimization epoch previously evaluated by the Hyperopt module with the `hyperopt-show` subcommand.
```
usage: freqtrade hyperopt-show [-h] [-v] [--logfile FILE] [-V] [-c PATH]
[-d PATH] [--userdir PATH] [--best]
[--profitable] [-n INT] [--print-json]
[--hyperopt-filename PATH] [--no-header]
optional arguments:
-h, --help show this help message and exit
--best Select only best epochs.
--profitable Select only profitable epochs.
-n INT, --index INT Specify the index of the epoch to print details for.
--print-json Print output in JSON format.
--hyperopt-filename FILENAME
Hyperopt result filename.Example: `--hyperopt-
filename=hyperopt_results_2020-09-27_16-20-48.pickle`
--no-header Do not print epoch details header.
Common arguments:
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
--logfile FILE Log to the file specified. Special values are:
'syslog', 'journald'. See the documentation for more
details.
-V, --version show program's version number and exit
-c PATH, --config PATH
Specify configuration file (default:
`userdir/config.json` or `config.json` whichever
exists). Multiple --config options may be used. Can be
set to `-` to read config from stdin.
-d PATH, --datadir PATH
Path to directory with historical backtesting data.
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
```
!!! Note
`hyperopt-show` will automatically use the latest available hyperopt results file.
You can override this using the `--hyperopt-filename` argument, and specify another, available filename (without path!).
### Examples
Print details for the epoch 168 (the number of the epoch is shown by the `hyperopt-list` subcommand or by Hyperopt itself during hyperoptimization run):
```
freqtrade hyperopt-show -n 168
```
Prints JSON data with details for the last best epoch (i.e., the best of all epochs):
```
freqtrade hyperopt-show --best -n -1 --print-json --no-header
```
## Show trades
Print selected (or all) trades from database to screen.
```
usage: freqtrade show-trades [-h] [-v] [--logfile FILE] [-V] [-c PATH]
[-d PATH] [--userdir PATH] [--db-url PATH]
[--trade-ids TRADE_IDS [TRADE_IDS ...]]
[--print-json]
optional arguments:
-h, --help show this help message and exit
--db-url PATH Override trades database URL, this is useful in custom
deployments (default: `sqlite:///tradesv3.sqlite` for
Live Run mode, `sqlite:///tradesv3.dryrun.sqlite` for
Dry Run).
--trade-ids TRADE_IDS [TRADE_IDS ...]
Specify the list of trade ids.
--print-json Print output in JSON format.
Common arguments:
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
--logfile FILE Log to the file specified. Special values are:
'syslog', 'journald'. See the documentation for more
details.
-V, --version show program's version number and exit
-c PATH, --config PATH
Specify configuration file (default:
`userdir/config.json` or `config.json` whichever
exists). Multiple --config options may be used. Can be
set to `-` to read config from stdin.
-d PATH, --datadir PATH
Path to directory with historical backtesting data.
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
```
### Examples
Print trades with id 2 and 3 as json
``` bash
freqtrade show-trades --db-url sqlite:///tradesv3.sqlite --trade-ids 2 3 --print-json
```

View File

@@ -1,7 +1,5 @@
# Webhook usage
This page explains how to configure your bot to talk to webhooks.
## Configuration
Enable webhooks by adding a webhook-section to your configuration file, and setting `webhook.enabled` to `true`.
@@ -17,10 +15,20 @@ Sample configuration (tested using IFTTT).
"value2": "limit {limit:8f}",
"value3": "{stake_amount:8f} {stake_currency}"
},
"webhookbuycancel": {
"value1": "Cancelling Open Buy Order for {pair}",
"value2": "limit {limit:8f}",
"value3": "{stake_amount:8f} {stake_currency}"
},
"webhooksell": {
"value1": "Selling {pair}",
"value2": "limit {limit:8f}",
"value3": "profit: {profit_amount:8f} {stake_currency}"
"value3": "profit: {profit_amount:8f} {stake_currency} ({profit_ratio})"
},
"webhooksellcancel": {
"value1": "Cancelling Open Sell Order for {pair}",
"value2": "limit {limit:8f}",
"value3": "profit: {profit_amount:8f} {stake_currency} ({profit_ratio})"
},
"webhookstatus": {
"value1": "Status: {status}",
@@ -39,34 +47,78 @@ Different payloads can be configured for different events. Not all fields are ne
The fields in `webhook.webhookbuy` are filled when the bot executes a buy. Parameters are filled using string.format.
Possible parameters are:
* exchange
* pair
* market_url
* limit
* stake_amount
* stake_amount_fiat
* stake_currency
* fiat_currency
* `trade_id`
* `exchange`
* `pair`
* `limit`
* `amount`
* `open_date`
* `stake_amount`
* `stake_currency`
* `fiat_currency`
* `order_type`
* `current_rate`
### Webhookbuycancel
The fields in `webhook.webhookbuycancel` are filled when the bot cancels a buy order. Parameters are filled using string.format.
Possible parameters are:
* `trade_id`
* `exchange`
* `pair`
* `limit`
* `amount`
* `open_date`
* `stake_amount`
* `stake_currency`
* `fiat_currency`
* `order_type`
* `current_rate`
### Webhooksell
The fields in `webhook.webhooksell` are filled when the bot sells a trade. Parameters are filled using string.format.
Possible parameters are:
* exchange
* pair
* gain
* market_url
* limit
* amount
* open_rate
* current_rate
* profit_amount
* profit_percent
* profit_fiat
* stake_currency
* fiat_currency
* sell_reason
* `trade_id`
* `exchange`
* `pair`
* `gain`
* `limit`
* `amount`
* `open_rate`
* `current_rate`
* `profit_amount`
* `profit_ratio`
* `stake_currency`
* `fiat_currency`
* `sell_reason`
* `order_type`
* `open_date`
* `close_date`
### Webhooksellcancel
The fields in `webhook.webhooksellcancel` are filled when the bot cancels a sell order. Parameters are filled using string.format.
Possible parameters are:
* `trade_id`
* `exchange`
* `pair`
* `gain`
* `limit`
* `amount`
* `open_rate`
* `current_rate`
* `profit_amount`
* `profit_ratio`
* `stake_currency`
* `fiat_currency`
* `sell_reason`
* `order_type`
* `open_date`
* `close_date`
### Webhookstatus

View File

@@ -0,0 +1,57 @@
We **strongly** recommend that Windows users use [Docker](docker.md) as this will work much easier and smoother (also more secure).
If that is not possible, try using the Windows Linux subsystem (WSL) - for which the Ubuntu instructions should work.
Otherwise, try the instructions below.
## Install freqtrade manually
!!! Note
Make sure to use 64bit Windows and 64bit Python to avoid problems with backtesting or hyperopt due to the memory constraints 32bit applications have under Windows.
!!! Hint
Using the [Anaconda Distribution](https://www.anaconda.com/distribution/) under Windows can greatly help with installation problems. Check out the [Anaconda installation section](installation.md#Anaconda) in this document for more information.
### 1. Clone the git repository
```bash
git clone https://github.com/freqtrade/freqtrade.git
```
### 2. Install ta-lib
Install ta-lib according to the [ta-lib documentation](https://github.com/mrjbq7/ta-lib#windows).
As compiling from source on windows has heavy dependencies (requires a partial visual studio installation), there is also a repository of unofficial precompiled windows Wheels [here](https://www.lfd.uci.edu/~gohlke/pythonlibs/#ta-lib), which needs to be downloaded and installed using `pip install TA_Lib0.4.19cp38cp38win_amd64.whl` (make sure to use the version matching your python version)
Freqtrade provides these dependencies for the latest 2 Python versions (3.7 and 3.8) and for 64bit Windows.
Other versions must be downloaded from the above link.
``` powershell
cd \path\freqtrade
python -m venv .env
.env\Scripts\activate.ps1
# optionally install ta-lib from wheel
# Eventually adjust the below filename to match the downloaded wheel
pip install build_helpers/TA_Lib-0.4.19-cp38-cp38-win_amd64.whl
pip install -r requirements.txt
pip install -e .
freqtrade
```
!!! Note "Use Powershell"
The above installation script assumes you're using powershell on a 64bit windows.
Commands for the legacy CMD windows console may differ.
> Thanks [Owdr](https://github.com/Owdr) for the commands. Source: [Issue #222](https://github.com/freqtrade/freqtrade/issues/222)
### Error during installation on Windows
``` bash
error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools": http://landinghub.visualstudio.com/visual-cpp-build-tools
```
Unfortunately, many packages requiring compilation don't provide a pre-built wheel. It is therefore mandatory to have a C/C++ compiler installed and available for your python environment to use.
The easiest way is to download install Microsoft Visual Studio Community [here](https://visualstudio.microsoft.com/downloads/) and make sure to install "Common Tools for Visual C++" to enable building C code on Windows. Unfortunately, this is a heavy download / dependency (~4Gb) so you might want to consider WSL or [docker](docker.md) first.
---

60
environment.yml Normal file
View File

@@ -0,0 +1,60 @@
name: freqtrade
channels:
- defaults
- conda-forge
dependencies:
# Required for app
- python>=3.6
- pip
- wheel
- numpy
- pandas
- SQLAlchemy
- arrow
- requests
- urllib3
- wrapt
- jsonschema
- tabulate
- python-rapidjson
- flask
- python-dotenv
- cachetools
- python-telegram-bot
# Optional for plotting
- plotly
# Optional for hyperopt
- scipy
- scikit-optimize
- scikit-learn
- filelock
- joblib
# Optional for development
- flake8
- pytest
- pytest-mock
- pytest-asyncio
- pytest-cov
- coveralls
- mypy
# Useful for jupyter
- jupyter
- ipykernel
- isort
- yapf
- pip:
# Required for app
- cython
- pycoingecko
- ccxt
- TA-Lib
- py_find_1st
- sdnotify
# Optional for develpment
- flake8-tidy-imports
- flake8-type-annotations
- pytest-random-order
- -e .

View File

@@ -6,7 +6,7 @@ After=network.target
# Set WorkingDirectory and ExecStart to your file paths accordingly
# NOTE: %h will be resolved to /home/<username>
WorkingDirectory=%h/freqtrade
ExecStart=/usr/bin/freqtrade --dynamic-whitelist 40
ExecStart=/usr/bin/freqtrade trade
Restart=on-failure
[Install]

View File

@@ -0,0 +1,30 @@
[Unit]
Description=Freqtrade Daemon
After=network.target
[Service]
# Set WorkingDirectory and ExecStart to your file paths accordingly
# NOTE: %h will be resolved to /home/<username>
WorkingDirectory=%h/freqtrade
ExecStart=/usr/bin/freqtrade trade --sd-notify
Restart=always
#Restart=on-failure
# Note that we use Type=notify here
Type=notify
# Currently required if Type=notify
NotifyAccess=all
StartLimitInterval=1min
StartLimitBurst=5
TimeoutStartSec=1min
# Use here (process_throttle_secs * 2) or longer time interval
WatchdogSec=20
[Install]
WantedBy=default.target

View File

@@ -1,25 +1,34 @@
""" FreqTrade bot """
__version__ = '0.18.1'
""" Freqtrade bot """
__version__ = '2020.11'
if __version__ == 'develop':
class DependencyException(BaseException):
"""
Indicates that a assumed dependency is not met.
This could happen when there is currently not enough money on the account.
"""
try:
import subprocess
__version__ = 'develop-' + subprocess.check_output(
['git', 'log', '--format="%h"', '-n 1'],
stderr=subprocess.DEVNULL).decode("utf-8").rstrip().strip('"')
class OperationalException(BaseException):
"""
Requires manual intervention.
This happens when an exchange returns an unexpected error during runtime
or given configuration is invalid.
"""
# from datetime import datetime
# last_release = subprocess.check_output(
# ['git', 'tag']
# ).decode('utf-8').split()[-1].split(".")
# # Releases are in the format "2020.1" - we increment the latest version for dev.
# prefix = f"{last_release[0]}.{int(last_release[1]) + 1}"
# dev_version = int(datetime.now().timestamp() // 1000)
# __version__ = f"{prefix}.dev{dev_version}"
class TemporaryError(BaseException):
"""
Temporary network or exchange related error.
This could happen when an exchange is congested, unavailable, or the user
has networking problems. Usually resolves itself after a time.
"""
# subprocess.check_output(
# ['git', 'log', '--format="%h"', '-n 1'],
# stderr=subprocess.DEVNULL).decode("utf-8").rstrip().strip('"')
except Exception:
# git not available, ignore
try:
# Try Fallback to freqtrade_commit file (created by CI while building docker image)
from pathlib import Path
versionfile = Path('./freqtrade_commit')
if versionfile.is_file():
__version__ = f"docker-{versionfile.read_text()[:8]}"
except Exception:
pass

View File

@@ -6,10 +6,8 @@ To launch Freqtrade as a module
> python -m freqtrade (with Python >= 3.6)
"""
import sys
from freqtrade import main
if __name__ == '__main__':
main.set_loggers()
main.main(sys.argv[1:])
main.main()

View File

@@ -1,423 +0,0 @@
"""
This module contains the argument manager class
"""
import argparse
import os
import re
from typing import List, NamedTuple, Optional
import arrow
from freqtrade import __version__, constants
class TimeRange(NamedTuple):
"""
NamedTuple Defining timerange inputs.
[start/stop]type defines if [start/stop]ts shall be used.
if *type is none, don't use corresponding startvalue.
"""
starttype: Optional[str] = None
stoptype: Optional[str] = None
startts: int = 0
stopts: int = 0
class Arguments(object):
"""
Arguments Class. Manage the arguments received by the cli
"""
def __init__(self, args: List[str], description: str) -> None:
self.args = args
self.parsed_arg: Optional[argparse.Namespace] = None
self.parser = argparse.ArgumentParser(description=description)
def _load_args(self) -> None:
self.common_args_parser()
self._build_subcommands()
def get_parsed_arg(self) -> argparse.Namespace:
"""
Return the list of arguments
:return: List[str] List of arguments
"""
if self.parsed_arg is None:
self._load_args()
self.parsed_arg = self.parse_args()
return self.parsed_arg
def parse_args(self) -> argparse.Namespace:
"""
Parses given arguments and returns an argparse Namespace instance.
"""
parsed_arg = self.parser.parse_args(self.args)
return parsed_arg
def common_args_parser(self) -> None:
"""
Parses given common arguments and returns them as a parsed object.
"""
self.parser.add_argument(
'-v', '--verbose',
help='verbose mode (-vv for more, -vvv to get all messages)',
action='count',
dest='loglevel',
default=0,
)
self.parser.add_argument(
'--version',
action='version',
version=f'%(prog)s {__version__}'
)
self.parser.add_argument(
'-c', '--config',
help='specify configuration file (default: %(default)s)',
dest='config',
default='config.json',
type=str,
metavar='PATH',
)
self.parser.add_argument(
'-d', '--datadir',
help='path to backtest data',
dest='datadir',
default=None,
type=str,
metavar='PATH',
)
self.parser.add_argument(
'-s', '--strategy',
help='specify strategy class name (default: %(default)s)',
dest='strategy',
default='DefaultStrategy',
type=str,
metavar='NAME',
)
self.parser.add_argument(
'--strategy-path',
help='specify additional strategy lookup path',
dest='strategy_path',
type=str,
metavar='PATH',
)
self.parser.add_argument(
'--customhyperopt',
help='specify hyperopt class name (default: %(default)s)',
dest='hyperopt',
default=constants.DEFAULT_HYPEROPT,
type=str,
metavar='NAME',
)
self.parser.add_argument(
'--dynamic-whitelist',
help='dynamically generate and update whitelist'
' based on 24h BaseVolume (default: %(const)s)'
' DEPRECATED.',
dest='dynamic_whitelist',
const=constants.DYNAMIC_WHITELIST,
type=int,
metavar='INT',
nargs='?',
)
self.parser.add_argument(
'--db-url',
help='Override trades database URL, this is useful if dry_run is enabled'
' or in custom deployments (default: %(default)s)',
dest='db_url',
type=str,
metavar='PATH',
)
@staticmethod
def backtesting_options(parser: argparse.ArgumentParser) -> None:
"""
Parses given arguments for Backtesting scripts.
"""
parser.add_argument(
'--eps', '--enable-position-stacking',
help='Allow buying the same pair multiple times (position stacking)',
action='store_true',
dest='position_stacking',
default=False
)
parser.add_argument(
'--dmmp', '--disable-max-market-positions',
help='Disable applying `max_open_trades` during backtest '
'(same as setting `max_open_trades` to a very high number)',
action='store_false',
dest='use_max_market_positions',
default=True
)
parser.add_argument(
'-l', '--live',
help='using live data',
action='store_true',
dest='live',
)
parser.add_argument(
'-r', '--refresh-pairs-cached',
help='refresh the pairs files in tests/testdata with the latest data from the '
'exchange. Use it if you want to run your backtesting with up-to-date data.',
action='store_true',
dest='refresh_pairs',
)
parser.add_argument(
'--strategy-list',
help='Provide a commaseparated list of strategies to backtest '
'Please note that ticker-interval needs to be set either in config '
'or via command line. When using this together with --export trades, '
'the strategy-name is injected into the filename '
'(so backtest-data.json becomes backtest-data-DefaultStrategy.json',
nargs='+',
dest='strategy_list',
)
parser.add_argument(
'--export',
help='export backtest results, argument are: trades\
Example --export=trades',
type=str,
default=None,
dest='export',
)
parser.add_argument(
'--export-filename',
help='Save backtest results to this filename \
requires --export to be set as well\
Example --export-filename=user_data/backtest_data/backtest_today.json\
(default: %(default)s)',
type=str,
default=os.path.join('user_data', 'backtest_data', 'backtest-result.json'),
dest='exportfilename',
metavar='PATH',
)
@staticmethod
def edge_options(parser: argparse.ArgumentParser) -> None:
"""
Parses given arguments for Backtesting scripts.
"""
parser.add_argument(
'-r', '--refresh-pairs-cached',
help='refresh the pairs files in tests/testdata with the latest data from the '
'exchange. Use it if you want to run your edge with up-to-date data.',
action='store_true',
dest='refresh_pairs',
)
parser.add_argument(
'--stoplosses',
help='defines a range of stoploss against which edge will assess the strategy '
'the format is "min,max,step" (without any space).'
'example: --stoplosses=-0.01,-0.1,-0.001',
type=str,
dest='stoploss_range',
)
@staticmethod
def optimizer_shared_options(parser: argparse.ArgumentParser) -> None:
"""
Parses given common arguments for Backtesting and Hyperopt scripts.
:param parser:
:return:
"""
parser.add_argument(
'-i', '--ticker-interval',
help='specify ticker interval (1m, 5m, 30m, 1h, 1d)',
dest='ticker_interval',
type=str,
)
parser.add_argument(
'--timerange',
help='specify what timerange of data to use.',
default=None,
type=str,
dest='timerange',
)
@staticmethod
def hyperopt_options(parser: argparse.ArgumentParser) -> None:
"""
Parses given arguments for Hyperopt scripts.
"""
parser.add_argument(
'--eps', '--enable-position-stacking',
help='Allow buying the same pair multiple times (position stacking)',
action='store_true',
dest='position_stacking',
default=False
)
parser.add_argument(
'--dmmp', '--disable-max-market-positions',
help='Disable applying `max_open_trades` during backtest '
'(same as setting `max_open_trades` to a very high number)',
action='store_false',
dest='use_max_market_positions',
default=True
)
parser.add_argument(
'-e', '--epochs',
help='specify number of epochs (default: %(default)d)',
dest='epochs',
default=constants.HYPEROPT_EPOCH,
type=int,
metavar='INT',
)
parser.add_argument(
'-s', '--spaces',
help='Specify which parameters to hyperopt. Space separate list. \
Default: %(default)s',
choices=['all', 'buy', 'sell', 'roi', 'stoploss'],
default='all',
nargs='+',
dest='spaces',
)
def _build_subcommands(self) -> None:
"""
Builds and attaches all subcommands
:return: None
"""
from freqtrade.optimize import backtesting, hyperopt, edge_cli
subparsers = self.parser.add_subparsers(dest='subparser')
# Add backtesting subcommand
backtesting_cmd = subparsers.add_parser('backtesting', help='backtesting module')
backtesting_cmd.set_defaults(func=backtesting.start)
self.optimizer_shared_options(backtesting_cmd)
self.backtesting_options(backtesting_cmd)
# Add edge subcommand
edge_cmd = subparsers.add_parser('edge', help='edge module')
edge_cmd.set_defaults(func=edge_cli.start)
self.optimizer_shared_options(edge_cmd)
self.edge_options(edge_cmd)
# Add hyperopt subcommand
hyperopt_cmd = subparsers.add_parser('hyperopt', help='hyperopt module')
hyperopt_cmd.set_defaults(func=hyperopt.start)
self.optimizer_shared_options(hyperopt_cmd)
self.hyperopt_options(hyperopt_cmd)
@staticmethod
def parse_timerange(text: Optional[str]) -> TimeRange:
"""
Parse the value of the argument --timerange to determine what is the range desired
:param text: value from --timerange
:return: Start and End range period
"""
if text is None:
return TimeRange(None, None, 0, 0)
syntax = [(r'^-(\d{8})$', (None, 'date')),
(r'^(\d{8})-$', ('date', None)),
(r'^(\d{8})-(\d{8})$', ('date', 'date')),
(r'^-(\d{10})$', (None, 'date')),
(r'^(\d{10})-$', ('date', None)),
(r'^(\d{10})-(\d{10})$', ('date', 'date')),
(r'^(-\d+)$', (None, 'line')),
(r'^(\d+)-$', ('line', None)),
(r'^(\d+)-(\d+)$', ('index', 'index'))]
for rex, stype in syntax:
# Apply the regular expression to text
match = re.match(rex, text)
if match: # Regex has matched
rvals = match.groups()
index = 0
start: int = 0
stop: int = 0
if stype[0]:
starts = rvals[index]
if stype[0] == 'date' and len(starts) == 8:
start = arrow.get(starts, 'YYYYMMDD').timestamp
else:
start = int(starts)
index += 1
if stype[1]:
stops = rvals[index]
if stype[1] == 'date' and len(stops) == 8:
stop = arrow.get(stops, 'YYYYMMDD').timestamp
else:
stop = int(stops)
return TimeRange(stype[0], stype[1], start, stop)
raise Exception('Incorrect syntax for timerange "%s"' % text)
def scripts_options(self) -> None:
"""
Parses given arguments for scripts.
"""
self.parser.add_argument(
'-p', '--pairs',
help='Show profits for only this pairs. Pairs are comma-separated.',
dest='pairs',
default=None
)
def testdata_dl_options(self) -> None:
"""
Parses given arguments for testdata download
"""
self.parser.add_argument(
'--pairs-file',
help='File containing a list of pairs to download',
dest='pairs_file',
default=None,
metavar='PATH',
)
self.parser.add_argument(
'--export',
help='Export files to given dir',
dest='export',
default=None,
metavar='PATH',
)
self.parser.add_argument(
'-c', '--config',
help='specify configuration file, used for additional exchange parameters',
dest='config',
default=None,
type=str,
metavar='PATH',
)
self.parser.add_argument(
'--days',
help='Download data for number of days',
dest='days',
type=int,
metavar='INT',
default=None
)
self.parser.add_argument(
'--exchange',
help='Exchange name (default: %(default)s). Only valid if no config is provided',
dest='exchange',
type=str,
default='bittrex'
)
self.parser.add_argument(
'-t', '--timeframes',
help='Specify which tickers to download. Space separated list. \
Default: %(default)s',
choices=['1m', '3m', '5m', '15m', '30m', '1h', '2h', '4h',
'6h', '8h', '12h', '1d', '3d', '1w'],
default=['1m', '5m'],
nargs='+',
dest='timeframes',
)
self.parser.add_argument(
'--erase',
help='Clean all existing data for the selected exchange/pairs/timeframes',
dest='erase',
action='store_true'
)

View File

@@ -0,0 +1,22 @@
# flake8: noqa: F401
"""
Commands module.
Contains all start-commands, subcommands and CLI Interface creation.
Note: Be careful with file-scoped imports in these subfiles.
as they are parsed on startup, nothing containing optional modules should be loaded.
"""
from freqtrade.commands.arguments import Arguments
from freqtrade.commands.build_config_commands import start_new_config
from freqtrade.commands.data_commands import (start_convert_data, start_download_data,
start_list_data)
from freqtrade.commands.deploy_commands import (start_create_userdir, start_new_hyperopt,
start_new_strategy)
from freqtrade.commands.hyperopt_commands import start_hyperopt_list, start_hyperopt_show
from freqtrade.commands.list_commands import (start_list_exchanges, start_list_hyperopts,
start_list_markets, start_list_strategies,
start_list_timeframes, start_show_trades)
from freqtrade.commands.optimize_commands import start_backtesting, start_edge, start_hyperopt
from freqtrade.commands.pairlist_commands import start_test_pairlist
from freqtrade.commands.plot_commands import start_plot_dataframe, start_plot_profit
from freqtrade.commands.trade_commands import start_trading

View File

@@ -0,0 +1,371 @@
"""
This module contains the argument manager class
"""
import argparse
from functools import partial
from pathlib import Path
from typing import Any, Dict, List, Optional
from freqtrade.commands.cli_options import AVAILABLE_CLI_OPTIONS
from freqtrade.constants import DEFAULT_CONFIG
ARGS_COMMON = ["verbosity", "logfile", "version", "config", "datadir", "user_data_dir"]
ARGS_STRATEGY = ["strategy", "strategy_path"]
ARGS_TRADE = ["db_url", "sd_notify", "dry_run"]
ARGS_COMMON_OPTIMIZE = ["timeframe", "timerange", "dataformat_ohlcv",
"max_open_trades", "stake_amount", "fee"]
ARGS_BACKTEST = ARGS_COMMON_OPTIMIZE + ["position_stacking", "use_max_market_positions",
"strategy_list", "export", "exportfilename"]
ARGS_HYPEROPT = ARGS_COMMON_OPTIMIZE + ["hyperopt", "hyperopt_path",
"position_stacking", "epochs", "spaces",
"use_max_market_positions", "print_all",
"print_colorized", "print_json", "hyperopt_jobs",
"hyperopt_random_state", "hyperopt_min_trades",
"hyperopt_loss"]
ARGS_EDGE = ARGS_COMMON_OPTIMIZE + ["stoploss_range"]
ARGS_LIST_STRATEGIES = ["strategy_path", "print_one_column", "print_colorized"]
ARGS_LIST_HYPEROPTS = ["hyperopt_path", "print_one_column", "print_colorized"]
ARGS_LIST_EXCHANGES = ["print_one_column", "list_exchanges_all"]
ARGS_LIST_TIMEFRAMES = ["exchange", "print_one_column"]
ARGS_LIST_PAIRS = ["exchange", "print_list", "list_pairs_print_json", "print_one_column",
"print_csv", "base_currencies", "quote_currencies", "list_pairs_all"]
ARGS_TEST_PAIRLIST = ["config", "quote_currencies", "print_one_column", "list_pairs_print_json"]
ARGS_CREATE_USERDIR = ["user_data_dir", "reset"]
ARGS_BUILD_CONFIG = ["config"]
ARGS_BUILD_STRATEGY = ["user_data_dir", "strategy", "template"]
ARGS_BUILD_HYPEROPT = ["user_data_dir", "hyperopt", "template"]
ARGS_CONVERT_DATA = ["pairs", "format_from", "format_to", "erase"]
ARGS_CONVERT_DATA_OHLCV = ARGS_CONVERT_DATA + ["timeframes"]
ARGS_LIST_DATA = ["exchange", "dataformat_ohlcv", "pairs"]
ARGS_DOWNLOAD_DATA = ["pairs", "pairs_file", "days", "timerange", "download_trades", "exchange",
"timeframes", "erase", "dataformat_ohlcv", "dataformat_trades"]
ARGS_PLOT_DATAFRAME = ["pairs", "indicators1", "indicators2", "plot_limit",
"db_url", "trade_source", "export", "exportfilename",
"timerange", "timeframe", "no_trades"]
ARGS_PLOT_PROFIT = ["pairs", "timerange", "export", "exportfilename", "db_url",
"trade_source", "timeframe"]
ARGS_SHOW_TRADES = ["db_url", "trade_ids", "print_json"]
ARGS_HYPEROPT_LIST = ["hyperopt_list_best", "hyperopt_list_profitable",
"hyperopt_list_min_trades", "hyperopt_list_max_trades",
"hyperopt_list_min_avg_time", "hyperopt_list_max_avg_time",
"hyperopt_list_min_avg_profit", "hyperopt_list_max_avg_profit",
"hyperopt_list_min_total_profit", "hyperopt_list_max_total_profit",
"hyperopt_list_min_objective", "hyperopt_list_max_objective",
"print_colorized", "print_json", "hyperopt_list_no_details",
"hyperoptexportfilename", "export_csv"]
ARGS_HYPEROPT_SHOW = ["hyperopt_list_best", "hyperopt_list_profitable", "hyperopt_show_index",
"print_json", "hyperoptexportfilename", "hyperopt_show_no_header"]
NO_CONF_REQURIED = ["convert-data", "convert-trade-data", "download-data", "list-timeframes",
"list-markets", "list-pairs", "list-strategies", "list-data",
"list-hyperopts", "hyperopt-list", "hyperopt-show",
"plot-dataframe", "plot-profit", "show-trades"]
NO_CONF_ALLOWED = ["create-userdir", "list-exchanges", "new-hyperopt", "new-strategy"]
class Arguments:
"""
Arguments Class. Manage the arguments received by the cli
"""
def __init__(self, args: Optional[List[str]]) -> None:
self.args = args
self._parsed_arg: Optional[argparse.Namespace] = None
def get_parsed_arg(self) -> Dict[str, Any]:
"""
Return the list of arguments
:return: List[str] List of arguments
"""
if self._parsed_arg is None:
self._build_subcommands()
self._parsed_arg = self._parse_args()
return vars(self._parsed_arg)
def _parse_args(self) -> argparse.Namespace:
"""
Parses given arguments and returns an argparse Namespace instance.
"""
parsed_arg = self.parser.parse_args(self.args)
# Workaround issue in argparse with action='append' and default value
# (see https://bugs.python.org/issue16399)
# Allow no-config for certain commands (like downloading / plotting)
if ('config' in parsed_arg and parsed_arg.config is None):
conf_required = ('command' in parsed_arg and parsed_arg.command in NO_CONF_REQURIED)
if 'user_data_dir' in parsed_arg and parsed_arg.user_data_dir is not None:
user_dir = parsed_arg.user_data_dir
else:
# Default case
user_dir = 'user_data'
# Try loading from "user_data/config.json"
cfgfile = Path(user_dir) / DEFAULT_CONFIG
if cfgfile.is_file():
parsed_arg.config = [str(cfgfile)]
else:
# Else use "config.json".
cfgfile = Path.cwd() / DEFAULT_CONFIG
if cfgfile.is_file() or not conf_required:
parsed_arg.config = [DEFAULT_CONFIG]
return parsed_arg
def _build_args(self, optionlist, parser):
for val in optionlist:
opt = AVAILABLE_CLI_OPTIONS[val]
parser.add_argument(*opt.cli, dest=val, **opt.kwargs)
def _build_subcommands(self) -> None:
"""
Builds and attaches all subcommands.
:return: None
"""
# Build shared arguments (as group Common Options)
_common_parser = argparse.ArgumentParser(add_help=False)
group = _common_parser.add_argument_group("Common arguments")
self._build_args(optionlist=ARGS_COMMON, parser=group)
_strategy_parser = argparse.ArgumentParser(add_help=False)
strategy_group = _strategy_parser.add_argument_group("Strategy arguments")
self._build_args(optionlist=ARGS_STRATEGY, parser=strategy_group)
# Build main command
self.parser = argparse.ArgumentParser(description='Free, open source crypto trading bot')
self._build_args(optionlist=['version'], parser=self.parser)
from freqtrade.commands import (start_backtesting, start_convert_data, start_create_userdir,
start_download_data, start_edge, start_hyperopt,
start_hyperopt_list, start_hyperopt_show, start_list_data,
start_list_exchanges, start_list_hyperopts,
start_list_markets, start_list_strategies,
start_list_timeframes, start_new_config, start_new_hyperopt,
start_new_strategy, start_plot_dataframe, start_plot_profit,
start_show_trades, start_test_pairlist, start_trading)
subparsers = self.parser.add_subparsers(dest='command',
# Use custom message when no subhandler is added
# shown from `main.py`
# required=True
)
# Add trade subcommand
trade_cmd = subparsers.add_parser('trade', help='Trade module.',
parents=[_common_parser, _strategy_parser])
trade_cmd.set_defaults(func=start_trading)
self._build_args(optionlist=ARGS_TRADE, parser=trade_cmd)
# add create-userdir subcommand
create_userdir_cmd = subparsers.add_parser('create-userdir',
help="Create user-data directory.",
)
create_userdir_cmd.set_defaults(func=start_create_userdir)
self._build_args(optionlist=ARGS_CREATE_USERDIR, parser=create_userdir_cmd)
# add new-config subcommand
build_config_cmd = subparsers.add_parser('new-config',
help="Create new config")
build_config_cmd.set_defaults(func=start_new_config)
self._build_args(optionlist=ARGS_BUILD_CONFIG, parser=build_config_cmd)
# add new-hyperopt subcommand
build_hyperopt_cmd = subparsers.add_parser('new-hyperopt',
help="Create new hyperopt")
build_hyperopt_cmd.set_defaults(func=start_new_hyperopt)
self._build_args(optionlist=ARGS_BUILD_HYPEROPT, parser=build_hyperopt_cmd)
# add new-strategy subcommand
build_strategy_cmd = subparsers.add_parser('new-strategy',
help="Create new strategy")
build_strategy_cmd.set_defaults(func=start_new_strategy)
self._build_args(optionlist=ARGS_BUILD_STRATEGY, parser=build_strategy_cmd)
# Add download-data subcommand
download_data_cmd = subparsers.add_parser(
'download-data',
help='Download backtesting data.',
parents=[_common_parser],
)
download_data_cmd.set_defaults(func=start_download_data)
self._build_args(optionlist=ARGS_DOWNLOAD_DATA, parser=download_data_cmd)
# Add convert-data subcommand
convert_data_cmd = subparsers.add_parser(
'convert-data',
help='Convert candle (OHLCV) data from one format to another.',
parents=[_common_parser],
)
convert_data_cmd.set_defaults(func=partial(start_convert_data, ohlcv=True))
self._build_args(optionlist=ARGS_CONVERT_DATA_OHLCV, parser=convert_data_cmd)
# Add convert-trade-data subcommand
convert_trade_data_cmd = subparsers.add_parser(
'convert-trade-data',
help='Convert trade data from one format to another.',
parents=[_common_parser],
)
convert_trade_data_cmd.set_defaults(func=partial(start_convert_data, ohlcv=False))
self._build_args(optionlist=ARGS_CONVERT_DATA, parser=convert_trade_data_cmd)
# Add list-data subcommand
list_data_cmd = subparsers.add_parser(
'list-data',
help='List downloaded data.',
parents=[_common_parser],
)
list_data_cmd.set_defaults(func=start_list_data)
self._build_args(optionlist=ARGS_LIST_DATA, parser=list_data_cmd)
# Add backtesting subcommand
backtesting_cmd = subparsers.add_parser('backtesting', help='Backtesting module.',
parents=[_common_parser, _strategy_parser])
backtesting_cmd.set_defaults(func=start_backtesting)
self._build_args(optionlist=ARGS_BACKTEST, parser=backtesting_cmd)
# Add edge subcommand
edge_cmd = subparsers.add_parser('edge', help='Edge module.',
parents=[_common_parser, _strategy_parser])
edge_cmd.set_defaults(func=start_edge)
self._build_args(optionlist=ARGS_EDGE, parser=edge_cmd)
# Add hyperopt subcommand
hyperopt_cmd = subparsers.add_parser('hyperopt', help='Hyperopt module.',
parents=[_common_parser, _strategy_parser],
)
hyperopt_cmd.set_defaults(func=start_hyperopt)
self._build_args(optionlist=ARGS_HYPEROPT, parser=hyperopt_cmd)
# Add hyperopt-list subcommand
hyperopt_list_cmd = subparsers.add_parser(
'hyperopt-list',
help='List Hyperopt results',
parents=[_common_parser],
)
hyperopt_list_cmd.set_defaults(func=start_hyperopt_list)
self._build_args(optionlist=ARGS_HYPEROPT_LIST, parser=hyperopt_list_cmd)
# Add hyperopt-show subcommand
hyperopt_show_cmd = subparsers.add_parser(
'hyperopt-show',
help='Show details of Hyperopt results',
parents=[_common_parser],
)
hyperopt_show_cmd.set_defaults(func=start_hyperopt_show)
self._build_args(optionlist=ARGS_HYPEROPT_SHOW, parser=hyperopt_show_cmd)
# Add list-exchanges subcommand
list_exchanges_cmd = subparsers.add_parser(
'list-exchanges',
help='Print available exchanges.',
parents=[_common_parser],
)
list_exchanges_cmd.set_defaults(func=start_list_exchanges)
self._build_args(optionlist=ARGS_LIST_EXCHANGES, parser=list_exchanges_cmd)
# Add list-hyperopts subcommand
list_hyperopts_cmd = subparsers.add_parser(
'list-hyperopts',
help='Print available hyperopt classes.',
parents=[_common_parser],
)
list_hyperopts_cmd.set_defaults(func=start_list_hyperopts)
self._build_args(optionlist=ARGS_LIST_HYPEROPTS, parser=list_hyperopts_cmd)
# Add list-markets subcommand
list_markets_cmd = subparsers.add_parser(
'list-markets',
help='Print markets on exchange.',
parents=[_common_parser],
)
list_markets_cmd.set_defaults(func=partial(start_list_markets, pairs_only=False))
self._build_args(optionlist=ARGS_LIST_PAIRS, parser=list_markets_cmd)
# Add list-pairs subcommand
list_pairs_cmd = subparsers.add_parser(
'list-pairs',
help='Print pairs on exchange.',
parents=[_common_parser],
)
list_pairs_cmd.set_defaults(func=partial(start_list_markets, pairs_only=True))
self._build_args(optionlist=ARGS_LIST_PAIRS, parser=list_pairs_cmd)
# Add list-strategies subcommand
list_strategies_cmd = subparsers.add_parser(
'list-strategies',
help='Print available strategies.',
parents=[_common_parser],
)
list_strategies_cmd.set_defaults(func=start_list_strategies)
self._build_args(optionlist=ARGS_LIST_STRATEGIES, parser=list_strategies_cmd)
# Add list-timeframes subcommand
list_timeframes_cmd = subparsers.add_parser(
'list-timeframes',
help='Print available timeframes for the exchange.',
parents=[_common_parser],
)
list_timeframes_cmd.set_defaults(func=start_list_timeframes)
self._build_args(optionlist=ARGS_LIST_TIMEFRAMES, parser=list_timeframes_cmd)
# Add show-trades subcommand
show_trades = subparsers.add_parser(
'show-trades',
help='Show trades.',
parents=[_common_parser],
)
show_trades.set_defaults(func=start_show_trades)
self._build_args(optionlist=ARGS_SHOW_TRADES, parser=show_trades)
# Add test-pairlist subcommand
test_pairlist_cmd = subparsers.add_parser(
'test-pairlist',
help='Test your pairlist configuration.',
)
test_pairlist_cmd.set_defaults(func=start_test_pairlist)
self._build_args(optionlist=ARGS_TEST_PAIRLIST, parser=test_pairlist_cmd)
# Add Plotting subcommand
plot_dataframe_cmd = subparsers.add_parser(
'plot-dataframe',
help='Plot candles with indicators.',
parents=[_common_parser, _strategy_parser],
)
plot_dataframe_cmd.set_defaults(func=start_plot_dataframe)
self._build_args(optionlist=ARGS_PLOT_DATAFRAME, parser=plot_dataframe_cmd)
# Plot profit
plot_profit_cmd = subparsers.add_parser(
'plot-profit',
help='Generate plot showing profits.',
parents=[_common_parser, _strategy_parser],
)
plot_profit_cmd.set_defaults(func=start_plot_profit)
self._build_args(optionlist=ARGS_PLOT_PROFIT, parser=plot_profit_cmd)

View File

@@ -0,0 +1,195 @@
import logging
from pathlib import Path
from typing import Any, Dict, List
from questionary import Separator, prompt
from freqtrade.constants import UNLIMITED_STAKE_AMOUNT
from freqtrade.exceptions import OperationalException
from freqtrade.exchange import MAP_EXCHANGE_CHILDCLASS, available_exchanges
from freqtrade.misc import render_template
logger = logging.getLogger(__name__)
def validate_is_int(val):
try:
_ = int(val)
return True
except Exception:
return False
def validate_is_float(val):
try:
_ = float(val)
return True
except Exception:
return False
def ask_user_overwrite(config_path: Path) -> bool:
questions = [
{
"type": "confirm",
"name": "overwrite",
"message": f"File {config_path} already exists. Overwrite?",
"default": False,
},
]
answers = prompt(questions)
return answers['overwrite']
def ask_user_config() -> Dict[str, Any]:
"""
Ask user a few questions to build the configuration.
Interactive questions built using https://github.com/tmbo/questionary
:returns: Dict with keys to put into template
"""
questions: List[Dict[str, Any]] = [
{
"type": "confirm",
"name": "dry_run",
"message": "Do you want to enable Dry-run (simulated trades)?",
"default": True,
},
{
"type": "text",
"name": "stake_currency",
"message": "Please insert your stake currency:",
"default": 'BTC',
},
{
"type": "text",
"name": "stake_amount",
"message": "Please insert your stake amount:",
"default": "0.01",
"validate": lambda val: val == UNLIMITED_STAKE_AMOUNT or validate_is_float(val),
},
{
"type": "text",
"name": "max_open_trades",
"message": f"Please insert max_open_trades (Integer or '{UNLIMITED_STAKE_AMOUNT}'):",
"default": "3",
"validate": lambda val: val == UNLIMITED_STAKE_AMOUNT or validate_is_int(val)
},
{
"type": "text",
"name": "timeframe",
"message": "Please insert your desired timeframe (e.g. 5m):",
"default": "5m",
},
{
"type": "text",
"name": "fiat_display_currency",
"message": "Please insert your display Currency (for reporting):",
"default": 'USD',
},
{
"type": "select",
"name": "exchange_name",
"message": "Select exchange",
"choices": [
"binance",
"binanceje",
"binanceus",
"bittrex",
"kraken",
Separator(),
"other",
],
},
{
"type": "autocomplete",
"name": "exchange_name",
"message": "Type your exchange name (Must be supported by ccxt)",
"choices": available_exchanges(),
"when": lambda x: x["exchange_name"] == 'other'
},
{
"type": "password",
"name": "exchange_key",
"message": "Insert Exchange Key",
"when": lambda x: not x['dry_run']
},
{
"type": "password",
"name": "exchange_secret",
"message": "Insert Exchange Secret",
"when": lambda x: not x['dry_run']
},
{
"type": "confirm",
"name": "telegram",
"message": "Do you want to enable Telegram?",
"default": False,
},
{
"type": "password",
"name": "telegram_token",
"message": "Insert Telegram token",
"when": lambda x: x['telegram']
},
{
"type": "text",
"name": "telegram_chat_id",
"message": "Insert Telegram chat id",
"when": lambda x: x['telegram']
},
]
answers = prompt(questions)
if not answers:
# Interrupted questionary sessions return an empty dict.
raise OperationalException("User interrupted interactive questions.")
return answers
def deploy_new_config(config_path: Path, selections: Dict[str, Any]) -> None:
"""
Applies selections to the template and writes the result to config_path
:param config_path: Path object for new config file. Should not exist yet
:param selecions: Dict containing selections taken by the user.
"""
from jinja2.exceptions import TemplateNotFound
try:
exchange_template = MAP_EXCHANGE_CHILDCLASS.get(
selections['exchange_name'], selections['exchange_name'])
selections['exchange'] = render_template(
templatefile=f"subtemplates/exchange_{exchange_template}.j2",
arguments=selections
)
except TemplateNotFound:
selections['exchange'] = render_template(
templatefile="subtemplates/exchange_generic.j2",
arguments=selections
)
config_text = render_template(templatefile='base_config.json.j2',
arguments=selections)
logger.info(f"Writing config to `{config_path}`.")
config_path.write_text(config_text)
def start_new_config(args: Dict[str, Any]) -> None:
"""
Create a new strategy from a template
Asking the user questions to fill out the templateaccordingly.
"""
config_path = Path(args['config'][0])
if config_path.exists():
overwrite = ask_user_overwrite(config_path)
if overwrite:
config_path.unlink()
else:
raise OperationalException(
f"Configuration file `{config_path}` already exists. "
"Please delete it or use a different configuration file name.")
selections = ask_user_config()
deploy_new_config(config_path, selections)

View File

@@ -0,0 +1,515 @@
"""
Definition of cli arguments used in arguments.py
"""
from argparse import ArgumentTypeError
from freqtrade import __version__, constants
from freqtrade.constants import HYPEROPT_LOSS_BUILTIN
def check_int_positive(value: str) -> int:
try:
uint = int(value)
if uint <= 0:
raise ValueError
except ValueError:
raise ArgumentTypeError(
f"{value} is invalid for this parameter, should be a positive integer value"
)
return uint
def check_int_nonzero(value: str) -> int:
try:
uint = int(value)
if uint == 0:
raise ValueError
except ValueError:
raise ArgumentTypeError(
f"{value} is invalid for this parameter, should be a non-zero integer value"
)
return uint
class Arg:
# Optional CLI arguments
def __init__(self, *args, **kwargs):
self.cli = args
self.kwargs = kwargs
# List of available command line options
AVAILABLE_CLI_OPTIONS = {
# Common options
"verbosity": Arg(
'-v', '--verbose',
help='Verbose mode (-vv for more, -vvv to get all messages).',
action='count',
default=0,
),
"logfile": Arg(
'--logfile',
help="Log to the file specified. Special values are: 'syslog', 'journald'. "
"See the documentation for more details.",
metavar='FILE',
),
"version": Arg(
'-V', '--version',
action='version',
version=f'%(prog)s {__version__}',
),
"config": Arg(
'-c', '--config',
help=f'Specify configuration file (default: `userdir/{constants.DEFAULT_CONFIG}` '
f'or `config.json` whichever exists). '
f'Multiple --config options may be used. '
f'Can be set to `-` to read config from stdin.',
action='append',
metavar='PATH',
),
"datadir": Arg(
'-d', '--datadir',
help='Path to directory with historical backtesting data.',
metavar='PATH',
),
"user_data_dir": Arg(
'--userdir', '--user-data-dir',
help='Path to userdata directory.',
metavar='PATH',
),
"reset": Arg(
'--reset',
help='Reset sample files to their original state.',
action='store_true',
),
# Main options
"strategy": Arg(
'-s', '--strategy',
help='Specify strategy class name which will be used by the bot.',
metavar='NAME',
),
"strategy_path": Arg(
'--strategy-path',
help='Specify additional strategy lookup path.',
metavar='PATH',
),
"db_url": Arg(
'--db-url',
help=f'Override trades database URL, this is useful in custom deployments '
f'(default: `{constants.DEFAULT_DB_PROD_URL}` for Live Run mode, '
f'`{constants.DEFAULT_DB_DRYRUN_URL}` for Dry Run).',
metavar='PATH',
),
"sd_notify": Arg(
'--sd-notify',
help='Notify systemd service manager.',
action='store_true',
),
"dry_run": Arg(
'--dry-run',
help='Enforce dry-run for trading (removes Exchange secrets and simulates trades).',
action='store_true',
),
# Optimize common
"timeframe": Arg(
'-i', '--timeframe', '--ticker-interval',
help='Specify ticker interval (`1m`, `5m`, `30m`, `1h`, `1d`).',
),
"timerange": Arg(
'--timerange',
help='Specify what timerange of data to use.',
),
"max_open_trades": Arg(
'--max-open-trades',
help='Override the value of the `max_open_trades` configuration setting.',
type=int,
metavar='INT',
),
"stake_amount": Arg(
'--stake-amount',
help='Override the value of the `stake_amount` configuration setting.',
type=float,
),
# Backtesting
"position_stacking": Arg(
'--eps', '--enable-position-stacking',
help='Allow buying the same pair multiple times (position stacking).',
action='store_true',
default=False,
),
"use_max_market_positions": Arg(
'--dmmp', '--disable-max-market-positions',
help='Disable applying `max_open_trades` during backtest '
'(same as setting `max_open_trades` to a very high number).',
action='store_false',
default=True,
),
"strategy_list": Arg(
'--strategy-list',
help='Provide a space-separated list of strategies to backtest. '
'Please note that ticker-interval needs to be set either in config '
'or via command line. When using this together with `--export trades`, '
'the strategy-name is injected into the filename '
'(so `backtest-data.json` becomes `backtest-data-DefaultStrategy.json`',
nargs='+',
),
"export": Arg(
'--export',
help='Export backtest results, argument are: trades. '
'Example: `--export=trades`',
),
"exportfilename": Arg(
'--export-filename',
help='Save backtest results to the file with this filename. '
'Requires `--export` to be set as well. '
'Example: `--export-filename=user_data/backtest_results/backtest_today.json`',
metavar='PATH',
),
"fee": Arg(
'--fee',
help='Specify fee ratio. Will be applied twice (on trade entry and exit).',
type=float,
metavar='FLOAT',
),
# Edge
"stoploss_range": Arg(
'--stoplosses',
help='Defines a range of stoploss values against which edge will assess the strategy. '
'The format is "min,max,step" (without any space). '
'Example: `--stoplosses=-0.01,-0.1,-0.001`',
),
# Hyperopt
"hyperopt": Arg(
'--hyperopt',
help='Specify hyperopt class name which will be used by the bot.',
metavar='NAME',
),
"hyperopt_path": Arg(
'--hyperopt-path',
help='Specify additional lookup path for Hyperopt and Hyperopt Loss functions.',
metavar='PATH',
),
"epochs": Arg(
'-e', '--epochs',
help='Specify number of epochs (default: %(default)d).',
type=check_int_positive,
metavar='INT',
default=constants.HYPEROPT_EPOCH,
),
"spaces": Arg(
'--spaces',
help='Specify which parameters to hyperopt. Space-separated list.',
choices=['all', 'buy', 'sell', 'roi', 'stoploss', 'trailing', 'default'],
nargs='+',
default='default',
),
"print_all": Arg(
'--print-all',
help='Print all results, not only the best ones.',
action='store_true',
default=False,
),
"print_colorized": Arg(
'--no-color',
help='Disable colorization of hyperopt results. May be useful if you are '
'redirecting output to a file.',
action='store_false',
default=True,
),
"print_json": Arg(
'--print-json',
help='Print output in JSON format.',
action='store_true',
default=False,
),
"export_csv": Arg(
'--export-csv',
help='Export to CSV-File.'
' This will disable table print.'
' Example: --export-csv hyperopt.csv',
metavar='FILE',
),
"hyperopt_jobs": Arg(
'-j', '--job-workers',
help='The number of concurrently running jobs for hyperoptimization '
'(hyperopt worker processes). '
'If -1 (default), all CPUs are used, for -2, all CPUs but one are used, etc. '
'If 1 is given, no parallel computing code is used at all.',
type=int,
metavar='JOBS',
default=-1,
),
"hyperopt_random_state": Arg(
'--random-state',
help='Set random state to some positive integer for reproducible hyperopt results.',
type=check_int_positive,
metavar='INT',
),
"hyperopt_min_trades": Arg(
'--min-trades',
help="Set minimal desired number of trades for evaluations in the hyperopt "
"optimization path (default: 1).",
type=check_int_positive,
metavar='INT',
default=1,
),
"hyperopt_loss": Arg(
'--hyperopt-loss',
help='Specify the class name of the hyperopt loss function class (IHyperOptLoss). '
'Different functions can generate completely different results, '
'since the target for optimization is different. Built-in Hyperopt-loss-functions are: '
f'{", ".join(HYPEROPT_LOSS_BUILTIN)}',
metavar='NAME',
),
"hyperoptexportfilename": Arg(
'--hyperopt-filename',
help='Hyperopt result filename.'
'Example: `--hyperopt-filename=hyperopt_results_2020-09-27_16-20-48.pickle`',
metavar='FILENAME',
),
# List exchanges
"print_one_column": Arg(
'-1', '--one-column',
help='Print output in one column.',
action='store_true',
),
"list_exchanges_all": Arg(
'-a', '--all',
help='Print all exchanges known to the ccxt library.',
action='store_true',
),
# List pairs / markets
"list_pairs_all": Arg(
'-a', '--all',
help='Print all pairs or market symbols. By default only active '
'ones are shown.',
action='store_true',
),
"print_list": Arg(
'--print-list',
help='Print list of pairs or market symbols. By default data is '
'printed in the tabular format.',
action='store_true',
),
"list_pairs_print_json": Arg(
'--print-json',
help='Print list of pairs or market symbols in JSON format.',
action='store_true',
default=False,
),
"print_csv": Arg(
'--print-csv',
help='Print exchange pair or market data in the csv format.',
action='store_true',
),
"quote_currencies": Arg(
'--quote',
help='Specify quote currency(-ies). Space-separated list.',
nargs='+',
metavar='QUOTE_CURRENCY',
),
"base_currencies": Arg(
'--base',
help='Specify base currency(-ies). Space-separated list.',
nargs='+',
metavar='BASE_CURRENCY',
),
# Script options
"pairs": Arg(
'-p', '--pairs',
help='Show profits for only these pairs. Pairs are space-separated.',
nargs='+',
),
# Download data
"pairs_file": Arg(
'--pairs-file',
help='File containing a list of pairs to download.',
metavar='FILE',
),
"days": Arg(
'--days',
help='Download data for given number of days.',
type=check_int_positive,
metavar='INT',
),
"download_trades": Arg(
'--dl-trades',
help='Download trades instead of OHLCV data. The bot will resample trades to the '
'desired timeframe as specified as --timeframes/-t.',
action='store_true',
),
"format_from": Arg(
'--format-from',
help='Source format for data conversion.',
choices=constants.AVAILABLE_DATAHANDLERS,
required=True,
),
"format_to": Arg(
'--format-to',
help='Destination format for data conversion.',
choices=constants.AVAILABLE_DATAHANDLERS,
required=True,
),
"dataformat_ohlcv": Arg(
'--data-format-ohlcv',
help='Storage format for downloaded candle (OHLCV) data. (default: `%(default)s`).',
choices=constants.AVAILABLE_DATAHANDLERS,
),
"dataformat_trades": Arg(
'--data-format-trades',
help='Storage format for downloaded trades data. (default: `%(default)s`).',
choices=constants.AVAILABLE_DATAHANDLERS,
),
"exchange": Arg(
'--exchange',
help=f'Exchange name (default: `{constants.DEFAULT_EXCHANGE}`). '
f'Only valid if no config is provided.',
),
"timeframes": Arg(
'-t', '--timeframes',
help='Specify which tickers to download. Space-separated list. '
'Default: `1m 5m`.',
choices=['1m', '3m', '5m', '15m', '30m', '1h', '2h', '4h',
'6h', '8h', '12h', '1d', '3d', '1w', '2w', '1M', '1y'],
default=['1m', '5m'],
nargs='+',
),
"erase": Arg(
'--erase',
help='Clean all existing data for the selected exchange/pairs/timeframes.',
action='store_true',
),
# Templating options
"template": Arg(
'--template',
help='Use a template which is either `minimal`, '
'`full` (containing multiple sample indicators) or `advanced`. Default: `%(default)s`.',
choices=['full', 'minimal', 'advanced'],
default='full',
),
# Plot dataframe
"indicators1": Arg(
'--indicators1',
help='Set indicators from your strategy you want in the first row of the graph. '
"Space-separated list. Example: `ema3 ema5`. Default: `['sma', 'ema3', 'ema5']`.",
nargs='+',
),
"indicators2": Arg(
'--indicators2',
help='Set indicators from your strategy you want in the third row of the graph. '
"Space-separated list. Example: `fastd fastk`. Default: `['macd', 'macdsignal']`.",
nargs='+',
),
"plot_limit": Arg(
'--plot-limit',
help='Specify tick limit for plotting. Notice: too high values cause huge files. '
'Default: %(default)s.',
type=check_int_positive,
metavar='INT',
default=750,
),
"no_trades": Arg(
'--no-trades',
help='Skip using trades from backtesting file and DB.',
action='store_true',
),
"trade_source": Arg(
'--trade-source',
help='Specify the source for trades (Can be DB or file (backtest file)) '
'Default: %(default)s',
choices=["DB", "file"],
default="file",
),
"trade_ids": Arg(
'--trade-ids',
help='Specify the list of trade ids.',
nargs='+',
),
# hyperopt-list, hyperopt-show
"hyperopt_list_profitable": Arg(
'--profitable',
help='Select only profitable epochs.',
action='store_true',
),
"hyperopt_list_best": Arg(
'--best',
help='Select only best epochs.',
action='store_true',
),
"hyperopt_list_min_trades": Arg(
'--min-trades',
help='Select epochs with more than INT trades.',
type=check_int_positive,
metavar='INT',
),
"hyperopt_list_max_trades": Arg(
'--max-trades',
help='Select epochs with less than INT trades.',
type=check_int_positive,
metavar='INT',
),
"hyperopt_list_min_avg_time": Arg(
'--min-avg-time',
help='Select epochs above average time.',
type=float,
metavar='FLOAT',
),
"hyperopt_list_max_avg_time": Arg(
'--max-avg-time',
help='Select epochs below average time.',
type=float,
metavar='FLOAT',
),
"hyperopt_list_min_avg_profit": Arg(
'--min-avg-profit',
help='Select epochs above average profit.',
type=float,
metavar='FLOAT',
),
"hyperopt_list_max_avg_profit": Arg(
'--max-avg-profit',
help='Select epochs below average profit.',
type=float,
metavar='FLOAT',
),
"hyperopt_list_min_total_profit": Arg(
'--min-total-profit',
help='Select epochs above total profit.',
type=float,
metavar='FLOAT',
),
"hyperopt_list_max_total_profit": Arg(
'--max-total-profit',
help='Select epochs below total profit.',
type=float,
metavar='FLOAT',
),
"hyperopt_list_min_objective": Arg(
'--min-objective',
help='Select epochs above objective.',
type=float,
metavar='FLOAT',
),
"hyperopt_list_max_objective": Arg(
'--max-objective',
help='Select epochs below objective.',
type=float,
metavar='FLOAT',
),
"hyperopt_list_no_details": Arg(
'--no-details',
help='Do not print best epoch details.',
action='store_true',
),
"hyperopt_show_index": Arg(
'-n', '--index',
help='Specify the index of the epoch to print details for.',
type=check_int_nonzero,
metavar='INT',
),
"hyperopt_show_no_header": Arg(
'--no-header',
help='Do not print epoch details header.',
action='store_true',
),
}

View File

@@ -0,0 +1,127 @@
import logging
import sys
from collections import defaultdict
from datetime import datetime, timedelta
from typing import Any, Dict, List
from freqtrade.configuration import TimeRange, setup_utils_configuration
from freqtrade.data.converter import convert_ohlcv_format, convert_trades_format
from freqtrade.data.history import (convert_trades_to_ohlcv, refresh_backtest_ohlcv_data,
refresh_backtest_trades_data)
from freqtrade.exceptions import OperationalException
from freqtrade.exchange import timeframe_to_minutes
from freqtrade.resolvers import ExchangeResolver
from freqtrade.state import RunMode
logger = logging.getLogger(__name__)
def start_download_data(args: Dict[str, Any]) -> None:
"""
Download data (former download_backtest_data.py script)
"""
config = setup_utils_configuration(args, RunMode.UTIL_EXCHANGE)
if 'days' in config and 'timerange' in config:
raise OperationalException("--days and --timerange are mutually exclusive. "
"You can only specify one or the other.")
timerange = TimeRange()
if 'days' in config:
time_since = (datetime.now() - timedelta(days=config['days'])).strftime("%Y%m%d")
timerange = TimeRange.parse_timerange(f'{time_since}-')
if 'timerange' in config:
timerange = timerange.parse_timerange(config['timerange'])
# Remove stake-currency to skip checks which are not relevant for datadownload
config['stake_currency'] = ''
if 'pairs' not in config:
raise OperationalException(
"Downloading data requires a list of pairs. "
"Please check the documentation on how to configure this.")
logger.info(f"About to download pairs: {config['pairs']}, "
f"intervals: {config['timeframes']} to {config['datadir']}")
pairs_not_available: List[str] = []
# Init exchange
exchange = ExchangeResolver.load_exchange(config['exchange']['name'], config, validate=False)
# Manual validations of relevant settings
exchange.validate_pairs(config['pairs'])
for timeframe in config['timeframes']:
exchange.validate_timeframes(timeframe)
try:
if config.get('download_trades'):
pairs_not_available = refresh_backtest_trades_data(
exchange, pairs=config['pairs'], datadir=config['datadir'],
timerange=timerange, erase=bool(config.get('erase')),
data_format=config['dataformat_trades'])
# Convert downloaded trade data to different timeframes
convert_trades_to_ohlcv(
pairs=config['pairs'], timeframes=config['timeframes'],
datadir=config['datadir'], timerange=timerange, erase=bool(config.get('erase')),
data_format_ohlcv=config['dataformat_ohlcv'],
data_format_trades=config['dataformat_trades'],
)
else:
pairs_not_available = refresh_backtest_ohlcv_data(
exchange, pairs=config['pairs'], timeframes=config['timeframes'],
datadir=config['datadir'], timerange=timerange, erase=bool(config.get('erase')),
data_format=config['dataformat_ohlcv'])
except KeyboardInterrupt:
sys.exit("SIGINT received, aborting ...")
finally:
if pairs_not_available:
logger.info(f"Pairs [{','.join(pairs_not_available)}] not available "
f"on exchange {exchange.name}.")
def start_convert_data(args: Dict[str, Any], ohlcv: bool = True) -> None:
"""
Convert data from one format to another
"""
config = setup_utils_configuration(args, RunMode.UTIL_NO_EXCHANGE)
if ohlcv:
convert_ohlcv_format(config,
convert_from=args['format_from'], convert_to=args['format_to'],
erase=args['erase'])
else:
convert_trades_format(config,
convert_from=args['format_from'], convert_to=args['format_to'],
erase=args['erase'])
def start_list_data(args: Dict[str, Any]) -> None:
"""
List available backtest data
"""
config = setup_utils_configuration(args, RunMode.UTIL_NO_EXCHANGE)
from tabulate import tabulate
from freqtrade.data.history.idatahandler import get_datahandler
dhc = get_datahandler(config['datadir'], config['dataformat_ohlcv'])
paircombs = dhc.ohlcv_get_available_data(config['datadir'])
if args['pairs']:
paircombs = [comb for comb in paircombs if comb[0] in args['pairs']]
print(f"Found {len(paircombs)} pair / timeframe combinations.")
groupedpair = defaultdict(list)
for pair, timeframe in sorted(paircombs, key=lambda x: (x[0], timeframe_to_minutes(x[1]))):
groupedpair[pair].append(timeframe)
if groupedpair:
print(tabulate([(pair, ', '.join(timeframes)) for pair, timeframes in groupedpair.items()],
headers=("Pair", "Timeframe"),
tablefmt='psql', stralign='right'))

View File

@@ -0,0 +1,139 @@
import logging
import sys
from pathlib import Path
from typing import Any, Dict
from freqtrade.configuration import setup_utils_configuration
from freqtrade.configuration.directory_operations import copy_sample_files, create_userdata_dir
from freqtrade.constants import USERPATH_HYPEROPTS, USERPATH_STRATEGIES
from freqtrade.exceptions import OperationalException
from freqtrade.misc import render_template, render_template_with_fallback
from freqtrade.state import RunMode
logger = logging.getLogger(__name__)
def start_create_userdir(args: Dict[str, Any]) -> None:
"""
Create "user_data" directory to contain user data strategies, hyperopt, ...)
:param args: Cli args from Arguments()
:return: None
"""
if "user_data_dir" in args and args["user_data_dir"]:
userdir = create_userdata_dir(args["user_data_dir"], create_dir=True)
copy_sample_files(userdir, overwrite=args["reset"])
else:
logger.warning("`create-userdir` requires --userdir to be set.")
sys.exit(1)
def deploy_new_strategy(strategy_name: str, strategy_path: Path, subtemplate: str) -> None:
"""
Deploy new strategy from template to strategy_path
"""
fallback = 'full'
indicators = render_template_with_fallback(
templatefile=f"subtemplates/indicators_{subtemplate}.j2",
templatefallbackfile=f"subtemplates/indicators_{fallback}.j2",
)
buy_trend = render_template_with_fallback(
templatefile=f"subtemplates/buy_trend_{subtemplate}.j2",
templatefallbackfile=f"subtemplates/buy_trend_{fallback}.j2",
)
sell_trend = render_template_with_fallback(
templatefile=f"subtemplates/sell_trend_{subtemplate}.j2",
templatefallbackfile=f"subtemplates/sell_trend_{fallback}.j2",
)
plot_config = render_template_with_fallback(
templatefile=f"subtemplates/plot_config_{subtemplate}.j2",
templatefallbackfile=f"subtemplates/plot_config_{fallback}.j2",
)
additional_methods = render_template_with_fallback(
templatefile=f"subtemplates/strategy_methods_{subtemplate}.j2",
templatefallbackfile="subtemplates/strategy_methods_empty.j2",
)
strategy_text = render_template(templatefile='base_strategy.py.j2',
arguments={"strategy": strategy_name,
"indicators": indicators,
"buy_trend": buy_trend,
"sell_trend": sell_trend,
"plot_config": plot_config,
"additional_methods": additional_methods,
})
logger.info(f"Writing strategy to `{strategy_path}`.")
strategy_path.write_text(strategy_text)
def start_new_strategy(args: Dict[str, Any]) -> None:
config = setup_utils_configuration(args, RunMode.UTIL_NO_EXCHANGE)
if "strategy" in args and args["strategy"]:
if args["strategy"] == "DefaultStrategy":
raise OperationalException("DefaultStrategy is not allowed as name.")
new_path = config['user_data_dir'] / USERPATH_STRATEGIES / (args['strategy'] + '.py')
if new_path.exists():
raise OperationalException(f"`{new_path}` already exists. "
"Please choose another Strategy Name.")
deploy_new_strategy(args['strategy'], new_path, args['template'])
else:
raise OperationalException("`new-strategy` requires --strategy to be set.")
def deploy_new_hyperopt(hyperopt_name: str, hyperopt_path: Path, subtemplate: str) -> None:
"""
Deploys a new hyperopt template to hyperopt_path
"""
fallback = 'full'
buy_guards = render_template_with_fallback(
templatefile=f"subtemplates/hyperopt_buy_guards_{subtemplate}.j2",
templatefallbackfile=f"subtemplates/hyperopt_buy_guards_{fallback}.j2",
)
sell_guards = render_template_with_fallback(
templatefile=f"subtemplates/hyperopt_sell_guards_{subtemplate}.j2",
templatefallbackfile=f"subtemplates/hyperopt_sell_guards_{fallback}.j2",
)
buy_space = render_template_with_fallback(
templatefile=f"subtemplates/hyperopt_buy_space_{subtemplate}.j2",
templatefallbackfile=f"subtemplates/hyperopt_buy_space_{fallback}.j2",
)
sell_space = render_template_with_fallback(
templatefile=f"subtemplates/hyperopt_sell_space_{subtemplate}.j2",
templatefallbackfile=f"subtemplates/hyperopt_sell_space_{fallback}.j2",
)
strategy_text = render_template(templatefile='base_hyperopt.py.j2',
arguments={"hyperopt": hyperopt_name,
"buy_guards": buy_guards,
"sell_guards": sell_guards,
"buy_space": buy_space,
"sell_space": sell_space,
})
logger.info(f"Writing hyperopt to `{hyperopt_path}`.")
hyperopt_path.write_text(strategy_text)
def start_new_hyperopt(args: Dict[str, Any]) -> None:
config = setup_utils_configuration(args, RunMode.UTIL_NO_EXCHANGE)
if 'hyperopt' in args and args['hyperopt']:
if args['hyperopt'] == 'DefaultHyperopt':
raise OperationalException("DefaultHyperopt is not allowed as name.")
new_path = config['user_data_dir'] / USERPATH_HYPEROPTS / (args['hyperopt'] + '.py')
if new_path.exists():
raise OperationalException(f"`{new_path}` already exists. "
"Please choose another Hyperopt Name.")
deploy_new_hyperopt(args['hyperopt'], new_path, args['template'])
else:
raise OperationalException("`new-hyperopt` requires --hyperopt to be set.")

View File

@@ -0,0 +1,228 @@
import logging
from operator import itemgetter
from typing import Any, Dict, List
from colorama import init as colorama_init
from freqtrade.configuration import setup_utils_configuration
from freqtrade.data.btanalysis import get_latest_hyperopt_file
from freqtrade.exceptions import OperationalException
from freqtrade.state import RunMode
logger = logging.getLogger(__name__)
def start_hyperopt_list(args: Dict[str, Any]) -> None:
"""
List hyperopt epochs previously evaluated
"""
from freqtrade.optimize.hyperopt import Hyperopt
config = setup_utils_configuration(args, RunMode.UTIL_NO_EXCHANGE)
print_colorized = config.get('print_colorized', False)
print_json = config.get('print_json', False)
export_csv = config.get('export_csv', None)
no_details = config.get('hyperopt_list_no_details', False)
no_header = False
filteroptions = {
'only_best': config.get('hyperopt_list_best', False),
'only_profitable': config.get('hyperopt_list_profitable', False),
'filter_min_trades': config.get('hyperopt_list_min_trades', 0),
'filter_max_trades': config.get('hyperopt_list_max_trades', 0),
'filter_min_avg_time': config.get('hyperopt_list_min_avg_time', None),
'filter_max_avg_time': config.get('hyperopt_list_max_avg_time', None),
'filter_min_avg_profit': config.get('hyperopt_list_min_avg_profit', None),
'filter_max_avg_profit': config.get('hyperopt_list_max_avg_profit', None),
'filter_min_total_profit': config.get('hyperopt_list_min_total_profit', None),
'filter_max_total_profit': config.get('hyperopt_list_max_total_profit', None),
'filter_min_objective': config.get('hyperopt_list_min_objective', None),
'filter_max_objective': config.get('hyperopt_list_max_objective', None),
}
results_file = get_latest_hyperopt_file(
config['user_data_dir'] / 'hyperopt_results',
config.get('hyperoptexportfilename'))
# Previous evaluations
epochs = Hyperopt.load_previous_results(results_file)
total_epochs = len(epochs)
epochs = hyperopt_filter_epochs(epochs, filteroptions)
if print_colorized:
colorama_init(autoreset=True)
if not export_csv:
try:
print(Hyperopt.get_result_table(config, epochs, total_epochs,
not filteroptions['only_best'], print_colorized, 0))
except KeyboardInterrupt:
print('User interrupted..')
if epochs and not no_details:
sorted_epochs = sorted(epochs, key=itemgetter('loss'))
results = sorted_epochs[0]
Hyperopt.print_epoch_details(results, total_epochs, print_json, no_header)
if epochs and export_csv:
Hyperopt.export_csv_file(
config, epochs, total_epochs, not filteroptions['only_best'], export_csv
)
def start_hyperopt_show(args: Dict[str, Any]) -> None:
"""
Show details of a hyperopt epoch previously evaluated
"""
from freqtrade.optimize.hyperopt import Hyperopt
config = setup_utils_configuration(args, RunMode.UTIL_NO_EXCHANGE)
print_json = config.get('print_json', False)
no_header = config.get('hyperopt_show_no_header', False)
results_file = get_latest_hyperopt_file(
config['user_data_dir'] / 'hyperopt_results',
config.get('hyperoptexportfilename'))
n = config.get('hyperopt_show_index', -1)
filteroptions = {
'only_best': config.get('hyperopt_list_best', False),
'only_profitable': config.get('hyperopt_list_profitable', False),
'filter_min_trades': config.get('hyperopt_list_min_trades', 0),
'filter_max_trades': config.get('hyperopt_list_max_trades', 0),
'filter_min_avg_time': config.get('hyperopt_list_min_avg_time', None),
'filter_max_avg_time': config.get('hyperopt_list_max_avg_time', None),
'filter_min_avg_profit': config.get('hyperopt_list_min_avg_profit', None),
'filter_max_avg_profit': config.get('hyperopt_list_max_avg_profit', None),
'filter_min_total_profit': config.get('hyperopt_list_min_total_profit', None),
'filter_max_total_profit': config.get('hyperopt_list_max_total_profit', None),
'filter_min_objective': config.get('hyperopt_list_min_objective', None),
'filter_max_objective': config.get('hyperopt_list_max_objective', None)
}
# Previous evaluations
epochs = Hyperopt.load_previous_results(results_file)
total_epochs = len(epochs)
epochs = hyperopt_filter_epochs(epochs, filteroptions)
filtered_epochs = len(epochs)
if n > filtered_epochs:
raise OperationalException(
f"The index of the epoch to show should be less than {filtered_epochs + 1}.")
if n < -filtered_epochs:
raise OperationalException(
f"The index of the epoch to show should be greater than {-filtered_epochs - 1}.")
# Translate epoch index from human-readable format to pythonic
if n > 0:
n -= 1
if epochs:
val = epochs[n]
Hyperopt.print_epoch_details(val, total_epochs, print_json, no_header,
header_str="Epoch details")
def hyperopt_filter_epochs(epochs: List, filteroptions: dict) -> List:
"""
Filter our items from the list of hyperopt results
"""
if filteroptions['only_best']:
epochs = [x for x in epochs if x['is_best']]
if filteroptions['only_profitable']:
epochs = [x for x in epochs if x['results_metrics']['profit'] > 0]
epochs = _hyperopt_filter_epochs_trade_count(epochs, filteroptions)
epochs = _hyperopt_filter_epochs_duration(epochs, filteroptions)
epochs = _hyperopt_filter_epochs_profit(epochs, filteroptions)
epochs = _hyperopt_filter_epochs_objective(epochs, filteroptions)
logger.info(f"{len(epochs)} " +
("best " if filteroptions['only_best'] else "") +
("profitable " if filteroptions['only_profitable'] else "") +
"epochs found.")
return epochs
def _hyperopt_filter_epochs_trade_count(epochs: List, filteroptions: dict) -> List:
if filteroptions['filter_min_trades'] > 0:
epochs = [
x for x in epochs
if x['results_metrics']['trade_count'] > filteroptions['filter_min_trades']
]
if filteroptions['filter_max_trades'] > 0:
epochs = [
x for x in epochs
if x['results_metrics']['trade_count'] < filteroptions['filter_max_trades']
]
return epochs
def _hyperopt_filter_epochs_duration(epochs: List, filteroptions: dict) -> List:
if filteroptions['filter_min_avg_time'] is not None:
epochs = [x for x in epochs if x['results_metrics']['trade_count'] > 0]
epochs = [
x for x in epochs
if x['results_metrics']['duration'] > filteroptions['filter_min_avg_time']
]
if filteroptions['filter_max_avg_time'] is not None:
epochs = [x for x in epochs if x['results_metrics']['trade_count'] > 0]
epochs = [
x for x in epochs
if x['results_metrics']['duration'] < filteroptions['filter_max_avg_time']
]
return epochs
def _hyperopt_filter_epochs_profit(epochs: List, filteroptions: dict) -> List:
if filteroptions['filter_min_avg_profit'] is not None:
epochs = [x for x in epochs if x['results_metrics']['trade_count'] > 0]
epochs = [
x for x in epochs
if x['results_metrics']['avg_profit'] > filteroptions['filter_min_avg_profit']
]
if filteroptions['filter_max_avg_profit'] is not None:
epochs = [x for x in epochs if x['results_metrics']['trade_count'] > 0]
epochs = [
x for x in epochs
if x['results_metrics']['avg_profit'] < filteroptions['filter_max_avg_profit']
]
if filteroptions['filter_min_total_profit'] is not None:
epochs = [x for x in epochs if x['results_metrics']['trade_count'] > 0]
epochs = [
x for x in epochs
if x['results_metrics']['profit'] > filteroptions['filter_min_total_profit']
]
if filteroptions['filter_max_total_profit'] is not None:
epochs = [x for x in epochs if x['results_metrics']['trade_count'] > 0]
epochs = [
x for x in epochs
if x['results_metrics']['profit'] < filteroptions['filter_max_total_profit']
]
return epochs
def _hyperopt_filter_epochs_objective(epochs: List, filteroptions: dict) -> List:
if filteroptions['filter_min_objective'] is not None:
epochs = [x for x in epochs if x['results_metrics']['trade_count'] > 0]
epochs = [x for x in epochs if x['loss'] < filteroptions['filter_min_objective']]
if filteroptions['filter_max_objective'] is not None:
epochs = [x for x in epochs if x['results_metrics']['trade_count'] > 0]
epochs = [x for x in epochs if x['loss'] > filteroptions['filter_max_objective']]
return epochs

View File

@@ -0,0 +1,227 @@
import csv
import logging
import sys
from collections import OrderedDict
from pathlib import Path
from typing import Any, Dict, List
import rapidjson
from colorama import Fore, Style
from colorama import init as colorama_init
from tabulate import tabulate
from freqtrade.configuration import setup_utils_configuration
from freqtrade.constants import USERPATH_HYPEROPTS, USERPATH_STRATEGIES
from freqtrade.exceptions import OperationalException
from freqtrade.exchange import available_exchanges, ccxt_exchanges, market_is_active
from freqtrade.misc import plural
from freqtrade.resolvers import ExchangeResolver, StrategyResolver
from freqtrade.state import RunMode
logger = logging.getLogger(__name__)
def start_list_exchanges(args: Dict[str, Any]) -> None:
"""
Print available exchanges
:param args: Cli args from Arguments()
:return: None
"""
exchanges = ccxt_exchanges() if args['list_exchanges_all'] else available_exchanges()
if args['print_one_column']:
print('\n'.join(exchanges))
else:
if args['list_exchanges_all']:
print(f"All exchanges supported by the ccxt library: {', '.join(exchanges)}")
else:
print(f"Exchanges available for Freqtrade: {', '.join(exchanges)}")
def _print_objs_tabular(objs: List, print_colorized: bool) -> None:
if print_colorized:
colorama_init(autoreset=True)
red = Fore.RED
yellow = Fore.YELLOW
reset = Style.RESET_ALL
else:
red = ''
yellow = ''
reset = ''
names = [s['name'] for s in objs]
objss_to_print = [{
'name': s['name'] if s['name'] else "--",
'location': s['location'].name,
'status': (red + "LOAD FAILED" + reset if s['class'] is None
else "OK" if names.count(s['name']) == 1
else yellow + "DUPLICATE NAME" + reset)
} for s in objs]
print(tabulate(objss_to_print, headers='keys', tablefmt='psql', stralign='right'))
def start_list_strategies(args: Dict[str, Any]) -> None:
"""
Print files with Strategy custom classes available in the directory
"""
config = setup_utils_configuration(args, RunMode.UTIL_NO_EXCHANGE)
directory = Path(config.get('strategy_path', config['user_data_dir'] / USERPATH_STRATEGIES))
strategy_objs = StrategyResolver.search_all_objects(directory, not args['print_one_column'])
# Sort alphabetically
strategy_objs = sorted(strategy_objs, key=lambda x: x['name'])
if args['print_one_column']:
print('\n'.join([s['name'] for s in strategy_objs]))
else:
_print_objs_tabular(strategy_objs, config.get('print_colorized', False))
def start_list_hyperopts(args: Dict[str, Any]) -> None:
"""
Print files with HyperOpt custom classes available in the directory
"""
from freqtrade.resolvers.hyperopt_resolver import HyperOptResolver
config = setup_utils_configuration(args, RunMode.UTIL_NO_EXCHANGE)
directory = Path(config.get('hyperopt_path', config['user_data_dir'] / USERPATH_HYPEROPTS))
hyperopt_objs = HyperOptResolver.search_all_objects(directory, not args['print_one_column'])
# Sort alphabetically
hyperopt_objs = sorted(hyperopt_objs, key=lambda x: x['name'])
if args['print_one_column']:
print('\n'.join([s['name'] for s in hyperopt_objs]))
else:
_print_objs_tabular(hyperopt_objs, config.get('print_colorized', False))
def start_list_timeframes(args: Dict[str, Any]) -> None:
"""
Print ticker intervals (timeframes) available on Exchange
"""
config = setup_utils_configuration(args, RunMode.UTIL_EXCHANGE)
# Do not use timeframe set in the config
config['timeframe'] = None
# Init exchange
exchange = ExchangeResolver.load_exchange(config['exchange']['name'], config, validate=False)
if args['print_one_column']:
print('\n'.join(exchange.timeframes))
else:
print(f"Timeframes available for the exchange `{exchange.name}`: "
f"{', '.join(exchange.timeframes)}")
def start_list_markets(args: Dict[str, Any], pairs_only: bool = False) -> None:
"""
Print pairs/markets on the exchange
:param args: Cli args from Arguments()
:param pairs_only: if True print only pairs, otherwise print all instruments (markets)
:return: None
"""
config = setup_utils_configuration(args, RunMode.UTIL_EXCHANGE)
# Init exchange
exchange = ExchangeResolver.load_exchange(config['exchange']['name'], config, validate=False)
# By default only active pairs/markets are to be shown
active_only = not args.get('list_pairs_all', False)
base_currencies = args.get('base_currencies', [])
quote_currencies = args.get('quote_currencies', [])
try:
pairs = exchange.get_markets(base_currencies=base_currencies,
quote_currencies=quote_currencies,
pairs_only=pairs_only,
active_only=active_only)
# Sort the pairs/markets by symbol
pairs = OrderedDict(sorted(pairs.items()))
except Exception as e:
raise OperationalException(f"Cannot get markets. Reason: {e}") from e
else:
summary_str = ((f"Exchange {exchange.name} has {len(pairs)} ") +
("active " if active_only else "") +
(plural(len(pairs), "pair" if pairs_only else "market")) +
(f" with {', '.join(base_currencies)} as base "
f"{plural(len(base_currencies), 'currency', 'currencies')}"
if base_currencies else "") +
(" and" if base_currencies and quote_currencies else "") +
(f" with {', '.join(quote_currencies)} as quote "
f"{plural(len(quote_currencies), 'currency', 'currencies')}"
if quote_currencies else ""))
headers = ["Id", "Symbol", "Base", "Quote", "Active",
*(['Is pair'] if not pairs_only else [])]
tabular_data = []
for _, v in pairs.items():
tabular_data.append({'Id': v['id'], 'Symbol': v['symbol'],
'Base': v['base'], 'Quote': v['quote'],
'Active': market_is_active(v),
**({'Is pair': exchange.market_is_tradable(v)}
if not pairs_only else {})})
if (args.get('print_one_column', False) or
args.get('list_pairs_print_json', False) or
args.get('print_csv', False)):
# Print summary string in the log in case of machine-readable
# regular formats.
logger.info(f"{summary_str}.")
else:
# Print empty string separating leading logs and output in case of
# human-readable formats.
print()
if len(pairs):
if args.get('print_list', False):
# print data as a list, with human-readable summary
print(f"{summary_str}: {', '.join(pairs.keys())}.")
elif args.get('print_one_column', False):
print('\n'.join(pairs.keys()))
elif args.get('list_pairs_print_json', False):
print(rapidjson.dumps(list(pairs.keys()), default=str))
elif args.get('print_csv', False):
writer = csv.DictWriter(sys.stdout, fieldnames=headers)
writer.writeheader()
writer.writerows(tabular_data)
else:
# print data as a table, with the human-readable summary
print(f"{summary_str}:")
print(tabulate(tabular_data, headers='keys', tablefmt='psql', stralign='right'))
elif not (args.get('print_one_column', False) or
args.get('list_pairs_print_json', False) or
args.get('print_csv', False)):
print(f"{summary_str}.")
def start_show_trades(args: Dict[str, Any]) -> None:
"""
Show trades
"""
import json
from freqtrade.persistence import Trade, init_db
config = setup_utils_configuration(args, RunMode.UTIL_NO_EXCHANGE)
if 'db_url' not in config:
raise OperationalException("--db-url is required for this command.")
logger.info(f'Using DB: "{config["db_url"]}"')
init_db(config['db_url'], clean_open_orders=False)
tfilter = []
if config.get('trade_ids'):
tfilter.append(Trade.id.in_(config['trade_ids']))
trades = Trade.get_trades(tfilter).all()
logger.info(f"Printing {len(trades)} Trades: ")
if config.get('print_json', False):
print(json.dumps([trade.to_json() for trade in trades], indent=4))
else:
for trade in trades:
print(trade)

View File

@@ -0,0 +1,110 @@
import logging
from typing import Any, Dict
from freqtrade import constants
from freqtrade.configuration import setup_utils_configuration
from freqtrade.exceptions import DependencyException, OperationalException
from freqtrade.state import RunMode
logger = logging.getLogger(__name__)
def setup_optimize_configuration(args: Dict[str, Any], method: RunMode) -> Dict[str, Any]:
"""
Prepare the configuration for the Hyperopt module
:param args: Cli args from Arguments()
:return: Configuration
"""
config = setup_utils_configuration(args, method)
no_unlimited_runmodes = {
RunMode.BACKTEST: 'backtesting',
RunMode.HYPEROPT: 'hyperoptimization',
}
if (method in no_unlimited_runmodes.keys() and
config['stake_amount'] == constants.UNLIMITED_STAKE_AMOUNT):
raise DependencyException(
f'The value of `stake_amount` cannot be set as "{constants.UNLIMITED_STAKE_AMOUNT}" '
f'for {no_unlimited_runmodes[method]}')
return config
def start_backtesting(args: Dict[str, Any]) -> None:
"""
Start Backtesting script
:param args: Cli args from Arguments()
:return: None
"""
# Import here to avoid loading backtesting module when it's not used
from freqtrade.optimize.backtesting import Backtesting
# Initialize configuration
config = setup_optimize_configuration(args, RunMode.BACKTEST)
logger.info('Starting freqtrade in Backtesting mode')
# Initialize backtesting object
backtesting = Backtesting(config)
backtesting.start()
def start_hyperopt(args: Dict[str, Any]) -> None:
"""
Start hyperopt script
:param args: Cli args from Arguments()
:return: None
"""
# Import here to avoid loading hyperopt module when it's not used
try:
from filelock import FileLock, Timeout
from freqtrade.optimize.hyperopt import Hyperopt
except ImportError as e:
raise OperationalException(
f"{e}. Please ensure that the hyperopt dependencies are installed.") from e
# Initialize configuration
config = setup_optimize_configuration(args, RunMode.HYPEROPT)
logger.info('Starting freqtrade in Hyperopt mode')
lock = FileLock(Hyperopt.get_lock_filename(config))
try:
with lock.acquire(timeout=1):
# Remove noisy log messages
logging.getLogger('hyperopt.tpe').setLevel(logging.WARNING)
logging.getLogger('filelock').setLevel(logging.WARNING)
# Initialize backtesting object
hyperopt = Hyperopt(config)
hyperopt.start()
except Timeout:
logger.info("Another running instance of freqtrade Hyperopt detected.")
logger.info("Simultaneous execution of multiple Hyperopt commands is not supported. "
"Hyperopt module is resource hungry. Please run your Hyperopt sequentially "
"or on separate machines.")
logger.info("Quitting now.")
# TODO: return False here in order to help freqtrade to exit
# with non-zero exit code...
# Same in Edge and Backtesting start() functions.
def start_edge(args: Dict[str, Any]) -> None:
"""
Start Edge script
:param args: Cli args from Arguments()
:return: None
"""
from freqtrade.optimize.edge_cli import EdgeCli
# Initialize configuration
config = setup_optimize_configuration(args, RunMode.EDGE)
logger.info('Starting freqtrade in Edge mode')
# Initialize Edge object
edge_cli = EdgeCli(config)
edge_cli.start()

View File

@@ -0,0 +1,42 @@
import logging
from typing import Any, Dict
import rapidjson
from freqtrade.configuration import setup_utils_configuration
from freqtrade.resolvers import ExchangeResolver
from freqtrade.state import RunMode
logger = logging.getLogger(__name__)
def start_test_pairlist(args: Dict[str, Any]) -> None:
"""
Test Pairlist configuration
"""
from freqtrade.pairlist.pairlistmanager import PairListManager
config = setup_utils_configuration(args, RunMode.UTIL_EXCHANGE)
exchange = ExchangeResolver.load_exchange(config['exchange']['name'], config, validate=False)
quote_currencies = args.get('quote_currencies')
if not quote_currencies:
quote_currencies = [config.get('stake_currency')]
results = {}
for curr in quote_currencies:
config['stake_currency'] = curr
pairlists = PairListManager(exchange, config)
pairlists.refresh_pairlist()
results[curr] = pairlists.whitelist
for curr, pairlist in results.items():
if not args.get('print_one_column', False):
print(f"Pairs for {curr}: ")
if args.get('print_one_column', False):
print('\n'.join(pairlist))
elif args.get('list_pairs_print_json', False):
print(rapidjson.dumps(list(pairlist), default=str))
else:
print(pairlist)

View File

@@ -0,0 +1,36 @@
from typing import Any, Dict
from freqtrade.configuration import setup_utils_configuration
from freqtrade.exceptions import OperationalException
from freqtrade.state import RunMode
def validate_plot_args(args: Dict[str, Any]) -> None:
if not args.get('datadir') and not args.get('config'):
raise OperationalException(
"You need to specify either `--datadir` or `--config` "
"for plot-profit and plot-dataframe.")
def start_plot_dataframe(args: Dict[str, Any]) -> None:
"""
Entrypoint for dataframe plotting
"""
# Import here to avoid errors if plot-dependencies are not installed.
from freqtrade.plot.plotting import load_and_plot_trades
validate_plot_args(args)
config = setup_utils_configuration(args, RunMode.PLOT)
load_and_plot_trades(config)
def start_plot_profit(args: Dict[str, Any]) -> None:
"""
Entrypoint for plot_profit
"""
# Import here to avoid errors if plot-dependencies are not installed.
from freqtrade.plot.plotting import plot_profit
validate_plot_args(args)
config = setup_utils_configuration(args, RunMode.PLOT)
plot_profit(config)

View File

@@ -0,0 +1,29 @@
import logging
from typing import Any, Dict
logger = logging.getLogger(__name__)
def start_trading(args: Dict[str, Any]) -> int:
"""
Main entry point for trading mode
"""
# Import here to avoid loading worker module when it's not used
from freqtrade.worker import Worker
# Create and run worker
worker = None
try:
worker = Worker(args)
worker.run()
except Exception as e:
logger.error(str(e))
logger.exception("Fatal exception!")
except KeyboardInterrupt:
logger.info('SIGINT received, aborting ...')
finally:
if worker:
logger.info("worker found ... calling exit")
worker.exit()
return 0

View File

@@ -1,334 +0,0 @@
"""
This module contains the configuration class
"""
import json
import logging
import os
from argparse import Namespace
from typing import Any, Dict, Optional
import ccxt
from jsonschema import Draft4Validator, validate
from jsonschema.exceptions import ValidationError, best_match
from freqtrade import OperationalException, constants
from freqtrade.state import RunMode
logger = logging.getLogger(__name__)
def set_loggers(log_level: int = 0) -> None:
"""
Set the logger level for Third party libs
:return: None
"""
logging.getLogger('requests').setLevel(logging.INFO if log_level <= 1 else logging.DEBUG)
logging.getLogger("urllib3").setLevel(logging.INFO if log_level <= 1 else logging.DEBUG)
logging.getLogger('ccxt.base.exchange').setLevel(
logging.INFO if log_level <= 2 else logging.DEBUG)
logging.getLogger('telegram').setLevel(logging.INFO)
class Configuration(object):
"""
Class to read and init the bot configuration
Reuse this class for the bot, backtesting, hyperopt and every script that required configuration
"""
def __init__(self, args: Namespace, runmode: RunMode = None) -> None:
self.args = args
self.config: Optional[Dict[str, Any]] = None
self.runmode = runmode
def load_config(self) -> Dict[str, Any]:
"""
Extract information for sys.argv and load the bot configuration
:return: Configuration dictionary
"""
logger.info('Using config: %s ...', self.args.config)
config = self._load_config_file(self.args.config)
# Set strategy if not specified in config and or if it's non default
if self.args.strategy != constants.DEFAULT_STRATEGY or not config.get('strategy'):
config.update({'strategy': self.args.strategy})
if self.args.strategy_path:
config.update({'strategy_path': self.args.strategy_path})
# Add the hyperopt file to use
config.update({'hyperopt': self.args.hyperopt})
# Load Common configuration
config = self._load_common_config(config)
# Load Backtesting
config = self._load_backtesting_config(config)
# Load Edge
config = self._load_edge_config(config)
# Load Hyperopt
config = self._load_hyperopt_config(config)
# Set runmode
if not self.runmode:
# Handle real mode, infer dry/live from config
self.runmode = RunMode.DRY_RUN if config.get('dry_run', True) else RunMode.LIVE
config.update({'runmode': self.runmode})
return config
def _load_config_file(self, path: str) -> Dict[str, Any]:
"""
Loads a config file from the given path
:param path: path as str
:return: configuration as dictionary
"""
try:
with open(path) as file:
conf = json.load(file)
except FileNotFoundError:
raise OperationalException(
f'Config file "{path}" not found!'
' Please create a config file or check whether it exists.')
if 'internals' not in conf:
conf['internals'] = {}
logger.info('Validating configuration ...')
return self._validate_config(conf)
def _load_common_config(self, config: Dict[str, Any]) -> Dict[str, Any]:
"""
Extract information for sys.argv and load common configuration
:return: configuration as dictionary
"""
# Log level
if 'loglevel' in self.args and self.args.loglevel:
config.update({'verbosity': self.args.loglevel})
else:
config.update({'verbosity': 0})
logging.basicConfig(
level=logging.INFO if config['verbosity'] < 1 else logging.DEBUG,
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
)
set_loggers(config['verbosity'])
logger.info('Verbosity set to %s', config['verbosity'])
# Add dynamic_whitelist if found
if 'dynamic_whitelist' in self.args and self.args.dynamic_whitelist:
# Update to volumePairList (the previous default)
config['pairlist'] = {'method': 'VolumePairList',
'config': {'number_assets': self.args.dynamic_whitelist}
}
logger.warning(
'Parameter --dynamic-whitelist has been deprecated, '
'and will be completely replaced by the whitelist dict in the future. '
'For now: using dynamically generated whitelist based on VolumePairList. '
'(not applicable with Backtesting and Hyperopt)'
)
if self.args.db_url and self.args.db_url != constants.DEFAULT_DB_PROD_URL:
config.update({'db_url': self.args.db_url})
logger.info('Parameter --db-url detected ...')
if config.get('dry_run', False):
logger.info('Dry run is enabled')
if config.get('db_url') in [None, constants.DEFAULT_DB_PROD_URL]:
# Default to in-memory db for dry_run if not specified
config['db_url'] = constants.DEFAULT_DB_DRYRUN_URL
else:
if not config.get('db_url', None):
config['db_url'] = constants.DEFAULT_DB_PROD_URL
logger.info('Dry run is disabled')
if config.get('forcebuy_enable', False):
logger.warning('`forcebuy` RPC message enabled.')
# Setting max_open_trades to infinite if -1
if config.get('max_open_trades') == -1:
config['max_open_trades'] = float('inf')
logger.info(f'Using DB: "{config["db_url"]}"')
# Check if the exchange set by the user is supported
self.check_exchange(config)
return config
def _create_datadir(self, config: Dict[str, Any], datadir: Optional[str] = None) -> str:
if not datadir:
# set datadir
exchange_name = config.get('exchange', {}).get('name').lower()
datadir = os.path.join('user_data', 'data', exchange_name)
if not os.path.isdir(datadir):
os.makedirs(datadir)
logger.info(f'Created data directory: {datadir}')
return datadir
def _load_backtesting_config(self, config: Dict[str, Any]) -> Dict[str, Any]:
"""
Extract information for sys.argv and load Backtesting configuration
:return: configuration as dictionary
"""
# If -i/--ticker-interval is used we override the configuration parameter
# (that will override the strategy configuration)
if 'ticker_interval' in self.args and self.args.ticker_interval:
config.update({'ticker_interval': self.args.ticker_interval})
logger.info('Parameter -i/--ticker-interval detected ...')
logger.info('Using ticker_interval: %s ...', config.get('ticker_interval'))
# If -l/--live is used we add it to the configuration
if 'live' in self.args and self.args.live:
config.update({'live': True})
logger.info('Parameter -l/--live detected ...')
# If --enable-position-stacking is used we add it to the configuration
if 'position_stacking' in self.args and self.args.position_stacking:
config.update({'position_stacking': True})
logger.info('Parameter --enable-position-stacking detected ...')
# If --disable-max-market-positions is used we add it to the configuration
if 'use_max_market_positions' in self.args and not self.args.use_max_market_positions:
config.update({'use_max_market_positions': False})
logger.info('Parameter --disable-max-market-positions detected ...')
logger.info('max_open_trades set to unlimited ...')
else:
logger.info('Using max_open_trades: %s ...', config.get('max_open_trades'))
# If --timerange is used we add it to the configuration
if 'timerange' in self.args and self.args.timerange:
config.update({'timerange': self.args.timerange})
logger.info('Parameter --timerange detected: %s ...', self.args.timerange)
# If --datadir is used we add it to the configuration
if 'datadir' in self.args and self.args.datadir:
config.update({'datadir': self._create_datadir(config, self.args.datadir)})
else:
config.update({'datadir': self._create_datadir(config, None)})
logger.info('Using data folder: %s ...', config.get('datadir'))
# If -r/--refresh-pairs-cached is used we add it to the configuration
if 'refresh_pairs' in self.args and self.args.refresh_pairs:
config.update({'refresh_pairs': True})
logger.info('Parameter -r/--refresh-pairs-cached detected ...')
if 'strategy_list' in self.args and self.args.strategy_list:
config.update({'strategy_list': self.args.strategy_list})
logger.info('Using strategy list of %s Strategies', len(self.args.strategy_list))
if 'ticker_interval' in self.args and self.args.ticker_interval:
config.update({'ticker_interval': self.args.ticker_interval})
logger.info('Overriding ticker interval with Command line argument')
# If --export is used we add it to the configuration
if 'export' in self.args and self.args.export:
config.update({'export': self.args.export})
logger.info('Parameter --export detected: %s ...', self.args.export)
# If --export-filename is used we add it to the configuration
if 'export' in config and 'exportfilename' in self.args and self.args.exportfilename:
config.update({'exportfilename': self.args.exportfilename})
logger.info('Storing backtest results to %s ...', self.args.exportfilename)
return config
def _load_edge_config(self, config: Dict[str, Any]) -> Dict[str, Any]:
"""
Extract information for sys.argv and load Edge configuration
:return: configuration as dictionary
"""
# If --timerange is used we add it to the configuration
if 'timerange' in self.args and self.args.timerange:
config.update({'timerange': self.args.timerange})
logger.info('Parameter --timerange detected: %s ...', self.args.timerange)
# If --timerange is used we add it to the configuration
if 'stoploss_range' in self.args and self.args.stoploss_range:
txt_range = eval(self.args.stoploss_range)
config['edge'].update({'stoploss_range_min': txt_range[0]})
config['edge'].update({'stoploss_range_max': txt_range[1]})
config['edge'].update({'stoploss_range_step': txt_range[2]})
logger.info('Parameter --stoplosses detected: %s ...', self.args.stoploss_range)
# If -r/--refresh-pairs-cached is used we add it to the configuration
if 'refresh_pairs' in self.args and self.args.refresh_pairs:
config.update({'refresh_pairs': True})
logger.info('Parameter -r/--refresh-pairs-cached detected ...')
return config
def _load_hyperopt_config(self, config: Dict[str, Any]) -> Dict[str, Any]:
"""
Extract information for sys.argv and load Hyperopt configuration
:return: configuration as dictionary
"""
# If --epochs is used we add it to the configuration
if 'epochs' in self.args and self.args.epochs:
config.update({'epochs': self.args.epochs})
logger.info('Parameter --epochs detected ...')
logger.info('Will run Hyperopt with for %s epochs ...', config.get('epochs'))
# If --spaces is used we add it to the configuration
if 'spaces' in self.args and self.args.spaces:
config.update({'spaces': self.args.spaces})
logger.info('Parameter -s/--spaces detected: %s', config.get('spaces'))
return config
def _validate_config(self, conf: Dict[str, Any]) -> Dict[str, Any]:
"""
Validate the configuration follow the Config Schema
:param conf: Config in JSON format
:return: Returns the config if valid, otherwise throw an exception
"""
try:
validate(conf, constants.CONF_SCHEMA, Draft4Validator)
return conf
except ValidationError as exception:
logger.critical(
'Invalid configuration. See config.json.example. Reason: %s',
exception
)
raise ValidationError(
best_match(Draft4Validator(constants.CONF_SCHEMA).iter_errors(conf)).message
)
def get_config(self) -> Dict[str, Any]:
"""
Return the config. Use this method to get the bot config
:return: Dict: Bot config
"""
if self.config is None:
self.config = self.load_config()
return self.config
def check_exchange(self, config: Dict[str, Any]) -> bool:
"""
Check if the exchange name in the config file is supported by Freqtrade
:return: True or raised an exception if the exchange if not supported
"""
exchange = config.get('exchange', {}).get('name').lower()
if exchange not in ccxt.exchanges:
exception_msg = f'Exchange "{exchange}" not supported.\n' \
f'The following exchanges are supported: {", ".join(ccxt.exchanges)}'
logger.critical(exception_msg)
raise OperationalException(
exception_msg
)
# Depreciation warning
if 'ccxt_rate_limit' in config.get('exchange', {}):
logger.warning("`ccxt_rate_limit` has been deprecated in favor of "
"`ccxt_config` and `ccxt_async_config` and will be removed "
"in a future version.")
logger.debug('Exchange "%s" supported', exchange)
return True

View File

@@ -0,0 +1,7 @@
# flake8: noqa: F401
from freqtrade.configuration.check_exchange import check_exchange, remove_credentials
from freqtrade.configuration.config_setup import setup_utils_configuration
from freqtrade.configuration.config_validation import validate_config_consistency
from freqtrade.configuration.configuration import Configuration
from freqtrade.configuration.timerange import TimeRange

View File

@@ -0,0 +1,74 @@
import logging
from typing import Any, Dict
from freqtrade.exceptions import OperationalException
from freqtrade.exchange import (available_exchanges, get_exchange_bad_reason, is_exchange_bad,
is_exchange_known_ccxt, is_exchange_officially_supported)
from freqtrade.state import RunMode
logger = logging.getLogger(__name__)
def remove_credentials(config: Dict[str, Any]) -> None:
"""
Removes exchange keys from the configuration and specifies dry-run
Used for backtesting / hyperopt / edge and utils.
Modifies the input dict!
"""
config['exchange']['key'] = ''
config['exchange']['secret'] = ''
config['exchange']['password'] = ''
config['exchange']['uid'] = ''
config['dry_run'] = True
def check_exchange(config: Dict[str, Any], check_for_bad: bool = True) -> bool:
"""
Check if the exchange name in the config file is supported by Freqtrade
:param check_for_bad: if True, check the exchange against the list of known 'bad'
exchanges
:return: False if exchange is 'bad', i.e. is known to work with the bot with
critical issues or does not work at all, crashes, etc. True otherwise.
raises an exception if the exchange if not supported by ccxt
and thus is not known for the Freqtrade at all.
"""
if (config['runmode'] in [RunMode.PLOT, RunMode.UTIL_NO_EXCHANGE, RunMode.OTHER]
and not config.get('exchange', {}).get('name')):
# Skip checking exchange in plot mode, since it requires no exchange
return True
logger.info("Checking exchange...")
exchange = config.get('exchange', {}).get('name').lower()
if not exchange:
raise OperationalException(
f'This command requires a configured exchange. You should either use '
f'`--exchange <exchange_name>` or specify a configuration file via `--config`.\n'
f'The following exchanges are available for Freqtrade: '
f'{", ".join(available_exchanges())}'
)
if not is_exchange_known_ccxt(exchange):
raise OperationalException(
f'Exchange "{exchange}" is not known to the ccxt library '
f'and therefore not available for the bot.\n'
f'The following exchanges are available for Freqtrade: '
f'{", ".join(available_exchanges())}'
)
if check_for_bad and is_exchange_bad(exchange):
raise OperationalException(f'Exchange "{exchange}" is known to not work with the bot yet. '
f'Reason: {get_exchange_bad_reason(exchange)}')
if is_exchange_officially_supported(exchange):
logger.info(f'Exchange "{exchange}" is officially supported '
f'by the Freqtrade development team.')
else:
logger.warning(f'Exchange "{exchange}" is known to the the ccxt library, '
f'available for the bot, but not officially supported '
f'by the Freqtrade development team. '
f'It may work flawlessly (please report back) or have serious issues. '
f'Use it at your own discretion.')
return True

View File

@@ -0,0 +1,27 @@
import logging
from typing import Any, Dict
from freqtrade.state import RunMode
from .check_exchange import remove_credentials
from .config_validation import validate_config_consistency
from .configuration import Configuration
logger = logging.getLogger(__name__)
def setup_utils_configuration(args: Dict[str, Any], method: RunMode) -> Dict[str, Any]:
"""
Prepare the configuration for utils subcommands
:param args: Cli args from Arguments()
:return: Configuration
"""
configuration = Configuration(args, method)
config = configuration.get_config()
# Ensure we do not use Exchange credentials
remove_credentials(config)
validate_config_consistency(config)
return config

View File

@@ -0,0 +1,157 @@
import logging
from copy import deepcopy
from typing import Any, Dict
from jsonschema import Draft4Validator, validators
from jsonschema.exceptions import ValidationError, best_match
from freqtrade import constants
from freqtrade.exceptions import OperationalException
from freqtrade.state import RunMode
logger = logging.getLogger(__name__)
def _extend_validator(validator_class):
"""
Extended validator for the Freqtrade configuration JSON Schema.
Currently it only handles defaults for subschemas.
"""
validate_properties = validator_class.VALIDATORS['properties']
def set_defaults(validator, properties, instance, schema):
for prop, subschema in properties.items():
if 'default' in subschema:
instance.setdefault(prop, subschema['default'])
for error in validate_properties(
validator, properties, instance, schema,
):
yield error
return validators.extend(
validator_class, {'properties': set_defaults}
)
FreqtradeValidator = _extend_validator(Draft4Validator)
def validate_config_schema(conf: Dict[str, Any]) -> Dict[str, Any]:
"""
Validate the configuration follow the Config Schema
:param conf: Config in JSON format
:return: Returns the config if valid, otherwise throw an exception
"""
conf_schema = deepcopy(constants.CONF_SCHEMA)
if conf.get('runmode', RunMode.OTHER) in (RunMode.DRY_RUN, RunMode.LIVE):
conf_schema['required'] = constants.SCHEMA_TRADE_REQUIRED
else:
conf_schema['required'] = constants.SCHEMA_MINIMAL_REQUIRED
try:
FreqtradeValidator(conf_schema).validate(conf)
return conf
except ValidationError as e:
logger.critical(
f"Invalid configuration. See config.json.example. Reason: {e}"
)
raise ValidationError(
best_match(Draft4Validator(conf_schema).iter_errors(conf)).message
)
def validate_config_consistency(conf: Dict[str, Any]) -> None:
"""
Validate the configuration consistency.
Should be ran after loading both configuration and strategy,
since strategies can set certain configuration settings too.
:param conf: Config in JSON format
:return: Returns None if everything is ok, otherwise throw an OperationalException
"""
# validating trailing stoploss
_validate_trailing_stoploss(conf)
_validate_edge(conf)
_validate_whitelist(conf)
_validate_unlimited_amount(conf)
# validate configuration before returning
logger.info('Validating configuration ...')
validate_config_schema(conf)
def _validate_unlimited_amount(conf: Dict[str, Any]) -> None:
"""
If edge is disabled, either max_open_trades or stake_amount need to be set.
:raise: OperationalException if config validation failed
"""
if (not conf.get('edge', {}).get('enabled')
and conf.get('max_open_trades') == float('inf')
and conf.get('stake_amount') == constants.UNLIMITED_STAKE_AMOUNT):
raise OperationalException("`max_open_trades` and `stake_amount` cannot both be unlimited.")
def _validate_trailing_stoploss(conf: Dict[str, Any]) -> None:
if conf.get('stoploss') == 0.0:
raise OperationalException(
'The config stoploss needs to be different from 0 to avoid problems with sell orders.'
)
# Skip if trailing stoploss is not activated
if not conf.get('trailing_stop', False):
return
tsl_positive = float(conf.get('trailing_stop_positive', 0))
tsl_offset = float(conf.get('trailing_stop_positive_offset', 0))
tsl_only_offset = conf.get('trailing_only_offset_is_reached', False)
if tsl_only_offset:
if tsl_positive == 0.0:
raise OperationalException(
'The config trailing_only_offset_is_reached needs '
'trailing_stop_positive_offset to be more than 0 in your config.')
if tsl_positive > 0 and 0 < tsl_offset <= tsl_positive:
raise OperationalException(
'The config trailing_stop_positive_offset needs '
'to be greater than trailing_stop_positive in your config.')
# Fetch again without default
if 'trailing_stop_positive' in conf and float(conf['trailing_stop_positive']) == 0.0:
raise OperationalException(
'The config trailing_stop_positive needs to be different from 0 '
'to avoid problems with sell orders.'
)
def _validate_edge(conf: Dict[str, Any]) -> None:
"""
Edge and Dynamic whitelist should not both be enabled, since edge overrides dynamic whitelists.
"""
if not conf.get('edge', {}).get('enabled'):
return
if conf.get('pairlist', {}).get('method') == 'VolumePairList':
raise OperationalException(
"Edge and VolumePairList are incompatible, "
"Edge will override whatever pairs VolumePairlist selects."
)
if not conf.get('ask_strategy', {}).get('use_sell_signal', True):
raise OperationalException(
"Edge requires `use_sell_signal` to be True, otherwise no sells will happen."
)
def _validate_whitelist(conf: Dict[str, Any]) -> None:
"""
Dynamic whitelist does not require pair_whitelist to be set - however StaticWhitelist does.
"""
if conf.get('runmode', RunMode.OTHER) in [RunMode.OTHER, RunMode.PLOT,
RunMode.UTIL_NO_EXCHANGE, RunMode.UTIL_EXCHANGE]:
return
for pl in conf.get('pairlists', [{'method': 'StaticPairList'}]):
if (pl.get('method') == 'StaticPairList'
and not conf.get('exchange', {}).get('pair_whitelist')):
raise OperationalException("StaticPairList requires pair_whitelist to be set.")

View File

@@ -0,0 +1,460 @@
"""
This module contains the configuration class
"""
import logging
import warnings
from copy import deepcopy
from pathlib import Path
from typing import Any, Callable, Dict, List, Optional
from freqtrade import constants
from freqtrade.configuration.check_exchange import check_exchange
from freqtrade.configuration.deprecated_settings import process_temporary_deprecated_settings
from freqtrade.configuration.directory_operations import create_datadir, create_userdata_dir
from freqtrade.configuration.load_config import load_config_file
from freqtrade.exceptions import OperationalException
from freqtrade.loggers import setup_logging
from freqtrade.misc import deep_merge_dicts, json_load
from freqtrade.state import NON_UTIL_MODES, TRADING_MODES, RunMode
logger = logging.getLogger(__name__)
class Configuration:
"""
Class to read and init the bot configuration
Reuse this class for the bot, backtesting, hyperopt and every script that required configuration
"""
def __init__(self, args: Dict[str, Any], runmode: RunMode = None) -> None:
self.args = args
self.config: Optional[Dict[str, Any]] = None
self.runmode = runmode
def get_config(self) -> Dict[str, Any]:
"""
Return the config. Use this method to get the bot config
:return: Dict: Bot config
"""
if self.config is None:
self.config = self.load_config()
return self.config
@staticmethod
def from_files(files: List[str]) -> Dict[str, Any]:
"""
Iterate through the config files passed in, loading all of them
and merging their contents.
Files are loaded in sequence, parameters in later configuration files
override the same parameter from an earlier file (last definition wins).
Runs through the whole Configuration initialization, so all expected config entries
are available to interactive environments.
:param files: List of file paths
:return: configuration dictionary
"""
c = Configuration({'config': files}, RunMode.OTHER)
return c.get_config()
def load_from_files(self, files: List[str]) -> Dict[str, Any]:
# Keep this method as staticmethod, so it can be used from interactive environments
config: Dict[str, Any] = {}
if not files:
return deepcopy(constants.MINIMAL_CONFIG)
# We expect here a list of config filenames
for path in files:
logger.info(f'Using config: {path} ...')
# Merge config options, overwriting old values
config = deep_merge_dicts(load_config_file(path), config)
# Normalize config
if 'internals' not in config:
config['internals'] = {}
# TODO: This can be deleted along with removal of deprecated
# experimental settings
if 'ask_strategy' not in config:
config['ask_strategy'] = {}
if 'pairlists' not in config:
config['pairlists'] = []
return config
def load_config(self) -> Dict[str, Any]:
"""
Extract information for sys.argv and load the bot configuration
:return: Configuration dictionary
"""
# Load all configs
config: Dict[str, Any] = self.load_from_files(self.args.get("config", []))
# Keep a copy of the original configuration file
config['original_config'] = deepcopy(config)
self._process_logging_options(config)
self._process_runmode(config)
self._process_common_options(config)
self._process_trading_options(config)
self._process_optimize_options(config)
self._process_plot_options(config)
# Check if the exchange set by the user is supported
check_exchange(config, config.get('experimental', {}).get('block_bad_exchanges', True))
self._resolve_pairs_list(config)
process_temporary_deprecated_settings(config)
return config
def _process_logging_options(self, config: Dict[str, Any]) -> None:
"""
Extract information for sys.argv and load logging configuration:
the -v/--verbose, --logfile options
"""
# Log level
config.update({'verbosity': self.args.get('verbosity', 0)})
if 'logfile' in self.args and self.args['logfile']:
config.update({'logfile': self.args['logfile']})
setup_logging(config)
def _process_trading_options(self, config: Dict[str, Any]) -> None:
if config['runmode'] not in TRADING_MODES:
return
if config.get('dry_run', False):
logger.info('Dry run is enabled')
if config.get('db_url') in [None, constants.DEFAULT_DB_PROD_URL]:
# Default to in-memory db for dry_run if not specified
config['db_url'] = constants.DEFAULT_DB_DRYRUN_URL
else:
if not config.get('db_url', None):
config['db_url'] = constants.DEFAULT_DB_PROD_URL
logger.info('Dry run is disabled')
logger.info(f'Using DB: "{config["db_url"]}"')
def _process_common_options(self, config: Dict[str, Any]) -> None:
# Set strategy if not specified in config and or if it's non default
if self.args.get('strategy') or not config.get('strategy'):
config.update({'strategy': self.args.get('strategy')})
self._args_to_config(config, argname='strategy_path',
logstring='Using additional Strategy lookup path: {}')
if ('db_url' in self.args and self.args['db_url'] and
self.args['db_url'] != constants.DEFAULT_DB_PROD_URL):
config.update({'db_url': self.args['db_url']})
logger.info('Parameter --db-url detected ...')
if config.get('forcebuy_enable', False):
logger.warning('`forcebuy` RPC message enabled.')
# Support for sd_notify
if 'sd_notify' in self.args and self.args['sd_notify']:
config['internals'].update({'sd_notify': True})
def _process_datadir_options(self, config: Dict[str, Any]) -> None:
"""
Extract information for sys.argv and load directory configurations
--user-data, --datadir
"""
# Check exchange parameter here - otherwise `datadir` might be wrong.
if 'exchange' in self.args and self.args['exchange']:
config['exchange']['name'] = self.args['exchange']
logger.info(f"Using exchange {config['exchange']['name']}")
if 'pair_whitelist' not in config['exchange']:
config['exchange']['pair_whitelist'] = []
if 'user_data_dir' in self.args and self.args['user_data_dir']:
config.update({'user_data_dir': self.args['user_data_dir']})
elif 'user_data_dir' not in config:
# Default to cwd/user_data (legacy option ...)
config.update({'user_data_dir': str(Path.cwd() / 'user_data')})
# reset to user_data_dir so this contains the absolute path.
config['user_data_dir'] = create_userdata_dir(config['user_data_dir'], create_dir=False)
logger.info('Using user-data directory: %s ...', config['user_data_dir'])
config.update({'datadir': create_datadir(config, self.args.get('datadir', None))})
logger.info('Using data directory: %s ...', config.get('datadir'))
if self.args.get('exportfilename'):
self._args_to_config(config, argname='exportfilename',
logstring='Storing backtest results to {} ...')
config['exportfilename'] = Path(config['exportfilename'])
else:
config['exportfilename'] = (config['user_data_dir']
/ 'backtest_results')
def _process_optimize_options(self, config: Dict[str, Any]) -> None:
# This will override the strategy configuration
self._args_to_config(config, argname='timeframe',
logstring='Parameter -i/--timeframe detected ... '
'Using timeframe: {} ...')
self._args_to_config(config, argname='position_stacking',
logstring='Parameter --enable-position-stacking detected ...')
# Setting max_open_trades to infinite if -1
if config.get('max_open_trades') == -1:
config['max_open_trades'] = float('inf')
if 'use_max_market_positions' in self.args and not self.args["use_max_market_positions"]:
config.update({'use_max_market_positions': False})
logger.info('Parameter --disable-max-market-positions detected ...')
logger.info('max_open_trades set to unlimited ...')
elif 'max_open_trades' in self.args and self.args['max_open_trades']:
config.update({'max_open_trades': self.args['max_open_trades']})
logger.info('Parameter --max-open-trades detected, '
'overriding max_open_trades to: %s ...', config.get('max_open_trades'))
elif config['runmode'] in NON_UTIL_MODES:
logger.info('Using max_open_trades: %s ...', config.get('max_open_trades'))
self._args_to_config(config, argname='stake_amount',
logstring='Parameter --stake-amount detected, '
'overriding stake_amount to: {} ...')
self._args_to_config(config, argname='fee',
logstring='Parameter --fee detected, '
'setting fee to: {} ...')
self._args_to_config(config, argname='timerange',
logstring='Parameter --timerange detected: {} ...')
self._process_datadir_options(config)
self._args_to_config(config, argname='strategy_list',
logstring='Using strategy list of {} strategies', logfun=len)
self._args_to_config(config, argname='timeframe',
logstring='Overriding timeframe with Command line argument')
self._args_to_config(config, argname='export',
logstring='Parameter --export detected: {} ...')
# Edge section:
if 'stoploss_range' in self.args and self.args["stoploss_range"]:
txt_range = eval(self.args["stoploss_range"])
config['edge'].update({'stoploss_range_min': txt_range[0]})
config['edge'].update({'stoploss_range_max': txt_range[1]})
config['edge'].update({'stoploss_range_step': txt_range[2]})
logger.info('Parameter --stoplosses detected: %s ...', self.args["stoploss_range"])
# Hyperopt section
self._args_to_config(config, argname='hyperopt',
logstring='Using Hyperopt class name: {}')
self._args_to_config(config, argname='hyperopt_path',
logstring='Using additional Hyperopt lookup path: {}')
self._args_to_config(config, argname='hyperoptexportfilename',
logstring='Using hyperopt file: {}')
self._args_to_config(config, argname='epochs',
logstring='Parameter --epochs detected ... '
'Will run Hyperopt with for {} epochs ...'
)
self._args_to_config(config, argname='spaces',
logstring='Parameter -s/--spaces detected: {}')
self._args_to_config(config, argname='print_all',
logstring='Parameter --print-all detected ...')
if 'print_colorized' in self.args and not self.args["print_colorized"]:
logger.info('Parameter --no-color detected ...')
config.update({'print_colorized': False})
else:
config.update({'print_colorized': True})
self._args_to_config(config, argname='print_json',
logstring='Parameter --print-json detected ...')
self._args_to_config(config, argname='export_csv',
logstring='Parameter --export-csv detected: {}')
self._args_to_config(config, argname='hyperopt_jobs',
logstring='Parameter -j/--job-workers detected: {}')
self._args_to_config(config, argname='hyperopt_random_state',
logstring='Parameter --random-state detected: {}')
self._args_to_config(config, argname='hyperopt_min_trades',
logstring='Parameter --min-trades detected: {}')
self._args_to_config(config, argname='hyperopt_loss',
logstring='Using Hyperopt loss class name: {}')
self._args_to_config(config, argname='hyperopt_show_index',
logstring='Parameter -n/--index detected: {}')
self._args_to_config(config, argname='hyperopt_list_best',
logstring='Parameter --best detected: {}')
self._args_to_config(config, argname='hyperopt_list_profitable',
logstring='Parameter --profitable detected: {}')
self._args_to_config(config, argname='hyperopt_list_min_trades',
logstring='Parameter --min-trades detected: {}')
self._args_to_config(config, argname='hyperopt_list_max_trades',
logstring='Parameter --max-trades detected: {}')
self._args_to_config(config, argname='hyperopt_list_min_avg_time',
logstring='Parameter --min-avg-time detected: {}')
self._args_to_config(config, argname='hyperopt_list_max_avg_time',
logstring='Parameter --max-avg-time detected: {}')
self._args_to_config(config, argname='hyperopt_list_min_avg_profit',
logstring='Parameter --min-avg-profit detected: {}')
self._args_to_config(config, argname='hyperopt_list_max_avg_profit',
logstring='Parameter --max-avg-profit detected: {}')
self._args_to_config(config, argname='hyperopt_list_min_total_profit',
logstring='Parameter --min-total-profit detected: {}')
self._args_to_config(config, argname='hyperopt_list_max_total_profit',
logstring='Parameter --max-total-profit detected: {}')
self._args_to_config(config, argname='hyperopt_list_min_objective',
logstring='Parameter --min-objective detected: {}')
self._args_to_config(config, argname='hyperopt_list_max_objective',
logstring='Parameter --max-objective detected: {}')
self._args_to_config(config, argname='hyperopt_list_no_details',
logstring='Parameter --no-details detected: {}')
self._args_to_config(config, argname='hyperopt_show_no_header',
logstring='Parameter --no-header detected: {}')
def _process_plot_options(self, config: Dict[str, Any]) -> None:
self._args_to_config(config, argname='pairs',
logstring='Using pairs {}')
self._args_to_config(config, argname='indicators1',
logstring='Using indicators1: {}')
self._args_to_config(config, argname='indicators2',
logstring='Using indicators2: {}')
self._args_to_config(config, argname='trade_ids',
logstring='Filtering on trade_ids: {}')
self._args_to_config(config, argname='plot_limit',
logstring='Limiting plot to: {}')
self._args_to_config(config, argname='trade_source',
logstring='Using trades from: {}')
self._args_to_config(config, argname='erase',
logstring='Erase detected. Deleting existing data.')
self._args_to_config(config, argname='no_trades',
logstring='Parameter --no-trades detected.')
self._args_to_config(config, argname='timeframes',
logstring='timeframes --timeframes: {}')
self._args_to_config(config, argname='days',
logstring='Detected --days: {}')
self._args_to_config(config, argname='download_trades',
logstring='Detected --dl-trades: {}')
self._args_to_config(config, argname='dataformat_ohlcv',
logstring='Using "{}" to store OHLCV data.')
self._args_to_config(config, argname='dataformat_trades',
logstring='Using "{}" to store trades data.')
def _process_runmode(self, config: Dict[str, Any]) -> None:
self._args_to_config(config, argname='dry_run',
logstring='Parameter --dry-run detected, '
'overriding dry_run to: {} ...')
if not self.runmode:
# Handle real mode, infer dry/live from config
self.runmode = RunMode.DRY_RUN if config.get('dry_run', True) else RunMode.LIVE
logger.info(f"Runmode set to {self.runmode.value}.")
config.update({'runmode': self.runmode})
def _args_to_config(self, config: Dict[str, Any], argname: str,
logstring: str, logfun: Optional[Callable] = None,
deprecated_msg: Optional[str] = None) -> None:
"""
:param config: Configuration dictionary
:param argname: Argumentname in self.args - will be copied to config dict.
:param logstring: Logging String
:param logfun: logfun is applied to the configuration entry before passing
that entry to the log string using .format().
sample: logfun=len (prints the length of the found
configuration instead of the content)
"""
if (argname in self.args and self.args[argname] is not None
and self.args[argname] is not False):
config.update({argname: self.args[argname]})
if logfun:
logger.info(logstring.format(logfun(config[argname])))
else:
logger.info(logstring.format(config[argname]))
if deprecated_msg:
warnings.warn(f"DEPRECATED: {deprecated_msg}", DeprecationWarning)
def _resolve_pairs_list(self, config: Dict[str, Any]) -> None:
"""
Helper for download script.
Takes first found:
* -p (pairs argument)
* --pairs-file
* whitelist from config
"""
if "pairs" in config:
return
if "pairs_file" in self.args and self.args["pairs_file"]:
pairs_file = Path(self.args["pairs_file"])
logger.info(f'Reading pairs file "{pairs_file}".')
# Download pairs from the pairs file if no config is specified
# or if pairs file is specified explicitely
if not pairs_file.exists():
raise OperationalException(f'No pairs file found with path "{pairs_file}".')
with pairs_file.open('r') as f:
config['pairs'] = json_load(f)
config['pairs'].sort()
return
if 'config' in self.args and self.args['config']:
logger.info("Using pairlist from configuration.")
config['pairs'] = config.get('exchange', {}).get('pair_whitelist')
else:
# Fall back to /dl_path/pairs.json
pairs_file = config['datadir'] / 'pairs.json'
if pairs_file.exists():
with pairs_file.open('r') as f:
config['pairs'] = json_load(f)
if 'pairs' in config:
config['pairs'].sort()

Some files were not shown because too many files have changed in this diff Show More