- UID
- 2
- 积分
- 2893747
- 威望
- 1396905 布
- 龙e币
- 1496842 刀
- 在线时间
- 13326 小时
- 注册时间
- 2009-12-3
- 最后登录
- 2024-12-27
|
[TB源码] 开拓者求N天前的收盘价closD(N)原理,源码[开拓者公式]
- //------------------------------------------------------------------------
- // 简称: 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 || Date != Date[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
- //------------------------------------------------------------------------
- // 编译版本 GS2010.12.08
- // 版权所有 TradeBlazer Software 2003-2010
- // 更改声明 TradeBlazer Software保留对TradeBlazer平
- // 台每一版本的TradeBlazer公式修改和重写的权利
- //------------------------------------------------------------------------
复制代码
- TB技术人员:
BarCnt记录的是从当天第一根K线到当前K线的K线数
所以回溯BarCnt就可得到前一天最后一K的收盘价,也就是CloseD(1)
当回溯天数大于1,比如2:- For i = 1 To daysAgo
- {
- If( i == 1)
- {
- j = 0;
- }Else
- {
- j = j + BarCnt[j];
- }
- If (j > CBIndex )
- Return InvalidNumeric;
- nIndex = nIndex + BarCnt[j];
复制代码i = 1时,j=0,nIndex = 0 + BarCnt[0] = BarCnt(cxh99.com),也就是回溯到前一天的最后一K;
i = 2,j = 0 + BarCnt[0] = BarCnt
nIndex = BarCnt+BarCnt[BarCnt]
也就是回溯到前一天的前一天的最后一K;
OK,以此类推。
- TB客服: 谢谢楼上,有一点懂了;
但是还有一点不明白,barCnt是NumericSeries,也就是序列,但是barCnt的每个元素并没有初始赋值呀,真是奇怪了。
比如:nIndex = BarCnt+BarCnt[BarCnt];
BarCnt[BarCnt]没有初始赋值,就使用,不会出错吗?
- 网友回复: 比如以下代码:
Begin
CBIndex = CurrentBar;
If(CBIndex == 0 || Date != Date[1])
{
barCnt = 1;
}Else
{
barCnt = barCnt + 1;
}//www.cxh99.com
如果第一次执行Else里面的代码,barCnt = barCnt + 1;而barCnt没有初始值,不会出错吗?
- 网友回复: 程序是从图上第一根K线开始执行的
此时CBIndex == 0成立,barCnt = 1,没有问题
|
论坛官方微信、群(期货热点、量化探讨、开户与绑定实盘)
|