疊加數據后,函數取數據有問題,請問為什么?
作者:開拓者 TB 來源:cxh99.com 發布時間:2016年02月05日
- 咨詢內容:
Vars
Numeric volcon(0);
Begin
If(date>20150825)
{
PlotNumeric("bars",data1.barssincetoday);
PlotString("date",Text(data1.openD(0)));
}
End
// data0 為if000 data1 為滬深300 , PlotNumeric("bars",data1.barssincetoday); 這個命令用來取 滬深300 開盤到目前的bar數。但是測試出來的確實9:15開始的 股指的bar根數。
// PlotString("date",Text(data1.openD(0))); 這個本來想取 data1的 openD(0) 數據,但是 取出來的 也是data0 if000的數據,請問為什么? 使用錯了嗎?
- TB技術人員:
多數據源 操作,用到的函數 如果這樣,那都不能用了,取不到data1 等后面的數據。請問用多個數據有什么需要注意的嗎?
- TB客服:
//------------------------------------------------------------------------
// 簡稱: data1_OpenD
// 名稱: data1的OpenD
// 類別: 用戶函數
// 類型: 用戶函數
// 輸出: 數值型
//------------------------------------------------------------------------
Params
Numeric daysAgo(2);
Vars
NumericSeries barCnt;
NumericSeries dayOpen;
Numeric i;
Numeric j;
Numeric nIndex(0);
Numeric CBIndex;
Begin
CBIndex = data1.CurrentBar;
If(CBIndex == 0 || TrueDate(0)!=TrueDate(1))
{
barCnt = 1;
dayOpen = data1.Open;
}Else
{
barCnt = barCnt + 1;
}
If(daysAgo == 0)
{
return dayOpen;
}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 dayOpen[nIndex];
}
End
按照論壇里面的其他帖子提示, openD 跟 barssincetoday 函數,都無法通過測試。 說是 返回值類型 跟公式定義的返回值類型不符。
簡稱: data1_BarsSinceToday
// 名稱: data1的bars sincetoday
// 類別: 用戶函數
// 類型: 用戶函數
// 輸出: 數值型
//------------------------------------------------------------------------
Vars
NumericSeries ReBars;
Begin
If(data1.CurrentBar == 0 || TrueDate(0)!=TrueDate(1))
{
ReBars = 0;
}Else
{
ReBars = ReBars + 1;
}
Return ReBars;
End
請問版主如何解決....
- 網友回復:
最好是 版主能把 修改好的 代碼貼出來,學習一下。