Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 6. - página 495

 

O terminal foi atualizado de 509 para 600 e a EA dá este aviso na compilação:

declaração de "ErrNum" esconde a declaração global na linha 81

e uma parte do código:

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

Você pode, por favor, me dizer qual é o problema?

 
rustein:

O terminal foi atualizado de 509 para 600 e a EA dá este aviso na compilação:

declaração de "ErrNum" esconde a declaração global na linha 81

e uma parte do código:

Você pode, por favor, me dizer qual é o problema?

Você declarou ErrNum globalmente. Uma variável com o mesmo nome dentro da função esconde o valor da variável global. Na função, dê um nome diferente
 

Obrigado, então mudou ErrNum para ErrNumber e é isso? O aviso desapareceu, tudo vai funcionar corretamente?

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");   
 
Ótimo, muito obrigado mais uma vez.

E um último aviso no código:

nem todos os caminhos de controle retornam um valor

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

Você pode me dizer o que está errado aqui também, por favor?

 
rustein:
Ótimo, muito obrigado mais uma vez.

E um último aviso no código:

nem todos os caminhos de controle retornam um valor

Você pode me dizer o que está errado aqui também, por favor?

Se a condição for cumprida, a função retorna um valor.

Caso contrário, não há retorno da função. Retornar algum valor padrão da função

 
hehe :),

fez isso e o aviso desapareceu:

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);
}

esperança que isso seja bom, a vida no mt4 continua :), obrigado novamente!

 
rustein:
hehe :),

fez isso e o aviso desapareceu:

esperança que isso seja bom, a vida no mt4 continua :), obrigado novamente!

Seja bem-vindo.
 

Pessoal, existem 4 funções simples feitas internamente que aparentemente têm um bug nelas. Por favor, ajude um iniciante!

(O nome de cada função fala por si, o que esta função deve fazer)

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);
}

 

me ajude a entender

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

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

Escreve um aviso de possível perda de dados devido à conversão do tipo referente ao b selecionado, sim, não é a data, mas se você o fizer:

datatime b=ObjectGet("b",OBJPROP_TIME1);

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

haverá um aviso na data b por algum motivo , parece correto e não deve haver avisos.

 
Alexandr24:

me ajude a entender

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

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

Escreve um aviso de possível perda de dados devido à conversão do tipo referente ao b selecionado, sim, não é a data, mas se você o fizer:

datatime b=ObjectGet("b",OBJPROP_TIME1);

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

haverá um aviso na data b por algum motivo , parece correto e não deve haver avisos.

E definir em b
Razão: