查看: 1589|回复: 1
打印 上一主题 下一主题

[公式] CloseD函数增加合约参数指定

[复制链接]
跳转到指定楼层
1
发表于 2012-9-21 20:18:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
原有函数CloseD的说明:
CloseD
说明
N天前的收盘价
语法
Numeric CloseD(Numeric daysAgo=2)
参数
daysAgo 第几天前
备注
示例
CloseD(3);计算3天前的收盘价。
只能传入指定天数来获取当前图表合约的数据,不能设定指定合约的行情数据。对原有开源函数做少许修改实现合约参数的指定,如下代码:
//--------------------------------------------------------------
// 简称: 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图表下,运行此交易指令时,可获取到当前Bar3天的ZN1301合约的收盘价数据。





2
发表于 2013-5-13 14:19:00 | 只看该作者
学习~~~楼主辛苦了~
您需要登录后才可以回帖 登录 | 注册入住  

本版积分规则

易家网  ©2015-2023  郑州期米信息技术有限公司版权所有  豫公网安备 41010502005136号 豫ICP备16010300号