return語句的返回值類型與公式定義的返回值類型不符
作者:開拓者 TB 來源:cxh99.com 發(fā)布時間:2016年05月31日
- 咨詢內(nèi)容:
以下用戶函數(shù)編譯一直出現(xiàn) return語句的返回值類型與公式定義的返回值類型不符 C0122的錯誤,哪位大俠知道是為什么?
// 簡稱: MtBar
// 名稱: 跨周期1
// 類別: 用戶函數(shù)
// 類型: 用戶函數(shù)
// 輸出: 數(shù)值型
//------------------------------------------------------------------------
Params
Numeric TimeFrame(1440);
// 目標(biāo)時間周期:月線=40320,周線=10080,日線=1440,4小時線=240
// 其他1小時內(nèi)的周期等于相應(yīng)的分鐘數(shù),如:1小時=60, 30分鐘=30。。。
// 支持不規(guī)則分鐘數(shù),如3分鐘,8分鐘,之類都行
Numeric BarsBack(1);
// 目標(biāo)時間周期BAR偏移:
// 1--表示將目標(biāo)時間周期下的前1根K線數(shù)據(jù)作為與當(dāng)前Bar對應(yīng)的目標(biāo)時間周期下的K線數(shù)據(jù)
// 0--表示將目標(biāo)時間周期下的截止到目前為止的數(shù)據(jù)轉(zhuǎn)換為與當(dāng)前BAR對應(yīng)的目標(biāo)時間周期下K線數(shù)據(jù)
NumericRef oCurBar; // 目標(biāo)時間周期下的Bar索引
NumericRef oOpenHT;
// 目標(biāo)時間周期下的開盤價
NumericRef oHighHT;
// 目標(biāo)時間周期下的最高價
NumericRef oLowHT; // 目標(biāo)時間周期下的最低價
NumericRef oCloseHT; // 目標(biāo)時間周期下的收盤價
NumericRef oVolHT; // 目標(biāo)時間周期下的成交量
NumericRef oOpenIntHT; // 目標(biāo)時間周期下的持倉量
Vars
NumericSeries barCnt;
NumericSeries CurBar;
NumericSeries barCntSum;
NumericSeries OpenHT;
NumericSeries HighHT;
NumericSeries LowHT;
NumericSeries CloseHT;
NumericSeries VolHT;
NumericSeries OpenIntHT;
Numeric CurTime;
Numeric PreTime;
bool condition(false);
Numeric i;
Begin
If (TimeFrame==40320) // 月線
{
CurTime=Month;
PreTime=Month[1];
}
Else If (TimeFrame==10080) // 周線
{
CurTime=IntPart(DateDiff(19700105,Date)/7);
PreTime=IntPart(DateDiff(19700105,Date[1])/7);
}
Else // 其他時間周期
{
CurTime=IntPart((DateDiff(19700105,date)*1440+Hour*60+Minute)/TimeFrame);
PreTime=IntPart((DateDiff(19700105,date[1])*1440+Hour[1]*60+Minute[1])/TimeFrame);
}
condition=CurTime!=PreTime;
If (CurrentBar==0) // 如果是第一根Bar, CurBar=0
{
barCnt=0;
CurBar=0;
OpenHT=Open;
HighHT=High;
LowHT=Low;
CloseHT=Close;
VolHT=Vol;
OpenIntHT=OpenInt;
}
Else
{
If(Condition)
// 如果在目標(biāo)周期下,屬于另一根K線,則CurBar加1
{
barCnt=1;
CurBar=CurBar[1]+1;
OpenHT=Open;
HighHT=High;
LowHT=Low;
VolHT=Vol;
}
Else
// 如果在目標(biāo)周期下,屬于同一根K線,則CurBar不變,但最高價和最低價要記錄價格的變化,成交量要累加
{
barCnt=barCnt[1]+1;
CurBar=CurBar[1];
OpenHT=OpenHT[1];
HighHT=Max(HighHT[1],High);
LowHT=Min(LowHT[1],Low);
VolHT=VolHT[1]+Vol;
}
// 收盤價和持倉量總是取最新值
CloseHT=Close;
OpenIntHT=OpenInt;
}
// 上面的程序,在每根小周期的K線上,記錄了它所屬的大時間周期下的開高低收等值的變化。
// 接下來,要把在大的時間周期級別上,屬于同一根K線的開高低收這些數(shù)據(jù),記錄在這一組小周期K線的最后一根上。
barCntSum=barCnt ;
If(BarsBack==0)
// 如果Bar偏移參數(shù)為0,則取每根小周期K線上保留的大時間周期截止到這根小周期K線為止的BAR數(shù)據(jù)
{
barCntSum=0 ;
}Else If(BarsBack==1)
// 如果Bar偏移參數(shù)為1,則取大時間周期的上一根K線的BAr數(shù)據(jù)
{
barCntSum=barCnt ;
}Else
// 如果BAR偏移參數(shù)為其他,則取大時間周期的指定偏移后的那根K線的BAR數(shù)據(jù)
{
For i=2 To BarsBack
{
barCntSum=barCntSum+barCnt[barCntSum];
}
}
// 最后將相應(yīng)的K線數(shù)據(jù)作為引用參數(shù)返回
oCurBar=CurBar;
oOpenHT=OpenHT[barCntSum];
oHighHT=HighHT[barCntSum];
oLowHT=LowHT[barCntSum];
oCloseHT=CloseHT[barCntSum];
oVolHT=VolHT[barCntSum];
oOpenIntHT=OpenIntHT[barCntSum];
Return barCnt;
End
- TB技術(shù)人員:
本帖最后由 wu778001035 于 2016-3-14 13:18 編輯
你在文件--屬性設(shè)置里有個返回類型,你選擇數(shù)值型試試,或者你看下你其他的函數(shù)有編譯完成的嗎
- TB客服:
wu778001035 發(fā)表于 2016-3-14 11:28
你在文件--屬性設(shè)置里有個返回類型,你選擇數(shù)值型試試,或者你看下你其他的函數(shù)有編譯完成的嗎 ...
返回類型是數(shù)值型的
我試了下,用軟件自己帶的函數(shù)范例,也是同樣的錯誤,請問這是什么原因?
- 網(wǎng)友回復(fù):
yanling 發(fā)表于 2016-3-14 20:30
返回類型是數(shù)值型的
我試了下,用軟件自己帶的函數(shù)范例,也是同樣的錯誤,請問這是什么原因? ...
可能是你的公式管理器里有某個錯誤的函數(shù)(并非當(dāng)前編譯的這個)而導(dǎo)致的問題。。
到公式器--用戶函數(shù),將有問題的函數(shù)刪除后再來編譯其它的正確的函數(shù)。