Merge branch 'develop' into bt_add_maxdrawdown
This commit is contained in:
commit
b576e1d463
@ -278,8 +278,8 @@ class Edge:
|
|||||||
#
|
#
|
||||||
# Removing Pumps
|
# Removing Pumps
|
||||||
if self.edge_config.get('remove_pumps', False):
|
if self.edge_config.get('remove_pumps', False):
|
||||||
results = results.groupby(['pair', 'stoploss']).apply(
|
results = results[results['profit_abs'] < 2 * results['profit_abs'].std()
|
||||||
lambda x: x[x['profit_abs'] < 2 * x['profit_abs'].std() + x['profit_abs'].mean()])
|
+ results['profit_abs'].mean()]
|
||||||
##########################################################################
|
##########################################################################
|
||||||
|
|
||||||
# Removing trades having a duration more than X minutes (set in config)
|
# Removing trades having a duration more than X minutes (set in config)
|
||||||
|
@ -403,3 +403,98 @@ def test_process_expectancy(mocker, edge_conf, fee, risk_reward_ratio, expectanc
|
|||||||
final = edge._process_expectancy(trades_df)
|
final = edge._process_expectancy(trades_df)
|
||||||
assert len(final) == 0
|
assert len(final) == 0
|
||||||
assert isinstance(final, dict)
|
assert isinstance(final, dict)
|
||||||
|
|
||||||
|
|
||||||
|
def test_process_expectancy_remove_pumps(mocker, edge_conf, fee,):
|
||||||
|
edge_conf['edge']['min_trade_number'] = 2
|
||||||
|
edge_conf['edge']['remove_pumps'] = True
|
||||||
|
freqtrade = get_patched_freqtradebot(mocker, edge_conf)
|
||||||
|
|
||||||
|
freqtrade.exchange.get_fee = fee
|
||||||
|
edge = Edge(edge_conf, freqtrade.exchange, freqtrade.strategy)
|
||||||
|
|
||||||
|
trades = [
|
||||||
|
{'pair': 'TEST/BTC',
|
||||||
|
'stoploss': -0.9,
|
||||||
|
'profit_percent': '',
|
||||||
|
'profit_abs': '',
|
||||||
|
'open_time': np.datetime64('2018-10-03T00:05:00.000000000'),
|
||||||
|
'close_time': np.datetime64('2018-10-03T00:10:00.000000000'),
|
||||||
|
'open_index': 1,
|
||||||
|
'close_index': 1,
|
||||||
|
'trade_duration': '',
|
||||||
|
'open_rate': 17,
|
||||||
|
'close_rate': 15,
|
||||||
|
'exit_type': 'sell_signal'},
|
||||||
|
|
||||||
|
{'pair': 'TEST/BTC',
|
||||||
|
'stoploss': -0.9,
|
||||||
|
'profit_percent': '',
|
||||||
|
'profit_abs': '',
|
||||||
|
'open_time': np.datetime64('2018-10-03T00:20:00.000000000'),
|
||||||
|
'close_time': np.datetime64('2018-10-03T00:25:00.000000000'),
|
||||||
|
'open_index': 4,
|
||||||
|
'close_index': 4,
|
||||||
|
'trade_duration': '',
|
||||||
|
'open_rate': 20,
|
||||||
|
'close_rate': 10,
|
||||||
|
'exit_type': 'sell_signal'},
|
||||||
|
{'pair': 'TEST/BTC',
|
||||||
|
'stoploss': -0.9,
|
||||||
|
'profit_percent': '',
|
||||||
|
'profit_abs': '',
|
||||||
|
'open_time': np.datetime64('2018-10-03T00:20:00.000000000'),
|
||||||
|
'close_time': np.datetime64('2018-10-03T00:25:00.000000000'),
|
||||||
|
'open_index': 4,
|
||||||
|
'close_index': 4,
|
||||||
|
'trade_duration': '',
|
||||||
|
'open_rate': 20,
|
||||||
|
'close_rate': 10,
|
||||||
|
'exit_type': 'sell_signal'},
|
||||||
|
{'pair': 'TEST/BTC',
|
||||||
|
'stoploss': -0.9,
|
||||||
|
'profit_percent': '',
|
||||||
|
'profit_abs': '',
|
||||||
|
'open_time': np.datetime64('2018-10-03T00:20:00.000000000'),
|
||||||
|
'close_time': np.datetime64('2018-10-03T00:25:00.000000000'),
|
||||||
|
'open_index': 4,
|
||||||
|
'close_index': 4,
|
||||||
|
'trade_duration': '',
|
||||||
|
'open_rate': 20,
|
||||||
|
'close_rate': 10,
|
||||||
|
'exit_type': 'sell_signal'},
|
||||||
|
{'pair': 'TEST/BTC',
|
||||||
|
'stoploss': -0.9,
|
||||||
|
'profit_percent': '',
|
||||||
|
'profit_abs': '',
|
||||||
|
'open_time': np.datetime64('2018-10-03T00:20:00.000000000'),
|
||||||
|
'close_time': np.datetime64('2018-10-03T00:25:00.000000000'),
|
||||||
|
'open_index': 4,
|
||||||
|
'close_index': 4,
|
||||||
|
'trade_duration': '',
|
||||||
|
'open_rate': 20,
|
||||||
|
'close_rate': 10,
|
||||||
|
'exit_type': 'sell_signal'},
|
||||||
|
|
||||||
|
{'pair': 'TEST/BTC',
|
||||||
|
'stoploss': -0.9,
|
||||||
|
'profit_percent': '',
|
||||||
|
'profit_abs': '',
|
||||||
|
'open_time': np.datetime64('2018-10-03T00:30:00.000000000'),
|
||||||
|
'close_time': np.datetime64('2018-10-03T00:40:00.000000000'),
|
||||||
|
'open_index': 6,
|
||||||
|
'close_index': 7,
|
||||||
|
'trade_duration': '',
|
||||||
|
'open_rate': 26,
|
||||||
|
'close_rate': 134,
|
||||||
|
'exit_type': 'sell_signal'}
|
||||||
|
]
|
||||||
|
|
||||||
|
trades_df = DataFrame(trades)
|
||||||
|
trades_df = edge._fill_calculable_fields(trades_df)
|
||||||
|
final = edge._process_expectancy(trades_df)
|
||||||
|
|
||||||
|
assert 'TEST/BTC' in final
|
||||||
|
assert final['TEST/BTC'].stoploss == -0.9
|
||||||
|
assert final['TEST/BTC'].nb_trades == len(trades_df) - 1
|
||||||
|
assert round(final['TEST/BTC'].winrate, 10) == 0.0
|
||||||
|
Loading…
Reference in New Issue
Block a user