编译通过加载到图形上,运行不正常! [开拓者 TB]
- 咨询内容:
求面积,比大小,下单
Params
Numeric FastLength(12);
Numeric SlowLength(26);
Numeric MACDLength(9);
Vars
NumericSeries MACDValue;
NumericSeries AvgMACD;
NumericSeries MACDDiff;
Numeric I;
Numeric lenth1;
Numeric lenth2;
Numeric mj1(0);
Numeric mj2(0);
Begin
MACDValue = XAverage( Close, FastLength ) - XAverage( Close, SlowLength ) ;
AvgMACD = XAverage(MACDValue,MACDLength);
MACDDiff = MACDValue - AvgMACD;
PlotNumeric("MACD",MACDValue);
PlotNumeric("MACDAvg",AvgMACD);
If (MACDDiff >= 0)
PlotNumeric("MACDDiff",MACDDiff,0,Red);
Else
PlotNumeric("MACDDiff",MACDDiff,0,Green);
PlotNumeric("零线",0); //macd图形输出
If (CrossOver(MACDDiff[2],0)){ //判断:如果向前数第二根BAR满足macddiff上穿0(即金叉),那么从第三根K线开始累加macddiff的绝对值
I=3;
While(CrossUnder(MACDDiff[I],0)==false){ //直到某根BAR满足死叉
mj1=Abs(MACDDiff[I])+mj1;
I=I+1;
}
}
While(CrossOver(MACDDiff[I],0)==false){ //从刚才那根满足条件的BAR开始向前推寻找金叉
I=I+1;
}
lenth1=I;
While(CrossUnder(MACDDiff[I],0)==false){ //继续向前寻找死叉
I=I+1;
}
lenth2=I;
For I=lenth1 To lenth2{ //计算从死叉到金叉的面积
mj2=mj2+Abs(MACDDiff[I]);
I=I+1;
}
If(mj1<mj2) // 如果面积1<面积2,多单开仓
Buy;
End
有无逻辑错误? - TB技术人员:
每人理啊!自己顶起来
- TB客服:
测试了你的公式,编译时没有完全通过,提示FOR,WHILE,IF,ELSE包含序列函数,可能存在潜在的逻辑错误,请确认代码无误……
序列函数是一种特殊的用户函数,当它的参数或变量中使用了序列数据,我们就称之为序列函数,序列数据作为普通计算机语言和TB语言的重要区别,是进行金融序列数据计算的核心。为了保证序列数据的正确计算,序列函数需要每个Bar都被调用,如果有些Bar没有调用序列函数,序列函数中的序列数据则是上一个Bar的值。除非是您的算法需要,否则建议不要在条件语句,条件语句的判断表达式,循环语句中使用序列函数 - 网友回复:
无标题.png (42.62 KB, 下载次数: 2) 2013-4-12 16:41:24 上传 下载次数: 2 - 网友回复:
如4楼红色所示的位置
有思路,想编写各种指标公式,程序化交易模型,选股公式,预警公式的朋友
可联系技术人员 QQ: 1145508240 进行 有偿 编写!(不贵!点击查看价格!)
相关文章
-
没有相关内容