Matthias
fc256749af
Add test for backtesting _enter_trade
2021-02-27 09:33:00 +01:00
Matthias
60db6ccf45
Add test for subclassing
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
f04f07299c
Improve backtesting metrics
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
37d7d2afd5
Wallets should not recalculate close_profit for closed trades
2021-02-27 09:33:00 +01:00
Matthias
f367375e5b
ABS drawdown should show wallet high and low values
2021-02-27 09:33:00 +01:00
Matthias
aed23d55c2
Add starting balance to profit cumsum calculation
2021-02-27 09:33:00 +01:00
Matthias
0d2f877e77
Use absolute drawdown calc
2021-02-27 09:32:59 +01:00
Matthias
74fc4bdab5
Shorten debug log
2021-02-27 09:32:59 +01:00
Matthias
72f21fc5ec
Add trade-volume metric
2021-02-27 09:32:59 +01:00
Matthias
35e6a9ab3a
Backtest-reports should calculate total gains based on starting capital
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
959ff99046
Add Dry-run wallet CLI option
2021-02-27 09:32:59 +01:00
Matthias
0754a7a78f
total_open_trades_stake should support no-db mode
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
20455de2a9
Small enhancements to docs
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
e32b2097f0
Use timestamp in UTC timezone for ROI comparisons
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
b5177eadab
Extract close method for exchange
2021-02-27 09:32:59 +01:00
Matthias
4ce4eadc23
remove only ccxt objects when hyperopting
2021-02-27 09:32:59 +01:00
Matthias
9361aa1c95
Add wallets to backtesting
2021-02-27 09:32:59 +01:00
Matthias
f0a154692d
Wallets should use trade_proxy
2021-02-27 09:32:59 +01:00
JoeSchr
642e3be7c5
Fix(strategy/interface.py): comment typo
...
`advice_buy` -> `advise_buy`
2021-02-26 23:17:59 +01:00
Matthias
0bb80d1442
Merge pull request #4446 from Xanders/patch-1
...
Webhook JSON format
2021-02-26 20:03:07 +01:00
Matthias
7d87c44c35
Merge pull request #4436 from Th0masL/forcesell_type
...
Allow changing the order_type for forcesell
2021-02-26 19:42:00 +01:00
Xanders
7281e794b4
Fix too long line at webhook.py
2021-02-26 21:31:33 +03:00
Xanders
fc69240e6d
Add JSON-encoded webhooks
2021-02-26 17:46:23 +03:00
Matthias
1b3b389109
Remove binanceje, add ftx to config selector
...
closes #4441
2021-02-26 07:58:15 +01:00
Th0masL
006f31129e
Reduced length of the line
2021-02-25 05:23:24 +02:00
Th0masL
117f0064ed
Allow changing the order_type for forcesell
2021-02-25 05:02:08 +02:00
Matthias
c71ecd3680
Fix wrong pair-content in strategy-analysis notebook and documentation
...
closes #4399
2021-02-22 20:04:36 +01:00
Matthias
228e51b60b
Fix #4405
2021-02-22 13:34:52 +01:00
Matthias
3629892fc3
Stoploss-guard should use the trade_limit or more
...
fix #4404
2021-02-20 19:38:44 +01:00
Matthias
245e39e523
dry-run should be a bool, not a string
2021-02-20 19:17:26 +01:00
Matthias
2b0d2070d0
Avoid crash with /delete
...
When a trade is deleted between querying the database and actually
handling the trade.
closes #4326
2021-02-18 12:49:14 +01:00
Matthias
b5a9ce2894
Download data in the right format as well ...
...
closes #4393
2021-02-18 09:26:35 +01:00
Matthias
11b20d6932
Add config to hyperopt_loss_function documentation
2021-02-17 07:04:29 +01:00
Matthias
eff0d46ea1
Merge pull request #4375 from flomerz/pass_processed_data
...
pass data and config to loss function
2021-02-16 20:06:50 +01:00
Matthias
009a447d8a
Adjust documentation for new parameter in loss functions
2021-02-16 19:51:09 +01:00
Florian Merz
3e06cd8b3a
pass data and config to loss function
2021-02-16 10:11:33 +01:00
Matthias
1a3e7191ed
Merge pull request #4116 from squat0001/develop-squat
...
Develop squat
2021-02-15 07:15:11 +01:00
Florian Reitmeir
5c263c7ffd
add backtesting results abs profit min/abs profit max, to get a better view if a strategy has a enough money to succeed
2021-02-14 19:41:12 +01:00
Matthias
ee74bc1f52
timeframe is mandatory, no need to use .get()
2021-02-14 11:01:12 +01:00
Matthias
da89838b5c
Set bittrex limits as returned by the exchange
...
closes #4181
2021-02-14 10:32:55 +01:00
Matthias
5622bb3247
Make candle_limit optionally timeframe dependent
2021-02-14 10:29:45 +01:00
Matthias
7ecf8f8b80
Cleanup candle_limit usage
2021-02-14 10:08:05 +01:00
Matthias
6f77ec063e
Fix cookieError on python<3.8
...
Only occurs in combination with api-server enabled,
due to some hot-fixing starlette does.
Since we load starlette at a later point, we need to replicate
starlette's behaviour for now, so sameSite cookies don't create a
problem.
closes #4356
2021-02-14 07:22:08 +01:00
Matthias
73d91275c4
Reset sell_order_status if a new sell-order is placed
...
closes #4365
2021-02-14 07:11:07 +01:00
Matthias
d4c8be915c
Use fstring where possible
2021-02-13 16:11:49 +01:00
Matthias
e7acee7904
Improve coin value output by rounding coin specific
2021-02-13 16:05:56 +01:00
Matthias
072abde9b7
Introduce round_coin_value to simplify coin rounding
2021-02-13 16:05:35 +01:00
Matthias
dd23f6bcbc
Fix type for getting pairs
2021-02-11 20:29:31 +01:00
Matthias
843fb204e9
Fix problem with inf values returned from dataframe for api methods
2021-02-11 20:21:31 +01:00
Matthias
aa79574c0c
Position-size should NEVER be over available_capital
...
Part of #4353
2021-02-11 17:09:31 +01:00
Matthias
7ee149da5d
Improve plotting errorhandling
...
closes #4327
2021-02-08 20:08:32 +01:00
Matthias
c5ab3a80a5
Check if order is a dict before parsing
...
closes #4331
2021-02-08 19:35:22 +01:00
Matthias
f6cdc6d9a2
Merge pull request #4325 from freqtrade/refresh_order_skip
...
Refresh order skip
2021-02-07 08:23:22 +01:00
Edvinas Selskas
694f55c0a5
Use suggested link
2021-02-06 14:43:50 +00:00
Matthias
d5cf837c0f
Parse regular cancel_order call to update orders table
2021-02-06 09:23:10 +01:00
Edvinas Selskas
bc8fda8d63
Update sample_strategy.py
...
Fix test
2021-02-06 03:13:53 +00:00
Edvinas Selskas
0a43988f3f
Fix sample strategy documentation link
...
Noticed that the current link is dead. I think this would be the most appropriate link in this case.
2021-02-06 03:02:37 +00:00
Matthias
aec22c5c3d
introduce skip_open_order_update parameter
...
skips startup-open-order-update
closes #4128
2021-02-05 20:17:53 +01:00
Matthias
2c71b3b118
Merge pull request #4309 from freqtrade/extract_stake_amount
...
Move get_trade_stake_amount to wallets
2021-02-05 19:47:30 +01:00
Matthias
1310a7b547
Fix bug with wrong conversion for BTCST/BTC
...
This can happen if a pair starts with the stake-currency
closes #4307
2021-02-04 19:58:44 +01:00
raoulus
99b2214d1f
setting resize_keyboard=True for slightly smaller Telegram buttons
2021-02-04 15:27:18 +01:00
Matthias
e8e5acc2e2
Fix import in strategy template
2021-02-03 20:15:08 +01:00
Matthias
024849d844
Merge pull request #4285 from freqtrade/ui_deploy
...
Deploy FreqUI into webserver
2021-02-03 20:09:31 +01:00
Matthias
b8cb39462c
Move get_trade_stake_amount to wallets
...
this way it can be easier used by other functions
2021-02-03 20:00:33 +01:00
Matthias
cfd0bb8964
Extract min stake amount from bot to exchange class
2021-02-02 19:47:21 +01:00
Matthias
fa8156b321
Merge pull request #4282 from pan-long/patch-1
...
Fix a bug when compare sell_profit_offset
2021-02-02 08:22:38 +01:00
Matthias
3d9b4034e6
Use already calculated current_profit for sell_profit_offset comparison
2021-02-02 08:06:19 +01:00
Matthias
52acf9aaf6
Fix "disappearing pairs" bug
...
closes #4277
2021-02-01 19:40:31 +01:00
Matthias
2c80388b40
Fix valueerror in case of empty array files
2021-02-01 06:28:49 +01:00
Matthias
06e2bc94c3
Deploy to subdirectory
2021-01-31 16:01:00 +01:00
Matthias
e4a085027b
Add test for UI methods
2021-01-31 15:27:00 +01:00
Matthias
28be71806f
Install html file as well
2021-01-31 15:13:51 +01:00
Matthias
a87a885ccd
Don't use Path object to return fileresponses
2021-01-31 14:54:58 +01:00
Matthias
7b3d99819f
Fix bug with not cleaning UI folder
2021-01-31 14:50:54 +01:00
Matthias
944d674eeb
Store freqUI version and read it again
2021-01-31 14:50:54 +01:00
Matthias
2af1d2d639
Extract last FreqUI version from api response
2021-01-31 14:50:54 +01:00
Matthias
e928d2991d
Add fallback file
2021-01-31 14:50:54 +01:00
Matthias
f05f2c45e8
Allow deleting of UI only
2021-01-31 14:50:54 +01:00
Matthias
a1a35115ad
Extract get_ui_download_url
2021-01-31 14:50:54 +01:00
Matthias
87ed2d7502
Write some tests for UI Downloading
2021-01-31 14:50:54 +01:00
Matthias
a47616eed4
Add UI installation subcommand
2021-01-31 14:50:54 +01:00
Matthias
27970b424d
Add webUI serving to api-server
2021-01-31 14:50:54 +01:00
Matthias
5724371a4f
Fix types for numpy 1.20.0 upgrade
2021-01-31 11:21:23 +01:00
Pan Long
4cc93151c5
Fix a bug when compare sell_profit_offset
...
It should be comparing the ratio instead of absolut profit.
Also updated the comment.
2021-01-31 12:14:09 +08:00
Matthias
16dad8b6d4
Allow custom_stoploss to cooperate with stoploss on exchange
2021-01-30 20:11:18 +01:00
Matthias
ea0ffbae73
use profit_ratio in calculate_cum_profit
2021-01-29 19:06:57 +01:00
Matthias
5cdd9dd445
Cache markets in the exchange object
2021-01-28 19:47:32 +01:00
Matthias
65459086a3
Merge pull request #4268 from freqtrade/backtest_trade_object
...
Backtest trade object
2021-01-27 19:10:21 +01:00
Matthias
a9b4d6de33
Check for existance of ask key in ticker
...
closes #4267
2021-01-26 17:18:55 +01:00
Tho Pham (Alex)
8f529f48da
Update freqtrade/freqtradebot.py use is_open.is_(True)
...
Co-authored-by: Matthias <xmatthias@outlook.com>
2021-01-26 07:38:25 +07:00
Matthias
c659150d9f
Also print trade_duration in seconds to json
2021-01-25 19:42:34 +01:00
Tho Pham (Alex)
c22cccb55b
Fix operator does not exist: boolean = integer
2021-01-25 12:24:47 +07:00
Matthias
62e43539c9
Limit max_open_trades to maximum available pairs
...
closes #4008
2021-01-24 19:59:54 +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
3b51545d23
Add trade_duration to to_json
2021-01-24 08:58:41 +01:00
Matthias
16f9675356
Fix whitelist expansion problem
2021-01-23 20:40:27 +01:00
Matthias
31e0b09643
Rename config.json.example
...
it's really the config dedicated to bittrex,
so the name should reflect this in beeing config_bittrex.json.example
2021-01-22 19:18:34 +01:00
Matthias
5c0f98b518
Blacklist Poloniex - as ccxt does not provide a fetch_order endpoint
2021-01-20 19:31:17 +01:00
Matthias
7c80eeea95
Add use_custom_stoploss to optimize_report
2021-01-19 22:51:12 +01:00
Matthias
20591b539a
Merge pull request #4228 from baartch/develop
...
Extending the Telegram Bot command /status with the possibility to query specific trade_ids
2021-01-19 20:08:49 +01:00
Andreas Brunner
a68a546dd9
_rpc_trade_status argument datatype optimizations
2021-01-18 15:26:53 +01:00
Andreas Brunner
eb95d970e9
flake8 beautify
2021-01-17 21:26:55 +01:00
Andreas Brunner
d21eff0d52
fix, if an non existing trade_id is provided
2021-01-17 21:21:31 +01:00
Andreas Brunner
3ea33d1737
updating doc and help with new /status argument
2021-01-17 21:15:17 +01:00
Andreas Brunner
6d40814dbf
extend status bot command to query specific trades
2021-01-17 20:39:35 +01:00
Matthias
a8bae3a381
Don't update trade fees for dry-run orders
2021-01-17 20:31:27 +01:00
Matthias
53c208197d
Add bot_name setting
...
allows naming the bot to simply differentiate when running different
bots.
2021-01-16 16:19:49 +01:00
Matthias
3fefb6f1c8
Merge pull request #4215 from freqtrade/refactor/backtest
...
Small backtest refactor, introduce calling `bot_loop_start` in backtesting
2021-01-16 09:32:19 +01:00
Matthias
d74376726a
api-server should fully support max_open_trades=-1
2021-01-15 20:47:12 +01:00
Matthias
baef8b4f79
Merge pull request #4197 from nas-/develop
...
Added support for regex in whitelist
2021-01-15 07:34:49 +01:00
Matthias
bf5868c96d
Add testcase for nonexisting pairs on whitelist
2021-01-15 07:10:17 +01:00
nas-
f72d53351c
Added ability to keep invalid pairs while expanding expand_pairlist
2021-01-15 06:37:57 +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
47a06c6213
Fix enable/reenable of swagger UI endpoint
2021-01-12 19:28:22 +01:00
Matthias
ac43591c44
Fix failing api when max_open_trades is unlimited
2021-01-12 19:24:37 +01:00
Matthias
6007d5182a
Merge pull request #4147 from hoeckxer/ignore_expired_candle
...
Ignoring candles that have expired within timeframe
2021-01-12 19:04:16 +01:00
hoeckxer
1f6a71fdd9
Reformat code on new version
2021-01-12 08:24:11 +01:00
hoeckxer
71f45021b9
Removed redundant statement
2021-01-12 07:35:30 +01:00
hoeckxer
e328182bd7
Changed workings so it only needs to timing-parameter, instead of also requiring a boolean value
2021-01-12 07:30:39 +01:00
nas-
4d7ffa8c81
Added suppoort for regex in whitelist
2021-01-12 01:13:58 +01:00
Matthias
63a579dbab
Add sell_profit_offset parameter
...
Allows defining positive offsets before enabling the sell signal
2021-01-11 19:30:25 +01:00
Matthias
f159c46438
Include stoploss_on_exchange in stoploss_guard
...
fix #4183
2021-01-11 07:55:01 +01:00
Matthias
5102dfd6df
Merge pull request #4144 from freqtrade/improve_informativepair
...
Improve merge_informative_pairs to properly merge correct timeframes
2021-01-09 10:15:59 +01:00
Matthias
8631a54514
Fix test due to pyjwt2.0
2021-01-08 19:34:01 +01:00
Matthias
bf182dc01e
Fix wrong key usage in trade_history_timebased
2021-01-07 20:03:34 +01:00
Matthias
b43ef474ad
Fix expired candle implementation
...
Improve and simplify test by passing the current time to the function
2021-01-07 07:51:49 +01:00
Matthias
c9e477214f
Allow protections to be set in the strategy
2021-01-06 16:37:09 +01:00
Matthias
e69dac2704
Fix bug in RPC history mode when no data is found
2021-01-06 15:38:46 +01:00
Matthias
91f8667881
DOn't update open orders in dry-run mode
2021-01-06 09:57:36 +01:00
hoeckxer
c0f170fdb9
Merge branch 'develop' into ignore_expired_candle
2021-01-05 21:00:08 +01:00
hoeckxer
65d91a3a58
isort fix
2021-01-05 15:36:34 +01:00
hoeckxer
573de1cf08
Fixed flake8 warnings
2021-01-05 15:30:29 +01:00
hoeckxer
e3f3f36298
Changes based on review comments
2021-01-05 14:49:35 +01:00
hoeckxer
c9ed2137bb
Simplified return statements
...
Signed-off-by: hoeckxer <hawkeyenl@yahoo.com>
2021-01-05 09:07:46 +01:00
Erwin Hoeckx
67306d943a
Update interface.py
...
Simplified return value, thereby including the situation where the time simply hasn't expired yet
2021-01-05 07:33:34 +01:00
Erwin Hoeckx
9a93a0876a
Update interface.py
...
Adjusted comment
2021-01-05 07:32:07 +01:00
hoeckxer
844df96ec7
Making changes so the build checks are satisified (imports & flake8)
...
Signed-off-by: hoeckxer <hawkeyenl@yahoo.com>
2021-01-05 07:06:53 +01:00
hoeckxer
614a996597
First commit about ignoring expired candle
...
Signed-off-by: hoeckxer <hawkeyenl@yahoo.com>
2021-01-04 20:49:24 +01:00
Matthias
07bc0c3fce
Improve merge_informative_pairs to properly merge correct timeframes
...
explanation in #4073 , closes #4073
2021-01-04 13:49:38 +01:00
Matthias
5ca2cd3a1e
Change defaults to log only errors
2021-01-03 07:18:41 +01:00
Matthias
634d6f3898
Change logging to stderr
2021-01-03 07:15:45 +01:00
Matthias
26c3463403
Stake-amount supports unlimited, too
2021-01-03 06:49:10 +01:00
Matthias
cff50f9f66
Add response-model for show_config
2021-01-03 06:49:10 +01:00
Matthias
ca0bb7bbb8
Don't require RPC for strategy
2021-01-03 06:49:07 +01:00
Matthias
e6176d43f3
Optional RPC dependency
2021-01-03 06:49:07 +01:00
Matthias
3dc37dd79d
Add types for deps
2021-01-03 06:49:07 +01:00
Matthias
336dd1a29c
Rename api_models to api_schemas
2021-01-03 06:49:07 +01:00
Matthias
84ced92002
Fix mock-tests missing some fields
2021-01-03 06:49:07 +01:00
Matthias
29f4dd1dcd
Enhance some response models
2021-01-03 06:49:07 +01:00
Matthias
718f2b24d2
Don't use relative imports
2021-01-03 06:49:07 +01:00
Matthias
b2ab553a31
Rename api_server2 module to apiserver
2021-01-03 06:49:04 +01:00
Matthias
eb20f6e7d0
Align auth token to flask version to prevent user-logout
2021-01-03 06:49:04 +01:00
Matthias
346542e5cd
Remove flask dependency
2021-01-03 06:49:04 +01:00
Matthias
68d148e72d
Allow configuration of openAPI interface
2021-01-03 06:49:04 +01:00
Matthias
1717121f10
Properly use JWT secret key
2021-01-03 06:49:04 +01:00
Matthias
790f833653
Some more tests around api_auth
2021-01-03 06:49:04 +01:00
Matthias
776ce57f55
Remove api_server
2021-01-03 06:49:04 +01:00
Matthias
54a50b1fb4
Fix some tests
2021-01-03 06:49:04 +01:00
Matthias
9f873305eb
Improve response models
2021-01-03 06:49:04 +01:00
Matthias
9350f505bc
Implement missing methods
2021-01-03 06:49:04 +01:00
Matthias
e23898d17b
Improve some tests
2021-01-03 06:49:04 +01:00
Matthias
9ee1d88355
Implement more endpoints
2021-01-03 06:49:04 +01:00
Matthias
73a29e6d74
Improve tests, implement more fastapi methods
2021-01-03 06:49:04 +01:00
Matthias
a18d66e108
Add more endpoints to fastapi
2021-01-03 06:49:04 +01:00
Matthias
4b86700a0f
Implement more endpoints
2021-01-03 06:48:56 +01:00
Matthias
5e4c4cae06
Fix auth providers
2021-01-03 06:48:53 +01:00
Matthias
86d0700884
Move models to apimodels
2021-01-03 06:46:25 +01:00
Matthias
6594278509
Reorder endpoints
2021-01-03 06:46:25 +01:00
Matthias
eac74a9dec
Implement auth in fastapi
2021-01-03 06:46:25 +01:00
Matthias
619b855d5f
Add version endpoint
2021-01-03 06:46:25 +01:00
Matthias
a862f19f82
Allow retrieval of rpc and config via dependencies
2021-01-03 06:46:25 +01:00
Matthias
1e38fec61b
Initial fastapi implementation (Ping working)
2021-01-03 06:46:25 +01:00
Matthias
9e3224ccc0
Merge pull request #4089 from freqtrade/feat/stoploss_custom
...
introduce custom stoploss
2020-12-31 10:33:33 +01:00
Matthias
512e163355
change docstring to better reflect what the method is for
2020-12-31 09:48:49 +01:00
Matthias
bd7600ff06
Small visual changes
2020-12-31 09:43:24 +01:00
Matthias
04624aae40
Add documentation for wildcard-blacklist
2020-12-30 12:30:50 +01:00
Matthias
0affacd39a
Support invalid regex blacklist from config
2020-12-30 10:14:22 +01:00
Matthias
9feabe707f
Fix RPC methods to allow wildcards (and validate wildcards)
2020-12-30 09:57:31 +01:00
Matthias
704cf14383
Add expand_pairlist method
2020-12-30 09:55:44 +01:00
Matthias
2fdda8e448
plot-profit should fail gracefully if no trade is within the selected timerange
...
closes #4119
2020-12-30 08:30:41 +01:00
Matthias
b607740dd1
Fix kraken balance bug if open buy orders exist
2020-12-29 20:06:37 +01:00
Matthias
0d4cf32086
Slightly adapt to pandas incompatibility
2020-12-28 09:50:48 +01:00
Matthias
a87c273903
Refactor RPC modules so handlers don't inherit RPC directly
2020-12-24 09:09:23 +01:00