mirror of
https://github.com/freqtrade/freqtrade.git
synced 2026-01-30 02:41:12 +00:00
Add trades-generator
This commit is contained in:
@@ -3,7 +3,7 @@ import json
|
||||
import logging
|
||||
import re
|
||||
from copy import deepcopy
|
||||
from datetime import timedelta
|
||||
from datetime import datetime, timedelta, timezone
|
||||
from pathlib import Path
|
||||
from typing import Optional
|
||||
from unittest.mock import MagicMock, Mock, PropertyMock
|
||||
@@ -22,8 +22,7 @@ from freqtrade.exchange import Exchange, timeframe_to_minutes, timeframe_to_seco
|
||||
from freqtrade.freqtradebot import FreqtradeBot
|
||||
from freqtrade.persistence import LocalTrade, Order, Trade, init_db
|
||||
from freqtrade.resolvers import ExchangeResolver
|
||||
from freqtrade.util import dt_ts
|
||||
from freqtrade.util.datetime_helpers import dt_now
|
||||
from freqtrade.util import dt_now, dt_ts
|
||||
from freqtrade.worker import Worker
|
||||
from tests.conftest_trades import (leverage_trade, mock_trade_1, mock_trade_2, mock_trade_3,
|
||||
mock_trade_4, mock_trade_5, mock_trade_6, short_trade)
|
||||
@@ -106,6 +105,40 @@ def get_args(args):
|
||||
return Arguments(args).get_parsed_arg()
|
||||
|
||||
|
||||
def generate_trades_history(n_rows, start_date: Optional[datetime] = None, days=5):
|
||||
np.random.seed(42)
|
||||
if not start_date:
|
||||
start_date = datetime(2020, 1, 1, tzinfo=timezone.utc)
|
||||
|
||||
# Generate random data
|
||||
end_date = start_date + timedelta(days=days)
|
||||
_start_timestamp = start_date.timestamp()
|
||||
_end_timestamp = pd.to_datetime(end_date).timestamp()
|
||||
|
||||
random_timestamps_in_seconds = np.random.uniform(_start_timestamp, _end_timestamp, n_rows)
|
||||
timestamp = pd.to_datetime(random_timestamps_in_seconds, unit='s')
|
||||
|
||||
id = [f'a{np.random.randint(1e6, 1e7-1)}cd{np.random.randint(100, 999)}' for _ in range(n_rows)]
|
||||
|
||||
side = np.random.choice(['buy', 'sell'], n_rows)
|
||||
|
||||
# Initial price and subsequent changes
|
||||
initial_price = 0.019626
|
||||
price_changes = np.random.normal(0, initial_price * 0.05, n_rows)
|
||||
price = np.cumsum(np.concatenate(([initial_price], price_changes)))[:n_rows]
|
||||
|
||||
amount = np.random.uniform(0.011, 20, n_rows)
|
||||
cost = price * amount
|
||||
|
||||
# Create DataFrame
|
||||
df = pd.DataFrame({'timestamp': timestamp, 'id': id, 'type': None, 'side': side,
|
||||
'price': price, 'amount': amount, 'cost': cost})
|
||||
df['date'] = pd.to_datetime(df['timestamp'], unit='ms', utc=True)
|
||||
df = df.sort_values('timestamp').reset_index(drop=True)
|
||||
assert list(df.columns) == constants.DEFAULT_TRADES_COLUMNS + ['date']
|
||||
return df
|
||||
|
||||
|
||||
def generate_test_data(timeframe: str, size: int, start: str = '2020-07-05'):
|
||||
np.random.seed(42)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user