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

 
220Volt :

근거가 되지 않기 위해 위에서 이야기한 상황을 시뮬레이션 해보았습니다.

M15에서 다음 코드를 실행했습니다.

스크립트가 실행되는 동안 인터넷에 연결 및 연결 해제되었습니다. 도면 에서 결과.

분명한. 수정합시다.
 

서비스 데스크에 있습니까 아니면 코드에 버그가 있습니까?

지표는 종가에서 아래로 5단계의 점을 작성해야 합니다.

그러나 두 개의 버퍼만 표시되고(모든 것을 계산하지만) 빨간색이 아니라 녹색(컴파일 후 검은색)이 표시됩니다.

누군가를 확인하십시오. 저만 그런 헛소리입니까 아니면 일반적으로? ...


 #define  N       5
#property indicator_chart_window
#property indicator_buffers 5
#property indicator_plots   5
#property indicator_color1 clrRed
#property indicator_color2 clrRed
#property indicator_color3 clrRed
#property indicator_color4 clrRed
#property indicator_color5 clrRed

#property indicator_width1 3
#property indicator_width2 3
#property indicator_width3 3
#property indicator_width4 3
#property indicator_width5 3

#property indicator_type1 DRAW_COLOR_ARROW
#property indicator_type2 DRAW_COLOR_ARROW
#property indicator_type3 DRAW_COLOR_ARROW
#property indicator_type4 DRAW_COLOR_ARROW
#property indicator_type5 DRAW_COLOR_ARROW

//------------------------------------------------------------------    class CClrHist
class CClrHist
{
public :
         double buf[];
        CClrHist() { };
};

CClrHist bufs[N]; // массив буферов

//------------------------------------------------------------------    OnInit
int OnInit ()
{
         for ( int i= 0 ; i<N; i++) SetIndexBuffer (i, bufs[i].buf, INDICATOR_DATA );
         return ( 0 );
}
//------------------------------------------------------------------    OnCalculate
int OnCalculate ( const int rates_total,
                 const int prev_calculated,
                 const datetime &time[],
                 const double &open[],
                 const double &high[],
                 const double &low[],
                 const double &close[],
                 const long &tick_volume[],
                 const long &volume[],
                 const int &spread[])
{
         for ( int i= 0 ; i<N; i++) for ( int j=rates_total- 1 ; j>= 0 ; j--)
        {
                bufs[i].buf[j]=close[j];
                bufs[i].buf[j]-=i* 100 * Point ();
        }
         return (rates_total);
}
 
sergeev :

서비스 데스크에 있습니까 아니면 코드에 버그가 있습니까?

지표는 종가에서 아래로 5단계의 점을 작성해야 합니다.

그러나 두 개의 버퍼만 표시되고(모든 것을 계산하지만) 빨간색이 아니라 녹색(컴파일 후 검은색)이 표시됩니다.

누군가를 확인하십시오. 저만 그런 헛소리입니까 아니면 일반적으로? ...

#property indicator_type1 DRAW_ARROW
#property indicator_type2 DRAW_ARROW
#property indicator_type3 DRAW_ARROW
#property indicator_type4 DRAW_ARROW
#property indicator_type5 DRAW_ARROW
 
masharov :

... 표준 라이브러리 는 다른 사람들에게 모범이 되는 이상적인 코드라고 생각합니다.

나는 가능한 한 빨리 그러한 개념을 없애는 것이 바람직하다고 말할 수 있습니다.

나는 표준 라이브러리에 대해 아무 것도 없지만 확인하지 않고 "프로그램 작성을 용이하게하기 위해"다른 사람의 코드를 신뢰합니까? - 전문가의 초기 스케치 단계가 아닌 한. 말하자면 일상적인 프로세스의 속도를 높이는 것입니다.

 

나는 종종 내 일지에서 다음과 같은 메시지를 봅니다. 비정상 종료 . 어떤 경우에 그러한 충돌이 있을 수 있는지 알아차린 사람이 있습니까?

이유는 아직 찾지 못했습니다. 잠시 터미널을 만지지 않거나 그 순간에 다른 프로그램(예: Excel)을 사용하는 경우 터미널로 다시 전환하면 테스트 중인 Expert Advisor가 제대로 작동하지 않기 시작한다고 말할 수 있습니다. . 즉, 거래 작업 이 문제 없이 수행됩니다. 문제는 거래 및 정보 패널과의 상호 작용에만 있습니다. OnChartEvent ()를 도청하는 것 같습니다. 패널 간 전환은 프로세스가 다른 작업으로 매우 바쁜 것처럼 매우 느려지기 시작합니다. 나는 영원한 루프를 사용하지 않습니다. 그리고 이 순간의 프로세서 로드는 무언가가 활발히 사용되고 있다는 것을 보여주지 않습니다. Expert Advisor를 다시 컴파일하면 도움이 됩니다. 재컴파일 시 Expert Advisor의 초기화 해제가 분명히 발생하기 전에 로그에 비정상적인 종료 메시지가 나타납니다. 그런 다음 프로그램이 성공적으로 초기화되고 모든 것이 시계처럼 작동하기 시작합니다.

Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций - Документация по MQL5
 
tol64 :

나는 종종 내 일지에서 다음과 같은 메시지를 봅니다. 비정상 종료 . 어떤 경우에 그러한 충돌이 있을 수 있는지 알아차린 사람이 있습니까?

