為啥編譯出現(xiàn)大括號(hào)不匹配的問(wèn)題 [開(kāi)拓者 TB]
- 咨詢內(nèi)容:
本帖最后由 人外有人 于 2013-7-25 10:25 編輯
Params
Numeric Length(14);
Numeric Lots(1);
Vars
NumericSeries sADX;
NumericSeries sVolty;
Numeric PlusDM;//+DM1
Numeric MinusDM;//-DM1
Numeric UpperMove;
Numeric LowerMove;
Numeric SumPlusDM;
Numeric SumMinusDM;
Numeric SumTR;
NumericSeries AvgPlusDM;//+DM14
NumericSeries AvgMinusDM;//-DM14
Numeric SF; // smoothing factor
NumericSeries SAR;
Numeric i;
NumericSeries TRValue;
NumericSeries AvgPlusDI;//+DI14
NumericSeries AvgMinusDI;//-DI14
Numeric k;
Numeric ReversalTime;//記錄止損點(diǎn)
Numeric NewHigh;//新高
Numeric EP;
Numeric Newlow;//新低
Numeric ReversalPoint;//記錄反轉(zhuǎn)的時(shí)間
Numeric TradeNumber;//記錄已發(fā)生的交易數(shù)
Numeric TradeTime;//記錄開(kāi)始交易兩次內(nèi)交易的日期
Numeric oADX;
Numeric oADXR;
Numeric oVolty;
Numeric a;//代表的是SAR[2]
Numeric b;//代表的是SAR[1]
Begin
SF = 1/length;
TRValue = TrueRange;
If(CurrentBar == Length)
{
for i = 0 To Length - 1
{
PlusDM = 0 ;
MinusDM = 0 ;
UpperMove = High - High[ i + 1 ] ;
LowerMove = Low[ i + 1 ] - Low ;
if (UpperMove > LowerMove and UpperMove > 0 )
{
PlusDM = UpperMove;
}else if (LowerMove > UpperMove and LowerMove > 0)
{
MinusDM = LowerMove ;
}
SumPlusDM = SumPlusDM + PlusDM ;
SumMinusDM = SumMinusDM + MinusDM ;
SumTR = SumTR + TRValue ;
}
AvgPlusDM = SumPlusDM / Length ;
AvgMinusDM = SumMinusDM / Length ;
sVolty = SumTR / Length ;
}Else if(CurrentBar > Length)
{
PlusDM = 0 ;
MinusDM = 0 ;
UpperMove = High - High[1] ;
LowerMove = Low[1] - Low ;
if (UpperMove > LowerMove and UpperMove > 0 )
{
PlusDM = UpperMove;
}else if (LowerMove > UpperMove and LowerMove > 0 )
{
MinusDM = LowerMove ;
}
AvgPlusDM = AvgPlusDM[1] + SF * ( PlusDM - AvgPlusDM[1] ) ;
AvgMinusDM = AvgMinusDM[1] + SF * ( MinusDM - AvgMinusDM[1] ) ;
sVolty = sVolty[1] + SF * ( TRValue - sVolty[1] ) ;
}Else
{
oADX = InvalidNumeric;
oVolty = InvalidNumeric;
}
AvgPlusDI=AvgPlusDM/sVolty;
AvgMinusDI=AvgMinusDM/sVolty;
TradeNumber=0;
IF (TradeNumber < 2 )//前兩次交易用動(dòng)向交易系統(tǒng)來(lái)進(jìn)行
{
if (MarketPosition==0)//持空倉(cāng)
{
IF (AvgPlusDI[1]<AvgMinusDI[1] and AvgPlusDI>AvgMinusDI)//做多條件
{
Buy(Lots,close);//買(mǎi)入一手
ReversalPoint=Low;
TradeNumber=TradeNumber+1;
TradeTime=Date;
}
else if (AvgPlusDI[1]>AvgMinusDI[1] and AvgPlusDI<AvgMinusDI)//做空條件
{
SellShort(Lots,close);
ReversalPoint=High;
TradeNumber=TradeNumber+1;
TradeTime=Date;
}
}
else if (MarketPosition==1)//持多頭
{
if (Low<ReversalPoint)//反轉(zhuǎn)條件
{
SellShort(Lots,close);
TradeNumber=TradeNumber+1;
TradeTime=Date;
}
}
else//持空頭
{
if (High>ReversalPoint)//反轉(zhuǎn)條件
{
Buy(Lots,close);
TradeNumber=TradeNumber+1;
TradeTime=Date;
}
}
}
IF (TradeNumber >= 2 )//之后的交易用拋物式時(shí)間價(jià)格交易系統(tǒng)
{
if (Date==TradeTime+1)//開(kāi)始使用拋物式時(shí)間價(jià)格交易系統(tǒng)的時(shí)間點(diǎn)
{
if (MarketPosition==1)//持多頭
{
a=10000000;//盡量用大的數(shù),與下面Low比小的時(shí)候,使得結(jié)果為L(zhǎng)ow
k=0;
for i = 2 To BarCount
{
if (OpenIntD-OpenIntD[i+1]<>0)//看是否是上個(gè)交易的開(kāi)始時(shí)刻
{
k=k+1;
if (k==1)
{
LastTradeBegin=i;//得到上個(gè)交易的開(kāi)始時(shí)刻
break;
}
}
}
for i=2 To LastTradeBegin
{
a=Min(a,Low);//得到上個(gè)交易的最低點(diǎn)
}
if (a>min(Low[2],Low[3]))
{
a=min(Low[2],Low[3]);//SAR不能超過(guò)價(jià)格區(qū)間
}
b=a+0.02*(High[2]-a);//下一個(gè)SAR[1]的值
if (b>min(Low[1],Low[2]))
{
b=min(Low[1],Low[2]);
}
if (High>Max(High[1],High[2]))//是否達(dá)到新高
{
SAR==b+0.04*(Max(High[1],High)-b);//將因子取成0.04
}
else
{
SAR==b+0.02*(Max(High[1],High)-b);//沒(méi)突破新高,將因子取成0.02
}
if (SAR>min(Low,Low[1]))
{
SAR=min(Low,Low[1]);//SAR存放的是第二天的SAR值
}
}
else
{
a=High[2];//取初值
k=0;
for i = 2 To BarCount
{
if (OpenIntD-OpenIntD[i+1]!=0)//看是否是上個(gè)交易的開(kāi)始時(shí)刻
{
k=k+1;
if (k==1)
{
LastTradeBegin=i;//得到上個(gè)交易的開(kāi)始時(shí)刻
break;
}
}
}
for i=2 To LastTradeBegin
{
a=Max(a,High);//得到上個(gè)交易的最高點(diǎn)
}
if (a>max(High[2],High[3]))
{
a=max(High[2],High[3]);//SAR不能超過(guò)價(jià)格區(qū)間
}
b=a-0.02*abs(Low[2]-a);//下一個(gè)SAR[1]的值
if (b<max(High[1],High[2]))
{
b=max(High[1],High[2]);
}
if (Low>Min(Low[1],Low[2]))
{
SAR==b-0.04*abs(Min(Low[1],Low)-b);//將因子取成0.04
}
else
{
SAR==b-0.02*abs(Min(Low[1],Low)-b);//沒(méi)突破新高,將因子取成0.02
}
if (SAR<max(High,High[1]))
{
SAR=max(High,High[1]);//SAR存放的是第二天的SAR值
}
}
}
else
{
if (MarketPosition==1)//持多頭
{
if (Low<SAR[1])//反轉(zhuǎn)條件
{
SellShort(Lots,close);
for i=1 To BarCount
{
if (OpenIntD<=0)//看是否是上個(gè)交易的開(kāi)始時(shí)刻
{
k=i;//得到上個(gè)交易的開(kāi)始時(shí)刻
break;
}
}
b=High[1];
for i=1 To k-1
{
b=Max(b,High);//得到上個(gè)交易的最高點(diǎn)
}
if (b>min(Low[1],Low[2]))
{
b=min(Low[1],Low[2]);//SAR不能超過(guò)價(jià)格區(qū)間
{
SAR=b+0.02*(High-b);//下一個(gè)SAR的值
ReversalTime=Date;
}
if (Low>=SAR[1])//繼續(xù)持倉(cāng)條件
{
k=0;
for i=Date-ReversalTime-1 DownTo 1
NewHigh=High[Date-ReversalTime-1];
for j=Date-ReversalTime-1 DownTo i
{
NewHigh=Max(NewHigh,NewHigh[j]);
}
if (High>NewHigh)//求新高的個(gè)數(shù)
{
k=k+1;
}
EP=Max(NewHigh,High);
IF (0.02*k<=0.2)//AF的值不能大于0.2
{
AF=0.02*k;
}
else
{
AF=0.2;
}
SAR=b+AF*(EP-b);//求得SAR
IF (SAR>min(Low,Low[1]))
{
SAR=min(Low,Low[1]);//SAR存放的是第二天的SAR值
}
}
}
if (MarketPosition<1)//持空頭
{
if (High>SAR[1])//反轉(zhuǎn)條件
{
Buy(Lots,close);
for i=1 To BarCount
{
if (OpenIntD>=0)//看是否是上個(gè)交易的開(kāi)始時(shí)刻
{
k=i;//得到上個(gè)交易的開(kāi)始時(shí)刻
break;
}
}
b=Low[1];
for i=1 To k-1
{
b=Min(b,Low);//得到上個(gè)交易的最低點(diǎn)
}
if (b<max(High[1],High[2]))
{
b=max(High[1],High[2]);//SAR不能超過(guò)價(jià)格區(qū)間
{
SAR=b-0.02*abs(Low-b);//下一個(gè)SAR的值
ReversalTime=Date;
}
if (High<=SAR[1])//繼續(xù)持倉(cāng)條件
{
k=0;
for i=Date-ReversalTime-1 DownTo 1
NewLow=Low[Date-ReversalTime-1];
for j=Date-ReversalTime-1 DownTo i
{
NewLow=Min(NewLow,NewLow[j]);
}
if (Low<NewLow)
{
k=k+1;//求新高的個(gè)數(shù)
}
EP=Min(NewLow,Low);
IF (0.02*k<=0.2)//AF的值不能大于0.2
{
AF=0.02*k;
}
else
{
AF=0.2;
}
SAR=b-AF*(EP-b);//求得SAR
IF (SAR>max(High,High[1]))
{
SAR=max(High,High[1]);//SAR存放的是第二天的SAR值
}
}
}
}
}
End - TB技術(shù)人員:
- TB客服:
- 網(wǎng)友回復(fù):
是在最后一行的end處,報(bào)出大括號(hào)不匹配的錯(cuò)誤,求小米求救啊
- 網(wǎng)友回復(fù):
有思路,想編寫(xiě)各種指標(biāo)公式,程序化交易模型,選股公式,預(yù)警公式的朋友
可聯(lián)系技術(shù)人員 QQ: 1145508240 (不貴!點(diǎn)擊查看價(jià)格!)
相關(guān)文章
-
沒(méi)有相關(guān)內(nèi)容