任何菜鸟问题,为了不给论坛添乱。专业人士,不要路过。没有你就无处可去 - 6. - 页 495

 

终端已经从509更新到600,EA在编译时给出了这个警告。

ErrNum "的声明隐藏了第81行的全局声明。

和代码的一部分。

string ErrorDescription(int ErrNum)
{
  switch(ErrNum)
  {

你能告诉我问题是什么吗?

 
rustein:

终端已经从509更新到600,EA在编译时给出了这个警告。

ErrNum "的声明隐藏了第81行的全局声明。

和代码的一部分。

你能告诉我问题是什么吗?

你有ErrNum全局声明。在函数内部的同名变量会隐藏全局变量的值。在函数中,给一个不同的名字
 

谢谢,所以把ErrNum 改为ErrNumber,就这样了?警告消失了,一切都会正常工作?

string ErrorDescription(int ErrNumber)
{
  switch(ErrNum)
  {
    case 0: return("NO ERROR");
    case 1: return("NO RESULT");                                 
    case 2: return("COMMON ERROR");                              
    case 3: return("INVALID TRADE PARAMETERS");                  
    case 4: return("SERVER BUSY");                               
    case 5: return("OLD VERSION");                               
    case 6: return("NO CONNECTION");                             
    case 7: return("NOT ENOUGH RIGHTS");   
 
很好,再次感谢你。

在代码中还有一个最后的警告。

不是所有的控制路径都会返回一个值

double FractalUp()
{
  if(iCustom(Symbol(),0,"SR",FractalRange,false,1,2,TradeBar) != EMPTY_VALUE)  
  return(iCustom(Symbol(),0,"SR",FractalRange,false,1,2,TradeBar));
}

请你也告诉我这里出了什么问题。

 
rustein:
很好,再次感谢你。

在代码中还有一个最后的警告。

不是所有的控制路径都会返回一个值

请你也告诉我这里出了什么问题。

如果条件得到满足,该函数返回一个值

否则,该函数没有返回。从函数中返回一些默认值

 
hehe :),

这样做,警告就消失了。

double FractalUp()
{
  if(iCustom(Symbol(),0,"SR",FractalRange,false,1,2,TradeBar) != EMPTY_VALUE)
  {
    return(iCustom(Symbol(),0,"SR",FractalRange,false,1,2,TradeBar));
  }
  else return (0);
}

希望这很好,mt4的生活 还要继续:),再次感谢!

 
rustein:
hehe :),

这样做,警告就消失了。

希望这很好,mt4的生活 还要继续:),再次感谢!

不客气。
 

伙计们,有4个简单的自制函数,显然它们有一个错误。请帮助一个初学者!

(每个函数的名称不言自明,这个函数应该做什么)

extern double LOT =0.1;


double GetLastOrderProfit()
{
  int time = 0; double profit = 0; 
  for(int i = OrdersHistoryTotal()-1; i>=0; i--)
  {
    if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
    {
      if(OrderSymbol() == Symbol()&& OrderMagicNumber() == Magic)
      {
        if(time<OrderCloseTime())
        {
          time=OrderCloseTime();
          profit=OrderProfit();
        }
      }
    }
  }
  return(profit);
}

//+------------------------------------------------------------------+
double GetLastLot()
{
  int time = 0; double Lot = 0; 
  for(int i = OrdersHistoryTotal()-1;i>=0;i--)
  {
    if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
    {
      if(OrderSymbol() == Symbol()&& OrderMagicNumber() == Magic)
      {
        if(time<OrderCloseTime())
        time=OrderCloseTime();
        Lot = OrderLots(); 
      }
    }
  }

  if(Lot <= 0) Lot = LOT;

  return(Lot);
}

//+------------------------------------------------------------------+
double GetLastTenOrdersProfit()
{
  double profit = 0; int count = 0; 
  for(int i = OrdersHistoryTotal()-1;i>=0;i--)
  {
    if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
    {
      if(OrderSymbol() == Symbol()&& OrderMagicNumber() == Magic)
      {
        if (count<10)
        {
          profit=profit+OrderProfit();
          count++;
        } 
      }
    }
  }

  return(profit);
}
//+------------------------------------------------------------------+
double GetLot()
{
  double Lot = 0; double n = GetLastLot();
  
  if (GetTotalProfit() < 0 || GetLastLotProfit() < 0)
  Lot = NormalizeDouble (n * MartinStep,2);
  
  if (GetTotalProfit() >= 0 || GetLastLotProfit() >= 0)
  Lot = LOT;
  
  return (Lot);
}

 

帮助我了解

double b=NormalizeDouble(ObjectGet("b",OBJPROP_TIME1),Digits)。

int shiftb=iBarShift(NULL,0,b)。

写一个警告,由于类型转换可能导致数据丢失,指的是选定的b,是的,它不是数据时间,但如果你这样做。

datetimeb=ObjectGet("b",OBJPROP_TIME1)。

int shiftb=iBarShift(NULL,0,b)。

由于某些原因,在datetimeb 上会有一个警告 似乎是正确的,不应该有警告

 
Alexandr24:

帮助我了解

double b=NormalizeDouble(ObjectGet("b",OBJPROP_TIME1),Digits)。

int shiftb=iBarShift(NULL,0,b)。

写一个警告,由于类型转换可能导致数据丢失,指的是选定的b,是的,它不是数据时间,但如果你这样做。

datetimeb=ObjectGet("b",OBJPROP_TIME1)。

int shiftb=iBarShift(NULL,0,b)。

由于某些原因,在datetimeb 上会有一个警告 似乎是正确的,不应该有警告

并设置int b