기능 수면 대안 - 페이지 2

 
paulepanke :

그런 말을 조심하십시오. sleep()을 실행하는 논리적인 이유가 항상 있습니다. 테스터 및 지표에서도.

나는 sleep() 을 사용할 논리적인 이유가 없다고 말하지 않았고, 많이 있습니다. 나는 Strategy Tester 에서 sleep() 이 작동할 것으로 기대할 이유가 없다고 말했습니다. 전략 테스터 차트에서 실행 되는 지표에서 작동합니까? 잘 모르겠습니다. 아마도 작동합니다. . . 내가 아는 한 Strategy Tester에서 실행되는 EA에서 작동합니까? 아니요. 전략 테스터에서 실행 중인 EA를 일시 중지할 수 있습니까? 예, 그럴 수 있습니다.
 
RaptorUK :
TimeSeconds()가 제공하는 것을 살펴본 다음 TimeCurrent()가 제공하는 것을 생각하십시오. . . 어느 것이 필요하고 그 이유는 무엇입니까?


사이먼,

int TimeSeconds ( 날짜/시간)

지정된 시간 동안 분의 시작부터 경과된 시간(초)을 반환합니다.

날짜/시간 TimeCurrent ( )
마지막으로 알려진 서버 시간 (최신 견적 수신 시간)을 1970년 1월 1일 00:00부터 경과된 시간(초)으로 반환합니다 .


"어떤 것이 필요하고 왜 필요합니까?" - 사이먼

나는 두 가지 e'm을 함께 사용할 것입니다. - 네이선

TimeSeconds( datetime time ) 에는 중괄호 안에 변수가 있어야 합니다. 그런 다음 TimeCurrent()가 이 중괄호 안에 배치되어 실행 가능한 솔루션을 제공합니다. 이 b4를 수행했지만 반환된 시간 값이 건너뛰고 일시 중지된 것처럼 보이는 이유를 이해하지 못했습니다(활성 틱/틱이 없기 때문에).

이에 대해 뭐라고 합니까?


고맙습니다.

 
WHRoeder :

  1. 반환할 때까지 어떤 종류의 틱도 생성되지 않으며 다음 틱을 생성하고 start()를 호출합니다. 5분 동안 계산하고 반환하면 다음 호출의 볼륨(틱 수)은 +1이 됩니다. 라이브 차트에서 5분 동안 계산하면 5분의 틱을 놓치고 M1에서 여러 개의 새로운 막대가 형성됩니다.

윌리엄,

이 주제에 대해 설명해주셔서 감사합니다.

"2"에 대한 나의 해석. 즉, 틱이 생성될 때 반환 함수가 호출됩니다. 다음으로 Start() 함수는 프로그램 실행을 다시 한 번 트리거하는 return(0) 함수를 호출한 직후에 호출됩니다. 2. 이 부분에 대한 해석이 맞습니까?


"5분 동안 계산하면", EA가 5분 동안 계산할 것이라고 어떻게 확신할 수 있습니까? (EA가 5분 동안 계산하더라도 이것이 틱이 생성될 것이라고 보장하지는 않습니다. 증가)?


죄송합니다. 이 글을 읽는 데 어려움이 있습니다.

"5분 동안 계산하고 다음 호출에서 볼륨(틱 카운트)을 반환하면 +1이 됩니다. 라이브 차트에서 5분 동안 계산하면 5분 동안 틱을 놓치고 M1에서 몇 개의 새로운 틱을 놓치게 됩니다. 막대가 형성될 것입니다."


귀하의 응답에 감사드립니다.

 
RaptorUK :
나는 sleep()을 사용할 논리적인 이유가 없다고 말한 것이 아니라 많은 것이 있으며, Strategy Tester에서 sleep()이 작동할 것으로 기대할 이유가 없다고 말했습니다. 전략 테스터 차트에서 실행 되는 지표에서 작동합니까? 잘 모르겠습니다. 아마도 작동합니다. . . 내가 아는 한 Strategy Tester에서 실행되는 EA에서 작동합니까? 아니요. 전략 테스터에서 실행 중인 EA를 일시 중지할 수 있습니까? 예, 그럴 수 있습니다.

사이먼,

" Strategy Tester 에서 실행 중인 EA를 일시 중지할 수 있습니까? 그렇습니다."

테스터에서 EA를 "일시 중지"하는 데 사용할 이 방법에 대한 생각을 말씀해 주시겠습니까?


