我在学习backtrader库的时候,自定义的一个全新的MACD指标,指标需要的参数是提前算好写在CSV文件里的。新建指标的时候直接从CSV里读取。
class MacdNew(bt.Indicator): #自定义全新MACD指标
lines = ('diff', 'dea','macd')
#colors_bar = np.where(data.macd_bar.values > 0, 'red', 'green')
setcolor = None
plotinfo = dict(plot=True,plotname='MACD',plotabove=False,subplot=True)
plotlines = dict(macd=dict(_method='bar', alpha=0.50, width=0.8,color=setcolor),
diff=dict(color='black',linewidth=0.8),
dea=dict(color='blue',linewidth=0.8))
def __init__(self):
self.lines.diff = self.data.diff
self.lines.dea = self.data.dea
self.lines.macd = self.data.macd_bar
MacdNew.setcolor = 'red'
该指标里有三根线,diff,dea,macd。macd就是指MACD指标的红绿柱bar。我想让红绿柱根据bar值的正负,显示对应的红与绿。不知道应该怎么写简单:
(已经扩展了class PandasData_macd(PandasData)库 #扩展PandasData线
class PandasData_macd(PandasData): #扩展PandasData线
lines = ('diff','dea','macd_bar',)
params = (('diff',8),('dea',9),('macd_bar',10))
在尝试解决这个问题的时候,我在从bt.Indicator继承的MacdNew类(自定义的指标)里面,先写上类属性:
setcolor=None
然后在class MacdNew(bt.Indicator)类的init初始化里面给这个类属性赋值'red':
class MacdNew(bt.Indicator): #自定义MACD指标
lines = ('diff', 'dea','macd')
#colors_bar = np.where(data.macd_bar.values > 0, 'red', 'green')
setcolor = None
plotinfo = dict(plot=True,plotname='MACD',plotabove=False,subplot=True)
plotlines = dict(macd=dict(_method='bar', alpha=0.50, width=0.8,color=setcolor),diff=dict(color='black',linewidth=0.8),dea=dict(color='blue',linewidth=0.8))
def __init__(self):
self.lines.diff = self.data.diff
self.lines.dea = self.data.dea
self.lines.macd = self.data.macd_bar
MacdNew.setcolor = 'red'
在策略库运行的时候,
class MyStrategy(bt.Strategy):
params = (('myparam', 27), ('exitbars', 5),('maperiod',[5,20,30]),('fast_period',6),('slow_period',10))
def log(self,txt,dt=None):
dt = dt or self.datas[0].datetime.date(0)
print('%s %s' % (dt.isoformat(),txt))
def __init__(self):
self.order = None
self.buyprice = None
self.buycomm = None
self.macd = MacdNew()
并没有将:MacdNew.setcolor = 'red',赋值给自定义指标中: plotlines = dict(macd=dict(_method='bar', alpha=0.50, width=0.8,color=setcolor)的setcolor。
请指教:在backtrader的全新自定义MACD指标(指标提前算好在CSV文件)里,如何根据bar柱值的正负,显示相对应的红绿色?