diff --git a/freqtrade/plot/plotting.py b/freqtrade/plot/plotting.py index f7d300593..ec0d53a0b 100644 --- a/freqtrade/plot/plotting.py +++ b/freqtrade/plot/plotting.py @@ -236,12 +236,20 @@ def create_plotconfig(indicators1: List[str], indicators2: List[str], :param plot_config: Dict of Dicts containing advanced plot configuration :return: plot_config - eventually with indicators 1 and 2 """ - if plot_config: if indicators1: - plot_config['main_plot'] = {ind: {} for ind in indicators1} + for ind in indicators1: + #add indicators with no advanced plot_config. + if ind not in plot_config['main_plot'].keys(): + plot_config['main_plot'][ind] = {} if indicators2: - plot_config['subplots'] = {'Other': {ind: {} for ind in indicators2}} + #'Other' key not provided in strategy.plot_config. + if 'Other' not in plot_config['subplots'].keys(): + plot_config['subplots'] = {'Other': plot_config['subplots']} + for ind in indicators2: + #add indicators with no advanced plot_config + if ind not in plot_config['subplots']['Other'].keys(): + plot_config['subplots']['Other'][ind] = {} if not plot_config: # If no indicators and no plot-config given, use defaults. @@ -255,6 +263,8 @@ def create_plotconfig(indicators1: List[str], indicators2: List[str], 'main_plot': {ind: {} for ind in indicators1}, 'subplots': {'Other': {ind: {} for ind in indicators2}}, } + + #!!!NON SENSE - isnt it? if 'main_plot' not in plot_config: plot_config['main_plot'] = {} @@ -280,6 +290,7 @@ def generate_candlestick_graph(pair: str, data: pd.DataFrame, trades: pd.DataFra :return: Plotly figure """ plot_config = create_plotconfig(indicators1, indicators2, plot_config) + print(plot_config) rows = 2 + len(plot_config['subplots']) row_widths = [1 for _ in plot_config['subplots']] @@ -370,6 +381,29 @@ def generate_candlestick_graph(pair: str, data: pd.DataFrame, trades: pd.DataFra del plot_config['main_plot']['bb_upperband'] del plot_config['main_plot']['bb_lowerband'] + #fill area betwenn traces i.e. for ichimoku + if 'fill_area' in plot_config.keys(): + for area in plot_config['fill_area']: + #!error: need exactly 2 trace + traces = area['traces'] + color = area['color'] + if traces[0] in data and traces[1] in data: + trace_b = go.Scatter( + x=data.date, + y=data.get(traces[0]), + showlegend=False, + line={'color': 'rgba(255,255,255,0)'}, + ) + trace_a = go.Scatter( + x=data.date, + y=data.get(traces[1]), + name=f'{traces[0]} * {traces[1]}', + fill="tonexty", + fillcolor=color, + line={'color': 'rgba(255,255,255,0)'}, + ) + fig.add_trace(trace_b) + fig.add_trace(trace_a) # Add indicators to main plot fig = add_indicators(fig=fig, row=1, indicators=plot_config['main_plot'], data=data)