초보자의 질문 MQL4 MT4 MetaTrader 4 - 페이지 102

 
STARIJ :

차트의 가격은 세로축을 아래에서 위로, 막대의 시간과 번호는 가로축을 오른쪽으로 나타냅니다.

0 막대는 현재 사용 가능한 마지막 막대입니다. 다음 막대는 기록에 있지만 테스터는 아직 사용할 수 없습니다. 잠시 후 이 막대가 계산되면 테스터는 다음 막대로 진행하여 0이 됩니다.


그래서 테스터에 다음 바의 시가가 나타나자 마자 0[0]이 된다는 것을 정확히 이해했습니다. 그리고 표시기가 현재[0] 전에 500을 세기 시작하는 방식으로 만들어진 경우 테스터는 현재 [0] 막대 전 ~ 2년(500 D1 막대) 전의 표시기를 계산합니다...

이와 관련하여 다음과 같은 질문이 제기됩니다.

이제 표시기는 고대 버전인 Start() 이벤트의 처리를 기반으로 합니다. 각 iCustom() 호출에서 테스트할 때 표시기는 이전 500개 막대에서 계산되고 테스터의 1600번 실행은 1시간 30분 동안 계산된 것 같습니다.
OnCalculate() 이벤트의 처리를 기반으로 표시기를 만들 수 있습니다. 이를 통해 다음 OnCalculate()까지 계산되지 않은 막대의 계산만 구성할 수 있습니다. 그러나 이것은 현재 시간의 실제 데이터 스트림에 있습니다. MQL4 참조에서.
그리고 테스터에서 각 iCustom() 호출에 대해 계산된 막대의 수를 줄입니까?

 
MikeZv :

그래서 테스터에 다음 바의 시가가 나타나자 마자 0[0]이 된다는 것을 정확히 이해했습니다. 그리고 표시기가 현재[0] 전에 500을 세기 시작하는 방식으로 만들어진 경우 테스터는 현재 [0] 막대 전 ~ 2년(500 D1 막대) 전의 표시기를 계산합니다...

이와 관련하여 다음과 같은 질문이 제기됩니다.

이제 표시기는 고대 버전인 Start() 이벤트의 처리를 기반으로 합니다. 각 iCustom() 호출에서 테스트할 때 표시기는 이전 500개 막대에서 계산되고 테스터의 1600번 실행은 1시간 30분 동안 계산된 것 같습니다.
OnCalculate() 이벤트의 처리를 기반으로 표시기를 만들 수 있습니다. 이를 통해 다음 OnCalculate()까지 계산되지 않은 막대의 계산만 구성할 수 있습니다. 그러나 이것은 현재 시간의 실제 데이터 스트림에 있습니다. MQL4 참조에서.
그리고 테스터에서 각 iCustom() 호출에 대해 계산된 막대의 수를 줄입니까?


지표가 삐뚤게 쓰여졌을 뿐이니 속도가 느리고 전문적인 다시 작성이 필요합니다. 그러면 전체 기록을 계산하고 매우 빠르게 계산합니다.. 그게 다입니다.

 
Nikolay Ivanov :


지표가 삐뚤게 쓰여졌을 뿐이니 속도가 느리고 전문적인 다시 작성이 필요합니다. 그러면 전체 기록을 계산하고 매우 빠르게 계산합니다.. 그게 다입니다.


이미 다시 작성되었습니다... :)

 

[OnCalculate()에서] 이전 표시기를 기반으로 [ OnCalculate() 에서] 새 표시기를 작성했으며 [Start()에서] 이 문제가 위에서 제기되었습니다.
5년(기간 D1) 동안 서로 비교하는 스크립트를 실행합니다. 일대일, 모든 값이 동일합니다.
동일한 ICustom()이 Expert Advisor에 복사되고 Expert Advisor를 테스트 할 때 파일로 출력됩니다.
이전 지표의 값은 스크립트와 같이 표시되고 새 지표의 값은 모두 다릅니다 !!!
왜 Start()의 지표에 대한 Expert Advisor의 iCustom()이 스크립트와 동일하게 표시되는지,
그리고 OnCalculate()에 대한 표시기의 경우 Expert Advisor의 출력이 스크립트의 출력과 다릅니다.


 

안녕하세요.

얘들아, 누가 만났는지 말해줘.

예를 들어 그랜드 캐피탈과 같은 일부 바이너리 브로커는 거래의 이익을 통해서가 아니라 계정 잔액에서 수입/출금으로 수입을 발생시키고 계정에서 돈을 상각합니다.


거래 결과를 찾는 방법에 대한 몇 가지 대체 작업 옵션이 있지만 여전히 가장 정확한 옵션은 잔액 라인의 값과 손익 금액을 읽는 것입니다.

이와 관련하여 문제는 이것이 "순간에" 수행될 수 있지만 거래의 역사 전체에 걸쳐 수행될 수 있는 방법입니다. 즉, 잔액 유형의 모든 레코드를 반복하고 주석과 값 자체를 각각 읽을 수 있는 일부 기능(MQL4에 내장)에 관심이 있습니다. 몇 년 동안 프로그래밍을 하다 보면 처음으로 그런 작업에 직면했습니다.

 
MikeZv :

