[存档!]任何菜鸟问题,为了不给论坛添乱。专业人士,不要与它擦肩而过。没有你,哪里都不能去 - 2. - 页 320

 

大家晚上好!

请告诉我,我编译了程序,但我得到了一个错误"'\end_of_program' - 不平衡的左括号D:\Program Files\MetaTrader 4 - Alpari\experts\probota 4.mq4 (161, 4)"。

我检查了所有的东西,都是正确的。 这个错误可能与什么有关?

 
Boneshapper:

大家晚上好!

请告诉我,我编译了程序,但我得到了一个错误"'\end_of_program' - 不平衡的左括号D:\Program Files\MetaTrader 4 - Alpari\experts\probota 4.mq4 (161, 4)"。

我检查了所有的东西,都是正确的。 这个错误可能与什么有关?


例如,在任何条件下缺少小括号...要么不编译EA本身,而是编译其中的一个嵌套...
 
Boneshapper:

大家晚上好!

请告诉我,我编译了这个程序,但它产生了错误"'\end_of_program' - 不平衡的左括号D:\Program Files\MetaTrader 4 - Alpari\experts\probota 4.mq4 (161, 4)"。

我已经检查了所有的东西,一切正常。 这个错误会与什么有关?


编译器在括号里给了你行号(161),其中有一个缺失或多余的括号。

双击错误文本,编译器将显示错误位置。

 

大家好!

亲爱的专业人士

请看,问题是什么,我不明白。当我试图下一个挂单时,它放出两个。

while (Ticket2<0)

{

RefreshRates()。

Ticket2=OrderSend(Symbol(),2,Lots_New*2,price,2,0,TP,"",MN); //1订单正在等待购买

Alert ("Error in Cycle",GetLastError()); Alert ("TIK2= " ,Ticket2;)

睡眠(500)。

}

提前感谢每个人的答复。
 

有人能帮助改变代码,使指标不必在每个条形上手动更新。

#property indicator_buffers 6
#property indicator_color1 Black
#property indicator_color2 MediumBlue
#property indicator_color3 Yellow
#property indicator_color4 MediumBlue
#property indicator_color5 Green
#property indicator_color6 Red
#property indicator_separate_window

extern int RSI_Period = 40;         //8-25
extern int RSI_Price = 0;           //0-6
extern int Volatility_Band = 34;    //20-40
extern int RSI_Price_Line = 2;      
extern int RSI_Price_Type = 0;      //0-3
extern int Trade_Signal_Line = 7;   
extern int Trade_Signal_Type = 0;   //0-3
extern int NumberOfComputations =    2;
extern  int PeriodNorm=10;
extern int NumberOfBars         = 2000;

double RSIBuf[],UpZone[],MdZone[],DnZone[],MaBuf[],MbBuf[];

int init()
  {
   IndicatorShortName("Traders Dynamic Index SSA_normalize");
   SetIndexBuffer(0,RSIBuf);
   SetIndexBuffer(1,UpZone);
   SetIndexBuffer(2,MdZone);
   SetIndexBuffer(3,DnZone);
   SetIndexBuffer(4,MaBuf);
   SetIndexBuffer(5,MbBuf);
   
   SetIndexStyle(0,DRAW_NONE); 
   SetIndexStyle(1,DRAW_LINE); 
   SetIndexStyle(2,DRAW_LINE,0,2);
   SetIndexStyle(3,DRAW_LINE);
   SetIndexStyle(4,DRAW_LINE,0,2);
   SetIndexStyle(5,DRAW_LINE,0,2);
   
   SetIndexLabel(0,NULL); 
   SetIndexLabel(1,"VB High"); 
   SetIndexLabel(2,"Market Base Line"); 
   SetIndexLabel(3,"VB Low"); 
   SetIndexLabel(4,"RSI Price Line");
   SetIndexLabel(5,"Trade Signal Line");
 
   SetLevelValue(0,50);
   SetLevelValue(1,68);
   SetLevelValue(2,32);
   SetLevelStyle(STYLE_DOT,1,DimGray);
   
   return(0);
  }

int start()
  {
   double MA,RSI[];
   ArrayResize(RSI,Volatility_Band);
   int counted_bars=IndicatorCounted();
   int limit = Bars-counted_bars-1;
   for(int i=limit; i>=0; i--)
   {
      RSIBuf[i] = iCustom(Symbol(),Period(),"#_FullSSA_normalize",RSI_Period,NumberOfComputations,PeriodNorm,NumberOfBars,RSI_Price,0,i);
      MA = 0;
      for(int x=i; x<i+Volatility_Band; x++) {
         RSI[x-i] = RSIBuf[x];
         MA += RSIBuf[x]/Volatility_Band;
      }
      UpZone[i] = (MA + (1.6185 * StDev(RSI,Volatility_Band)));
      DnZone[i] = (MA - (1.6185 * StDev(RSI,Volatility_Band)));  
      MdZone[i] = ((UpZone[i] + DnZone[i])/2);
      }
   for (i=limit-1;i>=0;i--)  
      {
       MaBuf[i] = (iMAOnArray(RSIBuf,0,RSI_Price_Line,0,RSI_Price_Type,i));
       MbBuf[i] = (iMAOnArray(RSIBuf,0,Trade_Signal_Line,0,Trade_Signal_Type,i));   
      } 
//----
   return(0);
  }
  
double StDev(double& Data[], int Per)
{return(MathSqrt(Variance(Data,Per)));
}
double Variance(double& Data[], int Per)
{double sum, ssum;
  for (int i=0; i<Per; i++)
  {sum += Data[i];
   ssum += MathPow(Data[i],2);
  }
  return((ssum*Per - sum*sum)/(Per*(Per-1)));
}
//+------------------------------------------------------------------+
附加的文件:
 
Roman.:

例如,在任何条件下缺少括号...或者你没有编译专家顾问本身,而是编译了其中的一个附件...

谢谢,我将更仔细地检查它
 
DhP:


编译器会告诉你括号缺失或多余的行号(161)。

双击错误文本,编译器会告诉你错误在哪里。


谢谢你的提示!
 
Boneshapper:

没有用,还是买了一堆:(请告诉我还有什么可以做的。

奇怪的是,这段代码是有效的。也许不把它放在那里?
 
Roger:

奇怪,这段代码是有效的。也许你把它放在了错误的地方?
似乎是正确的,我检查了几次,在交易后我显示了警报 值1,所有的日子都是正常的,但为什么恰恰是2010年10月12日它买了这么一堆--我不明白。
 
Roger:

奇怪,这段代码是有效的。也许你把它放在了错误的地方?

当我写这个的时候,我没有在条件前面写Flag=0,因为这样它就会在每次交易前被更新,并且永远是0。如果我们不指定一个值,比如只有int Flag,程序会把它赋值为0,对吗?