mirror of
https://github.com/freqtrade/freqtrade.git
synced 2025-12-17 05:11:15 +00:00
tests: removes cached and stratgey specific tests
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user