請(qǐng)老師幫忙把文華跨周期引用模型改為TB公式 [開拓者 TB]
- 咨詢內(nèi)容:
nopain老師,我之前一直使用文華的年費(fèi)服務(wù),考慮到TB在歷史回測(cè)方面的優(yōu)勢(shì),決定轉(zhuǎn)向TB。我想把文華的跨周期引用模型轉(zhuǎn)換成TB模型(1分鐘周期K線圖中引用30分鐘周期的DMI指標(biāo)),但由于剛剛學(xué)習(xí)TB語言,對(duì)TB不了解,請(qǐng)老師幫忙修改,謝謝。
1、文華模型
(1)引用模型
TR:=SUM(MAX(MAX(HIGH-LOW,ABS(HIGH-REF(CLOSE,1))),ABS(LOW-REF(CLOSE,1))),14);
HD:=HIGH-REF(HIGH,1);
LD:=REF(LOW,1)-LOW;
DMP:=SUM(IFELSE(HD>0&&HD>LD,HD,0),14);
DMM:=SUM(IFELSE(LD>0&&LD>HD,LD,0),14);
PDI1:=DMP*100/TR;
MDI1:=DMM*100/TR;
ADX1:=MA(ABS(MDI1-PDI1)/(MDI1+PDI1)*100,6);
(2)主模型
#IMPORT[,MIN30,MYDHL33] AS VAR
PDI:=VAR.PDI1;
MDI:=VAR.MDI1;
ADX:=VAR.ADX1;
ADX>25&&ADX>REF(ADX,1)&&NOT(R3)&&DI>MDI&&DI>REF(PDI,1)&&MDI<REF(MDI,1),BK;//CCI上穿100,做多
.....
AUTOFILTER;
2、通過學(xué)習(xí)TB帖子,
http://bbs.tb18.net/forum.php?mo ... ge%3D1&tid=1996,
我編寫了一個(gè)TB函數(shù)和一個(gè)TB公式,具體如下:
(1)TransMinsDatab 函數(shù)
//------------------------------------------------------------------------
// 簡稱: TransMinsDatab
// 名稱: TransMinsDatab
// 類別: 用戶函數(shù)
// 類型: 用戶函數(shù)
// 輸出: 數(shù)值型
//------------------------------------------------------------------------
Params
NumericSeries Price(1);
Numeric nMinSet(5);
Numeric MinsAgo(2);
Vars
NumericSeries barCnt;
NumericSeries MinData;
Numeric i;
Numeric j;
Numeric nIndex(0);
Begin
If(IntPart(Minute%nMinSet)==0)
{
barCnt = 1;
}Else
{
barCnt = barCnt[1] + 1;
}
MinData = Price;
If(MinsAgo == 0)
{
return MinData;
}Else
{
For i = 1 To MinsAgo
{
If( i == 1)
{
j = 0;
}Else
{
j = j + BarCnt[j];
}
If (j > CurrentBar ) Return InvalidNumeric;
nIndex = nIndex + BarCnt[j];
}
Return MinData[nIndex];
}
End
(2)根據(jù)文華代碼直接編譯過來的TB公式(名稱為ADX66)
//------------------------------------------------------------------------
// 簡稱: ADX66
// 名稱: ADX66
// 類別: 公式應(yīng)用
// 類型: 用戶應(yīng)用
//------------------------------------------------------------------------
Params
Numeric Length(14);
Numeric ADXLength(6);
Numeric Lots(1);
Vars
Numeric MyOpen;
NumericSeries MyHigh;
NumericSeries MyLow;
NumericSeries MyClose;
Numeric MyOpen1;
NumericSeries MyHigh1;
NumericSeries MyLow1;
NumericSeries MyClose1;
Numeric TR;
Numeric HD;
Numeric LD;
Numeric DMP;
Numeric DMM;
NumericSeries PDI;
NumericSeries MDI;
Numeric i;
NumericSeries CY;
Numeric Value1;
Numeric SumValue(0);
NumericSeries ADX;
Begin
MyOpen1=DataConvert(Open,"min",30,"Open");
MyHigh1=DataConvert(High,"min",30,"High");
MyLow1=DataConvert(Low,"min",30,"Low");
MyClose1=DataConvert(Close,"min",30,"Close");
//ADX
TR=Summation(MAX(MAX((MyHigh1-MyLow1),ABS(MyHigh1-MyClose1[1])),ABS(MyLow1-MyClose1[1])),Length);
HD=MyHigh1-MyHigh1[1];
LD=MyLow1[1]-MyLow1;
DMP=Summation(IIF(HD>0&&HD>LD,HD,0),Length);
DMM=Summation(IIF(LD>0&&LD>HD,LD,0),Length);
PDI=DMP*100/TR;
MDI=DMM*100/TR;
CY=(ABS(MDI-PDI)/(MDI+PDI))*100;
For i=ADXLength-1 DownTo 0
{
Value1=TransMinsDatab(CY,30,i);
SumValue=SumValue+Value1;
}
ADX=SumValue/ADXLength;
PlotNumeric("DI",PDI);
PlotNumeric("MDI",MDI);
PlotNumeric("ADX",ADX);
If(ADX>25&&ADX>ADX[1]&&PDI>MDI&&PDI>PDI[1]&&MDI<MDI[1])
{
Buy(Lots,OPEN);
}
End
在超級(jí)圖標(biāo)插入ADX公式,好多地方顯示ADX=-1.#J,無法顯示正常的ADX值;PDI和MDI也顯示異常(顯示為零)。
請(qǐng)TB老師幫忙修改,謝謝。其中,值得注意是 ADX、PDI和MDI需要定義成有序列的回溯參數(shù),才能用于回溯。
此外,我也注意到TB論壇里有關(guān)于DMI的參考模型
http://bbs.tb18.net/forum.php?mo ... 7&highlight=DMI ,
由于DirMovement函數(shù)的設(shè)置返回值為布爾型,我不知道怎么用于跨周期引用的公式。如果老師無法修改我直接從文華編譯的TB公式,那就請(qǐng)幫忙以TB帖子的DMI參考模型為基礎(chǔ),直接改為我想要的跨周期引用公式。再次表示感謝。 - TB技術(shù)人員:
不好意思,剛才文華模型中主模型中“ADX>25&&ADX>REF(ADX,1)&&NOT(R3)&& PDI>MDI&& PDI>REF(PDI,1)&& MDI<REF(MDI,1)BK;//CCI上穿100,做多” 在網(wǎng)頁中顯示有問題。
- TB客服:
不好意思,剛才文華模型中主模型中“ADX>25&&ADX>REF(ADX,1)&&NOT(R3)&& PDI>MDI&& PDI>REF(PDI,1)&& MDI<REF(MDI,1),BK;” 在網(wǎng)頁中顯示有問題,
應(yīng)該為“ADX>25&&ADX>REF(ADX,1)&&NOT(R3)&& PDI>MDI&& PDI>REF(PDI,1)&& MDI<REF(MDI,1),BK;”。同時(shí),ADX66公式中的”PlotNumeric("PDI",PDI);“在網(wǎng)頁中顯示出問題,應(yīng)該為”PlotNumeric("PDI",PDI);“。 - 網(wǎng)友回復(fù):
頂起,請(qǐng)TB老師幫忙解答,謝謝!
- 網(wǎng)友回復(fù):
再次請(qǐng)TB老師抽空指導(dǎo)修改,非常感謝。
有思路,想編寫各種指標(biāo)公式,程序化交易模型,選股公式,預(yù)警公式的朋友
可聯(lián)系技術(shù)人員 QQ: 1145508240 進(jìn)行 有償 編寫!(不貴!點(diǎn)擊查看價(jià)格!)
相關(guān)文章
-
沒有相關(guān)內(nèi)容