고맙습니다

 
  1. EA는 start()에서 다시 테스터로 반환됩니다. 테스터는 다음 틱을 생성하고 start()를 호출합니다. EA가 반환되지 않으면 다음 틱이 없습니다. start()가 반환되는 데 걸리는 시간은 중요하지 않습니다. 다음 틱은 생성될 때 생성됩니다.
  2. 테스터의 EA에서 일시 중지하거나 잠을 수 없습니다. 프로그래밍 방식 으로 일시 중지 버튼을 눌러 EA가 시작에서 돌아온 후 테스터를 일시 중지할 수 있습니다.
 

윌리엄,

그래서, 새로운 틱은 EA에서 start() 함수 를 호출합니다. 예?

내 질문은 "새 틱 외에 start() 함수를 호출하는 다른 방법을 알고 있습니까? Start() 호출을 대체하기 위해 일관되고 반복적인 작업이 가능합니까?"

(내 생각에는 틱에 의존하지 않는 초를 일관되게 추적하는 방법이 있습니까?)


"...다음 틱이 생성되면 생성됩니다."

나는 당신이 작성하려는 의도가 "새 틱이 생성되면 Start()가 실행됩니다."라고 생각합니다. ;)


그래서 EA가 테스터에서 일시 중지하거나 잠을 잘 수 없다고 말합니까?


제공해 주신 링크를 검토해 보겠습니다. 그동안 테스트 중인 EA가 처음부터 돌아온 후 "일시 중지 버튼을 눌러 테스터를 일시 중지"하는 방법에 대해 설명해 주시겠습니까?

테스터에서 실행할 때 이 방법이 라이브 계정에서 "실시간"으로 정해진 시간 동안 일시 중지된 EA의 성능을 시뮬레이션합니까?


테스터에는 제한 사항이 있으며 "실시간" 성능 시뮬레이션에는 "해결 방법"을 사용해야 함을 이해합니다.


많은 감사 윌리엄.


그리고 그냥 윌이라고 불러도 될까요? 시간을 절약할 수 있습니다. 시간의 모든 메시지. 당신의 전화.

귀하의 EA가 보유하고 있는 기능이 마음에 듭니다. "주말(금요일 시장 마감)에 SL을 통과하여 손실을 방지하기 위해 주말 전에 모든 주문을 마감하고 싶었습니다."

(기쁨에 손뼉을 친다.) 하하하! ;) 이 기능을 EA에 추가하면 불필요한 손실을 줄일 수 있지만 현재 시도하는 것과는 다릅니다. 현재 나는 초를 업데이트하기 위해 틱이 필요 없이 일관되게 시간의 초를 추적하려고 노력하고 있습니다. Start() 함수를 업데이트하는 다른 방법을 원합니다. 이해했습니까?


고맙습니다

 
WhooDoo22 :

현재 나는 초를 업데이트하기 위해 틱이 필요 없이 일관되게 시간의 초를 추적하려고 노력하고 있습니다. Start() 함수를 업데이트하는 다른 방법을 원합니다. 이해했습니까?

나는 당신이하려는 일이 이해 부족으로 인해 문제에 대한 결함있는 해결책이라고 생각합니다. 가격이 30초 동안 변경되지 않은 경우 왜 1초에서 다음 초까지 알아야 합니까? 가격이 변경되면 틱이 표시됩니다.

WHRoeder 가 말한 바를 명확히 하자면, 모든 틱은 전략 테스터가 호출/실행을 시작하기 전에 생성되며, 테스터/히스토리의 .fxt 파일에 저장되며, ST는 첫 번째 틱을 호출하고 이는 차례로 시작( )가 실행되도록 하려면 start()가 실행을 완료할 때까지 다음 틱이 호출/사용되지 않습니다. 이를 이해하는 것이 매우 중요합니다. start()가 완료된 경우에만 다음 틱이 사용되어 EA가 start()를 다시 호출할 수 있습니다. ST가 최대 속도로 실행될 때 ST의 속도를 제어하는 것은 start()가 실행되는 속도이므로 매우 간단한 start() 함수를 사용하면 ST를 매우 빠르게 실행할 수 있고 복잡한 start() 함수는 ST가 느리게 실행되도록 합니다.

라이브/데모 상황에서 start() 함수가 매우 복잡하고 실행하는 데 오랜 시간이 걸리는 경우(아마도 수십 분의 1초 정도), 이 상황에서 start()가 완료되기 전에 다음 틱이 도착할 수 있습니다. 틱이 누락되어 start() 가 호출되지 않습니다. . . . 이것은 ST에서 일어날 수 없습니다.

 
WhooDoo22 :

사이먼,

"Strategy Tester에서 실행 중인 EA를 일시 중지할 수 있습니까? 그렇습니다."

테스터에서 EA를 "일시 중지"하는 데 사용할 이 방법에 대한 생각을 말씀해 주시겠습니까?

