4.36K 浏览
0

//------------------------------------------------------------------------
// 简称: 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日

我知道订阅日线,可以用iloc[-2]得到,但是我订阅的可能是1分钟,2分钟,3分钟等等分钟线,用这个方式就不对了

0

获取日线之后,用klines.iloc[-2]就是上一个交易日的K线,其字段中有高开低收

west 发表新评论 2019年11月20日

但是我的策略是用在分钟线上,不是日线,这个怎么解决?

你得把所有分钟K线按照交易日期分割出来,然后把这一段时间内的所有K线计算开盘价、收盘价、最高、最低,这不就相当于自己用分钟线合成日线了吗?但其实获取日线就加一句代码就可以了。你的策略在分钟线上,再多订阅一个日线,只是用它来获取前一个交易日的信息,这个没影响策略其他地方的逻辑吧