이유는 아직 찾지 못했습니다. 잠시 터미널을 만지지 않거나 그 순간에 다른 프로그램(예: Excel)을 사용하는 경우 터미널로 다시 전환하면 테스트 중인 Expert Advisor가 제대로 작동하지 않기 시작한다고 말할 수 있습니다. . 즉, 거래 작업 이 문제 없이 수행됩니다. 문제는 거래 및 정보 패널과의 상호 작용에만 있습니다. OnChartEvent ()를 도청하는 것 같습니다. 패널 간 전환은 프로세스가 다른 작업으로 매우 바쁜 것처럼 매우 느려지기 시작합니다. 나는 영원한 루프를 사용하지 않습니다. 그리고 이 순간의 프로세서 로드는 무언가가 활발히 사용되고 있다는 것을 보여주지 않습니다. Expert Advisor를 다시 컴파일하면 도움이 됩니다. 재컴파일 시 Expert Advisor의 초기화 해제가 분명히 발생하기 전에 로그에 비정상적인 종료 메시지가 나타납니다. 그런 다음 프로그램이 성공적으로 초기화되고 모든 것이 시계처럼 작동하기 시작합니다.

루프에서 IsStopped()가 사용됩니까?

우리는 여기 , 여기 , 여기 에서 그러한 문제에 대해 읽었습니다. 또한 코드에서 병목 현상이 있는 위치에 대해 생각해야 합니다...

일반적으로 이 오류 는 프로그램이 "조기" 종료된 경우 (차트/터미널이 닫히거나 Expert Advisor가 다시 컴파일되는 경우)에 발생하고 Expert Advisor가 특정 작업을 수행하는 경우에 발생합니다.

 
Interesting :

루프에서 IsStopped()가 사용됩니까?

우리는 여기 , 여기 , 여기 에서 그러한 문제에 대해 읽었습니다. 또한 코드에서 병목 현상이 있는 위치에 대해 생각해야 합니다...

일반적으로 이 오류 는 프로그램이 "조기" 종료된 경우 (차트/터미널이 닫히거나 Expert Advisor가 다시 컴파일되는 경우)에 발생하고 Expert Advisor가 특정 작업을 수행하는 경우에 발생합니다.

고맙습니다. 링크는 동일한 상황을 보여줍니다. 사이클에서 IsStopped () 나는 어디에서도 사용하지 않고 break , continuereturn 만 사용합니다.

아직 IsStopped ()와 프로그램 중지 사이의 연결을 보지 못했습니다. 결국 프로그램이 반복되면 다른 작업은 발생하지 않습니다. 아니면 내가 틀렸어?

그리고 더. 결국 IsStopped ()는 터미널을 닫거나 차트에서 Expert Advisor를 제거하는 등 강제로 프로그램 실행을 중지해야 할 때 유용합니다. 그리고 계속해서 전문가를 사용해야 합니다.

 
tol64 :

고맙습니다. 링크는 동일한 상황을 보여줍니다. 사이클에서 IsStopped () 나는 어디에서도 사용하지 않고 break , continuereturn 만 사용합니다.

아직 IsStopped ()와 프로그램 중지 사이의 연결을 보지 못했습니다. 결국 프로그램이 반복되면 다른 작업은 발생하지 않습니다. 아니면 내가 틀렸어?

그리고 더. 결국 IsStopped ()는 터미널을 닫거나 차트에서 Expert Advisor를 제거하는 등 강제로 프로그램 실행 을 중지해야 할 때 유용합니다. 그리고 계속해서 전문가를 사용해야 합니다.

IsStopped (), 이것은 오류에 대한 것입니다. 가정이 없는데도 터미널/전문가가 느려지는 이유(실행 조건을 알 수 없고 전문가에 대해서도 아무 것도 없음).
 
tol64 :

나는 종종 내 일지에서 다음과 같은 메시지를 봅니다. 비정상 종료 . 어떤 경우에 그러한 충돌이 있을 수 있는지 알아차린 사람이 있습니까?

이유는 아직 찾지 못했습니다. 잠시 터미널을 만지지 않거나 그 순간에 다른 프로그램(예: Excel)을 사용하는 경우 터미널로 다시 전환하면 테스트 중인 Expert Advisor가 제대로 작동하지 않기 시작한다고 말할 수 있습니다. . 즉, 거래 작업 이 문제 없이 수행됩니다. 문제는 거래 및 정보 패널과의 상호 작용에만 있습니다. OnChartEvent ()를 도청하는 것 같습니다. 패널 간 전환은 프로세스가 다른 작업으로 매우 바쁜 것처럼 매우 느려지기 시작합니다. 나는 영원한 루프를 사용하지 않습니다. 그리고 이 순간의 프로세서 로드는 무언가가 활발히 사용되고 있다는 것을 보여주지 않습니다. Expert Advisor를 다시 컴파일하면 도움이 됩니다. 재컴파일 시 Expert Advisor의 초기화 해제가 분명히 발생하기 전에 로그에 비정상적인 종료 메시지가 나타납니다. 그런 다음 프로그램이 성공적으로 초기화되고 모든 것이 시계처럼 작동하기 시작합니다.

비정상 종료 란 프로그램이 런타임에 재컴파일되어 프로그램이 종료되고 다시 초기화되는 등 부자연스러운 방식으로 프로그램과 성관계를 가졌음을 의미합니다.

0으로 나누거나 계산하는 동안 단순히 프로그램을 중단하는 경우에도 동일한 일이 발생하지만 프로그램이 리턴 시 종료된 경우에는 그러한 항목이 없을 것입니다. 따라서 프로그램이 강제가 아닌 반환 시 종료될 수 있도록 검사를 IsStopped 로 설정하는 것이 좋습니다.

 

다음에 추가할 예정인가요? 것들:

차트의 위치를 두 번 클릭 위치 제어 메뉴를 불러옵니다.

닫기를 위해 한 번에 여러 위치 선택

????

고맙습니다.