물론 그다지 고급스럽진 않으니 사용을 권하고 싶지는 않습니다. 나는 스크립트에 의해 설정되고 설정 해제된 GlobalVariable을 사용했습니다. ST의 EA가 GlobalVariable이 설정된 것을 보았을 때 GlobalVariable이 설정 해제되었는지 계속 확인하는 루프에 앉아 있을 것입니다. 스크립트가 GlobalVariable을 설정 해제하면 EA가 루프를 종료하고 start() 함수 가 종료될 수 있습니다.
 
WhooDoo22 :

"어떤 것이 필요하고 왜 필요합니까?" - 사이먼

나는 두 가지 e'm을 함께 사용할 것입니다. - 네이선

TimeSeconds( datetime time ) 에는 중괄호 안에 변수가 있어야 합니다. 그런 다음 TimeCurrent()가 이 중괄호 안에 배치되어 실행 가능한 솔루션을 제공합니다. 이 b4를 수행했지만 반환된 시간 값이 건너뛰고 일시 중지된 것처럼 보이는 이유를 이해하지 못했습니다(활성 틱/틱이 없기 때문에).

2개의 이벤트가 있고 이 이벤트가 10초 간격으로 떨어져 있다고 가정해 보겠습니다. 이 2개의 이벤트에 대해 TimeSeconds( datetime time )에서 반환된 값의 차이는 무엇입니까?
 
RaptorUK :

나는 당신이하려는 일이 이해 부족으로 인해 문제에 대한 결함있는 해결책이라고 생각합니다. 가격이 30초 동안 변경되지 않은 경우 왜 1초에서 다음 초까지 알아야 합니까? 가격이 변경되면 틱이 표시됩니다.

WHRoeder 가 말한 바를 명확히 하자면, 모든 틱은 전략 테스터가 호출/실행을 시작하기 전에 생성되며, 테스터/히스토리의 .fxt 파일에 저장되며, ST는 첫 번째 틱을 호출하고 이는 차례로 시작( )가 실행되도록 하려면 start()가 실행을 완료할 때까지 다음 틱이 호출/사용되지 않습니다. 이를 이해하는 것이 매우 중요합니다. start()가 완료된 경우에만 다음 틱이 사용되어 EA가 start()를 다시 호출할 수 있습니다. ST가 최대 속도로 실행될 때 ST의 속도를 제어하는 것은 start()가 실행되는 속도이므로 매우 간단한 start() 함수를 사용하면 ST를 매우 빠르게 실행할 수 있고 복잡한 start() 함수는 ST가 느리게 실행되도록 합니다.

라이브/데모 상황에서 start() 함수가 매우 복잡하고 실행하는 데 오랜 시간이 걸리는 경우(아마도 수십 분의 1초 정도), 이 상황에서 start()가 완료되기 전에 다음 틱이 도착할 수 있습니다. 틱이 누락되어 start() 가 호출되지 않습니다. . . . 이것은 ST에서 일어날 수 없습니다.

사이먼,

나는 당신이하려는 일이 이해 부족으로 인해 문제에 대한 결함있는 해결책이라고 생각합니다. 가격이 30초 동안 변경되지 않은 경우 왜 1초에서 다음 초까지 알아야 합니까? 가격이 변경되면 틱이 표시됩니다.

제가 이해력이 부족하다는 것을 인정합니다. 이것이 제가 MQL4 포럼에서 이 주제에 대해 논의하는 이유입니다. 가격이 변경될 때마다 저장하고 싶습니다(이 작업을 수행하는 방법 이해). 또한 Sleep()을 사용하여 LIVE/DEMO 차트에서 일관되게 매초 가격을 저장하는 방법을 이해합니다. 목표: 최대 1분 또는 그 미만까지 지속적으로 초를 추적하고(틱 생성을 기반으로 초를 추적하지 않고) 추적한 초를 0으로 재설정하고 싶습니다. 이 목표를 달성하고자 하는 이유를 이해합니다. 그 이유는 테스터에서 EA를 테스트해야 하고 테스트하는 동안 Sleep()을 사용할 수 없기 때문입니다. 어떻게 해야 옳은가? 수집 옵션.

자세한 내용은 흠? ;)

EA에 타이머(테스터에서 사용 가능)를 코딩합니다. 이 타이머는 0-30에서 증가하거나 또는 30-0에서 감소합니다. 이 시간이 카운트 업/다운되는 동안 별도의 벡터 추적 가격 동작(매우 큰 크기 벡터)이 있습니다.

내 조건은 이러하다.

가격 x 포인트(0-30초 또는 30-0초 이내) 이동하는 경우 결정하십시오.

가격이 x 포인트(0-30초 또는 30-0초 이내) 이동 하지 않으면 ArrayInitialize().


이 시몬에게 뭐라고 합니까?


고맙습니다