Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 6. - Seite 495

 

Das Terminal wurde von 509 auf 600 aktualisiert, und der EA gibt beim Kompilieren diese Warnung aus:

Deklaration von 'ErrNum' verdeckt globale Deklaration in Zeile 81

und ein Teil des Codes:

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

Können Sie mir bitte sagen, was das Problem ist?

 
rustein:

Das Terminal wurde von 509 auf 600 aktualisiert, und der EA gibt beim Kompilieren diese Warnung aus:

Deklaration von 'ErrNum' verdeckt globale Deklaration in Zeile 81

und ein Teil des Codes:

Können Sie mir bitte sagen, was das Problem ist?

Sie haben ErrNum global deklariert. Eine Variable mit demselben Namen innerhalb der Funktion verbirgt den Wert der globalen Variablen. Geben Sie in der Funktion einen anderen Namen
 

Danke, also ErrNum in ErrNumber geändert und das war's? Die Warnung ist verschwunden, alles funktioniert richtig?

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");   
 
Großartig, vielen Dank noch einmal.

Und eine letzte Warnung im Kodex:

nicht alle Kontrollpfade geben einen Wert zurück

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

Können Sie mir bitte auch sagen, was hier falsch ist.

 
rustein:
Großartig, vielen Dank noch einmal.

Und eine letzte Warnung im Kodex:

nicht alle Kontrollpfade geben einen Wert zurück

Können Sie mir bitte auch sagen, was hier falsch ist.

Wenn die Bedingung erfüllt ist, gibt die Funktion einen Wert zurück.

Andernfalls erfolgt keine Rückgabe der Funktion. Einen Standardwert aus der Funktion zurückgeben

 
hehe :),

tat dies und die Warnung verschwand:

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

hoffe das ist gut, das Leben in mt4 geht weiter :), danke nochmal!

 
rustein:
hehe :),

tat dies und die Warnung verschwand:

hoffe das ist gut, das Leben in mt4 geht weiter :), danke nochmal!

Bitte sehr.
 

Leute, es gibt 4 einfache hausgemachte Funktionen, die offenbar einen Fehler enthalten. Bitte helfen Sie einem Anfänger!

(Der Name jeder Funktion spricht für sich selbst, was diese Funktion tun soll)

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

 

helfen Sie mir zu verstehen

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

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

Schreibt eine Warnung möglicher Datenverlust aufgrund der Typkonvertierung in Bezug auf die ausgewählte b, ja, es ist nicht datetime, aber wenn Sie dies tun:

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

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

Aus irgendeinem Grund wird bei datetime b eine Warnung ausgegeben , obwohl es korrekt zu sein scheint und keine Warnungen ausgegeben werden sollten.

 
Alexandr24:

helfen Sie mir zu verstehen

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

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

Schreibt eine Warnung möglicher Datenverlust aufgrund der Typkonvertierung in Bezug auf die ausgewählte b, ja, es ist nicht datetime, aber wenn Sie dies tun:

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

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

Aus irgendeinem Grund wird bei datetime b eine Warnung ausgegeben , obwohl es korrekt zu sein scheint und keine Warnungen ausgegeben werden sollten.

Und setze int b