どんな新人の質問でも、フォーラムを乱雑にしないように。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 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:
素晴らしい、本当にありがとうございました。

そして、コードにある最後の警告。

すべてのコントロールパスが値を返すわけではない

こちらも何が問題なのか、教えてください。

条件を満たした場合、この関数は値を返します

それ以外の場合は、関数からの返送はありません。関数から何らかのデフォルト値を返す

 
へー)

を実行したところ、警告が消えました。

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

mt 4の人生は続く:)、本当にありがとうござい ます。

 
rustein:
へー)

を実行したところ、警告が消えました。

mt 4の人生は続く:)、本当にありがとうござい ます。

どういたしまして。
 

みんな、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を参照して型変換によるデータの損失の可能 性を1つの警告を書き込みます、はい、それはdatetimeではありませんが、そうする場合。

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を参照して型変換によるデータの損失の可能性を1つの警告を書き込みます、はい、それはdatetimeではありませんが、そうする場合。

datetimeb=ObjectGet("b",OBJPROP_TIME1);

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

は、なぜかdatetimebで 警告が出ます 正しいようで、警告は出ないはずです

そして、int bを設定する