Kamontat Chantrachirathumrong
082fb11bbe
Avoid having error cannot set a frame with no defined index and a scalar
2021-05-20 01:54:48 +07:00
Matthias
ef4d1c24d7
Merge pull request #4941 from brookmiles/fix-stoploss-above-candle
...
prevent backtest stoploss trade price being set above candle high
2021-05-19 06:20:35 +02: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
Brook Miles
2eac23a15f
if stoploss price is above the candle high, set it to candle open instead. this can occur if stoploss had previously been reached but the sell was prevented by confirm_trade_exit
2021-05-15 15:38:51 +09:00
Matthias
92186d89a2
Add some changes to strategytemplate
2021-05-09 09:56:36 +02: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
6fb4d83ab3
Fix dataprovider in hyperopt.
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
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
Matthias
554f5f14b6
Raise exception if no data is left
2021-05-07 06:41:15 +02:00
Matthias
4f529fe424
Don't use Arrow to get min/max backtest dates
2021-05-06 19:43:14 +02:00
Matthias
f2e182002d
Simplify calling backtesting by returning the proper result
2021-05-02 09:46:27 +02:00
Matthias
7c8a367442
Update docs to not promote stoploss / take-profit
2021-04-28 20:36:06 +02:00
Matthias
2061162d79
Convert trade-opendate to python datetime
2021-04-26 20:01:13 +02:00
Rokas Kupstys
98f6fce2ec
Use correct sell reason in case of custom sell reason.
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
1aad128d85
Support returning a string from custom_sell() and have it recorded as custom sell reason.
2021-04-25 09:48:40 +03:00
Matthias
88f26971fa
Use defaultdict for backtesting
2021-04-24 19:15:09 +02:00
Matthias
f12e002686
Merge pull request #4775 from freqtrade/fix_wallet_unlimited
...
Fix wallet unlimited
2021-04-24 15:54:06 +02:00
Matthias
df16fbd742
Add "dataload complete" message to backtest + hyperopt
2021-04-23 19:22:41 +02:00
Matthias
d8c8a8d8c2
Remvoe pointless arguments from get_trade_stake_amount
2021-04-21 20:01:10 +02:00
Matthias
cfa9315e2a
Prevent out of candle ROI sells
2021-04-20 20:29:53 +02:00
Matthias
89bbfd2324
Remove candle_count from dataframe before backtesting
...
closes #3754
2021-03-29 20:26:54 +02:00
Matthias
292ea8c1d0
Update backtesting.py
2021-03-25 09:34:33 +01:00
rextea
0ca95aa0c2
Change rate to acctual close rate
2021-03-25 10:25:25 +02:00
Matthias
ec15610bff
Fix isort issue
2021-03-24 19:21:07 +01:00
rextea
f51f4b1817
Add confirm_trade_exit and confirm_trade_entry to backtesting
2021-03-23 10:35:46 +02:00
rextea
dc4ea604dd
Add confirm_trade_exit and confirm_trade_entry to backtesting
2021-03-23 10:19:16 +02:00
rextea
eb5d69dcd4
Add confirm_trade_exit and confirm_trade_entry to backtesting
2021-03-23 10:12:08 +02:00
rextea
6856963aef
Add confirm_trade_exit and confirm_trade_entry to backtesting
2021-03-23 10:09:41 +02:00
Matthias
b57c150654
Final balance should include forcesold pairs
2021-03-14 09:48:40 +01:00
Matthias
d1acc8092c
Improve backtest performance
2021-03-13 10:17:14 +01:00
Matthias
0db5c9746f
Merge pull request #4454 from freqtrade/backtest_compound_speed
...
Backtest compound, wallet, ...
2021-03-10 10:07:40 +01:00
Matthias
4b550dab17
Always reset fake-databases
...
Otherwise results may stick around for the next strategy
2021-03-08 19:40:29 +01:00
Matthias
0b81b58d28
Use pandas.values.tolist instead of itertuples
...
speeds up backtesting
closes #4494
2021-03-07 11:28:54 +01:00
Matthias
2083cf6ddf
Fix mypy errors introduced by Arrow update
2021-03-01 08:57:57 +01:00
Matthias
b2e9295d7f
Small stylistic fixes
2021-02-27 19:57:42 +01:00
Matthias
324b9dbdff
Simplify wallet code
2021-02-27 10:33:25 +01:00
Matthias
98f3142b30
Improve handling of backtesting params
2021-02-27 09:33:00 +01:00
Matthias
fc256749af
Add test for backtesting _enter_trade
2021-02-27 09:33:00 +01:00
Matthias
53a57f2c81
Change some types
...
Fix types of new model object
2021-02-27 09:33:00 +01:00
Matthias
03eb23a4ce
2 levels of Trade models, one with and one without sqlalchemy
...
Fixes a performance issue when backtesting with sqlalchemy, as that
uses descriptors for all properties.
2021-02-27 09:33:00 +01:00
Matthias
394a6bbf2a
Fix some type errors
2021-02-27 09:33:00 +01:00
Matthias
52acacbed5
Check min-trade-stake in backtesting
2021-02-27 09:33:00 +01:00
Matthias
7913166453
Improve performance by updating wallets only when necessary
2021-02-27 09:33:00 +01:00
Matthias
74fc4bdab5
Shorten debug log
2021-02-27 09:32:59 +01:00
Matthias
8d61a26382
Allow dynamic stake for backtesting and hyperopt
2021-02-27 09:32:59 +01:00
Matthias
e4abe902fc
Enable compounding for backtesting
2021-02-27 09:32:59 +01:00
Matthias
0faa6f84dc
Improve Wallet logging disabling for backtesting
2021-02-27 09:32:59 +01:00
Matthias
081b9be45c
use get_all_locks to get locks for backtest result
2021-02-27 09:32:59 +01:00
Matthias
712d503e6c
Use sell-reason value in backtesting, not the enum object
2021-02-27 09:32:59 +01:00
Matthias
9361aa1c95
Add wallets to backtesting
2021-02-27 09:32:59 +01:00
Matthias
789a980a30
Fix tests for new export format
2021-01-24 19:42:32 +01:00
Matthias
deb8432d33
Streamline trade to dataframe conversion
2021-01-24 08:58:41 +01:00
Matthias
8ee264bc59
Don't use profit_percent for backtesting results anymore
2021-01-24 08:58:41 +01:00
Matthias
48977493bb
Backtesting does not need to convert to BacktestResult object
2021-01-24 08:58:41 +01:00
Matthias
0b65fe6afe
Capture backtest start / end time
2021-01-14 19:09:25 +01:00
Matthias
9147106259
call bot_loop_start() in backtesting to allow setup-code to run
2021-01-14 19:09:25 +01:00
Matthias
baa1142afa
Use preprocessed to get min/max date in hyperopt
2021-01-14 19:09:21 +01:00
Matthias
9d4cdcad10
Extract backtesting of one strategy
2021-01-14 19:04:42 +01:00
Matthias
f3de0dd3eb
Fix support for protections in hyperopt
...
closes #4208
2021-01-14 06:53:40 +01:00
Matthias
f11fd2fee1
Sort imports
2020-12-23 17:00:02 +01:00
Matthias
67193bca3d
Move pairlists to be a plugin submodule
2020-12-23 16:54:35 +01:00
Matthias
266031a6be
Disallow PerformanceFilter for backtesting
...
closes #4072
2020-12-16 19:24:47 +01:00
Matthias
f047297995
Improve wording, fix bug
2020-12-07 15:48:06 +01:00
Matthias
5849d07497
Export locks as part of backtesting
2020-12-07 11:39:01 +01:00
Matthias
bb51da8297
Fix slow backtest due to protections
2020-12-07 11:39:01 +01:00
Matthias
75a5161650
Support multis-strategy backtests with protections
2020-12-07 11:39:01 +01:00
Matthias
a3f9cd2c26
Only load protections when necessary
2020-12-07 11:39:01 +01:00
Matthias
e2d15f4082
Add parameter to enable protections for backtesting
2020-12-07 11:39:01 +01:00
Matthias
32189d27c8
Disable output from plugins in backtesting
2020-12-07 11:39:01 +01:00
Matthias
9f34aebdaa
Allow closing trades without message
2020-12-07 11:39:01 +01:00
Matthias
b606936eb7
Make changes to backtesting to incorporate protections
2020-12-07 11:39:01 +01:00
Matthias
e73203acb8
FIx bug with dmmp
2020-11-01 10:51:07 +01: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
2591a34db4
Don't use arrow objects for backtesting
2020-10-18 16:18:52 +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
52502193c4
Backtesting should not double-loop for sell signals
2020-10-07 20:59:05 +02:00
Matthias
253b7b763e
Apply isort to freqtrade codebase
2020-09-28 19:40:46 +02:00
Matthias
bb27b236ce
Remove unused arguments
2020-09-26 14:55:12 +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
284d39930f
Allow using pairlists through dataprovider in backtesting
2020-08-30 10:07:28 +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
87e4a82041
Merge branch 'develop' into bt_add_maxdrawdown
2020-08-09 08:34:36 +02:00
Matthias
2afe1d5b11
Add link to full sample
2020-08-08 17:30:31 +02:00
Matthias
dd430455e4
Enable dataprovier for hyperopt
2020-08-08 17:04:32 +02:00
Matthias
c1191400a4
Allow 0 fee value by correctly checking for None
2020-07-15 19:20:20 +02:00
Matthias
0d15a87af8
Remove old store_backtest method
2020-07-03 20:21:32 +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
075eb0a161
Fix sequence of saving
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