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

 
A100 :

질문: OnDeinit->M5는 언제 호출되나요?

내 대답: 절대!

위의 답변: 비동기 및 지연

30분이 넘었는데도 OnDeinit->M5에 대한 호출이 없습니다.

그리고 이제 Expert 코드를 변경해 보겠습니다(순서를 약간 변경)...

결과:

2017.02.06 01:31:45.002 OnInit->M5
2017.02.06 01:31:48.340 OnDeinit->M5:1 지체 없이 바로 전화주세요!
2017.02.06 01:31:48.409 OnInit->M15

파일:
Test.mq5  2 kb
 
A100 :

30분이 넘었는데도 OnDeinit->M5에 대한 호출이 없습니다.

그리고 이제 Expert 코드를 변경해 보겠습니다(순서를 약간 변경)...

코드를 첨부하세요.
 
Renat Fatkhullin :
코드를 첨부하세요.
같은 이름의 마지막 게시물에 첨부합니다. 실제로 정적 호출은 동적 호출로 대체되며 결과는 근본적으로 다릅니다.
 
A100 :
같은 이름의 마지막 게시물에 첨부합니다. 실제로 정적 호출은 동적 호출로 대체되며 결과는 근본적으로 다릅니다.
감사합니다. 살펴보겠습니다.

첫 번째 경우에는 OnDeinit 및 정적 변수 가 없는 것이 최적화의 잔인한 트릭을 수행하여 결과적으로 소멸자를 호출하는 것을 잊은 것 같습니다.
 
Alexey Kozitsyn :
당신이 말하는 스트림을 설명할 수 있습니까? 한 문자의 모든 표시기가 같은 스레드에서 실행되지 않습니까?
네. 그래픽이 마침표가 아니라 문자를 변경하는 경우 다른 스트림이 됩니다.

기간만 변경하면 표시기의 새 복사본이 이전 것과 동일한 스레드에서 계산됩니다.

그러나 여기에서도 M5의 Deinit 명령이 M15의 Init 명령보다 먼저 처리된다는 사실에 의존할 수 없습니다.
 
Slawa :
기간만 변경하면 표시기의 새 복사본이 이전 것과 동일한 스레드에서 계산됩니다.

그러나 여기에서도 M5의 Deinit 명령이 M15의 Init 명령보다 먼저 처리된다는 사실에 의존할 수 없습니다.
도움말에 추가하십시오.
 
Slawa :

여보세요,

https://www.mql5.com/en/forum/166358/page4#comment_4064293 메시지에 많은 관심 부탁드립니다.

매우 중요하며,

새로운 오류 1158이 나타났습니다. 도움말에 없나요?

cannot set millisecond timer (500)
cannot set millisecond timer (500)
  • www.mql5.com
Здравствуйте, клиент прислал лог файл, в котором я увидел такую запись cannot set millisecond timer (500) что она значит? и почему...
 

런타임 에러

0x030A00AD에서 액세스 위반이 'Test_s.ex5'에서 0x00000005로 읽힙니다.

//Test_s.mq5 //Скрипт
class A {};
#import "TestA.ex5"
        A *error();
#import
class B { protected :
    B( const string & name ) : name( name ) {}
    virtual int g( const MqlParam & param[] ) const { return :: IndicatorCreate ( NULL , PERIOD_CURRENT , IND_CUSTOM , :: ArraySize ( param ), param ); }
         const string name;
bool f( int h ) const
{
         if ( :: ChartIndicatorAdd ( 0 , 0 , h ) )
                 return true ;
        error();
         return false ;
}
};
class C : protected B { protected :
    C( int h, string name ) : B( name ), h( h ) { f( this .h ); }
         const int h;
};
class D : C { public :
    D( string path ) : C( g( path ), path ) {}
int g( const string & path )
{
         MqlParam param[ 1 ];
        param[ 0 ].type         = TYPE_STRING ;
        param[ 0 ].string_value = path;
         return g( param );
}
};
void OnStart () { D d( "Test_i" ); }
//TestA.mq5
#property library
class A {};
A * error () export { return NULL; }

표시기를 제외한 모든 파일은 MQL5\Scripts\ 폴더에 있습니다.

지표 자체는 필요하지 않지만 예를 들어 여기에서 가져올 수 있습니다. https://www.mql5.com/en/forum/1111/page1803#comment_4063671

Ошибки, баги, вопросы
Ошибки, баги, вопросы
  • www.mql5.com
Форум алго-трейдеров MQL5
 
fxsaber :
도움말에 추가하십시오.
여기를 보세요 - 프로그램 실행

MQL5 프로그램에 대한 간략한 요약이 표에 나와 있습니다.

프로그램

성능

메모

스크립트

자체 스레드에서 스크립트 수 - 스크립트에 대한 실행 스레드 수

반복되는 스크립트는 다른 프로그램을 중단할 수 없습니다.

전문가

자체 스레드에서 얼마나 많은 전문가 - 그들에 대한 많은 실행 스레드

루프된 EA는 다른 프로그램의 작동을 방해할 수 없습니다.

지시자

하나의 심볼에 있는 모든 표시기에 대한 하나의 실행 스레드. 표시기가 있는 기호 수 - 해당 기호에 대한 실행 스레드 수

한 표시기의 무한 루프는 해당 기호의 다른 모든 표시기를 중지합니다.

 
A100 :

B'1111111111111111111111111111111' 형식으로 작성되었습니다.

아아, 나는 이 형식을 모른다.

실험은 그래픽 버퍼의 숫자가 double과 동일한 규칙으로 표현된다는 것을 보여주었습니다. 그래픽 버퍼를 통해 그렇게 긴 숫자를 전송할 수는 없습니다. 실망스럽습니다.