Merge pull request #2527 from freqtrade/fix/openorder_plotprofit
plot-profit script fails in certain conditions
This commit is contained in:
commit
904a9c5dc7
@ -50,16 +50,20 @@ def trim_tickerlist(tickerlist: List[Dict], timerange: TimeRange) -> List[Dict]:
|
|||||||
return tickerlist[start_index:stop_index]
|
return tickerlist[start_index:stop_index]
|
||||||
|
|
||||||
|
|
||||||
def trim_dataframe(df: DataFrame, timerange: TimeRange) -> DataFrame:
|
def trim_dataframe(df: DataFrame, timerange: TimeRange, df_date_col: str = 'date') -> DataFrame:
|
||||||
"""
|
"""
|
||||||
Trim dataframe based on given timerange
|
Trim dataframe based on given timerange
|
||||||
|
:param df: Dataframe to trim
|
||||||
|
:param timerange: timerange (use start and end date if available)
|
||||||
|
:param: df_date_col: Column in the dataframe to use as Date column
|
||||||
|
:return: trimmed dataframe
|
||||||
"""
|
"""
|
||||||
if timerange.starttype == 'date':
|
if timerange.starttype == 'date':
|
||||||
start = datetime.fromtimestamp(timerange.startts, tz=timezone.utc)
|
start = datetime.fromtimestamp(timerange.startts, tz=timezone.utc)
|
||||||
df = df.loc[df['date'] >= start, :]
|
df = df.loc[df[df_date_col] >= start, :]
|
||||||
if timerange.stoptype == 'date':
|
if timerange.stoptype == 'date':
|
||||||
stop = datetime.fromtimestamp(timerange.stopts, tz=timezone.utc)
|
stop = datetime.fromtimestamp(timerange.stopts, tz=timezone.utc)
|
||||||
df = df.loc[df['date'] <= stop, :]
|
df = df.loc[df[df_date_col] <= stop, :]
|
||||||
return df
|
return df
|
||||||
|
|
||||||
|
|
||||||
|
@ -47,7 +47,7 @@ def init_plotscript(config):
|
|||||||
db_url=config.get('db_url'),
|
db_url=config.get('db_url'),
|
||||||
exportfilename=config.get('exportfilename'),
|
exportfilename=config.get('exportfilename'),
|
||||||
)
|
)
|
||||||
|
trades = history.trim_dataframe(trades, timerange, 'open_time')
|
||||||
return {"tickers": tickers,
|
return {"tickers": tickers,
|
||||||
"trades": trades,
|
"trades": trades,
|
||||||
"pairs": pairs,
|
"pairs": pairs,
|
||||||
@ -377,12 +377,14 @@ def plot_profit(config: Dict[str, Any]) -> None:
|
|||||||
in helping out to find a good algorithm.
|
in helping out to find a good algorithm.
|
||||||
"""
|
"""
|
||||||
plot_elements = init_plotscript(config)
|
plot_elements = init_plotscript(config)
|
||||||
trades = load_trades(config['trade_source'],
|
trades = plot_elements['trades']
|
||||||
db_url=str(config.get('db_url')),
|
|
||||||
exportfilename=str(config.get('exportfilename')),
|
|
||||||
)
|
|
||||||
# Filter trades to relevant pairs
|
# Filter trades to relevant pairs
|
||||||
trades = trades[trades['pair'].isin(plot_elements["pairs"])]
|
# Remove open pairs - we don't know the profit yet so can't calculate profit for these.
|
||||||
|
# Also, If only one open pair is left, then the profit-generation would fail.
|
||||||
|
trades = trades[(trades['pair'].isin(plot_elements["pairs"]))
|
||||||
|
& (~trades['close_time'].isnull())
|
||||||
|
]
|
||||||
|
|
||||||
# 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
|
||||||
fig = generate_profit_graph(plot_elements["pairs"], plot_elements["tickers"],
|
fig = generate_profit_graph(plot_elements["pairs"], plot_elements["tickers"],
|
||||||
|
Loading…
Reference in New Issue
Block a user