align plot_profit to plot_dataframe

This commit is contained in:
Matthias 2019-06-30 09:28:49 +02:00
parent 700bab7279
commit c87d27048b

View File

@ -6,27 +6,25 @@ Use `python plot_profit.py --help` to display the command line arguments
""" """
import logging import logging
import sys import sys
from argparse import Namespace
from pathlib import Path from pathlib import Path
from typing import List from typing import Any, Dict, List
import pandas as pd import pandas as pd
import plotly.graph_objs as go import plotly.graph_objs as go
from plotly import tools from plotly import tools
from plotly.offline import plot
from freqtrade.arguments import ARGS_PLOT_PROFIT, Arguments from freqtrade.arguments import ARGS_PLOT_PROFIT, Arguments
from freqtrade.configuration import Configuration
from freqtrade.data import history from freqtrade.data import history
from freqtrade.data.btanalysis import create_cum_profit, load_trades from freqtrade.data.btanalysis import create_cum_profit, load_trades
from freqtrade.plot.plotting import generate_plot_file from freqtrade.optimize import setup_configuration
from freqtrade.resolvers import StrategyResolver from freqtrade.plot.plotting import store_plot_file
from freqtrade.resolvers import ExchangeResolver
from freqtrade.state import RunMode from freqtrade.state import RunMode
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
def plot_profit(args: Namespace) -> None: def plot_profit(config: Dict[str, Any]) -> None:
""" """
Plots the total profit for all pairs. Plots the total profit for all pairs.
Note, the profit calculation isn't realistic. Note, the profit calculation isn't realistic.
@ -34,42 +32,33 @@ def plot_profit(args: Namespace) -> None:
in helping out to find a good algorithm. in helping out to find a good algorithm.
""" """
exchange = ExchangeResolver(config.get('exchange', {}).get('name'), config).exchange
# Take pairs from the cli otherwise switch to the pair in the config file
if "pairs" in config:
pairs = config["pairs"].split(',')
else:
pairs = config["exchange"]["pair_whitelist"]
# We need to use the same pairs and the same ticker_interval # We need to use the same pairs and the same ticker_interval
# as used in backtesting / trading # as used in backtesting / trading
# to match the tickerdata against the results # to match the tickerdata against the results
timerange = Arguments.parse_timerange(args.timerange) timerange = Arguments.parse_timerange(config["timerange"])
config = Configuration(args, RunMode.OTHER).get_config() tickers = history.load_data(
datadir=Path(str(config.get("datadir"))),
# Init strategy pairs=pairs,
strategy = StrategyResolver(config).strategy ticker_interval=config['ticker_interval'],
refresh_pairs=config.get('refresh_pairs', False),
# Take pairs from the cli otherwise switch to the pair in the config file timerange=timerange,
if args.pairs: exchange=exchange,
filter_pairs = args.pairs live=config.get("live", False),
filter_pairs = filter_pairs.split(',') )
else:
filter_pairs = config['exchange']['pair_whitelist']
# Load the profits results # Load the profits results
trades = load_trades(config) trades = load_trades(config)
trades = trades[trades['pair'].isin(filter_pairs)] trades = trades[trades['pair'].isin(pairs)]
ticker_interval = strategy.ticker_interval
pairs = config['exchange']['pair_whitelist']
if filter_pairs:
pairs = list(set(pairs) & set(filter_pairs))
logger.info('Filter, keep pairs %s' % pairs)
tickers = history.load_data(
datadir=Path(str(config.get('datadir'))),
pairs=pairs,
ticker_interval=ticker_interval,
refresh_pairs=False,
timerange=timerange
)
# Create an average close price of all the pairs that were involved. # Create an average close price of all the pairs that were involved.
# this could be useful to gauge the overall market trend # this could be useful to gauge the overall market trend
@ -111,12 +100,12 @@ def plot_profit(args: Namespace) -> None:
) )
fig.append_trace(pair_profit, 3, 1) fig.append_trace(pair_profit, 3, 1)
generate_plot_file(fig, store_plot_file(fig,
filename='freqtrade-profit-plot.html', filename='freqtrade-profit-plot.html',
auto_open=True) auto_open=True)
def plot_parse_args(args: List[str]) -> Namespace: def plot_parse_args(args: List[str]) -> Dict[str, Any]:
""" """
Parse args passed to the script Parse args passed to the script
:param args: Cli arguments :param args: Cli arguments
@ -125,7 +114,11 @@ def plot_parse_args(args: List[str]) -> Namespace:
arguments = Arguments(args, 'Graph profits') arguments = Arguments(args, 'Graph profits')
arguments.build_args(optionlist=ARGS_PLOT_PROFIT) arguments.build_args(optionlist=ARGS_PLOT_PROFIT)
return arguments.parse_args() parsed_args = arguments.parse_args()
# Load the configuration
config = setup_configuration(parsed_args, RunMode.OTHER)
return config
def main(sysargv: List[str]) -> None: def main(sysargv: List[str]) -> None: