編譯通過加載到圖形上,運行不正常!
作者:開拓者 TB 來源:cxh99.com 發(fā)布時間:2013年05月31日
- 咨詢內(nèi)容:
求面積,比大小,下單
Params
Numeric FastLength(12);
Numeric SlowLength(26);
Numeric MACDLength(9);
Vars
NumericSeries MACDValue;
NumericSeries AvgMACD;
NumericSeries MACDDiff;
Numeric I;
Numeric lenth1;
Numeric lenth2;
Numeric mj1(0);
Numeric mj2(0);
Begin
MACDValue = XAverage( Close, FastLength ) - XAverage( Close, SlowLength ) ;
AvgMACD = XAverage(MACDValue,MACDLength);
MACDDiff = MACDValue - AvgMACD;
PlotNumeric("MACD",MACDValue);
PlotNumeric("MACDAvg",AvgMACD);
If (MACDDiff >= 0)
PlotNumeric("MACDDiff",MACDDiff,0,Red);
Else
PlotNumeric("MACDDiff",MACDDiff,0,Green);
PlotNumeric("零線",0); //macd圖形輸出
If (CrossOver(MACDDiff[2],0)){ //判斷:如果向前數(shù)第二根BAR滿足macddiff上穿0(即金叉),那么從第三根K線開始累加macddiff的絕對值
I=3;
While(CrossUnder(MACDDiff[I],0)==false){ //直到某根BAR滿足死叉
mj1=Abs(MACDDiff[I])+mj1;
I=I+1;
}
}
While(CrossOver(MACDDiff[I],0)==false){ //從剛才那根滿足條件的BAR開始向前推尋找金叉
I=I+1;
}
lenth1=I;
While(CrossUnder(MACDDiff[I],0)==false){ //繼續(xù)向前尋找死叉
I=I+1;
}
lenth2=I;
For I=lenth1 To lenth2{ //計算從死叉到金叉的面積
mj2=mj2+Abs(MACDDiff[I]);
I=I+1;
}
If(mj1<mj2) // 如果面積1<面積2,多單開倉
Buy;
End
有無邏輯錯誤?
- TB技術人員:
每人理?。∽约喉斊饋?
- TB客服:
測試了你的公式,編譯時沒有完全通過,提示FOR,WHILE,IF,ELSE包含序列函數(shù),可能存在潛在的邏輯錯誤,請確認代碼無誤……
序列函數(shù)是一種特殊的用戶函數(shù),當它的參數(shù)或變量中使用了序列數(shù)據(jù),我們就稱之為序列函數(shù),序列數(shù)據(jù)作為普通計算機語言和TB語言的重要區(qū)別,是進行金融序列數(shù)據(jù)計算的核心。為了保證序列數(shù)據(jù)的正確計算,序列函數(shù)需要每個Bar都被調(diào)用,如果有些Bar沒有調(diào)用序列函數(shù),序列函數(shù)中的序列數(shù)據(jù)則是上一個Bar的值。除非是您的算法需要,否則建議不要在條件語句,條件語句的判斷表達式,循環(huán)語句中使用序列函數(shù)
- 網(wǎng)友回復:
無標題.png
(42.62 KB, 下載次數(shù): 2)
2013-4-12 16:41:24 上傳
下載次數(shù): 2
- 網(wǎng)友回復:
如4樓紅色所示的位置 |