//------------------------------------------------------------------------ // 简称: CloseD // 名称: 求N天前的收盘价 // 类别: 用户函数 // 类型: 内建函数 // 输出: 数值型 //------------------------------------------------------------------------ Params Numeric daysAgo(2); Vars NumericSeries barCnt; NumericSeries dayClose; Numeric i; Numeric j; Numeric nIndex(0); Numeric CBIndex; Begin CBIndex = CurrentBar; If(CBIndex == 0 || TrueDate(0)!=TrueDate(1)) { barCnt = 1; }Else { barCnt = barCnt + 1; } dayClose = Close; If(daysAgo == 0) { return dayClose; }Else { For i = 1 To daysAgo { If( i == 1) { j = 0; }Else { j = j + BarCnt[j]; } If (j > CBIndex ) Return InvalidNumeric; nIndex = nIndex + BarCnt[j]; } Return dayClose[nIndex]; } End //------------------------------------------------------------------------ // 编译版本 GS2013.07.08 // 版权所有 TradeBlazer Software 2003-2013 // 更改声明 TradeBlazer Software保留对TradeBlazer平 // 台每一版本的TradeBlazer公式修改和重写的权利 //------------------------------------------------------------------------
上面是TB求N天前的收盘价函数CloseD,可否把此类函数(OpenD、HighD、LowD)写到TqAPI库中?这样方面在任何周期都可以轻松拿到数据
iquant 发表新评论 2019年11月20日
获取日线之后,用klines.iloc[-2]就是上一个交易日的K线,其字段中有高开低收
west 发表新评论 2019年11月20日
但是我的策略是用在分钟线上,不是日线,这个怎么解决?
你得把所有分钟K线按照交易日期分割出来,然后把这一段时间内的所有K线计算开盘价、收盘价、最高、最低,这不就相当于自己用分钟线合成日线了吗?但其实获取日线就加一句代码就可以了。你的策略在分钟线上,再多订阅一个日线,只是用它来获取前一个交易日的信息,这个没影响策略其他地方的逻辑吧
我知道订阅日线,可以用iloc[-2]得到,但是我订阅的可能是1分钟,2分钟,3分钟等等分钟线,用这个方式就不对了