Rokas Kupstys
a715083fc0
Reduce memory usage by not holding on to no longer needed data.
2021-12-31 12:10:01 +02:00
Rokas Kupstys
78a00f2518
Use market data to get base and quote currencies in @informative() decorator.
2021-11-22 09:27:45 +02:00
Rokas Kupstys
98b475a00b
Use lambdas instead of a static number of side-effects.
2021-11-06 10:23:46 +02:00
Rokas Kupstys
437fadc258
Fix profitable trade registering as a loss due to fees.
2021-10-12 10:49:07 +03:00
Rokas Kupstys
c820db4c60
Fix couple more usdt tests which failed due to ticker prices causing roi being hit, but tests did not expect that to happen.
2021-10-02 01:44:30 -06:00
Rokas Kupstys
8961370269
Fix failing test due to not updated expected values.
2021-10-02 01:44:30 -06:00
Rokas Kupstys
2ee87f8c66
Fix failing USDT tests due to not enough open markets.
2021-10-02 01:44:30 -06:00
Rokas Kupstys
e025576d8c
Introduce markets_static fixture serving an immutable list of markets. Adapt pairlist/markets tests to use this new fixture.
...
This allows freely modifying markets in get_markets() without a need of updating pairlist/markets tests.
2021-09-29 10:15:05 +03:00
Rokas Kupstys
eab7f8f694
[SQUASH] Doh.
2021-09-18 15:44:21 +03: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
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
Rokas Kupstys
f6267c7514
Fix buy_tag not being saved to trade object.
...
Column is mistakenly excluded because advise_buy() creating this column runs after code detecting presence of buy_tag column.
2021-08-11 15:21:23 +03:00
Rokas Kupstys
0e4466ca1e
Implement strategy-controlled stake sizes. Expose self.wallet to a strategy.
2021-07-11 12:38:58 +03:00
Rokas Kupstys
3686efa08a
Add range property to CategoricalParameter and DecimalParameter, add their tests.
...
At the moment we can keep a single code path when using IntParameter, but we have to make a special hyperopt case for CategoricalParameter/DecimalParameter. Range property solves this.
2021-07-03 16:02:45 +03:00
Rokas Kupstys
bc0742ae67
Fix extremely optimistic results when using a combination of custom_stoploss and trailing_stop.
2021-06-30 09:10:50 +03:00
Rokas Kupstys
6d5fc96714
Implement most pessimistic handling of trailing stoploss.
2021-06-15 09:05:36 +03:00
Rokas Kupstys
b54da430b9
Add ability to plot bars on indicator chart and pass custom arguments to plotly.
2021-05-30 11:11:19 +03:00
Rokas Kupstys
db985cbc2e
Fix hyperopt-show failing to display old results with missing new fields.
2021-05-23 09:45:26 +03:00
Rokas Kupstys
25cc4eae96
Fix tests that broke after table formatting changed.
2021-05-22 15:25:37 +02:00
Rokas Kupstys
981b2df7ca
Include win:loss ratio in results tables.
2021-05-21 12:18:08 +03:00
Rokas Kupstys
debd98ad9a
Make results table more compact by merging win/draw/loss columns and drawdown abs/% into single columns.
2021-05-21 11:36:23 +03:00
Rokas Kupstys
e1dc1357ce
Add drawdown column to strategy summary table.
2021-05-21 11:36:23 +03:00
Rokas Kupstys
edcfa94093
Include zero duration trades in backtesting report.
2021-05-21 11:36:23 +03:00
Rokas Kupstys
2d5f465f1b
Fix protections being loaded multiple times for first strategy when backtesting.
2021-05-15 13:37:03 +03:00
Rokas Kupstys
29fed37df3
Fix exception when few pairs with no data do not result in aborting backtest.
...
Exception is triggered by backtesting 20210301-20210501 range with BAKE/USDT pair (binance). Pair data starts on 2021-04-30 12:00:00 and after adjusting for startup candles pair dataframe is empty.
Solution: Since there are other pairs with enough data - skip pairs with no data and issue a warning.
Exception:
```
Traceback (most recent call last):
File "/home/rk/src/freqtrade/freqtrade/main.py", line 37, in main
return_code = args['func'](args)
File "/home/rk/src/freqtrade/freqtrade/commands/optimize_commands.py", line 53, in start_backtesting
backtesting.start()
File "/home/rk/src/freqtrade/freqtrade/optimize/backtesting.py", line 502, in start
min_date, max_date = self.backtest_one_strategy(strat, data, timerange)
File "/home/rk/src/freqtrade/freqtrade/optimize/backtesting.py", line 474, in backtest_one_strategy
results = self.backtest(
File "/home/rk/src/freqtrade/freqtrade/optimize/backtesting.py", line 365, in backtest
data: Dict = self._get_ohlcv_as_lists(processed)
File "/home/rk/src/freqtrade/freqtrade/optimize/backtesting.py", line 199, in _get_ohlcv_as_lists
pair_data.loc[:, 'buy'] = 0 # cleanup from previous run
File "/home/rk/src/freqtrade/venv/lib/python3.9/site-packages/pandas/core/indexing.py", line 692, in __setitem__
iloc._setitem_with_indexer(indexer, value, self.name)
File "/home/rk/src/freqtrade/venv/lib/python3.9/site-packages/pandas/core/indexing.py", line 1587, in _setitem_with_indexer
raise ValueError(
ValueError: cannot set a frame with no defined index and a scalar
```
2021-05-15 13:37:03 +03:00
Rokas Kupstys
ad4c51b3c5
* Added "Dataframe access" section showcasing how to obtain dataframe and use it to get last-available and trade-open candles.
...
* Fix custom_sell() example to use rsi from last-available instead of trade-open candle, add a pointer to "Dataframe access" section for more info.
* Simplify "Custom stoploss using an indicator from dataframe example" greatly, add a pointer to "Dataframe access" section for more info.
2021-05-12 09:30:35 +03:00
Rokas Kupstys
17b9e898d2
Update docs displaying how to get last available and trade-open candles.
2021-05-08 18:40:49 +03:00
Rokas Kupstys
8d8c782bd0
Slice dataframe in backtesting, preventing access to rows past current time.
2021-05-08 18:40:49 +03:00
Rokas Kupstys
f1eb653545
Fix strategy protections not being loaded in backtesting.
2021-05-08 10:29:47 +03:00
Rokas Kupstys
1b01ad6f85
Make exchange parameter optional and do not use it as parameter in backtesting.
2021-05-08 10:29:47 +03:00
Rokas Kupstys
d344194b36
Fix dataprovider in hyperopt.
2021-05-08 10:29:47 +03:00
Rokas Kupstys
9b4f6b41a2
Use correct datetime.
2021-05-08 10:29:47 +03:00
Rokas Kupstys
6fb4d83ab3
Fix dataprovider in hyperopt.
2021-05-08 10:29:47 +03:00
Rokas Kupstys
6af4de8fe8
Remove dataframe parameter from docs.
2021-05-08 10:29:47 +03:00
Rokas Kupstys
cdfa6adbe5
Store pair datafrmes in dataprovider for backtesting.
2021-05-08 10:29:47 +03:00
Rokas Kupstys
dc6e702fec
Pass current_time to confirm_trade_entry/confirm_trade_exit.
2021-05-08 10:29:47 +03:00
Rokas Kupstys
d34da3f981
Revert "Add dataframe parameter to custom_stoploss() and custom_sell() methods."
...
This reverts commit 595b8735f8 .
# Conflicts:
# freqtrade/optimize/backtesting.py
# freqtrade/strategy/interface.py
2021-05-08 10:29:47 +03:00
Rokas Kupstys
31a2285eac
Fix mypy complaints.
2021-04-26 10:42:24 +03:00
Rokas Kupstys
9c21c75cf5
Fix inaccuracy in docs.
2021-04-25 13:18:35 +03:00
Rokas Kupstys
98f6fce2ec
Use correct sell reason in case of custom sell reason.
2021-04-25 09:48:40 +03:00
Rokas Kupstys
e58fe7a8cb
Update custom_sell documentation.
2021-04-25 09:48:40 +03:00
Rokas Kupstys
004550529e
Document dataframe parameter in custom_stoploss().
2021-04-25 09:48:40 +03:00
Rokas Kupstys
595b8735f8
Add dataframe parameter to custom_stoploss() and custom_sell() methods.
2021-04-25 09:48:40 +03:00
Rokas Kupstys
961b38636f
Remove explicit sell_flag parameter from SellCheckTuple.
2021-04-25 09:48:40 +03:00
Rokas Kupstys
bfad4e82ad
Make execute_sell() use SellCheckTuple for sell reason.
2021-04-25 09:48:40 +03:00
Rokas Kupstys
a90e795695
Warn and trim custom sell reason if it is too long.
2021-04-25 09:48:40 +03:00
Rokas Kupstys
1aad128d85
Support returning a string from custom_sell() and have it recorded as custom sell reason.
2021-04-25 09:48:40 +03:00
Rokas Kupstys
a77337e424
Document IStrategy.custom_sell.
2021-04-25 09:48:40 +03:00
Rokas Kupstys
1292e08fe4
Use strategy_safe_wrapper() when calling custom_sell().
2021-04-25 09:48:40 +03:00
Rokas Kupstys
0fd68aee51
Add IStrategy.custom_sell method which allows per-trade sell signal evaluation.
2021-04-25 09:48:40 +03:00
Rokas Kupstys
3144185409
Allow specifying "new_pairs_days" in config.
2021-04-22 11:18:28 +03:00
Rokas Kupstys
09efa7b06b
Add --new-pairs-days parameter for download-data command.
...
This parameter allows us to customize a number of days we would like to download for new pairs only. This allows us to achieve efficient data update, downloading all data for new pairs and only missing data for existing pairs. To do that use `freqtrade download-data --new-pairs-days=3650` (not specifying `--days` or `--timerange` causes freqtrade to download only missing data for existing pairs).
2021-04-22 10:07:13 +03:00
Rokas Kupstys
faf40482ef
Fix parameter printing.
2021-04-03 13:49:24 +03:00
Rokas Kupstys
23c19b6852
New hyperopt documentation.
2021-04-03 11:19:52 +03:00
Rokas Kupstys
ea43d5ba85
Implement DecimalParameter and rename FloatParameter to RealParameter.
2021-04-02 17:08:16 +03:00
Rokas Kupstys
5e5b11d4d6
Split "enabled" to "load" and "optimize" parameters.
2021-03-31 12:31:28 +03:00
Rokas Kupstys
e934d3ddfb
[SQUASH] Oopsie.
2021-03-26 16:56:24 +02:00
Rokas Kupstys
40f5c7853e
[SQUASH] Add a way to temporarily disable a parameter (excludes from parameter loading/hyperopt) and print parameter values when executed.
2021-03-26 16:56:24 +02:00
Rokas Kupstys
bbe6ece38d
[SQUASH] Fix parameter configs not loading.
2021-03-26 16:56:24 +02:00
Rokas Kupstys
424cd2a914
[SQUASH] Use "space" instead of category.
2021-03-26 16:56:24 +02:00
Rokas Kupstys
fd45dfd894
[SQUASH] Make skopt imports optional.
2021-03-26 16:56:24 +02:00
Rokas Kupstys
11689100e7
[SQUASH] Fix exception when HyperOpt nested class is not defined.
2021-03-26 16:56:24 +02:00
Rokas Kupstys
e9f0babe8a
[SQUASH] Use HyperStrategyMixin as part of IStrategy interface.
2021-03-26 16:56:24 +02:00
Rokas Kupstys
2d13e5fd50
[SQUASH] Oopsies.
2021-03-26 16:56:24 +02:00
Rokas Kupstys
bb89e44e19
[SQUASH] Address PR comments.
...
* Split Parameter into IntParameter/FloatParameter/CategoricalParameter.
* Rename IHyperStrategy to HyperStrategyMixin and use it as mixin.
* --hyperopt parameter is now optional if strategy uses HyperStrategyMixin.
* Use OperationalException() instead of asserts.
2021-03-26 16:56:24 +02:00
Rokas Kupstys
0a205f52b0
Optional support for defining hyperopt parameters in a strategy file and reusing common hyperopt/strategy parts.
2021-03-26 16:56:24 +02:00