求助死循環(huán) [開(kāi)拓者 TB]
- 咨詢內(nèi)容: 我的用戶函數(shù):
// 簡(jiǎn)稱: NthCrossUpMAHighOverBarPos
// 名稱: 回溯第N個(gè)上纏繞MA頂值、收過(guò)MABar索引值
// 類別: 用戶函數(shù)
// 類型: 用戶函數(shù)
// 輸出: 數(shù)值型
//------------------------------------------------------------------------
Params
Numeric N(0);
Numeric Length(0);
NumericRef CrossUpMAOverBarPos;
Vars
Numeric ReBarsCrossOverMA(0);
Numeric ReBarsCrossOverMAplus(0);
Numeric ReBarsCrossUnderMA(0);
Numeric i;
Numeric CrossUpMAHigh;
Begin
ReBarsCrossOverMA=NthCon(CrossOver(C,AverageFC(C,Length)),N);
ReBarsCrossOverMAplus=NthCon(CrossOver(C,AverageFC(C,Length)),N+1);
ReBarsCrossUnderMA=NthCon(CrossUnder(C,AverageFC(C,Length)),N);
If ((ReBarsCrossOverMA<ReBarsCrossUnderMA)&&((CurrentBar-ReBarsCrossOverMAplus)>(Length-1)))
{
For i=ReBarsCrossOverMAplus DownTo ReBarsCrossUnderMA
{
If (H[i] > CrossUpMAHigh)
CrossUpMAHigh = H[i];
}
CrossUpMAOverBarPos=CurrentBar-ReBarsCrossOverMAplus;
}
Return CrossUpMAHigh;
End
//------------------------------------------------------------------------
我的公式應(yīng)用:
// 簡(jiǎn)稱: TproNthCrossUpMAHighOverBarPos
// 名稱: 驗(yàn)證回溯遞增第N個(gè)上纏繞MA頂值、收過(guò)MABar索引值
// 類別: 公式應(yīng)用
// 類型: 用戶應(yīng)用
// 輸出:
//------------------------------------------------------------------------
Params
Numeric N(2);
Numeric Length(5);
Vars
Numeric CrossUpMAHigh;
Numeric CrossUpMAOverBarPos;
Numeric i;
Numeric j;
Numeric MyHigh;
Numeric MyBarPos;
Begin
i=2;
j=1;
CrossUpMAHigh=NthCrossUpMAHighOverBarPos(1,Length,CrossUpMAOverBarPos);
MyBarPos=CrossUpMAOverBarPos;
While ((j<N)&&(MyBarPos>0))
{MyHigh=NthCrossUpMAHighOverBarPos(i,Length,CrossUpMAOverBarPos);
MyBarPos=CrossUpMAOverBarPos;
i=i+1;
If (MyHigh>CrossUpMAHigh)
{CrossUpMAHigh=MyHigh;
j=j+1;
}
}
If (MyBarPos==0)
{CrossUpMAHigh=0;
}
Commentary("回溯遞增第"+Text(N)+"個(gè)上纏繞MA頂值"+Text(CrossUpMAHigh));
Commentary("回溯遞增第"+Text(N)+"個(gè)上纏繞MA收過(guò)MABar索引值"+Text(MyBarPos));
End
//------------------------------------------------------------------------
上述公式應(yīng)用插入超級(jí)圖表,出現(xiàn)死循環(huán),請(qǐng)教TB老師解決辦法,多謝! - TB技術(shù)人員: 應(yīng)TB工程師的要求,發(fā)了上面的帖子,通了4次電話,過(guò)了4個(gè)小時(shí),仍沒(méi)有回復(fù),TB服務(wù)太差了!如果不想解決,為何要我發(fā)帖干等?
- TB客服: 用戶函數(shù)那 N的值應(yīng)要大于等于1的自然數(shù), 您初始付的值為0
- 網(wǎng)友回復(fù): 本帖最后由 wwr_5817 于 2012-12-19 15:05 編輯
多謝LZ,LZ實(shí)在是高!不死循環(huán)了!可結(jié)果在N>1時(shí)恒為0,可否再指點(diǎn)指點(diǎn)? - 網(wǎng)友回復(fù):
請(qǐng)管理員tradeblazer繼續(xù)解答我的問(wèn)題!
我的用戶函數(shù):
// 簡(jiǎn)稱: NthCrossUpMAHighOverBarPos
// 名稱: 回溯第N個(gè)上纏繞MA頂值、收過(guò)MABar索引值
// 類別: 用戶函數(shù)
// 類型: 用戶函數(shù)
// 輸出: 數(shù)值型
//------------------------------------------------------------------------
Params
Numeric N(1);
Numeric Length(5);
NumericRef CrossUpMAOverBarPos;
Vars
Numeric ReBarsCrossOverMA(0);
Numeric ReBarsCrossOverMAplus(0);
Numeric ReBarsCrossUnderMA(0);
Numeric i;
Numeric CrossUpMAHigh;
Begin
ReBarsCrossOverMA=NthCon(CrossOver(C,AverageFC(C,Length)),N);
ReBarsCrossOverMAplus=NthCon(CrossOver(C,AverageFC(C,Length)),N+1);
ReBarsCrossUnderMA=NthCon(CrossUnder(C,AverageFC(C,Length)),N);
If ((ReBarsCrossOverMA<ReBarsCrossUnderMA)&&((CurrentBar-ReBarsCrossOverMAplus)>(Length-1)))
{
For i=ReBarsCrossOverMAplus DownTo ReBarsCrossUnderMA
{
If (H[i] > CrossUpMAHigh)
CrossUpMAHigh = H[i];
}
CrossUpMAOverBarPos=CurrentBar-ReBarsCrossOverMAplus;
}
Return CrossUpMAHigh;
End
//------------------------------------------------------------------------
我的公式應(yīng)用1:
/ 簡(jiǎn)稱: TproNthCrossUpMAHighOverBarPos
// 名稱: 驗(yàn)證回溯遞增第N個(gè)上纏繞MA頂值、收過(guò)MABar索引值
// 類別: 公式應(yīng)用
// 類型: 用戶應(yīng)用
// 輸出:
//------------------------------------------------------------------------
Params
Numeric N(2);
Numeric Length(5);
Vars
Numeric CrossUpMAHigh;
Numeric CrossUpMAOverBarPos;
Numeric i;
Numeric j;
Numeric MyHigh;
Numeric MyBarPos;
Begin
i=2;
j=1;
CrossUpMAHigh=NthCrossUpMAHighOverBarPos(1,Length,CrossUpMAOverBarPos);
MyBarPos=CrossUpMAOverBarPos;
Commentary("While前CrossUpMAHigh="+Text(CrossUpMAHigh));
Commentary("While前MyBarPos="+Text(MyBarPos));
Commentary("While前j="+Text(j));
Commentary("While前N="+Text(N));
While ((j<N)&&(MyBarPos>0))
{Commentary("While中調(diào)用戶函數(shù)前i="+Text(i));
Commentary("While中調(diào)用戶函數(shù)前j="+Text(j));
Commentary("While中調(diào)用戶函數(shù)前MyBarPos="+Text(MyBarPos));
Commentary("While中調(diào)用戶函數(shù)前MyHigh="+Text(MyHigh));
MyHigh=NthCrossUpMAHighOverBarPos(i,Length,CrossUpMAOverBarPos);
Commentary("While中NthCrossUpMAHighOverBarPos(i,Length,CrossUpMAOverBarPos)="+Text(NthCrossUpMAHighOverBarPos(i,Length,CrossUpMAOverBarPos)));
Commentary("While中CrossUpMAOverBarPos="+Text(CrossUpMAOverBarPos));
MyBarPos=CrossUpMAOverBarPos;
Commentary("While中i+1前i="+Text(i));
Commentary("While中i+1前MyBarPos="+Text(MyBarPos));
Commentary("While中i+1前MyHigh="+Text(MyHigh));
i=i+1;
Commentary("While中i="+Text(i));
Commentary("While中MyBarPos="+Text(MyBarPos));
Commentary("While中MyHigh="+Text(MyHigh));
Commentary("While中CrossUpMAHigh="+Text(CrossUpMAHigh));
If (MyHigh>CrossUpMAHigh)
{CrossUpMAHigh=MyHigh;
j=j+1;
Commentary("While中j="+Text(j));
Commentary("While中MyBarPos="+Text(MyBarPos));
Commentary("While中CrossUpMAHigh="+Text(CrossUpMAHigh));
}
}
If (MyBarPos==0)
{CrossUpMAHigh=0;
}
Commentary("回溯遞增第"+Text(N)+"個(gè)上纏繞MA頂值"+Text(CrossUpMAHigh));
Commentary("回溯遞增第"+Text(N)+"個(gè)上纏繞MA收過(guò)MABar索引值"+Text(MyBarPos));
End
//------------------------------------------------------------------------
我的公式應(yīng)用2:
// 簡(jiǎn)稱: TNthCrossUpMAHighOverBarPos
// 名稱: 驗(yàn)證回溯第N個(gè)上纏繞MA頂值、收過(guò)MABar索引值
// 類別: 公式應(yīng)用
// 類型: 用戶應(yīng)用
// 輸出:
//------------------------------------------------------------------------
Params
Numeric N(2);
Numeric Length(5);
Vars
Numeric CrossUpMAHigh;
Numeric CrossUpMAOverBarPos;
Begin
CrossUpMAHigh=NthCrossUpMAHighOverBarPos(N,Length,CrossUpMAOverBarPos);
Commentary("回溯第"+Text(N)+"個(gè)上纏繞MA頂值"+Text(CrossUpMAHigh));
Commentary("回溯第"+Text(N)+"個(gè)上纏繞MA收過(guò)MABar索引值"+Text(CrossUpMAOverBarPos));
End
//------------------------------------------------------------------------
您于3樓的答復(fù),我在1樓的公式應(yīng)用不死循環(huán)了,但其結(jié)果在N=2時(shí)恒為0。用公式應(yīng)用2驗(yàn)證,我的用戶函數(shù)NthCrossUpMAHighOverBarPos(2,5,CrossUpMAOverBarPos)正確,但在1樓的公式應(yīng)用中加入Commentary語(yǔ)句的公式應(yīng)用1中While內(nèi)首次調(diào)用NthCrossUpMAHighOverBarPos(2,5,CrossUpMAOverBarPos)結(jié)果為0,不知何故?公式應(yīng)用1中While行后第二行插入“Commentary("While中調(diào)用戶函數(shù)前j="+Text(j));”,再次陷入死循環(huán)!現(xiàn)在,用本層的用戶函數(shù)和1樓的公式應(yīng)用仍然死循環(huán)!
另外,您于3樓的答復(fù)是否表明,用戶自編用戶函數(shù)中調(diào)用(系統(tǒng)自帶用戶函數(shù))時(shí),用戶自編用戶函數(shù)的參數(shù)默認(rèn)值須不小于(系統(tǒng)自帶用戶函數(shù))的參數(shù)默認(rèn)值?
切盼盡快指教!多謝!
有思路,想編寫(xiě)各種指標(biāo)公式,程序化交易模型,選股公式,預(yù)警公式的朋友
可聯(lián)系技術(shù)人員 QQ: 262069696 進(jìn)行 有償 編寫(xiě)!(不貴!點(diǎn)擊查看價(jià)格!)
相關(guān)文章
-
沒(méi)有相關(guān)內(nèi)容