tests: removes cached and stratgey specific tests

This commit is contained in:
Joe Schr
2023-05-03 12:22:30 +02:00
parent 0796bfadd5
commit bdca2ac96f

View File

@@ -90,116 +90,6 @@ def test_public_trades_columns_before_change(populate_dataframe_with_trades_data
'amount', 'cost', 'date']
def load_entries_from_strategy(filepath: str,
*,
from_date: str = '',
configpath: str = "../volumio-strategy/user_data/config.json"):
from freqtrade.data.dataprovider import DataProvider
from freqtrade.resolvers import StrategyResolver
"""Load candle data from a file"""
dataframe = pd.read_feather(f'{filepath}')
# Convert date column to datetime
# dataframe['date'] = pd.to_datetime(dataframe['date'])
config = Configuration.from_files([configpath])
# Define some constants
config["timeframe"] = "1m"
# Name of the strategy class
config["strategy"] = "Volumio"
# Pair to analyze - Only use one pair here
pair = "BTC/USDT:USDT"
# Load data
candle_df = dataframe if (
not from_date) else dataframe.loc[dataframe.date > from_date]
# data from before we had imbalances
if 'stacked_imbalances_bid' not in candle_df.columns:
candle_df[['stacked_imbalances_bid',
'stacked_imbalances_ask']] = np.nan
load_strategy = StrategyResolver.load_strategy(config)
dataprovider = DataProvider(config, None, None)
load_strategy.dp = dataprovider
metadata = {'pair': pair}
df = load_strategy.populate_entry_trend(
load_strategy.populate_indicators(candle_df, metadata), metadata)
plot_config = load_strategy.plot_config
return (df, plot_config, pair)
def test_strategy_entries():
from freqtrade.plot.plotting import generate_candlestick_graph
"""
# for debug/adding new entries
print(df.date.loc[df.is_enter_long>0])
print(df.date.loc[df.is_enter_short>0])
"""
df, plot_config, pair = load_entries_from_strategy(
'tests/testdata/populate_indicators_dataframe-doubletop.feather') # '2023-03-25 09:30:00+00:00')
graph = generate_candlestick_graph(pair=pair,
data=df,
plot_config=plot_config,
).show()
assert df['enter_long'].sum() > 0
assert df['enter_short'].sum() > 0
# 15:39 #4 "double top" entry
assert df.loc[(865 < df.index) & (df.index <= 872)
]['enter_short'].sum() > 0
# 16:02 #5 strong hidden & regular divergences with reversal
assert df.loc[(893 == df.index)]['enter_short'].sum() > 0
# 17:08 #5 strong hidden & regular divergences with reversal
assert df.loc[(957 <= df.index) & (df.index <= 962)
]['enter_short'].sum() > 0
df, plot_config, pair = load_entries_from_strategy(
'tests/testdata/populate_indicators_dataframe-choppy.feather') # '2023-03-25 09:30:00+00:00')
graph = generate_candlestick_graph(pair=pair,
data=df,
plot_config=plot_config,
).show()
assert df['enter_long'].sum() > 0
assert df['enter_short'].sum() > 0
# check good entries
# 11:10
assert df.iloc[565]['enter_short'] == 1
# 06:16
assert df.loc[(271 < df.index) & (df.index < 273)]['enter_long'].sum() > 0
# 11:46 #3 below vwap
assert df.loc[(600 < df.index) & (df.index < 610)]['enter_long'].sum() > 0
# 13:07 #2 below 3rd vwap
assert df.loc[(681 < df.index) & (df.index < 690)]['enter_long'].sum() > 0
# 16:18
assert df.loc[(873 < df.index) & (df.index <= 878)]['enter_long'].sum() > 0
# 15:52
assert df.loc[(845 < df.index) & (df.index <= 850)
]['enter_short'].sum() > 0
df, plot_config, pair = load_entries_from_strategy(
'tests/testdata/populate_indicators_dataframe-downtrend.feather') # '2023-03-25 09:30:00+00:00')
graph = generate_candlestick_graph(pair=pair,
data=df,
plot_config=plot_config,
).show()
assert df['enter_long'].sum() > 0
assert df['enter_short'].sum() > 0
# 07:50
assert df.loc[(451 < df.index) & (df.index < 500)]['enter_long'].sum() > 0
df, plot_config, pair = load_entries_from_strategy(
'tests/testdata/populate_indicators_dataframe-uptrend.feather') # '2023-03-25 09:30:00+00:00')
graph = generate_candlestick_graph(pair=pair,
data=df,
plot_config=plot_config,
).show()
assert df['enter_long'].sum() > 0
assert df['enter_short'].sum() > 0
# 09:23 - 11:55 long period of consolidation, then strong uptrend
assert df.loc[(780 < df.index) & (df.index < 830)]['enter_long'].sum() > 0
def test_public_trades_mock_populate_dataframe_with_trades__check_orderflow(
populate_dataframe_with_trades_dataframe,
populate_dataframe_with_trades_trades):
@@ -293,48 +183,6 @@ def test_public_trades_trades_mock_populate_dataframe_with_trades__check_trades(
assert 24229.1 == t['price']
def test_public_trades_cached_grouped_trades_pair(
populate_dataframe_with_trades_dataframe, populate_dataframe_with_trades_trades):
import time
# slice of unnecessary trades
dataframe_before = populate_dataframe_with_trades_dataframe.copy().head(
20).reset_index(drop=True)
dataframe_before['date'] = pd.to_datetime(
dataframe_before['date'], unit='ms').dt.tz_localize('UTC')
dataframe_next = populate_dataframe_with_trades_dataframe.copy().head(
25).reset_index(drop=True)
dataframe_next = dataframe_next.tail(24).reset_index(drop=True)
dataframe_next['date'] = pd.to_datetime(
dataframe_next['date'], unit='ms').dt.tz_localize('UTC')
trades = populate_dataframe_with_trades_trades.copy()
trades = trades.loc[trades.date >= dataframe_before.date[0]]
trades = trades.loc[trades.date <= dataframe_before.iloc[-1].date]
trades.reset_index(inplace=True, drop=True)
start_time_before = time.time()
config = {
'timeframe': '5m',
'orderflow': {'scale': 0.5, 'imbalance_volume': 0, 'imbalance_ratio': 300, 'stacked_imbalance_range': 3}
}
df = populate_dataframe_with_trades(config,
dataframe_before, trades, pair='unitttest')
end_time_before = time.time() - start_time_before
# TODO: assert trades and delta received
trades = populate_dataframe_with_trades_trades.copy()
trades = trades.loc[trades.date >= dataframe_next.date[0]]
trades = trades.loc[trades.date <= dataframe_next.iloc[-1].date]
trades.reset_index(inplace=True, drop=True)
start_time_next = time.time()
df = populate_dataframe_with_trades(config,
dataframe_next, trades, pair='unitttest')
end_time_next = time.time() - start_time_next
# TODO: assert trades and delta received
assert end_time_next < end_time_before
def test_public_trades_put_volume_profile_into_ohlcv_candles(public_trades_list_simple, candles):
df = public_trades_to_dataframe(
public_trades_list_simple, '1m', 'doesntmatter', fill_missing=False, drop_incomplete=False)