나는 M5에서 M15로 기간을 변경할 때 M5 Deinit 명령이 첫 번째 표시기로 전송되지 않고(이 경우 M5에만) 다음까지 사용자가 전문가를 삭제합니다.
Slava가 옳고 업로드가 올바르게 작동합니다.
MT5에서 표시기의 계산 핵심은 자체 관리자의 사용량 카운터가 있는 공유 리소스입니다. 동일한 매개변수를 가진 표시기가 다른 프로그램이나 창에서 사용되는 경우 실제로 사용량 카운터가 있는 하나의 계산된 사본이 작동합니다. 이를 통해 트레이더가 차트와 Expert Advisor에서 동일한 지표를 사용할 때 많은 비용을 절감할 수 있습니다.
표시기 관리자는 표시기를 물리적으로 비동기식으로 지연을 제거하는 방식으로 설계되었습니다. 한편 새 매개변수를 사용하여 새 작업 복사본이 생성되며, 이는 종종 이전 복사본이 물리적으로 삭제되기 전에 초기화됩니다.
그리고 어떤 것이 작동합니까?
유효숫자의 소실 및 임의작업으로 채우는 규칙
결과는 길지만 중간 계산 에서는 두 배이며 유효 숫자가 손실됩니다.
(숫자+1)*3-1=17
유효숫자의 소실 및 임의작업으로 채우는 규칙
결과는 길지만 중간 계산 에서는 두 배이며 유효 숫자가 손실됩니다.
(숫자+1)*3-1=17
정보 주셔서 감사합니다.
그러나 정보를 맞추기가 어렵습니다. 숫자는 그렇게 될 수 있지만 그것으로 계산을 할 수 없습니까?
다음은 문자열에서 숫자로 변환이 발생하는 코드의 예입니다.
Print ( "CalcY=" ,CalcY);
숫자 111111111111111104를 출력합니다.
저것들. 여기에 계산이 없습니다, 아니면 제가 틀렸습니까?
그런 번호로 조작이 가능한가요, 아니면 언어 제한인가요?
저것들. 여기에 계산이 없습니다, 아니면 제가 틀렸습니까?
계산 - 모든 작업( 이 경우 변환) . 지정된 숫자에 대해 StringToDouble 은 정밀도가 손실 된 double을 반환합니다.
StringToInteger는 long을 반환하지만 정밀도 손실이 없는 추가 계산은 NormalizeDouble, MathPow와 같이 double로 작동하는 함수를 사용할 수 없습니다.
계산 - 모든 작업( 이 경우 변환) . StringToDouble은 double을 반환합니다 . 정밀도 손실이 발생합니다.
StringToInteger는 long을 반환하지만 정밀도 손실이 없는 추가 계산은 NormalizeDouble, MathPow,
StringToInteger 를 사용하면 숫자를 표현하는 것이 가능했지만 이미 쓰레기입니다. 어떻게든 숫자를 수학 연산을 위한 구성 요소로 분명히 분할해야 합니다...
Print ( "CalcZ=" ,CalcZ);
double Test=CalcZ;
Print ( "Test=" ,Test);
테스트=1.111111111111111e+17
다시 도움말에 적혀있습니다.
INT_MAX
int로 표현할 수 있는 최대값
2147483647
그런 다음 StringToInteger를 통해 변환이 어떻게 발생하고 숫자가 허용되는 것보다 크면 long으로 유지됩니까?
그런 다음 StringToInteger를 통해 변환이 어떻게 발생하고 숫자가 허용되는 것보다 크면 long으로 유지됩니까?
StringToInteger는 처음에 LONG_MIN LONG_MAX 내에서 long을 반환합니다(StringToKolobok이라고도 함).
StringToInteger는 처음에 long을 반환합니다(StringToKolobok이라고도 함).
이것은 물론 그렇게 보이지만 도움이 너무 까다 롭습니다.
"
숫자의 문자 표현을 포함 하는 문자열 을 int (정수) 숫자로 변환합니다.
"
이것은 오해의 소지가 있었다.
정보 주셔서 감사합니다.
위의 숫자가 그래픽 버퍼에 맞지 않는다는 것을 알고 있습니까?
위의 숫자가 그래픽 버퍼에 맞지 않는다는 것을 알고 있습니까?
B'1111111111111111111111111111111' 형식으로 작성되었습니다.
나는 M5에서 M15로 기간을 변경할 때 M5 Deinit 명령이 첫 번째 표시기로 전송되지 않고(이 경우 M5에만) 다음까지 사용자가 전문가를 삭제합니다.
MT5에서 표시기의 계산 핵심은 자체 관리자의 사용량 카운터가 있는 공유 리소스입니다. 동일한 매개변수를 가진 표시기가 다른 프로그램이나 창에서 사용되는 경우 실제로 사용량 카운터가 있는 하나의 계산된 사본이 작동합니다. 이를 통해 트레이더가 차트와 Expert Advisor에서 동일한 지표를 사용할 때 많은 비용을 절감할 수 있습니다.
표시기 관리자는 표시기를 물리적으로 비동기식으로 지연을 제거하는 방식으로 설계되었습니다. 한편 새 매개변수를 사용하여 새 작업 복사본이 생성되며, 이는 종종 이전 복사본이 물리적으로 삭제되기 전에 초기화됩니다.
표시기 관리자는 표시기를 물리적으로 비동기식으로 지연을 제거하는 방식으로 설계되었습니다. 한편 새 매개변수를 사용하여 새 작업 복사본이 생성되며, 이는 종종 이전 복사본이 물리적으로 삭제되기 전에 초기화됩니다.
지표를 단순화하자
void Prn( string f, int i = - 1 ) { Print ( f, "->" , StringSubstr ( EnumToString ( Period ()), 7 ), (i == - 1 ? "" : ":" + i )); }
void OnInit () { Prn( __FUNCTION__ ); }
void OnDeinit ( const int reason ) { Prn( __FUNCTION__ , reason ); }
int OnCalculate ( const int , const int , const int , const double & [] ) { return 0 ; }
Test.mq5 Expert Advisor를 M5 차트에 첨부한 다음 차트 주기 를 M5->M15로 변경해 보겠습니다.
결과:
2017.02.06 00:54:20.897 OnInit->M5
2017.02.06 00:54:25.553 OnInit->M15
질문: OnDeinit->M5는 언제 호출되나요?
내 대답: 절대!
위의 답변: 비동기 및 지연