오류, 버그, 질문 - 페이지 886

 
Yedelkin :
여러 가지 이유가 있을 수 있는데 가장 유명한 것은 배열을 넘어 0으로 나누는 것입니다.

고맙습니다.

범위를 벗어난 배열 이란 무엇입니까? 제 무지에 대해 사과드립니다.

나는 단지 3개의 부서가 있습니다:

TradeLot= AccountInfoDouble ( ACCOUNT_BALANCE )*(PercentSize/ 100 )/( 100 ); 
MaxLotAllowed= MathFloor ((MeansFree/MeansOneLot)* 100 )/ 100 ;
(PositionVolume()+Volume())*( 100 )*( 100 ))/ AccountInfoDouble ( ACCOUNT_BALANCE )
 
G001 : 3개 부문만 있습니다.

여기서 잠재적으로, 0으로 나누기:

 /AccountInfoDouble ( ACCOUNT_BALANCE )

기본적인 점검이 필요합니다.

G001 : 범위를 벗어난 배열이란 무엇입니까? 제 무지에 대해 사과드립니다.

예를 들어 다음과 같은 경우입니다.

 double array[ 3 ];
for ( int i= 0 ; i<= 3 ; i++) array[i];

마지막 반복에서 범위를 벗어난 배열 이 있습니다.

 
Yedelkin :

여기서 잠재적으로, 0으로 나누기:

기본적인 점검이 필요합니다.

예를 들어 다음과 같은 경우입니다.

마지막 반복에서 범위를 벗어난 배열이 있습니다.

고맙습니다.

좋습니다. 기능이 제대로 작동하는지 확인해야 합니까?

 AccountInfoDouble ( ACCOUNT_BALANCE )

 
G001 : 좋습니다. 기능이 제대로 작동하는지 확인해야 하나요?
음, 균형이 0이 되고 기능이 올바르게 작동하면 어떻게 됩니까? :)
 

이 카운터에 문제가 있습니까?

 int TotalBullStopOrders()
{
   int BullCounter= 0 ;
   int Total = OrdersTotal ();
   for (i = 0 ; i < Total; i++)
  {
     if ( OrderSelect ( OrderGetTicket (i)))
    {
       if ( OrderGetString ( ORDER_SYMBOL )== Symbol () && OrderGetInteger ( ORDER_MAGIC )==Magic)
      {
         if ( OrderGetInteger ( ORDER_TYPE )== ORDER_TYPE_BUY_STOP )
        {
          BullCounter++;
        }
      }
    }
  }
   return (BullCounter);
}
 
Yedelkin :
음, 균형이 0이 되고 기능이 올바르게 작동하면 어떻게 됩니까? :)
당신 말이 맞아, 내가 거기에서 고칠게.
하지만 지금은 잔고가 0이 아니고, 상담원이 초록색으로 웃다가 작동을 멈춥니다.
 
G001 : 이 카운터에 문제가 있습니까?

for 문 은 변수 i의 유형을 지정하지 않습니다. Magic 변수가 정의되어 있지 않습니다. 인라인

 if ( OrderSelect ( OrderGetTicket (i)))
OrderSelect() 함수는 중복됩니다. 다른 것은 눈치채지 못했습니다.
Документация по MQL5: Основы языка / Операторы / Оператор цикла for
Документация по MQL5: Основы языка / Операторы / Оператор цикла for
  • www.mql5.com
Основы языка / Операторы / Оператор цикла for - Документация по MQL5
 
AndreyS :

오류가 있는 질문(CopyBuffer 오류 - 오류 번호: 4806) - 제거하고 절전 지연( 1000 )으로 치료합니다. - 지표가 만들어질 시간이 없기 때문이라고 본다.

오류(4194304바이트를 사용할 수 없음) 문제가 남아 있습니다.

창조되기 위해 그는 창조되었을 가능성이 큽니다. 데이터를 복사하기 전에만 수신된 데이터의 가용성을 확인해야 합니다(표시기에 계산할 시간이 있었습니까?). BarsCalculated 함수 가 도움이 될 것입니다.

다음으로 기호별로 모든 기간을 요청합니다. 이러한 데이터가 준비되면 디스크에서 메모리로 가져오고 그렇지 않은 경우 각 TF에 대해 다른 기간으로 + 100개의 표시기를 만들기 시작합니다(메모리도 소모됨). 이 모든 것이 메모리에 있습니다. 메모리의 데이터는 즉시 언로드되지 않습니다(다시 요청하면 어떻게 되나요?) ...

차트의 막대 수를 줄이십시오.

Документация по MQL5: Доступ к таймсериям и индикаторам / BarsCalculated
Документация по MQL5: Доступ к таймсериям и индикаторам / BarsCalculated
  • www.mql5.com
Доступ к таймсериям и индикаторам / BarsCalculated - Документация по MQL5
 
Yedelkin :

for 문 은 변수 i의 유형을 지정하지 않습니다. Magic 변수가 정의되어 있지 않습니다. 인라인

OrderSelect() 함수는 중복됩니다. 다른 것은 눈치채지 못했다.

고맙습니다.

운영자 외부에 있습니다.

 input int     Magic          = 55 ;

 MqlTradeRequest request={ 0 };
MqlTradeResult result={ 0 };
MqlTradeCheckResult check={ 0 };
//-----
int LotsDigits;
int Indicator;
double IndicatorVal[ 5 ];
double Ask;
double Bid;
int i;
int pos;
double TradeLot;
ulong StopLevel;
double MeansFree;
double MaxLotAllowed;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
 
alexvd :

창조되기 위해 그는 창조되었을 가능성이 큽니다. 데이터를 복사하기 전에만 수신된 데이터의 가용성을 확인해야 합니다(표시기에 계산할 시간이 있었습니까?). BarsCalculated 함수 가 도움이 될 것입니다.

다음으로 기호별로 모든 기간을 요청합니다. 이러한 데이터가 준비되면 디스크에서 메모리로 가져오고 그렇지 않은 경우 각 TF에 대해 다른 기간으로 + 100개의 표시기를 만들기 시작합니다(메모리도 소모됨). 이 모든 것이 메모리에 있습니다. 메모리의 데이터는 즉시 언로드되지 않습니다(다시 요청하면 어떻게 되나요?) ...

차트의 막대 수를 줄이십시오.

         while ( BarsCalculated (m_handle)==- 1 && ! IsStopped ()) Sleep ( 1 ); // Спасибо alexvd - откоректировал строку с учётом замечаний

막대의 수는 아무 것도 변경하지 않습니다.

옵션의 경우 문제가 마침표에 숨겨져 있습니다.

 for ( int iperiod= 5 ; iperiod<= 19 ; iperiod++) 

작동하지 않음, 19-5=14 - 다른 기간,

4로 줄이면 모든 것이 작동합니다. 예를 들면 다음과 같습니다.

 for ( int iperiod= 16 ; iperiod<= 19 ; iperiod++)

fu-I IndicatorRelease(m_handle) - 실제로 잘못 사용되었지만.

IndicatorRelease 함수로 설명자를 해제하지 않아도 여전히 작동해야한다고 생각합니다.

문제는 다른 기간의 수에 있습니다.

또는...