포럼을 어지럽히 지 않도록 모든 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 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 );
}

잘됐으면 좋겠어, 4 산에서의 삶은 계속된다 :), 다시 한 번 고마워!.

 
rustein :
헤헤 :),

이 작업을 수행하고 경고가 사라졌습니다.

잘됐으면 좋겠어, 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);
}

 

이해하도록 도와주세요

더블 b=NormalizeDouble(ObjectGet("b",OBJPROP_TIME1),숫자);

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

선택한 b를 참조하는 유형 변환으로 인해 데이터 손실 가능성이 있다는 경고 하나를 씁니다. 예, 날짜/시간이 아니지만 이렇게 하면:

날짜 시간 b =ObjectGet("b",OBJPROP_TIME1);

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

그러면 datetime b 에 어떤 이유로 경고가 표시되고 모든 것이 올바른 것으로 보이며 경고가 없어야 합니다 .

 
Alexandr24 :

이해하도록 도와주세요

더블 b=NormalizeDouble(ObjectGet("b",OBJPROP_TIME1),숫자);

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

선택한 b를 참조하는 유형 변환으로 인해 데이터가 손실될 수 있다는 경고 하나를 씁니다. 예, 날짜/시간이 아니지만 이렇게 하면:

날짜 시간 b =ObjectGet("b",OBJPROP_TIME1);

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

그러면 datetime b 에 어떤 이유로 경고가 표시되고 모든 것이 올바른 것으로 보이며 경고가 없어야 합니다 .

그리고 int b를 설정합니다.