如何利用PLot函数在一个公式中同时显示主图指标和副图指标


TBQ中编写一个指标公式,显示一个指标是非常容易的,计算好指标值,通过PlotNumeric函数输出指标就可以了。指标默认显示在主图中,如果要改为显示到副图也不难。

我们通过系统内置的MACD指标就可以学习到副图指标的写法,学会了MACD,其它副图指标基本也就都会写了。我们在公式管理器中打开MACD指标,可以看到右下角指标属性中的显示方式,显示的是”子图“,如果想主图显示,这里就要选择”主图“。这是第一步,也是最关键的一步。

data-href=

当然Macd指标要复杂一点,它有3个指标,其中还有个红绿柱指标挺有特点的。我们来看看这又是怎么设置的。如下图,我们点击工具栏中的”公式设置“图标

data-href=


在MACD指标的默认设置中,勾上”线型“,就可以修改MACD显示的几个指标的线型、线宽、风格、颜色等设置项目。

data-href=


这种单个指标显示的需求,总体实现还是比较简单的。但实际交易时,我们经常需要同时用到多个技术指标,有适合主图显示的,也有适合副图显示。如果我们需要在一个公式同时显示主图指标和副图指标该怎么办呢?比如,我们希望主图显示布林指标,副图显示MACD指标,该怎么实现呢?

我们知道一个公式的显示属性只能选择一个,要么”主图“要么”副图“,无法两全。这时,我们就需要另外一个同样可以显示指标的函数Plot来帮忙了。Plot函数功能非常强大,今天我们只是利用它的部分功能,来实现我们的需求。

我们继续用PlotNumeric显示均线指标,定义一个Plot对象来显示MACD。


Vars
	Series<Numeric> MA1(0,2); 
	Series<Numeric> MA2(0,2);
    Numeric Dif; 
    Numeric Dea;
    Numeric MACD;
    Plot plt;	//定义一个plot对象,用来显示子图MACD指标


OnInit()中,要将plt定义为K线副图


	OnInit()
	{
	    Range[0:DataSourceSize() - 1]
        {
            plt.figure(0);
	    }
	}


MACD总共需要输出4个值,Dif、Dea和零线三条画线指标,我们可以用Plot画线plt.line来实现;一个MACD是柱状图,可以通过plt画柱状图plt.barv来实现。

线和柱子的颜色都可以通过plt.SetOption设置属性来实现。


完整代码如下:

Params
	Numeric MaLen1(5);	//短期均线参数
	Numeric MaLen2(20);	//长期均线参数
    Numeric FastLen(12);
    Numeric SlowLen(26);
    Numeric SmthLen(9);
	
Vars
	Series<Numeric> MA1(0,2); 
	Series<Numeric> MA2(0,2);
    Numeric Dif; 
    Numeric Dea;
    Numeric MACD;
    Plot plt;	//定义一个plot对象,用来显示子图MACD指标
    Plot plt1;
    Plot plt2;
	
Events
	OnInit()
	{
	    Range[0:DataSourceSize() - 1]
        {
            plt.figure(0);
	    }
	}
	OnBar(ArrayRef<Integer> indexs)
	{
        Range[0:DataSourceSize() - 1]
        {
			MA1 = AverageFC(Close,MaLen1);
			MA2 = AverageFC(Close,MaLen2);
			PlotNumeric("MA1",MA1);
			PlotNumeric("MA2",MA2);
			
            Dif = XAverage(Close,FastLen) - XAverage(Close,SlowLen);    
            Dea = XAverage(Dif,SmthLen);
            MACD = (Dif - Dea) * 2;
            
            plt.setOption("Dif","color",Yellow);
            plt.line("Dif",Dif);
            
            plt.setOption("Dea","color",White);
            plt.line("Dea",Dea);
            
			Numeric macdcolor = IIF(MACD >= 0, Red, Green);
            plt.setOption("MACD","color",macdcolor);
            plt.barv("MACD", MACD);
            plt.line("零线", 0);
        }
	}


执行结果如下图:

data-href=




同时显示在主图和副图?
主图与副图指标如何相互引用
如何把一个指标显示在副图,另一个指标显示在主图?
公式主副图显示问题
如何写一个公式,在主图显示MA,副图显示MACD
主图与副图
主图叠加指标
自定义指标怎么在副图显示
帮忙把cci副图显示 ma主图
macd子图显示,均线主图显示