fixed error checking

This commit is contained in:
Jonathan Raviotta 2019-09-04 20:56:25 -04:00
parent a82b87fcae
commit 021791e2c8
3 changed files with 36 additions and 52 deletions

View File

@ -128,9 +128,9 @@ def load_pair_history(pair: str,
drop_incomplete=drop_incomplete) drop_incomplete=drop_incomplete)
else: else:
logger.warning( logger.warning(
f'No history data for pair: "{pair}", interval: {ticker_interval}. ' f'No history data for pair: "{pair}", interval: {ticker_interval}, in {datadir}. '
'Use --refresh-pairs-cached option or `freqtrade download-data` ' 'Provide the correct path to datadir in config.json, or download data with '
'script to download the data' '--refresh-pairs-cached option or `freqtrade download-data`. '
) )
return None return None

View File

@ -3,7 +3,6 @@ Various tool function for Freqtrade and scripts
""" """
import gzip import gzip
import logging import logging
from os import chdir
import re import re
from datetime import datetime from datetime import datetime
from pathlib import Path from pathlib import Path
@ -115,23 +114,3 @@ def deep_merge_dicts(source, destination):
destination[key] = value destination[key] = value
return destination return destination
def find_project_root(path=None):
"""Locates root directory of the project.
Root is defined by existence of "LICENSE" and the dir 'freqtrade'.
:param path: pathlib.Path object, or string pointing to project root directory.
:return: path to project root directory
"""
if path is None:
path = Path(__file__).parent
i = 0
try:
chdir(path)
assert Path('LICENSE').is_file() and Path('freqtrade').exists()
except AssertionError:
while i < 5 and not (Path(path, 'LICENSE').is_file() and Path(path, 'freqtrade').exists()):
path = Path(path).parent
i += 1
logger.info(f'project_root is {path}')
return path

View File

@ -3,7 +3,7 @@ from pathlib import Path
from typing import Any, Dict, List from typing import Any, Dict, List
import pandas as pd import pandas as pd
from freqtrade import OperationalException
from freqtrade.configuration import TimeRange from freqtrade.configuration import TimeRange
from freqtrade.data import history from freqtrade.data import history
from freqtrade.data.btanalysis import (combine_tickers_with_mean, from freqtrade.data.btanalysis import (combine_tickers_with_mean,
@ -33,24 +33,29 @@ def init_plotscript(config):
pairs = config["pairs"] pairs = config["pairs"]
else: else:
pairs = config["exchange"]["pair_whitelist"] pairs = config["exchange"]["pair_whitelist"]
assert pairs is not None, ('No pairs available in config.') if pairs is None:
raise OperationalException('No pairs available in config.')
# Set timerange to use # Set timerange to use
timerange = TimeRange.parse_timerange(config.get("timerange")) timerange = TimeRange.parse_timerange(config.get("timerange"))
if timerange is None:
raise OperationalException('Could not parse timerange in config.')
tickers = history.load_data( tickers = history.load_data(
datadir=Path(config.get("datadir"), config.get("exchange").get("name")), datadir=Path(str(config.get("datadir"))),
pairs=pairs, pairs=pairs,
ticker_interval=config.get('ticker_interval', '5m'), ticker_interval=config.get('ticker_interval', '5m'),
timerange=timerange, timerange=timerange,
) )
assert tickers is not None, ('No ticker data available as specified in config.') if tickers is None:
raise OperationalException('No ticker data available as specified in config.')
trades = load_trades(config['trade_source'], trades = load_trades(config['trade_source'],
db_url=config.get('db_url'), db_url=config.get('db_url'),
exportfilename=config.get('exportfilename'), exportfilename=config.get('exportfilename'),
) )
assert trades is not None, ('No trades available as specified in config.') if trades is None:
raise OperationalException('No trades available as specified in config.')
return {"tickers": tickers, return {"tickers": tickers,
"trades": trades, "trades": trades,
@ -342,34 +347,34 @@ def load_and_plot_trades(config: Dict[str, Any]):
plot_elements = init_plotscript(config) plot_elements = init_plotscript(config)
trades = plot_elements['trades'] trades = plot_elements['trades']
if trades is None: # if trades is None:
raise ValueError('No trades to analyze') # # raise ValueError('No trades to analyze')
else: # else:
pair_counter = 0 pair_counter = 0
for pair, data in plot_elements["tickers"].items(): for pair, data in plot_elements["tickers"].items():
pair_counter += 1 pair_counter += 1
logger.info("analyse pair %s", pair) logger.info("analyse pair %s", pair)
tickers = {} tickers = {}
tickers[pair] = data tickers[pair] = data
dataframe = strategy.analyze_ticker(tickers[pair], {'pair': pair}) dataframe = strategy.analyze_ticker(tickers[pair], {'pair': pair})
logger.debug(f'pair: {pair}') logger.debug(f'pair: {pair}')
trades_pair = trades.loc[trades['pair'] == pair] trades_pair = trades.loc[trades['pair'] == pair]
trades_pair = extract_trades_of_period(dataframe, trades_pair) trades_pair = extract_trades_of_period(dataframe, trades_pair)
fig = generate_candlestick_graph( fig = generate_candlestick_graph(
pair=pair, pair=pair,
data=dataframe, data=dataframe,
trades=trades_pair, trades=trades_pair,
indicators1=config["indicators1"], indicators1=config["indicators1"],
indicators2=config["indicators2"], indicators2=config["indicators2"],
) )
store_plot_file(fig, filename=generate_plot_filename(pair, config['ticker_interval']), store_plot_file(fig, filename=generate_plot_filename(pair, config['ticker_interval']),
directory=config['user_data_dir'] / "plot") directory=config['user_data_dir'] / "plot")
logger.info('End of plotting process. %s plots generated', pair_counter) logger.info('End of plotting process. %s plots generated', pair_counter)
def plot_profit(config: Dict[str, Any]) -> None: def plot_profit(config: Dict[str, Any]) -> None: