TB新手不知道的那些事1:TB內建的用戶函數只能取得data0的值[開拓者公式]
- 咨詢內容: 本帖最后由 慕容表哥 于 2012-12-13 17:22 編輯
TB新手不知道的那些事1:用戶函數只能取得data0的值
變量a=data0.VolD;
變量b=data1.VolD;
你會發現b永遠等于a,TB的用戶函數只能默認取得data0的值,即使你前綴data1,2,3。。。也沒有用
建議說明書注明這方面,當然更希望新版TB支持用戶函數能取得data1,2,3的值 - TB技術人員: 此類用戶函數,可以看到函數代碼,看一下代碼里的計算方法 ,可以知道無論是否使用data1.xxx
其計算都是使用data0的值 - TB客服:
小米 發表于 2012-12-12 17:08
此類用戶函數,可以看到函數代碼,看一下代碼里的計算方法 ,可以知道無論是否使用data1.xxx
其計算都是使 ...
那是否修改原來函數的代碼,加入data1的前綴,新建一個用戶函數,就可以取得data1.xxx的值? - 網友回復:
慕容表哥 發表于 2012-12-12 17:18
那是否修改原來函數的代碼,加入data1的前綴,新建一個用戶函數,就可以取得data1.xxx的值? ...
是的。
修改原函數代碼里,對K線數據部分的內容用data1.xxx替換,其結果就如你所需了。 - 網友回復:
修改后的OpenIntD1和VolD1,分別可以取data1商品的n天前的持倉量和成交量
//------------------------------------------------------------------------
// 簡稱: OpenIntD1
// 名稱: 求N天前的持倉量
// 類別: 用戶函數
// 類型: 內建函數
// 輸出: 數值型
//------------------------------------------------------------------------
Params
Numeric daysAgo(2);
Vars
NumericSeries barCnt;
NumericSeries dayOpenInt;
Numeric i;
Numeric j;
Numeric nIndex(0);
Numeric CBIndex;
Begin
CBIndex = data1.CurrentBar;
If(CBIndex == 0 || data1.Date != data1.Date[1])
{
barCnt = 1;
}Else
{
barCnt = barCnt + 1;
}
dayOpenInt = data1.OpenInt;
If(daysAgo == 0)
{
return dayOpenInt;
}Else
{
For i = 1 To daysAgo
{
If( i == 1)
{
j = 0;
}Else
{
j = j + BarCnt[j];
}
If (j > CBIndex )
Return data1.InvalidNumeric;
nIndex = nIndex + BarCnt[j];
}
Return dayOpenInt[nIndex];
}
End
//------------------------------------------------------------------------
// 編譯版本 GS2010.12.08
// 版權所有 TradeBlazer Software 2003-2010
// 更改聲明 TradeBlazer Software保留對TradeBlazer平
// 臺每一版本的TradeBlazer公式修改和重寫的權利
//------------------------------------------------------------------------
//------------------------------------------------------------------------
// 簡稱: VolD1
// 名稱: 求N天前的成交量1
// 類別: 用戶函數
// 類型: 用戶函數
// 輸出: 數值型
//------------------------------------------------------------------------
Params
Numeric daysAgo(2);
Vars
NumericSeries barCnt;
NumericSeries dayVol;
Numeric i;
Numeric j;
Numeric nIndex(0);
Numeric CBIndex;
Begin
CBIndex = Data1.CurrentBar;
If(CBIndex == 0 || Data1.Date != Data1.Date[1])
{
barCnt = 1;
dayVol = data1.Vol;
}Else
{
barCnt = barCnt + 1;
dayVol = dayVol + data1.Vol;
}
If(daysAgo == 0)
{
return dayVol;
}Else
{
For i = 1 To daysAgo
{
If( i == 1)
{
j = 0;
}Else
{
j = j + BarCnt[j];
}
If (j > CBIndex )
Return data1.InvalidNumeric;
nIndex = nIndex + BarCnt[j];
}
Return dayVol[nIndex];
}
End
//------------------------------------------------------------------------
// 編譯版本 GS2010.12.08
// 用戶版本 2012/12/13 10:56
// 版權所有 cyqh007
// 更改聲明 TradeBlazer Software保留對TradeBlazer平臺
// 每一版本的TrabeBlazer公式修改和重寫的權利
//------------------------------------------------------------------------
有思路,想編寫各種指標公式,程序化交易模型,選股公式,預警公式的朋友
可聯系技術人員 QQ: 262069696 進行 有償 編寫!(不貴!點擊查看價格!)
相關文章
-
沒有相關內容