Commit Graph

6894 Commits

Author SHA1 Message Date
Simon Ebner
df033d92ef Improve performance of decimalspace.py
decimalspace.py is heavily used in the hyperoptimization. The following
benchmark code runs an optimization which is taken from optimizing a
real strategy (wtc).
The optimized version takes on my machine approx. 11/12s compared to the
original 32s. Results are equivalent in both cases.

```
import freqtrade.optimize.space
import numpy as np
import skopt
import timeit

def init():
    Decimal = freqtrade.optimize.space.decimalspace.SKDecimal
    Integer = skopt.space.space.Integer
    dimensions = [Decimal(low=-1.0,
        high=1.0,
        decimals=4,
        prior='uniform',
        transform='identity')] * 20

    return skopt.Optimizer(
        dimensions,
        base_estimator="ET",
        acq_optimizer="auto",
        n_initial_points=5,
        acq_optimizer_kwargs={'n_jobs': 96},
        random_state=0,
        model_queue_size=10,
    )

def test():
    opt = init()
    actual = opt.ask(n_points=2)
    expected = [[
        0.7515, -0.4723, -0.6941, -0.7988, 0.0448, 0.8605, -0.108, 0.5399,
        0.763, -0.2948, 0.8345, -0.7683, 0.7077, -0.2478, -0.333, 0.8575,
        0.6108, 0.4514, 0.5982, 0.3506
    ], [
        0.5563, 0.7386, -0.6407, 0.9073, -0.5211, -0.8167, -0.3771,
        -0.0318, 0.2861, 0.1176, 0.0943, -0.6077, -0.9317, -0.5372,
        -0.4934, -0.3637, -0.8035, -0.8627, -0.5399, 0.6036
    ]]

    absdiff = np.max(np.abs(np.asarray(expected) - np.asarray(actual)))
    assert absdiff < 1e-5

def time():
    opt = init()
    print('dt', timeit.timeit("opt.ask(n_points=20)", globals=locals()))

if __name__ == "__main__":
    test()
    time()
```
2021-10-24 18:14:24 +02:00
Matthias
22dd2ca003 Fix mypy type errors 2021-10-24 15:18:29 +02:00
Matthias
17432b2823 Improve some stylings 2021-10-24 09:15:05 +02:00
Matthias
dffb4c5d53 Merge branch 'develop' into pr/TreborNamor/5607 2021-10-24 08:55:10 +02:00
Simon Ebner
fde10f5395 Use pathlib.stem instead of str(x).ends_with 2021-10-23 12:26:07 +02:00
Matthias
78724e304e Merge branch 'develop' into pr/theluxaz/5710 2021-10-21 17:46:39 +02:00
theluxaz
0e085298e9 Fixed test failures. 2021-10-21 17:25:38 +03:00
Matthias
96f99699e0
Merge pull request #4606 from rextea/add_days_breakdown_to_backtesting_summary
Add days breakdown table to backtesting
2021-10-21 13:56:30 +02:00
Matthias
e458c9867a Styling fixes 2021-10-21 07:45:15 +02:00
Matthias
7b5346b984 Add test for breakdown-stats 2021-10-21 07:11:39 +02:00
Matthias
fa028c2134 Support day/week/month breakdowns 2021-10-21 06:58:40 +02:00
Matthias
7197f4ce77 Don't show daily % profit (it's wrong) 2021-10-20 20:01:31 +02:00
Matthias
de5497c766 backtest_days cannot be below 1 2021-10-20 19:39:37 +02:00
Matthias
1267374c8a Small fixes to tests 2021-10-20 19:21:38 +02:00
theluxaz
905f3a1a50 Removed exit_tag from Trade objects. 2021-10-20 17:58:50 +03:00
Matthias
5454460227 Revert initial_points to 30
closes #5760
2021-10-20 07:46:15 +02:00
theluxaz
1fdc4425dd Changed exit_tag to be represented as sell_reason 2021-10-20 01:26:15 +03:00
Matthias
55b0216180 Allow StaticPairlist in non-first position
closes #5754
2021-10-19 19:48:56 +02:00
Matthias
42a4dfed28 Reallow bitstamp
revert #1984, related to #1983
2021-10-19 19:12:35 +02:00
theluxaz
5ecdd1d112 Merge branch 'develop' into freqtrade-development 2021-10-19 00:00:15 +03:00
theluxaz
69a59cdf37 Fixed flake 8, changed sell_tag to exit_tag and fixed telegram functions 2021-10-18 23:56:41 +03:00
Matthias
7d8cd736b8 Support days-breakdown also for hyperopt results 2021-10-17 16:49:39 +02:00
Matthias
47bba331c1 Merge branch 'develop' into pr/rextea/4606 2021-10-17 16:29:31 +02:00
Matthias
d4d57f0002 Document expansion of --pairs, add download-inactive 2021-10-17 16:09:56 +02:00
Matthias
9bb2dd1851
Merge pull request #5694 from freqtrade/dependabot/pip/develop/fastapi-0.70.0
Bump fastapi from 0.68.1 to 0.70.0
2021-10-17 15:01:28 +02:00
Matthias
e23eb99abf Disable ability to use lookahead-biased vwap
closes #5782
2021-10-17 11:23:58 +02:00
Matthias
fb2c8f7621 Rollback after each request
This closes the transaction and avoids "sticking" transactions.
2021-10-17 10:30:06 +02:00
Matthias
5ba1d66be7 Make sure transactions are reset
closes #5719
2021-10-16 17:57:51 +02:00
Matthias
794862a35a
Merge pull request #5670 from sergeykhliustin/develop
Added min_profit param to PerformanceFilter
2021-10-14 19:57:36 +02:00
Matthias
c02a538187 Add documentation and log to PerformanceFilter 2021-10-14 19:36:34 +02:00
Matthias
0e7d903a6f
Merge pull request #5644 from slyons/develop
Add ability to ignore unparameterized spaces
2021-10-14 08:07:07 +02:00
theluxaz
0bb7ea10ab Fixed minor header for backtesting 2021-10-14 01:34:30 +03:00
theluxaz
ed39b8dab0 fixed profit total calculation 2021-10-14 01:18:16 +03:00
theluxaz
d341d85079 Refixed some files for the pull request 2021-10-14 01:13:28 +03:00
theluxaz
96cab22a8c Fixed some bugs for live sell_tags. 2021-10-14 01:03:15 +03:00
Matthias
3279ea568c Add new parameter to hyperopt docs 2021-10-13 19:57:42 +02:00
Matthias
aed919a05f Simplify "no-space-configured" error handling by moving it to hyperopt_auto 2021-10-13 19:54:35 +02:00
theluxaz
0f670189eb quick typo fix 2021-10-13 02:14:07 +03:00
theluxaz
b151cf032b Merge branch 'develop' of https://github.com/theluxaz/freqtrade into main
# Conflicts:
#	freqtrade/freqtradebot.py
#	freqtrade/optimize/backtesting.py
2021-10-13 02:01:26 +03:00
theluxaz
02243b1a2b minifix 2021-10-13 01:34:29 +03:00
theluxaz
80b71790bc Added some bigfixes for sell_tag 2021-10-13 01:22:53 +03:00
theluxaz
b898f86364 Added sell_tag and buy/sell telegram performance functions 2021-10-13 00:02:28 +03:00
Matthias
ce9debe9fd Add version argument to freqUI installer 2021-10-12 06:44:07 +02:00
Matthias
cae8ff5949
Merge pull request #5623 from froggleston/rest_sysinfo
Add CPU,RAM sysinfo support to the REST API to help with bot system m…
2021-10-09 15:17:21 +02:00
Matthias
91ceaef02f
Merge pull request #5678 from sidml/develop
Hyperopt loss function using max drawdown
2021-10-09 10:26:40 +02:00
sid
30bc96cf3f simplify expression 2021-10-09 06:36:23 +05:30
Matthias
11ec1d9b06 Revert previous commit 2021-10-08 20:22:07 +02:00
Matthias
482f4418c6 Clarify "required candle" message 2021-10-08 14:36:52 +02:00
Robert Davey
f07eeddda0
Update api_schemas.py
Fix api schema for cpu_pct float List.
2021-10-07 12:04:42 +01:00
Matthias
45b7a0c837 Add Test and docs for MaxDrawDownHyperOptLoss 2021-10-07 07:12:45 +02:00
Matthias
29863ad2bf Fix error when ask_last_balance is not set
closes #5181
2021-10-07 06:51:29 +02:00
sid
46c320513a use profit_abs 2021-10-07 08:07:07 +05:30
sid
93e4cf4006 Merge remote-tracking branch 'upstream/develop' into develop 2021-10-07 08:04:40 +05:30
Matthias
526bdaa2dc Recommend using 0.0.0.0 as listen address for docker 2021-10-06 20:14:59 +02:00
Matthias
57ef25789e Fix style errors 2021-10-06 19:36:41 +02:00
sid
6ba46b38bd fix formatting 2021-10-06 13:46:05 +05:30
sid
c0d01dbc26 add max_drawdown loss 2021-10-06 13:24:27 +05:30
froggleston
0db5c07314 Fix issues with sysinfo rpc/API code, add SysInfo api_schema 2021-10-05 00:10:39 +01:00
Matthias
92f8f231af Remove ratelimit from kucoin template 2021-10-04 20:22:41 +02:00
Matthias
7f4baab420 Remove explicit rateLimits, improve docs 2021-10-04 20:14:22 +02:00
Matthias
f15922a168 Fix custom_stoploss in strategy template
closes #5658
2021-10-04 19:11:35 +02:00
Sergey Khliustin
07750518c3 Added min_profit param to PerformanceFilter 2021-10-04 18:49:57 +03:00
Matthias
1c63d01cec Prevent using market-orders on gateio
GateIo does not support market orders on spot markets
2021-10-03 14:14:16 +02:00
Matthias
f5e5203388 Use "round" to 12 digits for TickSize mode
Avoids float rounding problems, fix #5652
2021-10-03 09:49:55 +02:00
Matthias
f69cb39a17 Fix missing comma in kucoin template
closes #5646
2021-10-01 19:26:51 +02:00
Matthias
99e3450d30
Merge pull request #5642 from freqtrade/add_trade_conversion_command
Add trade conversion command
2021-10-01 06:38:42 +02:00
Scott Lyons
df45f467c6
Adding ability to ignore unparameterized spaces 2021-09-30 01:11:02 -07:00
Scott Lyons
95227376b6
Adding IUS to optimize args 2021-09-30 00:53:46 -07:00
Scott Lyons
08fcd1a0d4
Adding ignore space errors to Hyperopt CLI 2021-09-30 00:46:56 -07:00
Scott Lyons
5dd1088d8d
Adding ignore unparameterized spaces flag 2021-09-30 00:44:26 -07:00
Matthias
5f23af5802 Rename update_open_trades to clarify it's only called at startup 2021-09-30 07:24:16 +02:00
Matthias
178db516bf Add documentation for trade-to-ohlcv 2021-09-29 20:00:14 +02:00
Matthias
248c61bb26 Add test for trades-to-ohlcv 2021-09-29 19:39:29 +02:00
Matthias
fc511aac44 don't use %default when no default is defined 2021-09-29 19:21:54 +02:00
Matthias
656526c007 Add trades-to-ohlcv command to simplify adding new timeframes 2021-09-29 16:50:05 +02:00
Robert Roman
ca973c05d1
Merge branch 'freqtrade:develop' into develop 2021-09-28 10:16:36 -05:00
Robert Roman
626a40252d
resolved mypy error
error: Signature of "hyperopt_loss_function" incompatible with supertype "IHyperOptLoss"
2021-09-27 17:33:29 -05:00
Robert Roman
c3414c3b78
resolved mypy error
error: Signature of "hyperopt_loss_function" incompatible with supertype "IHyperOptLoss"
2021-09-27 17:32:49 -05:00
Matthias
5726886b06 Reduce backtest-noise from "pandas slice" warning 2021-09-27 20:52:19 +02:00
Robert Roman
67e9626da1
fixed isort issue 2021-09-27 12:16:57 -05:00
Robert Roman
a1566fe5d7
updated to latest constant.py file 2021-09-27 11:47:03 -05:00
Robert Roman
193b22475d
Merge branch 'freqtrade:develop' into develop 2021-09-27 11:35:34 -05:00
Matthias
3fbf716f85 Fix "sticking" timerange in webserver mode 2021-09-27 17:52:00 +02:00
Matthias
5b7a1f8642 Validate config also in webserver mode 2021-09-27 07:12:40 +02:00
Robert Roman
bdca3e2343
Merge branch 'freqtrade:develop' into develop 2021-09-26 15:37:09 -05:00
Matthias
6319c104fe Fix unreliable backtest-result when using webserver mode 2021-09-26 15:07:48 +02:00
Robert Roman
a77ca22026
Merge branch 'freqtrade:develop' into develop 2021-09-26 02:57:02 -05:00
Robert Roman
89b7dfda0e
Added Calmar Ratio Daily 2021-09-25 16:34:41 -05:00
Robert Roman
24baad7884
Add Calmar Ratio Daily
This hyper opt loss calculates the daily Calmar ratio.
2021-09-25 16:28:36 -05:00
froggleston
097da448e2 Add CPU,RAM sysinfo support to the REST API to help with bot system monitoring 2021-09-25 15:48:42 +01:00
Matthias
b59906b117 Update minimum for tradable_balance_ratio to 0.0 2021-09-24 19:24:33 +02:00
Robert Roman
0f29cbc882
added CalmarHyperOptLoss
I added CalmarHyperOptLoss to HYPEROPT_LOSS_BUILTIN variable inside constants.py file
2021-09-23 21:37:28 -05:00
Robert Roman
3b99c84b0a
resolved the total profit issue
I resolved the total profit issue and locally ran flak8 and isort
2021-09-23 21:31:33 -05:00
Matthias
9a6d8977de
Merge pull request #5605 from peterwilli/fix-sell-cancel-webhook-error
fixed webhook "unsupported format string passed to NoneType." error
2021-09-23 20:17:35 +02:00
Peter Willemsen
692e91a26d changed close date from datetime.utcnow() to datetime.now(timezone.utc) 2021-09-23 10:28:15 +02:00
Robert Roman
c6b684603c
removed trade_count inside if statement
i removed trade_count inside if statement. Even though it helps overfitting, It is not useful when running hyperopt on small datasets.
2021-09-22 09:21:43 -05:00
Robert Roman
b946f8e7f1
I sorted imports with isort 2021-09-22 09:18:17 -05:00
Robert Roman
3834bb86ff
updated line 42
I removed the minus sign on max drawdown.
2021-09-21 20:25:17 -05:00
Robert Roman
3845d55186
a new hyperopt loss created that uses calmar ratio
This is a new hyperopt loss file that uses the Calmar Ratio.

