mplfinance
mplfinance copied to clipboard
How to add Horizontal Line in make_addplot? make_addplot(rsi,panel='lower',color='g',hlines=[20,80])
I have this code.
apds = [mpf.make_addplot(buy_signal,scatter=True,markersize=100,marker='^'),
mpf.make_addplot(sell_signal,scatter=True,markersize=100,marker='v'),
mpf.make_addplot(close_signal,scatter=True,markersize=100,marker='o'),
mpf.make_addplot(rsi,panel='lower',color='g',hlines=[20,80])
mpf.plot(self.df,addplot=apds,figscale=2,volume=False,type = type,
title= str(self.info)
)
I want to put a horizontal line for my RSI. But there is a kwargs error which says hline is not found.
hlines
is a kwarg to mpf.plot()
( not to mplf.make_addplot()
)
Presently all of the lines kwargs (hlines
,vlines
, tlines
, alines
) assume the main panel axes.
I was thinking to add a panel
kwarg to the lines dict, rather than have the kwarg available to addplot.
I will come up with something, and include it in my next pull request, which I hope to make by the end of this week.
In the meantime you can accomplish a horizontal line on the lower panel by creating a sequence of data points all the same value, and passing that as the data for a different make_addplot()
call.
oh nice! Thanks for the advice ill do it.
Done it! woot!
apds = [mpf.make_addplot(buy_signal,scatter=True,markersize=100,marker='^'),
mpf.make_addplot(sell_signal,scatter=True,markersize=100,marker='v'),
mpf.make_addplot(close_signal,scatter=True,markersize=100,marker='o'),
mpf.make_addplot(line80,panel='lower',color='r'),
mpf.make_addplot(line20,panel='lower',color='g'),
mpf.make_addplot(rsi,panel='lower',color='g') ]
Nice chart! Thanks for sharing!
@toksis, You should use secondary_y
. Your RSI plot and lines have a different axis.
apds = [mpf.make_addplot(buy_signal,scatter=True,markersize=100,marker='^'),
mpf.make_addplot(sell_signal,scatter=True,markersize=100,marker='v'),
mpf.make_addplot(close_signal,scatter=True,markersize=100,marker='o'),
mpf.make_addplot(line80,panel='lower',color='r',secondary_y=False),
mpf.make_addplot(line20,panel='lower',color='g',secondary_y=False),
mpf.make_addplot(rsi,panel='lower',color='g',secondary_y=False)
]
Perfect! I thought its a limitation
Nice chart! Thanks for sharing!
Done it! woot!
apds = [mpf.make_addplot(buy_signal,scatter=True,markersize=100,marker='^'), mpf.make_addplot(sell_signal,scatter=True,markersize=100,marker='v'), mpf.make_addplot(close_signal,scatter=True,markersize=100,marker='o'), mpf.make_addplot(line80,panel='lower',color='r'), mpf.make_addplot(line20,panel='lower',color='g'), mpf.make_addplot(rsi,panel='lower',color='g') ]
I have a few questions on this:
- is line80 and line20 a series or a single int/float value?
- you have "panel='lower'", from documentation i have been reading, shouldn't that be an integer value indicating the index of the panel?
- you have "scatter = True", should that be now type = "Scatter"
I prefer this method of adding horizontal or vertical lines as it's line with keeping all plots as some sort of series..as opposed to adding an argument to the plot or add_plot functions. It also helps when trying to write generic code for plotting any type of series.
line80/line20 => a series of y values