- 精华
- 20
- 在线时间
- 2981 小时
- UID
- 4
- 积分
- 22709
- 帖子
- 4802
- 阅读权限
- 255
- 注册时间
- 2007-7-20
- 最后登录
- 2024-1-15
- 精华
- 20
- UID
- 4
- 积分
- 22709
- 帖子
- 4802
- 主题
- 64
- 阅读权限
- 255
- 注册时间
- 2007-7-20
- 最后登录
- 2024-1-15
|
请按以下方式处理:
1、新建用户函数,返回值设置为数值型,命名为TrueRangeD,代码如下:
- Params
- Numeric daysAgo(2);
- Vars
- NumericSeries preClose;
- NumericSeries barCnt;
- NumericSeries dayHigh;
- NumericSeries dayLow;
- Numeric i;
- Numeric j;
- Numeric nIndex(0);
- Begin
- If(Day != Day[1])
- {
- If(InvalidNumeric != Close[1])
- preClose = Close[1];
- Else
- preClose = Open;
-
- barCnt = 1;
- dayHigh = High;
- dayLow = Low;
- }Else
- {
- preClose = preClose[1];
- barCnt = barCnt[1] + 1;
- dayHigh = max(dayHigh[1],High);
- dayLow = min(dayLow[1],Low);
- }
-
- If(daysAgo == 0)
- {
- If(preClose > dayHigh)
- Return preClose - dayLow;
- else if(preClose < dayLow)
- Return dayHigh - preClose;
- else
- Return dayHigh - dayLow;
- }Else
- {
- For i = 1 To daysAgo
- {
- If( i == 1)
- {
- j = 0;
- }Else
- {
- j = j + BarCnt[j];
- }
- If (j > CurrentBar ) Return InvalidNumeric;
- nIndex = nIndex + BarCnt[j];
- }
-
- If(preClose[nIndex] > dayHigh[nIndex])
- Return preClose[nIndex] - dayLow[nIndex];
- else if(preClose[nIndex] < dayLow[nIndex])
- Return dayHigh[nIndex] - preClose[nIndex];
- else
- Return dayHigh[nIndex] - dayLow[nIndex];
- }
- End
复制代码 |
|