Params
//此处添加参数
Numeric millsecs(1000);
Numeric SHORT0(12);
Numeric LONG0(26);
Numeric MI(9);
Vars
//此处添加变量
Numeric avg;
Global Integer timerId;
Series<Numeric>DIF;
Series<Numeric>DEA;
Series<Numeric>MACD1;
Series<Numeric> DEA2;
Series<Numeric> DIF0;
Series<Numeric> DEA0 ;
Series<Numeric> MACD;
Series<Numeric> MACDzhou;
Series<Numeric> zhou2;
Series<Numeric> ys;
//Series<Numeric> ;
//Series<Numeric> ;
//Series<Numeric> ;
Series<Numeric> pd1;
Plot plt1;
Plot plt2;
Defs
//此处添加策略函数
Numeric calcAvg(Numeric a,Numeric b)
{
return (a+b)/2;
}
Events
//此处实现事件函数
//初始化事件函数,策略运行期间,首先运行且只有一次,应用在订阅数据等操作
OnInit()
{
timerId=createTimer(millsecs);
//与数据源有关
Range[0:DataCount-1]
{
// plt_line1.figure(0);
// plt_line2.figure(0);
// plt_line3.figure(0);
plt1.setOption("margin-top","100%");
plt1.setOption("margin-bottom","0%");
}
}
//Bar更新事件函数,参数indexs表示变化的数据源图层ID数组
OnBar(ArrayRef<Integer> indexs)
{
// DIF0=EMA(CLOSE,SHORT0)-EMA(CLOSE,LONG0);
// DEA0=EMA(DIF,MI);
// MACD=(DIF0-DEA0)*2;
DIF0= XAverage(CLOSE,SHORT0)- XAverage(CLOSE,LONG0);
DEA0= XAverage(DIF,MI);
MACD=(DIF0-DEA0)*2;
pd1=iif(MACD>0,1,0);
// MACDzhou=BARSLASTCOUNT(pd1==1); XAverage(
MACDzhou==0;
If(CurrentBar == 0 or ((TrueDate(0)!=TrueDate(1)) )) // 定期刷新数值
zhou2=1;
else
zhou2=zhou2+ 1;
if(macd>0)
ys=1;
Else
ys=0;
// ys=iif(macd>0,1,0);
Commentary(" ys :"+Text( ys));
Commentary(" macd :"+Text( macd));
plt1.line("opi", macd);
// MACDzhou=BARSLASTCOUNT (ys);
// Print("MACDzhou:" + Text(MACDzhou));
//ys=MOD(zhou2,5);
Print("zhou2:" + Text(zhou2));
}
搞不明白我只想计算macd 连续出现的bar数 为啥不能实现 求老师解答一下 明明是红珠子为啥MACD 是负数 急
几个数据源?
跟数据源无关
代码也没出啥问题。。。
以后发代码请用代码模式,否则复制下来还要一行一行改代码
还有你在说什么?红柱子macd是负数?macd不是25.44么?这不是正的么?你到底在说什么?
看左边的macd -19.44
副图那个是自带的 没有问题

我用的也是macd做代码 结果是一个天一个地 完全无法理解
我用的也是macd做代码 结果是一个天一个地 完全无法理解
你的意思是tb有bug是吧?不排除是你自己代码问题吗?