使用用CrossOver出现的疑问 - TradeBlazer公式 [开拓者 TB]
- 咨询内容:
当用两条移动平均线交叉(CrossOver/CrossUnder)作为判断条件时,是否会出现交叉点刚好在两个相邻Bar之间,而导致信号消失?
- TB技术人员:
本帖最后由 傻了吧 于 2012-3-1 14:08 编辑
用TB自带的KD指标写一个简单判断前一根Bar的K和D值,金叉做多,死叉做空的代码,因为曾经看小米管理说过:
crossover,corssunder,除了可以使用close,open,high,low等K线原有数据的回溯值外,不可以使用A[1],B[1]等这样的变量回溯。
可以使用变通的方法。如果使用回溯的值来计算A,B,再代入这两个crossover,crossunder的函数就可以了。
(参见:http://www.tradeblazer.net/forum ... p;extra=&page=1)
所以增加红色字体部分(黑色是TB的KD指标原代码),但图表上无交易信号。请帮忙看看是什么原因,谢谢
Params
Numeric Length(14);
Numeric SlowLength(3);
Numeric SmoothLength(3);
Vars
NumericSeries HighestValue;
NumericSeries LowestValue;
NumericSeries KValue;
Numeric SumHLValue;
Numeric SumCLValue;
NumericSeries DValue;
NumericSeries TmpK;
NumericSeries TmpD;
Begin
HighestValue = HighestFC(High, Length);
LowestValue = LowestFC(Low, Length);
SumHLValue = SummationFC(HighestValue-LowestValue,SlowLength);
SumCLValue = SummationFC(Close - LowestValue,SlowLength);
If(SumHLValue <> 0)
{
KValue = SumCLValue/SumHLValue*100;
}Else
{
KValue = 0;
}
DValue = AverageFC(KValue,SmoothLength);
TmpK=KValue[1];
TmpD=DValue[1];
If(CrossOver(TmpK,TmpD)){
Buy(1,Open);
}
else if(CrossUnder(TmpK,TmpD)){
SellShort(1,Open);
}
PlotNumeric("K",KValue);
PlotNumeric("D",DValue);
PlotNumeric("Ref1",20);
PlotNumeric("Ref2",80);
End - TB客服:
本帖最后由 傻了吧 于 2012-3-1 14:41 编辑
非常奇怪的是,为检查问题,特意在图表上输出Bool值,有“笑脸”但没有开仓讯号,
红色部分替换为以下代码- ConBuy=CrossOver(KValue[1],DValue[1]);
- ConSell=CrossUnder(KValue[1],DValue[1]);
- // If(CrossOver(TmpK,TmpD)){
- If(ConBuy) {
- Buy(1,Open);
- PlotBool("B",ConBuy);
- }
- else if(ConSell){
- SellShort(1,Open);
- //PlotBool("S",ConSell);
- }
tt.jpg (117.12 KB, 下载次数: 0) 2012-3-1 14:40:12 上传 下载次数: 0 - ConBuy=CrossOver(KValue[1],DValue[1]);
- 网友回复:
我试了下2楼的代码,没有问题啊,开仓什么都好好的
可能不是代码问题,是你其他设置问题,自己查查看 - 网友回复:
本帖最后由 傻了吧 于 2012-3-1 16:35 编辑
谢谢zzzlondon 提醒,不是代码问题
相关文章
-
没有相关内容