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啦
页: 1 2 3 4 5 6 [7] 8 9 10 11 12 13 14 15 16
查看完整版本: 跨周期数据转换函数以及跨周期技术指标调用的实现