奇怪的问题,非常重要,请求帮忙! [开拓者 TB]
- 咨询内容:
编写目的:
当一根K线走完时,我要利用这根刚走完的K线数据计算压力或支撑位,这个计算过程比较复杂,比较消耗计算资源,所以我想在最新一条K线产生的瞬间也就是它的第一个TICK数据发来时只需计算一次,就可把计算结果存入CR1中,而不想每发一个TICK,就重复计算,这样毫无必要,因为本来用不着这根没走完的K线数据。如果不限制这个条件,则每来一个TICK都必须重复计算,大大的浪费了宝贵的计算时间。
本结果在历史数据中准确,但新产生K线时,CR1的计算结果存不进序列CR1中。
测试源码如下:
Vars
Numeric MinPoint(0); //1跳的距离
Numeric Tmptime(0); // 全局变量0的值 用于新一条K线产品时记录时间
NumericSeries CR1(0);
Begin
MinPoint=MinMove * PriceScale; //1跳的距离
tmptime=GetGlobalVar(0); //获取记录的最新时间值
If(tmptime==InvalidNumeric)
{
tmptime=Time;
SetGlobalVar(0,tmptime);
}
//当一条新K线产生时
If(tmptime<>Time)
{
tmptime=Time;
SetGlobalVar(0,tmptime);
CR1=CurrentBar;
}
PlotString("T1",Text(CR1),H+2*MinPoint,Red);
End
测试结果:
- TB技术人员:
- TB客服:
20160121141305.png (3.52 KB, 下载次数: 1) 2016-1-21 14:27:39 上传 下载次数: 1 - 网友回复:
以上为测试结果,只有历史K线的结果是对的,新产生的K线对应的CR1值总不变,真奇怪!
- 网友回复:
thc526119163 发表于 2016-1-21 14:30
以上为测试结果,只有历史K线的结果是对的,新产生的K线对应的CR1值总不变,真奇怪! ...
我觉得原因应该是CR1=CurrentBar这一句只有在新K线产生的第一个Tick会执行,这样后面来的Tick运行公式时,CR1因为是序列变量,因此会传递上一根BAR的值,所以就一直不变。而历史BAR,因为执行1次,所以不影响。
有思路,想编写各种指标公式,程序化交易模型,选股公式,预警公式的朋友
可联系技术人员 QQ: 511411198 进行 有偿 编写!(不贵!点击查看价格!)
相关文章
-
没有相关内容