请大师帮助修改一个错误

 
下面这个EA存在一个错(警告:Function "OrderCl" is not referenced and will be removed from exp-file ),不知如何改正。请求大师赐教。另外请教一下,一些ea中或注解中包含很多奇怪的汉字,是何原因?是否能够改正?用什么办法可以改正?谢谢!


extern double Lot = 0.1; // 疣珈屦 腩蜞
extern int StartBar = 0; // 磬鬣朦睇?徉? ?觐蝾痤泐 桎弪 铗聍弪 溻篚 钿桧嚓钼 镟腩?
extern int TakeProfit = 20;
extern int StopLoss = 10;
extern int Trailing = 10; // 洛腓麒磬 蝠彘腓磴?
extern int MaxOrders = 1; // 爨犟桁嚯铄 觐腓麇耱忸 钿眍怵屐屙?铗牮 铕溴痤?
datetime last;
int start()
{
double ao1,ao2,ao3;
if(OrdersTotal()>0) TrailingControl();
if((Time[0]-last)>=Period()*60)
{
ao1=iAO(Symbol(),0,StartBar);
ao2=iAO(Symbol(),0,StartBar+1);
ao3=iAO(Symbol(),0,StartBar+2);
if(ao1<ao2 && ao2<ao3) OrderOp(OP_SELL);
if(ao2>ao3 && ao1>ao2) OrderOp(OP_BUY);
last=Time[0];
}
return(0);
}
int OrderOp(int ord) //开仓计算
{
double TP,SL,ticket;
if(OrdersTotal()<MaxOrders)
{
if(ord==OP_BUY) //买
{
TP=Bid+TakeProfit*Point; if(TakeProfit==0) TP=0;
SL=Ask-StopLoss*Point; if(StopLoss==0) SL=0;
ticket=OrderSend(Symbol(),OP_BUY,Lot,Ask,3,SL,TP,"项牦镟屐",16384,0,White);
}
if(ord==OP_SELL) //卖
{
TP=Ask-TakeProfit*Point; if(TakeProfit==0) TP=0;
SL=Bid+StopLoss*Point; if(StopLoss==0) SL=0;
ticket=OrderSend(Symbol(),OP_SELL,Lot,Bid,3,SL,TP,"橡钿噱?,16384,0,Yellow);
}
}
}

int OrderCl(int ord)
{
int cnt;
for(cnt=OrdersTotal();cnt>0;cnt--)
{
OrderSelect(cnt-1, SELECT_BY_POS, MODE_TRADES);
if(OrderType()==OP_BUY && ord==OP_BUY) OrderClose(OrderTicket(),OrderLots(),Bid,3,White);
if(OrderType()==OP_SELL && ord==OP_SELL) OrderClose(OrderTicket(),OrderLots(),Ask,3,Yellow);
}
}

int TrailingControl()
{
int total=OrdersTotal(),cnt;

for(cnt=0;cnt<total;cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()<=OP_SELL && OrderSymbol()==Symbol())
{
if(OrderType()==OP_BUY)
{
if(Trailing>0)
{
if(Bid-OrderOpenPrice()>Point*Trailing)
{
if(OrderStopLoss()<Bid-Point*Trailing)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*Trailing,OrderTakeProfit(),0);
return(0);
}
}
}
}
else
{
if(Trailing>0)
{
if((OrderOpenPrice()-Ask)>(Point*Trailing))
{
if(OrderStopLoss()>(Ask+Point*Trailing))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*Trailing,OrderTakeProfit(),0);
return(0);
}
}
}
}
}
}


}

 
奇怪的汉字? 那只是注释,可能是俄文
 
DxdCn >>
奇怪的汉字? 那只是注释,可能是俄文

谢谢! 那么这个警告:警告:Function "OrderCl" is not referenced and will be removed from exp-file 是什么意思,该怎样修改?

 
意思 是这个函数没有被使用,所以编译时不会编译它. 不需要修改,或者你把那个函数删除吧
 
不想删除就在它的前面输入 // 或 /*......*/
 
loh2005 >>
不想删除就在它的前面输入 // 或 /*......*/

我用//试了,结果出现更多错误。

 
loh2005 >>
不想删除就在它的前面输入 // 或 /*......*/

我用//试了,结果出现更多错误。我水平太差,能否详细赐教,谢谢!

 

这是一个警告 不是一个错误,你可以

在函数初始化加上extern int kk = 0;//默认为零 不生效 调整为一 或任何大于零的整数启动这项功能

主程序里面加上 if (kk>0) {OrderCl( ) ;}

另外 似乎 int OrderCl(int ord) 应该改为 void OrderCl( ) ;

你试试看!

 
liu2730 >>

这是一个警告 不是一个错误,你可以

在函数初始化加上extern int kk = 0;//默认为零 不生效 调整为一 或任何大于零的整数启动这项功能

主程序里面加上 if (kk>0) {OrderCl( ) ;}

另外 似乎 int OrderCl(int ord) 应该改为 void OrderCl( ) ;

你试试看!


谢谢!两种方法我都试了,问题仍然没有解决。

 

改成这样就行了,编译就不会有警告了

/*
int OrderCl(int ord)
{
int cnt;
for(cnt=OrdersTotal();cnt>0;cnt--)
{
OrderSelect(cnt-1, SELECT_BY_POS, MODE_TRADES);
if(OrderType()==OP_BUY && ord==OP_BUY) OrderClose(OrderTicket(),OrderLots(),Bid,3,White);
if(OrderType()==OP_SELL && ord==OP_SELL) OrderClose(OrderTicket(),OrderLots(),Ask,3,Yellow);
}
}
*/

 
zxh222 >>

改成这样就行了,编译就不会有警告了

/*
int OrderCl(int ord)
{
int cnt;
for(cnt=OrdersTotal();cnt>0;cnt--)
{
OrderSelect(cnt-1, SELECT_BY_POS, MODE_TRADES);
if(OrderType()==OP_BUY && ord==OP_BUY) OrderClose(OrderTicket(),OrderLots(),Bid,3,White);
if(OrderType()==OP_SELL && ord==OP_SELL) OrderClose(OrderTicket(),OrderLots(),Ask,3,Yellow);
}
}
*/

这不是平仓语句吗? 难道是可有可无?我试了后确实警告消除了。谢谢指点!但我搞不懂上面的代码起什么作用?是否可以再多 教我一些?

原因: