cxwh
发表于 2011-7-14 09:16:02
老大,能否把RSI和SAR的跨周期完成,谢谢!
读书山林
发表于 2011-7-14 13:20:11
回复 66# 追涨杀跌
恩 那就只能打包写在一起啦
读书山林
发表于 2011-7-14 13:39:24
发现一个问题,还请老师帮忙解决一下
mtBarCnt = MtBar(TimeFrame,BarsBack,refCurBar,refOpen,refHigh,refLow,refClose,refVol,refOpenInt);
// 目标时间周期内小周期Bar个数的索引
mtCurBar = refCurBar; // 目标时间周期下的Bar索引
mtClose = refClose; // 目标时间周期下的收盘价
关于目标周期数据的回溯会出现错误,如果mtclose,为目标周期的收盘价,往前回溯 1 个数据可以写成 mtclose,没有问题,但是如果我的回溯周期是 的话,则非常难以取值,写成
mtclose 的形式 经观察比较输出值错误,请追涨老师解决这个问题,因为很多策略都需要用到大于1 的回溯值
追涨杀跌
发表于 2011-7-14 15:59:25
本帖最后由 追涨杀跌 于 2011-7-14 16:00 编辑
回复 69# 读书山林
这种就要用循环的方式,可以参考 mtSummation的实现部分。
Params
NumericSeries Price(1);
NumericSeries BarCnt(0);
Numeric Length(10);
Vars
NumericSeries SumValue(0);
Numeric i;
Numeric j(0);
Begin
SumValue = 0;
For i = 1 to Length
{
If (Price <> InvalidNumeric)
{
SumValue = SumValue + Price;
j = j + BarCnt;
}
else Break;
}
Return SumValue;
End
最关键的一句就是:j = j + BarCnt
追涨杀跌
发表于 2011-7-14 16:02:01
老大,能否把RSI和SAR的跨周期完成,谢谢!
cxwh 发表于 2011-7-14 09:16 http://www.tradeblazer.net/forum/images/common/back.gif
RSI已经完成,请查看前面的帖子。SAR的麻烦点,再等几天吧。
读书山林
发表于 2011-7-14 17:39:09
老师给解释一下啊,j = j + BarCnt有点看不明白 ,
要回溯的周期n,和j的 关系又是什么呢,老师给写个回溯周期的函数吧 或者写段代码 作为引用参数返回也行啊
读书山林
发表于 2011-7-15 11:49:03
根据追涨大侠的提示 看了下代码 ,如果Length 为目标周期下的回溯周期,应该是求 1 to Length 内 barcnt 的 累计相加求和,因为每个目标周期内的barcnt 不相等 否则直接Length *barcnt 就可以啦//------------------------------------------------------------------------
// 简称: MTRef
// 名称: 跨期求回溯周期
// 类别: 用户函数
// 类型: 用户函数
// 输出: 数值型
//------------------------------------------------------------------------
Params
NumericSeries BarCnt(0);//目标周期内小周期的bar
Numeric Length(10);// 目标周期下的回溯周期
Vars
NumericSeries mtBarCnt(1);
Numeric i;
Numeric j(0);// 与目标周期下的回溯周期 等值的小周期回溯周期值
Begin
For i = 1 to Length
{
If (mtBarCnt <> InvalidNumeric)
{
j = j + BarCnt;
}
else Break;
}
Return J;
End
追涨大侠看看这样写对吗,
读书山林
发表于 2011-7-15 12:04:21
无效值判断有问题 是直接去掉还是怎么修改
追涨杀跌
发表于 2011-7-18 18:30:40
本帖最后由 追涨杀跌 于 2011-7-18 18:57 编辑
回复 73# 读书山林
我看了一下,觉得还是写得有点问题,我试着改了一下,你测一下看是不是正确?
//------------------------------------------------------------------------
// 简称: MtRef
// 名称: 跨周期求回溯周期
// 类别: 用户函数
// 类型: 用户函数
// 输出: 数值型
//------------------------------------------------------------------------
Params
NumericSeries mtBarCnt(0); // MtBar函数返回的mtBarCnt值
Numeric Length(10); // 目标周期下的回溯周期
Vars
Numeric i;
Numeric j(0); // 与目标周期下的回溯周期 等值的小周期回溯周期值
Begin
For i = 1 to Length
{
If (mtBarCnt <> InvalidNumeric)
{
j = j + mtBarCnt;
}
else Break;
}
Return j;
End
读书山林
发表于 2011-7-19 09:08:05
恩 谢谢老大 ok啦