Refactor generic data generation to conftest
This commit is contained in:
parent
b0eff4160f
commit
9b1fb02df8
@ -10,6 +10,7 @@ from unittest.mock import MagicMock, Mock, PropertyMock
|
|||||||
|
|
||||||
import arrow
|
import arrow
|
||||||
import numpy as np
|
import numpy as np
|
||||||
|
import pandas as pd
|
||||||
import pytest
|
import pytest
|
||||||
from telegram import Chat, Message, Update
|
from telegram import Chat, Message, Update
|
||||||
|
|
||||||
@ -19,6 +20,7 @@ from freqtrade.data.converter import ohlcv_to_dataframe
|
|||||||
from freqtrade.edge import PairInfo
|
from freqtrade.edge import PairInfo
|
||||||
from freqtrade.enums import CandleType, MarginMode, RunMode, SignalDirection, TradingMode
|
from freqtrade.enums import CandleType, MarginMode, RunMode, SignalDirection, TradingMode
|
||||||
from freqtrade.exchange import Exchange
|
from freqtrade.exchange import Exchange
|
||||||
|
from freqtrade.exchange.exchange import timeframe_to_minutes
|
||||||
from freqtrade.freqtradebot import FreqtradeBot
|
from freqtrade.freqtradebot import FreqtradeBot
|
||||||
from freqtrade.persistence import LocalTrade, Order, Trade, init_db
|
from freqtrade.persistence import LocalTrade, Order, Trade, init_db
|
||||||
from freqtrade.resolvers import ExchangeResolver
|
from freqtrade.resolvers import ExchangeResolver
|
||||||
@ -82,6 +84,26 @@ def get_args(args):
|
|||||||
return Arguments(args).get_parsed_arg()
|
return Arguments(args).get_parsed_arg()
|
||||||
|
|
||||||
|
|
||||||
|
def generate_test_data(timeframe: str, size: int, start: str = '2020-07-05'):
|
||||||
|
np.random.seed(42)
|
||||||
|
tf_mins = timeframe_to_minutes(timeframe)
|
||||||
|
|
||||||
|
base = np.random.normal(20, 2, size=size)
|
||||||
|
|
||||||
|
date = pd.date_range(start, periods=size, freq=f'{tf_mins}min', tz='UTC')
|
||||||
|
df = pd.DataFrame({
|
||||||
|
'date': date,
|
||||||
|
'open': base,
|
||||||
|
'high': base + np.random.normal(2, 1, size=size),
|
||||||
|
'low': base - np.random.normal(2, 1, size=size),
|
||||||
|
'close': base + np.random.normal(0, 1, size=size),
|
||||||
|
'volume': np.random.normal(200, size=size)
|
||||||
|
}
|
||||||
|
)
|
||||||
|
df = df.dropna()
|
||||||
|
return df
|
||||||
|
|
||||||
|
|
||||||
# Source: https://stackoverflow.com/questions/29881236/how-to-mock-asyncio-coroutines
|
# Source: https://stackoverflow.com/questions/29881236/how-to-mock-asyncio-coroutines
|
||||||
# TODO: This should be replaced with AsyncMock once support for python 3.7 is dropped.
|
# TODO: This should be replaced with AsyncMock once support for python 3.7 is dropped.
|
||||||
def get_mock_coro(return_value=None, side_effect=None):
|
def get_mock_coro(return_value=None, side_effect=None):
|
||||||
|
@ -5,29 +5,8 @@ import pytest
|
|||||||
from freqtrade.data.dataprovider import DataProvider
|
from freqtrade.data.dataprovider import DataProvider
|
||||||
from freqtrade.enums import CandleType
|
from freqtrade.enums import CandleType
|
||||||
from freqtrade.resolvers.strategy_resolver import StrategyResolver
|
from freqtrade.resolvers.strategy_resolver import StrategyResolver
|
||||||
from freqtrade.strategy import (merge_informative_pair, stoploss_from_absolute, stoploss_from_open,
|
from freqtrade.strategy import merge_informative_pair, stoploss_from_absolute, stoploss_from_open
|
||||||
timeframe_to_minutes)
|
from tests.conftest import generate_test_data, get_patched_exchange
|
||||||
from tests.conftest import get_patched_exchange
|
|
||||||
|
|
||||||
|
|
||||||
def generate_test_data(timeframe: str, size: int, start: str = '2020-07-05'):
|
|
||||||
np.random.seed(42)
|
|
||||||
tf_mins = timeframe_to_minutes(timeframe)
|
|
||||||
|
|
||||||
base = np.random.normal(20, 2, size=size)
|
|
||||||
|
|
||||||
date = pd.date_range(start, periods=size, freq=f'{tf_mins}min', tz='UTC')
|
|
||||||
df = pd.DataFrame({
|
|
||||||
'date': date,
|
|
||||||
'open': base,
|
|
||||||
'high': base + np.random.normal(2, 1, size=size),
|
|
||||||
'low': base - np.random.normal(2, 1, size=size),
|
|
||||||
'close': base + np.random.normal(0, 1, size=size),
|
|
||||||
'volume': np.random.normal(200, size=size)
|
|
||||||
}
|
|
||||||
)
|
|
||||||
df = df.dropna()
|
|
||||||
return df
|
|
||||||
|
|
||||||
|
|
||||||
def test_merge_informative_pair():
|
def test_merge_informative_pair():
|
||||||
|
Loading…
Reference in New Issue
Block a user