전략 테스터 의 OnTimer() 함수 는 매초 요청될 때 실행 속도를 상당히 늦춥니다. 무효 OnInit() { EventKillTimer(); 이벤트 세트 타이머(1); } void OnTimer() { } 두 개의 외부 표시기가 있고 모든 틱을 통해 실행되는 Expert Advisor는 2012.04.11 14:32:07 Core 1 EURUSD,H1에서 실행됩니다. 70418ms(총 bar in history 6270, total time 70528 ms) OnTimer() 함수를 주석 처리하면 실행이 크게 빨라집니다. 22870 ms) 테스터의 특성으로 인해 이러한 지연이 발생합니까, 아니면 어떻게든 실행 속도를 높일 수 있습니까?
전략 테스터 의 OnTimer() 함수 는 매초 요청될 때 실행 속도를 상당히 늦춥니다. 무효 OnInit() { EventKillTimer(); 이벤트 세트 타이머(1); } void OnTimer() { } 두 개의 외부 표시기가 있고 모든 틱을 통해 실행되는 Expert Advisor는 2012.04.11 14:32:07 Core 1 EURUSD,H1에서 실행됩니다. 70418ms(총 bar in history 6270, total time 70528 ms) OnTimer() 함수를 주석 처리하면 실행이 크게 빨라집니다. 22870 ms) 테스터의 특성으로 인해 이러한 지연이 발생합니까, 아니면 어떻게든 실행 속도를 높일 수 있습니까?
struct Test
{
double data[];
int size;
void Init( int Size) {size=Size; ArrayResize (data, fmin (size,Max));}
double &operator[] ( int i) { return &data[i];} // ERROR : '&' - reference cannot be usedprivate :
staticint Max;
};
//+------------------------------------------------------------------+int Test::Max= 1024 ;
//+------------------------------------------------------------------+//| Script program start function |//+------------------------------------------------------------------+voidOnStart ()
{
Test t;
t.Init( 16 );
for ( int i= 0 ;i<t.size;i++)
{
t[i]=i*i;// ERROR :'=' - l-value required }
}
나는 mql5 의 일반적인 경우에 참조가 함수에서 반환되지 않는다는 것을 이해하지만(그런데 왜 안 되겠습니까?), 대신 l-값 인덱서가 가능하도록 무언가를 수행해야 합니다. 예를 들어, 왼쪽 인덱서에 대해 일반 규칙의 구문 예외를 특별히 만들기 위해. 또는 일부 키워드.
나는 mql5 의 일반적인 경우에 참조가 함수에서 반환되지 않는다는 것을 이해하지만(그런데 왜 안 되겠습니까?), 대신 l-값 인덱서가 가능하도록 무언가를 수행해야 합니다. 예를 들어, 왼쪽 인덱서에 대해 일반 규칙의 구문 예외를 특별히 만들기 위해. 또는 일부 키워드.
절름발이는 분명히 mql5를 칠하지 않습니다....
클래스의 기본이 아닌 내부 요소를 외부로 "생성"하는 것은 안전하지 않습니다(이 예에서는 속성 자체가 아니라 배열 요소 만 !) 특히 값을 변경할 수 있는 기능이 있는 경우 - 안전하지 않습니다 .
또한 이것은 객체 지향 프로그래밍의 "정신"과 모순됩니다. 객체 데이터에 대한 모든 작업은 자체 메서드를 사용하여 객체 내부에서 수행되어야 합니다.
데이터 속성에 대해 Setter를 사용하는 것은 어떻습니까?
코드는 가독성의 이점만 얻을 것입니다. 궁극적으로, l-value 인덱서의 이러한 "단순성"은 당신을 포함한 그 누구도 이 코드의 작동 방식을 이해하지 못하도록 만들 것입니다.
Setter를 작성하는 것보다 버그를 찾는 데 더 많은 시간을 할애하십시오.
예시:
while (double)date[++i -1] < 10)과 같은 코드가 더 길지만 소화 가능한 것으로 대체될 수 있다면 그렇게 하는 것이 좋습니다.
클래스에 대한 전달 선언 참조
전략 테스터 의 OnTimer() 함수 는 매초 요청될 때 실행 속도를 상당히 늦춥니다. 무효 OnInit() { EventKillTimer(); 이벤트 세트 타이머(1); } void OnTimer() { } 두 개의 외부 표시기가 있고 모든 틱을 통해 실행되는 Expert Advisor는 2012.04.11 14:32:07 Core 1 EURUSD,H1에서 실행됩니다. 70418ms(총 bar in history 6270, total time 70528 ms) OnTimer() 함수를 주석 처리하면 실행이 크게 빨라집니다. 22870 ms) 테스터의 특성으로 인해 이러한 지연이 발생합니까, 아니면 어떻게든 실행 속도를 높일 수 있습니까?
메시지의 PS 미리보기가 구현될 것입니다 chtol(
전략 테스터 의 OnTimer() 함수 는 매초 요청될 때 실행 속도를 상당히 늦춥니다. 무효 OnInit() { EventKillTimer(); 이벤트 세트 타이머(1); } void OnTimer() { } 두 개의 외부 표시기가 있고 모든 틱을 통해 실행되는 Expert Advisor는 2012.04.11 14:32:07 Core 1 EURUSD,H1에서 실행됩니다. 70418ms(총 bar in history 6270, total time 70528 ms) OnTimer() 함수를 주석 처리하면 실행이 크게 빨라집니다. 22870 ms) 테스터의 특성으로 인해 이러한 지연이 발생합니까, 아니면 어떻게든 실행 속도를 높일 수 있습니까?
메시지의 PS 미리보기가 구현될 것입니다 chtol(
테스터의 이 항목은 무엇을 의미합니까?
재미 없다.
나는 mql5 의 일반적인 경우에 참조가 함수에서 반환되지 않는다는 것을 이해하지만(그런데 왜 안 되겠습니까?), 대신 l-값 인덱서가 가능하도록 무언가를 수행해야 합니다. 예를 들어, 왼쪽 인덱서에 대해 일반 규칙의 구문 예외를 특별히 만들기 위해. 또는 일부 키워드.
절름발이는 분명히 mql5를 칠하지 않습니다....
절름발이는 분명히 mql5를 칠하지 않습니다....
절름발이는 분명히 mql5를 칠하지 않습니다....
따라서 이를 위해서는 본격적인 링크를 활성화해야 합니다. :)
추신: 흐르는 :)
벌레?
아래 코드는 컴파일러에서 영원한 루프와 같은 것을 생성합니다. 취소 클릭(컴파일 취소)
즉시 작동하지 않지만 작동하면 편집기에 대한 제어 권한을 반환합니다.
동시에 취소 버튼 자체는 사라지지 않지만 사용 가능한 상태로 남아 있지도 않습니다.
컴파일 버튼이 영원히 사라집니다(돌아가려면 편집기를 다시 시작해야 함)
재미 없다.
나는 mql5 의 일반적인 경우에 참조가 함수에서 반환되지 않는다는 것을 이해하지만(그런데 왜 안 되겠습니까?), 대신 l-값 인덱서가 가능하도록 무언가를 수행해야 합니다. 예를 들어, 왼쪽 인덱서에 대해 일반 규칙의 구문 예외를 특별히 만들기 위해. 또는 일부 키워드.
절름발이는 분명히 mql5를 칠하지 않습니다....
클래스의 기본이 아닌 내부 요소를 외부로 "생성"하는 것은 안전하지 않습니다(이 예에서는 속성 자체가 아니라 배열 요소 만 !) 특히 값을 변경할 수 있는 기능이 있는 경우 - 안전하지 않습니다 .
또한 이것은 객체 지향 프로그래밍의 "정신"과 모순됩니다. 객체 데이터에 대한 모든 작업은 자체 메서드를 사용하여 객체 내부에서 수행되어야 합니다.
데이터 속성에 대해 Setter를 사용하는 것은 어떻습니까?
코드는 가독성의 이점만 얻을 것입니다. 궁극적으로, l-value 인덱서의 이러한 "단순성"은 당신을 포함한 그 누구도 이 코드의 작동 방식을 이해하지 못하도록 만들 것입니다.
Setter를 작성하는 것보다 버그를 찾는 데 더 많은 시간을 할애하십시오.
예시:
while (double)date[++i -1] < 10)과 같은 코드가 더 길지만 소화 가능한 것으로 대체될 수 있다면 그렇게 하는 것이 좋습니다.
구조체 테스트
{
이중 데이터[];
intsize;
무효 초기화(int 크기) {크기=크기; ArrayResize(데이터, fmin(크기,최대));}
void setDataElement(int 인덱스, 이중 값)
{
데이터[인덱스] = 값;
}
사적인:
정적 정수 최대;
};
//+----------------------------------------------- --------------------+
정수 테스트 :: 최대 = 1024;
//+----------------------------------------------- --------------------+
//| 스크립트 프로그램 시작 기능 |
//+----------------------------------------------- --------------------+
무효 OnStart()
{
테스트 t;
t.Init(16);
for(int i=0;i<t.size;i++)
{
//t[i]=i*i; // 오류:'=' - l-값이 필요합니다.
t.setDataElement(i, i*i);
}
}