나는 [Start()에서] 이전 지표를 기반으로 [OnCalculate()에서] 새 지표를 작성했으며 이 문제는 위에서 제기되었습니다.
5년(기간 D1) 동안 서로 비교하는 스크립트를 실행합니다. 일대일, 모든 값이 동일합니다.
동일한 ICustom()이 Expert Advisor에 복사되고 Expert Advisor를 테스트 할 때 파일로 출력됩니다.
이전 지표의 값은 스크립트와 같이 표시되고 새 지표의 값은 모두 다릅니다 !!!
왜 Start()의 지표에 대한 Expert Advisor의 iCustom()이 스크립트와 동일하게 표시되는지,
그리고 OnCalculate()에 대한 표시기의 경우 Expert Advisor의 출력이 스크립트의 출력과 다릅니다.


오랫동안 추측할 수 있습니다.

잘못된 데이터 유형 변환, 변수 이름의 중복(즉, 현재 예약된 이름이 이전 코드에서 사용됨)에 대한 코드를 검사할 것입니다. 결과적으로 변수는 수신해야 하는 잘못된 값을 포착합니다( 우선 OnCalculate에 사용된 변수의 이름을 확인하십시오. - open, high, low, close 등 - 오래된 코드에서 항상 찾을 수 있습니다.
iCustom의 경우 이것이 가장 쉬운 옵션이며 여기서 오류는 잘못 전달된 매개변수와 관련될 가능성이 가장 높습니다(다시 말하지만 위에 표시된 이유로).

모든 값을 인쇄하거나 디버그 모드에서 실행하고 불일치가 있는 위치를 확인하십시오.
 
Artyom Kuraev :

오랫동안 추측할 수 있습니다.

잘못된 데이터 유형 변환, 변수 이름의 중복(즉, 현재 예약된 이름이 이전 코드에서 사용됨)에 대한 코드를 검사할 것입니다. 결과적으로 변수는 수신해야 하는 잘못된 값을 포착합니다( 우선 OnCalculate에 사용된 변수의 이름을 확인하십시오. - open, high, low, close 등 - 오래된 코드에서 항상 찾을 수 있습니다.
iCustom의 경우 이것이 가장 쉬운 옵션이며 여기서 오류는 잘못 전달된 매개변수와 관련될 가능성이 가장 높습니다(다시 말하지만 위에 표시된 이유로).

모든 값을 인쇄하거나 디버그 모드에서 실행하고 불일치가 있는 위치를 확인하십시오.
스크립트에서 두 표시기의 출력은 동일합니다.

스크립트에서 iCustom()이 있는 행은 Expert Advisor로 복사됩니다. 동일한 매개변수가 전달됩니다.

 
MikeZv :

스크립트에서 iCustom()이 있는 행은 Expert Advisor에 복사됩니다. 동일한 매개변수가 전달됩니다.

복사되어 오류가 발생할 수 있다는 사실. 가능한 원인과 먼저 확인해야 할 사항을 제안했습니다.

두 번째 요점, 그리고 이것은 가장 확실한 답일 것입니다. 지표 자체가 다시 그려지고 기록에 겹쳐지면 일부 값이 제공되고 전략 테스터 모드에서 작업할 때 다른 값이 제공됩니다. 나는 한 번 다시 그리기에 대해 썼습니다. 두 장의 사진 을 볼 수 있습니다.

나는 아무 것도 주장하지 않지만 대답하는 데 내 경험에 의해 인도됩니다. 내가 제안한 옵션 중 어느 것도 적합하지 않다고 확신한다면 다른 답변을 기다리거나 훨씬 더 많은 초기 정보를 제공하십시오. :)

 
Artyom Kuraev :

안녕하세요.

얘들아, 누가 만났는지 말해줘.

예를 들어 그랜드 캐피탈과 같은 일부 바이너리 브로커는 거래의 이익을 통해서가 아니라 계정 잔액에서 수입/출금으로 수입을 발생시키고 계정에서 돈을 상각합니다.


거래 결과를 찾는 방법에 대한 몇 가지 대체 작업 옵션이 있지만 여전히 가장 정확한 옵션은 잔액 라인의 값과 손익 금액을 읽는 것입니다.

이와 관련하여 문제는 이것이 "순간에" 수행될 수 있지만 거래의 역사 전체에 걸쳐 수행될 수 있는 방법입니다. 즉, 잔액 유형의 모든 레코드를 반복하고 주석과 값 자체를 각각 읽을 수 있는 일부 기능(MQL4에 내장)에 관심이 있습니다. 몇 년 동안 프로그래밍을 하다 보면 처음으로 그런 작업에 직면했습니다.


 #define OP_BALANCE 6
#define OP_CREDIT   7

...을 더한

 OrdersHistoryTotal
 StringFind ( OrderComment (),txt, 0 )
 
Taras Slobodyanik :

...을 더한

감사하다!

모든 것이 작동했습니다!