Calmar Ratio = average annual rate of return / maximum drawdown
2021-09-21 20:04:23 -05:00
Peter Willemsen
b0de4d333e fixed webhook error 2021-09-21 23:20:40 +02:00
Matthias
3ce05c0d54 Add "sane" defaults to protection triggers 2021-09-20 20:16:58 +02:00
Matthias
fd23ab3d64 improve formatting, add tests 2021-09-20 19:50:56 +02:00
Matthias
dd0db7ee5d Split protection-notification into global and per-pair 2021-09-20 19:23:40 +02:00
Matthias
a0fb43c6ca Add pairlock-notification 2021-09-20 19:12:59 +02:00
Matthias
1da091dea3 ProtectionManager should return the lock just created 2021-09-19 19:41:19 +02:00
Matthias
879bf47b32 Refactor telegram.py to simplify send_msg 2021-09-19 19:25:36 +02:00
Matthias
ec03531771 Improve naming of variables 2021-09-19 13:29:09 +02:00
Matthias
ab88217186 Improve /balance output to include starting balance and percentual change
closes #5503
2021-09-19 13:17:34 +02:00
Rokas Kupstys
713e7819f7 [SQUASH] Remove mypy import. 2021-09-18 15:27:58 +03:00
Rokas Kupstys
e4ca42faec [SQUASH] Update stoploss_from_absolute to behave more like stoploss_from_open and add a test for it. 2021-09-18 10:48:53 +03:00
Rokas Kupstys
7e6aa9390a [SQUASH] Unconditionally include quote currency when asset is explicitly specified. Added docs suggesting to use string formatting to make strategy independent of configured stake currency. 2021-09-18 10:48:53 +03:00
Rokas Kupstys
e88c4701bb [SQUASH] Address PR comments. 2021-09-18 10:48:53 +03:00
Matthias
bb6ae682fc Small simplifications 2021-09-18 10:48:53 +03:00
Rokas Kupstys
5dc78a0c66 [SQUASH] Get rid of _initialize() and fix informatives for dynamic pairlists. 2021-09-18 10:48:53 +03:00
Rokas Kupstys
f81df19b93 [TMP] Make tests not fail for now. 2021-09-18 10:48:53 +03:00
Rokas Kupstys
dfa61b7ad2 [SQUASH] Fix informatives for each pair not being created because dataprovider was not available.
Fix not being able to have informative dataframe of a pair in whitelist.
2021-09-18 10:48:53 +03:00
Rokas Kupstys
f2a1d9d2fc [SQUASH] Address PR comments. 2021-09-18 10:48:18 +03:00
Rokas Kupstys
1fdb656334 Add a decorator which can be used to declare populate_indicators() functions for informative pairs. 2021-09-18 10:48:18 +03:00
Rokas Kupstys
d84ef34740 A helper to calculate stoploss value from absolute price. 2021-09-18 10:48:18 +03:00
Matthias
11f08b0053
Merge pull request #5582 from sergeykhliustin/develop
Added days parameter to PerformanceFilter
2021-09-18 09:24:14 +02:00
Matthias
564e0b9a1a Switch performanceFilter to use Minutes lookback resolution
closes #5060
2021-09-18 09:10:25 +02:00
Matthias
12c12d42df Add documentation for days parameter in PerformanceFilter 2021-09-18 08:30:44 +02:00
Matthias
853c3a4433
Merge pull request #5587 from raph92/patch-3
Update prepare_trials_columns() return type
2021-09-18 08:08:18 +02:00
Sergey Khliustin
d7395e873b Removed unused OperationalException 2021-09-17 22:05:57 +03:00
raphael
4b2c1a9b8e
Remove trailing whitespace 2021-09-17 14:39:15 -04:00
raphael
e715f2a253
Update formatting
Line 302 was too long
2021-09-17 14:23:26 -04:00
raphael
9525a5b96c
Add type to "trials" parameter 2021-09-17 14:10:37 -04:00
raphael
124e97f3b9
Remove ununsed variables from export_csv_file 2021-09-17 11:57:36 -04:00
raphael
5fc993231a
Update HyperoptTools.export_csv_file usage 2021-09-17 11:51:55 -04:00
raphael
3a98fb72a4
Update prepare_trials_columns() return type
Was returning str, updated to pd.DataFrame
2021-09-17 11:42:33 -04:00
sergeykhliustin
982deeedf0
Update freqtrade/persistence/models.py
Co-authored-by: Matthias <xmatthias@outlook.com>
2021-09-17 18:23:13 +03:00
Sergey Khliustin
54ef36a497 Updates after review to PerformanceFilter days param 2021-09-17 13:45:44 +03:00
Sergey Khliustin
457e738b4a Added days parameter to PerformanceFilter 2021-09-16 14:48:02 +03:00
Matthias
994c3c3a4c Add some errorhandling for custom estimator 2021-09-16 07:13:25 +02:00
Matthias
c0811ae896 Add possibility to override estimator from within hyperopt 2021-09-15 21:36:53 +02:00
Matthias
90ad178932 Remove verbosity of edge 2021-09-15 21:04:25 +02:00
Matthias
57ea0c322f Rename indicator_space to buy_indicator_space 2021-09-15 20:20:31 +02:00
Matthias
f7bae81d96 Dataframe should be copied after populate_indicator
Without that, PerformanceWarnings can appear throughout hyperopt which
are unnecessary and missleading for users

