原有函数CloseD的说明: CloseD | | | Numeric CloseD(Numeric daysAgo=2) | | | | | | |
只能传入指定天数来获取当前图表合约的数据,不能设定指定合约的行情数据。对原有开源函数做少许修改实现合约参数的指定,如下代码: //-------------------------------------------------------------- // 简称: CloseDNew // 名称: 求N天前的收盘价 // 类型: 用户函数 // 输出: Numeric //-------------------------------------------------------------- Params Numeric daysAgo(2); String commodity; Vars NumericSeries barCnt; NumericSeries dayClose; Numeric i; Numeric j; Numeric nIndex(0); Numeric CBIndex; Begin CBIndex = CurrentBar; If(CBIndex == 0 || Date != Date[1]) { barCnt = 1; }Else { barCnt = barCnt + 1; } dayClose = Close(commodity); 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 在公式编辑器中,新建函数,然后将以上代码拷贝编译,便可以指定合约去获取对应的收盘价数据。 print(CloseDNew(3,"ZN1301"));//比如,在SR301图表下,运行此交易指令时,可获取到当前Bar前3天的ZN1301合约的收盘价数据。 |