2020-12-19 16:59:49 +00:00
|
|
|
from datetime import datetime
|
|
|
|
from freqtrade.persistence.models import Trade
|
2018-01-15 08:35:11 +00:00
|
|
|
from pandas import DataFrame
|
2018-03-17 21:44:47 +00:00
|
|
|
|
2020-02-18 19:12:10 +00:00
|
|
|
from .strats.default_strategy import DefaultStrategy
|
2018-01-15 08:35:11 +00:00
|
|
|
|
|
|
|
|
|
|
|
def test_default_strategy_structure():
|
|
|
|
assert hasattr(DefaultStrategy, 'minimal_roi')
|
|
|
|
assert hasattr(DefaultStrategy, 'stoploss')
|
2020-06-02 08:02:55 +00:00
|
|
|
assert hasattr(DefaultStrategy, 'timeframe')
|
2018-01-15 08:35:11 +00:00
|
|
|
assert hasattr(DefaultStrategy, 'populate_indicators')
|
|
|
|
assert hasattr(DefaultStrategy, 'populate_buy_trend')
|
|
|
|
assert hasattr(DefaultStrategy, 'populate_sell_trend')
|
|
|
|
|
2018-01-18 05:50:12 +00:00
|
|
|
|
2020-12-19 16:59:49 +00:00
|
|
|
def test_default_strategy(result, fee):
|
2018-07-16 05:11:17 +00:00
|
|
|
strategy = DefaultStrategy({})
|
2018-01-15 08:35:11 +00:00
|
|
|
|
2018-07-29 19:07:21 +00:00
|
|
|
metadata = {'pair': 'ETH/BTC'}
|
2018-01-15 08:35:11 +00:00
|
|
|
assert type(strategy.minimal_roi) is dict
|
|
|
|
assert type(strategy.stoploss) is float
|
2020-06-02 07:36:04 +00:00
|
|
|
assert type(strategy.timeframe) is str
|
2018-07-29 19:07:21 +00:00
|
|
|
indicators = strategy.populate_indicators(result, metadata)
|
2018-01-15 08:35:11 +00:00
|
|
|
assert type(indicators) is DataFrame
|
2018-07-29 19:07:21 +00:00
|
|
|
assert type(strategy.populate_buy_trend(indicators, metadata)) is DataFrame
|
|
|
|
assert type(strategy.populate_sell_trend(indicators, metadata)) is DataFrame
|
2020-12-19 16:59:49 +00:00
|
|
|
|
|
|
|
trade = Trade(
|
|
|
|
open_rate=19_000,
|
|
|
|
amount=0.1,
|
|
|
|
pair='ETH/BTC',
|
|
|
|
fee_open=fee.return_value
|
|
|
|
)
|
|
|
|
|
|
|
|
assert strategy.confirm_trade_entry(pair='ETH/BTC', order_type='limit', amount=0.1,
|
|
|
|
rate=20000, time_in_force='gtc') is True
|
|
|
|
assert strategy.confirm_trade_exit(pair='ETH/BTC', trade=trade, order_type='limit', amount=0.1,
|
|
|
|
rate=20000, time_in_force='gtc', sell_reason='roi') is True
|
|
|
|
|
|
|
|
assert strategy.stoploss_value(pair='ETH/BTC', trade=trade, current_time=datetime.now(),
|
|
|
|
current_rate=20_000, current_profit=0.05) == strategy.stoploss
|