이것은 의사 소통의 손실을 배경으로 정기적으로 발생합니다. 연결이 재개된 후 터미널은 표시기 값을 다시 계산하므로 다시 계산하는 데 시간이 걸립니다. 핸드북에서:
OnCalculate() 함수에서 반환된 값과 두 번째 입력 매개변수 prev_calculated 사이의 관계에 유의하십시오. 함수를 호출할 때 prev_calculated 매개변수에는이전호출에서 OnCalculate() 함수가반환 한 값이 포함됩니다. 이를 통해 이 기능의 이전 실행 이후 변경되지 않은 막대에 대한 재계산을 피하기 위해 사용자 지정 지표를 계산하는 경제적인 알고리즘을 구현할 수 있습니다.
이렇게 하려면 일반적으로 현재 함수 호출의 막대 수를 포함하는 Rates_total 매개변수의 값을 반환하는 것으로 충분합니다. OnCalculate() 함수에 대한 마지막 호출 이후 가격 데이터가 변경된 경우(더 깊은 기록이 업로드되었거나 기록 공백이 채워진 경우) prev_calculated 입력 매개변수의 값은 터미널 자체에 의해 0으로 설정됩니다 .
나는 당신의 상황이 정확히 무엇인지 모르지만 나 자신을 위해 "역사의 공백을 채우는"것으로이 행동을 설명합니다. 아니면 표시기가 비경제적으로 작동하여 각 틱이 도착할 때 전체 값 범위를 다시 계산합니까?
물론 접근 방식이 있습니다. if(prev_calculated==0)이면 모든 막대에 대해 초기 계산을 수행합니다. 결과적으로, 각각의 새로운 틱(만약 0 < prev_calculated < Rates_total)에 대해 우리는 마지막으로 나타난 막대에 대해서만 for(int i=prev_calculated-1;i<rates_total;i++)와 같은 계산을 합니다.
Yedelkin : 물론 접근 방식이 있습니다. if(prev_calculated==0)이면 모든 막대에 대해 초기 계산을 수행합니다. 결과적으로, 각각의 새로운 틱(만약 0 < prev_calculated < Rates_total)에 대해 우리는 마지막으로 나타난 막대에 대해서만 for(int i=prev_calculated-1;i<rates_total;i++)와 같은 계산을 합니다.
class CA
{
public :
voidset ( int i, int j, long n){Print( "перегрузка long" );};
voidset ( int i, int j, int n){Print( "перегрузка int" );};
};
void OnStart()
{
//---
CA a;
int Int= 3 ;
long Long= 4 ;
a. set ( 1 , 2 ,Int);
a. set ( 1 , 2 ,Long);
}
PS는 경험적으로 첫 번째 매개변수와 두 번째 매개변수의 상수를 int 유형의 변수로 바꾸면 욕설이 중단된다는 것을 알았습니다.
그러나 컴파일러 논리는 이해할 수 없으며 처음 두 매개 변수는 모든 오버로드에서 동일하며 기본 매개 변수가 없습니다.
그리고 스왑 히스토리는 우연히 일어나지 않습니까?
항상 하나의 기호에만 있습니까 아니면 GBPUSD에서도 관찰됩니까?
무슨 빌드? 어떤 서버?
스와핑 히스토리 그런 순간이 있고,
simbol1 및 simbol2 모두에 대해 모든 통화 쌍에서 사용할 수 있는 것은 아닙니다.
빌드 370, 데모 계정 (alpari-demo)
참고로 칠면조 1마리를 남기고(위 화면에 따라) 다시 그리기가 진행 중입니다.
그렇게 눈에 띄지 않고 TF를 H1에 놓으면 5분에 한 번,
그리고 아마도 몇 번 다시 그립니다.
컴퓨터가 멈춘다고 생각했는데 2코어에서는 똑같고 그래프도 스크롤 안됨
또 다른 초, (아마도 칠면조가 작동하기를 기다리는 중) 또는 다른 무엇입니까?
SIX NUCLEUS에서 저녁에 우리는 항의할 것입니다!
나는 또한 다른 유사한 칠면조에는 아무것도 없었다는 점에 주목하고 싶습니다.
그런 식으로 복잡한 계산에 문제가 있을 수는 없습니다! 칠면조는 그냥
오픈 가격으로 작동
돕다! 표시기가 제대로 작동하고 모든 것이 표시되고 계산되지만
새 틱이 도착하면 영점이 발생하고 라인이 다시 작성됩니다.
이것은 의사 소통의 손실을 배경으로 정기적으로 발생합니다. 연결이 재개된 후 터미널은 표시기 값을 다시 계산하므로 다시 계산하는 데 시간이 걸립니다. 핸드북에서:
OnCalculate() 함수에서 반환된 값과 두 번째 입력 매개변수 prev_calculated 사이의 관계에 유의하십시오. 함수를 호출할 때 prev_calculated 매개변수에는 이전 호출 에서 OnCalculate() 함수가 반환 한 값이 포함됩니다. 이를 통해 이 기능의 이전 실행 이후 변경되지 않은 막대에 대한 재계산을 피하기 위해 사용자 지정 지표를 계산하는 경제적인 알고리즘을 구현할 수 있습니다.
이렇게 하려면 일반적으로 현재 함수 호출의 막대 수를 포함하는 Rates_total 매개변수의 값을 반환하는 것으로 충분합니다. OnCalculate() 함수에 대한 마지막 호출 이후 가격 데이터가 변경된 경우(더 깊은 기록이 업로드되었거나 기록 공백이 채워진 경우) prev_calculated 입력 매개변수의 값은 터미널 자체에 의해 0으로 설정됩니다 .
나는 당신의 상황이 정확히 무엇인지 모르지만 나 자신을 위해 "역사의 공백을 채우는"것으로이 행동을 설명합니다. 아니면 표시기가 비경제적으로 작동하여 각 틱이 도착할 때 전체 값 범위를 다시 계산합니까?
연결 끊김이 없었고 틱에 다시 그리기도 했으며 시간 프레임이 많을수록 빈도가 줄어듭니다.
그리고 시작일부터 종료일까지의 계산 방식에서 (나는 그 중 3개가 있음을 알았다) 없이
막대의 수를 결정할 때 이것이 아마도 발생하는 것입니다(재계산
모든 막대) 그러나 이것은 여전히 반사입니다 - 우리는 확인할 것입니다 ...
이 문제를 해결하는 다른 방법이 있을 수 있습니다.
연결 끊김이 없었고 틱에 다시 그렸고 시간 프레임이 많을수록 빈도가 적었습니다.
그리고 시작일부터 종료일까지의 계산 방식에서 (나는 그 중 3개가 있음을 알았다) 없이
막대의 수를 결정할 때 이것이 아마도 발생하는 것입니다(재계산
모든 막대) 그러나 이것은 여전히 반사입니다 - 우리는 확인할 것입니다 ...
이 문제를 해결하는 다른 방법이 있을 수 있습니다.
물론 접근 방식이 있습니다. if(prev_calculated==0)이면 모든 막대에 대해 초기 계산을 수행합니다. 결과적으로, 각각의 새로운 틱(만약 0 < prev_calculated < Rates_total)에 대해 우리는 마지막으로 나타난 막대에 대해서만 for(int i=prev_calculated-1;i<rates_total;i++)와 같은 계산을 합니다.
현재 차트의 시간 프레임 값을 문자열 로 가져오고 싶습니다. 나는 다음과 같이 씁니다.
그리고 컴파일러는 'PeriodStr' - 함수가 정의되지 않았다고 알려줍니다...
무슨 일이야? 동료 여러분, 도와주세요 :-)
결국 도움말에는 다음과 같은 기능이 있습니다.
기간Str
ENUM_TIMEFRAMES 열거형 값을 문자열로 변환합니다.
문자열 PeriodStr (
정수 발 // 의미
)
개발자 여러분, 오버로드된 함수 호출의 모호성이 무엇인지 답변해 주십시오(컴파일러가 맹세한 내용입니다).
'set' - 오버로드된 함수에 대한 모호한 호출
PS는 경험적으로 첫 번째 매개변수와 두 번째 매개변수의 상수를 int 유형의 변수로 바꾸면 욕설이 중단된다는 것을 알았습니다.
그러나 컴파일러 논리는 이해할 수 없으며 처음 두 매개 변수는 모든 오버로드에서 동일하며 기본 매개 변수가 없습니다.
그렇다면 컴파일러는 호출의 모호성이 무엇이라고 맹세합니까?
현재 차트의 시간 프레임 값을 문자열 로 가져오고 싶습니다. 나는 다음과 같이 씁니다.
그리고 컴파일러는 'PeriodStr' - 함수가 정의되지 않았다고 알려줍니다...
무슨 일이야? 동료 여러분, 도와주세요 :-)
결국 도움말에는 다음과 같은 기능이 있습니다.
기간Str
ENUM_TIMEFRAMES 열거형 값을 문자열로 변환합니다.
문자열 PeriodStr (
정수 발 // 의미
)
현재 차트의 시간 프레임 값을 문자열 로 가져오고 싶습니다. 나는 다음과 같이 씁니다.
그리고 컴파일러는 'PeriodStr' - 함수가 정의되지 않았다고 알려줍니다...
무슨 일이야? 동료 여러분, 도와주세요 :-)
결국 도움말에는 다음과 같은 기능이 있습니다.
기간Str
ENUM_TIMEFRAMES 열거형 값을 문자열로 변환합니다.
문자열 PeriodStr (
정수 발 // 의미
)
이것은 클래스 방식이다.
https://www.mql5.com/ru/docs/standardlibrary/technicalindicators/cindicator
#include <Indicators\Indicator.mqh>