From e4b08e960853af790ae8c1556c0c0ae7b4df8cab Mon Sep 17 00:00:00 2001 From: Peter Adam Korodi Date: Wed, 16 May 2018 16:46:53 +0200 Subject: [PATCH] Show trades stored in db on the graph --- freqtrade/arguments.py | 7 +++++++ scripts/plot_dataframe.py | 40 ++++++++++++++++++++++++++++++++++++++- 2 files changed, 46 insertions(+), 1 deletion(-) diff --git a/freqtrade/arguments.py b/freqtrade/arguments.py index 357bcb937..afcb05511 100644 --- a/freqtrade/arguments.py +++ b/freqtrade/arguments.py @@ -260,6 +260,13 @@ class Arguments(object): default=None ) + self.parser.add_argument( + '-db', '--db-url', + help='Show trades stored in database.', + dest='db_url', + default=None + ) + def testdata_dl_options(self) -> None: """ Parses given arguments for testdata download diff --git a/scripts/plot_dataframe.py b/scripts/plot_dataframe.py index 6d14fb596..fe15358bd 100755 --- a/scripts/plot_dataframe.py +++ b/scripts/plot_dataframe.py @@ -26,8 +26,13 @@ from freqtrade.analyze import Analyze from freqtrade import exchange import freqtrade.optimize as optimize -logger = logging.getLogger(__name__) +from typing import Dict, List, Any +from freqtrade import persistence +from sqlalchemy import create_engine +from freqtrade.persistence import Trade +logger = logging.getLogger(__name__) +_CONF: Dict[str, Any] = {} def plot_analyzed_dataframe(args: Namespace) -> None: """ @@ -68,6 +73,12 @@ def plot_analyzed_dataframe(args: Namespace) -> None: dataframe = analyze.populate_buy_trend(dataframe) dataframe = analyze.populate_sell_trend(dataframe) + trades = {} + if args.db_url: + engine = create_engine('sqlite:///' + args.db_url) + persistence.init(_CONF, engine) + trades = Trade.query.filter(Trade.pair.is_(pair)).all() + if len(dataframe.index) > 750: logger.warning('Ticker contained more than 750 candles, clipping.') data = dataframe.tail(750) @@ -108,6 +119,31 @@ def plot_analyzed_dataframe(args: Namespace) -> None: ) ) + trade_buys = go.Scattergl( + x=[t.open_date.isoformat() for t in trades], + y=[t.open_rate for t in trades], + mode='markers', + name='trade_buy', + marker=dict( + symbol='square-open', + size=11, + line=dict(width=2), + color='green' + ) + ) + trade_sells = go.Scattergl( + x=[t.close_date.isoformat() for t in trades], + y=[t.close_rate for t in trades], + mode='markers', + name='trade_sell', + marker=dict( + symbol='square-open', + size=11, + line=dict(width=2), + color='red' + ) + ) + bb_lower = go.Scatter( x=data.date, y=data.bb_lowerband, @@ -142,6 +178,8 @@ def plot_analyzed_dataframe(args: Namespace) -> None: fig.append_trace(volume, 2, 1) fig.append_trace(macd, 3, 1) fig.append_trace(macdsignal, 3, 1) + fig.append_trace(trade_buys, 1, 1) + fig.append_trace(trade_sells, 1, 1) fig['layout'].update(title=args.pair) fig['layout']['yaxis1'].update(title='Price')