为啥编译出现大括号不匹配的问题 [开拓者 TB]
- 咨询内容:
 本帖最后由 人外有人 于 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;//记录止损点
 Numeric NewHigh;//新高
 Numeric EP;
 Numeric Newlow;//新低
 Numeric ReversalPoint;//记录反转的时间
 Numeric TradeNumber;//记录已发生的交易数
 Numeric TradeTime;//记录开始交易两次内交易的日期
 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 )//前两次交易用动向交易系统来进行
 {
 if (MarketPosition==0)//持空仓
 {
 IF (AvgPlusDI[1]<AvgMinusDI[1] and AvgPlusDI>AvgMinusDI)//做多条件
 {
 Buy(Lots,close);//买入一手
 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)//反转条件
 {
 SellShort(Lots,close);
 TradeNumber=TradeNumber+1;
 TradeTime=Date;
 }
 }
 else//持空头
 {
 if (High>ReversalPoint)//反转条件
 {
 Buy(Lots,close);
 TradeNumber=TradeNumber+1;
 TradeTime=Date;
 }
 }
 }
 IF (TradeNumber >= 2 )//之后的交易用抛物式时间价格交易系统
 {
 if (Date==TradeTime+1)//开始使用抛物式时间价格交易系统的时间点
 {
 if (MarketPosition==1)//持多头
 {
 a=10000000;//尽量用大的数,与下面Low比小的时候,使得结果为Low
 k=0;
 for i = 2 To BarCount
 {
 if (OpenIntD-OpenIntD[i+1]<>0)//看是否是上个交易的开始时刻
 {
 k=k+1;
 if (k==1)
 {
 LastTradeBegin=i;//得到上个交易的开始时刻
 break;
 }
 }
 }
 for i=2 To LastTradeBegin
 {
 a=Min(a,Low);//得到上个交易的最低点
 }
 if (a>min(Low[2],Low[3]))
 {
 a=min(Low[2],Low[3]);//SAR不能超过价格区间
 }
 b=a+0.02*(High[2]-a);//下一个SAR[1]的值
 if (b>min(Low[1],Low[2]))
 {
 b=min(Low[1],Low[2]);
 }
 if (High>Max(High[1],High[2]))//是否达到新高
 {
 SAR==b+0.04*(Max(High[1],High)-b);//将因子取成0.04
 }
 else
 {
 SAR==b+0.02*(Max(High[1],High)-b);//没突破新高,将因子取成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)//看是否是上个交易的开始时刻
 {
 k=k+1;
 if (k==1)
 {
 LastTradeBegin=i;//得到上个交易的开始时刻
 break;
 }
 }
 }
 for i=2 To LastTradeBegin
 {
 a=Max(a,High);//得到上个交易的最高点
 }
 if (a>max(High[2],High[3]))
 {
 a=max(High[2],High[3]);//SAR不能超过价格区间
 }
 b=a-0.02*abs(Low[2]-a);//下一个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);//没突破新高,将因子取成0.02
 }
 if (SAR<max(High,High[1]))
 {
 SAR=max(High,High[1]);//SAR存放的是第二天的SAR值
 }
 }
 }
 else
 {
 if (MarketPosition==1)//持多头
 {
 if (Low<SAR[1])//反转条件
 {
 SellShort(Lots,close);
 for i=1 To BarCount
 {
 if (OpenIntD<=0)//看是否是上个交易的开始时刻
 {
 k=i;//得到上个交易的开始时刻
 break;
 }
 }
 b=High[1];
 for i=1 To k-1
 {
 b=Max(b,High);//得到上个交易的最高点
 }
 if (b>min(Low[1],Low[2]))
 {
 b=min(Low[1],Low[2]);//SAR不能超过价格区间
 {
 SAR=b+0.02*(High-b);//下一个SAR的值
 ReversalTime=Date;
 }
 if (Low>=SAR[1])//继续持仓条件
 {
 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)//求新高的个数
 {
 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])//反转条件
 {
 Buy(Lots,close);
 for i=1 To BarCount
 {
 if (OpenIntD>=0)//看是否是上个交易的开始时刻
 {
 k=i;//得到上个交易的开始时刻
 break;
 }
 }
 b=Low[1];
 for i=1 To k-1
 {
 b=Min(b,Low);//得到上个交易的最低点
 }
 if (b<max(High[1],High[2]))
 {
 b=max(High[1],High[2]);//SAR不能超过价格区间
 {
 SAR=b-0.02*abs(Low-b);//下一个SAR的值
 ReversalTime=Date;
 }
 if (High<=SAR[1])//继续持仓条件
 {
 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;//求新高的个数
 }
 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技术人员:
-  TB客服:
-  网友回复:
是在最后一行的end处,报出大括号不匹配的错误,求小米求救啊
-  网友回复:
有思路,想编写各种指标公式,程序化交易模型,选股公式,预警公式的朋友
可联系技术人员 QQ: 1145508240  进行 有偿 编写!(不贵!点击查看价格!)
                        
相关文章
- 
                        没有相关内容
                       

 
                     会员登录/注册
会员登录/注册