closes #5408
2021-09-15 19:56:12 +02:00
Matthias
e4ec5679a1
Merge pull request #5574 from freqtrade/agefilter_cache
Agefilter cache
2021-09-15 06:33:36 +02:00
Matthias
315ea1e116
Merge pull request #5566 from freqtrade/remove_hyperopt
Remove legacy hyperopt
2021-09-14 19:20:58 +02:00
Matthias
3ce5197e8d Add Tests for AgeFilter caching
closes #5552
2021-09-14 06:45:26 +02:00
Matthias
c9ba52d732 Expire cached pairs in age-filter once per day 2021-09-14 06:30:18 +02:00
Matthias
a12c3ecc9b Remove credentials whenever dry-run is set from within the exchange 2021-09-13 20:27:32 +02:00
Matthias
8afb3c4b70 Move AgeFilter cache to instance level 2021-09-13 19:33:28 +02:00
Matthias
3cdd06f562 Add PeriodicCache 2021-09-13 19:32:51 +02:00
Matthias
0017b3438e Remove list-hyperopts 2021-09-12 08:18:17 +02:00
Matthias
3675df8344 Update documentation regarding Legacy Hyperopt 2021-09-12 08:18:17 +02:00
Matthias
fd6bf591f8 Update some tests to remove explicit hyperopt interface 2021-09-12 08:18:13 +02:00
Matthias
dad4a49e81 Remove legacy hyperopt interface from hyperopt.py 2021-09-12 08:18:13 +02:00
Matthias
ebb0b8aa3f Remove new-hyperopt command 2021-09-12 08:18:13 +02:00