개체를 만든 후 표시기를 5초 동안 "잠자기 상태로 전환"한 다음 개체를 삭제하고 1초 동안 잠자기 상태로 전환해야 합니다. 60까지, 그 후에는 마지막 리턴으로 이동하고 새로운 틱으로 다시 시작합니다.
그렇게 하려고 해요
그것은 분명히 while이 끝날 때까지 멈춥니다.
스레드가 스마트하다는 메시지를 표시합니다.
논리는 다음과 같습니다. 두 표시기 모두 개체의 이름과 하나 이상의 추가 개체를 알고 있습니다.
첫 번째 객체는 객체를 생성하고 존재하는 경우 항상 아무 것도 하지 않습니다. 시작의 맨 처음에 이 종료 조건(return;)을 작성합니다.
두 번째는 객체를 읽고, 자체 작업을 수행하고, 추가 객체를 노출합니다.
첫 번째 개체는 주 개체를 보지 않고 아무 작업도 수행하지 않고 종료하고 즉시 두 번째 개체(추가 개체)를 찾고 개체가 생성된 시간 을 읽고(두 번째 칠면조는 생성하는 동안 설명에 넣음) 필요한 일시 중지를 계산합니다. (60초) 삭제하고 개체가 없습니다. 작업할 수 있습니다....
Abzasc : 지표에서 작동하지 않습니다. 왜 이런 식으로 하는지 이해가 되지 않습니다. 분명히, 지속적으로 작동하는 지표는 최면을 걸어야 합니다. :)
그 이유는 표시기가 인터페이스 스레드에서 작동하기 때문에 표시기를 잠자기 상태로 둘 수 없기 때문입니다. "속도를 늦출" 수 있다면 그 순간에 터미널의 어떤 버튼도 누를 수 없기 때문입니다(예: " 새 주문" 또는 주문 마감 등 이 주제의 또 다른 미묘함은 테스터에 관한 것입니다. 실생활에는 Expert Advisors를 위해 별도로 생성된 여러 스레드, 하나의 인터페이스 스레드가 있으며(이 때문에 결과 없이 속도가 느려질 수 있음) 테스터에서는 모두를 위한, 모두를 위한 것입니다. :) 따라서 테스트 모드 에서 Sleep() 함수는 이와 같이 특정한 방식으로 작동합니다. 테스터의 흐름을 잠자기 상태로 전환하면 모든 것이 각각 작동을 멈추고 어드바이저와 지표, 그리고 물론 틱 생성도 멈춥니다. 따라서 아이디어를 올바르게 이해했다면 데모에서만 테스트할 수 있으며 인터페이스 스트림의 속도를 늦추려면 예를 들어 다음 기능을 사용할 수 있습니다.
//+------------------------------------------------------------------+//| MySleep function |//+------------------------------------------------------------------+void MySleep( int sec){
int pause = TimeSeconds( TimeLocal ()) + sec;
if (pause >= 60 )pause = pause - 60 ;
while (TimeSeconds( TimeLocal ()) != pause){}
}
//+------------------------------------------------------------------+
로드 프로그래머. 당신이 나를 도울 수.
입력 변수에서
extern bool UseHourTrade = True;
외부 int FromHourTrade = 0;
extern int ToHourTrade = 23;
정수 시작(){
if (UseHourTrade){
if (!(Hour()>=FromHourTrade && Hour()<=ToHourTrade)) {
댓글 ("거래의 시간이 오지 않았습니다!");
리턴(0);
}
}
다른 변수 UseHourTrade2, FromHourTrade2, ToHourTrade2로 거래를 해야 하는 두 번째 기간을 추가하고 싶습니다.
도와주세요. 시작 기능에 추가해야 할 사항을 알려주세요. 나는 아직 아무것도 시도하지 않았습니다. 작동하지 않습니다.
미리 감사드립니다. 보리스.
아마 그런 것 같아요.
추신 "SRC" 코드 삽입 버튼을 사용하면 읽기 불편합니다.
그러한 계획의 동결.
코드 맨 끝에 있는 표시기는 다른 표시기의 플래그 역할을 하는 개체를 만듭니다.
개체를 만든 후 표시기를 5초 동안 "잠자기 상태로 전환"한 다음 개체를 삭제하고 1초 동안 잠자기 상태로 전환해야 합니다. 60까지, 그 후에는 마지막 리턴으로 이동하고 새로운 틱으로 다시 시작합니다.
그렇게 하려고 해요
그것은 분명히 while이 끝날 때까지 멈춥니다.
스레드가 스마트하다는 메시지를 표시합니다.
논리는 다음과 같습니다. 두 표시기 모두 개체의 이름과 하나 이상의 추가 개체를 알고 있습니다.
첫 번째 객체는 객체를 생성하고 존재하는 경우 항상 아무 것도 하지 않습니다. 시작의 맨 처음에 이 종료 조건(return;)을 작성합니다.
두 번째는 객체를 읽고, 자체 작업을 수행하고, 추가 객체를 노출합니다.
첫 번째 개체는 주 개체를 보지 않고 아무 작업도 수행하지 않고 종료하고 즉시 두 번째 개체(추가 개체)를 찾고 개체가 생성된 시간 을 읽고(두 번째 칠면조는 생성하는 동안 설명에 넣음) 필요한 일시 중지를 계산합니다. (60초) 삭제하고 개체가 없습니다. 작업할 수 있습니다....
지표에서 작동하지 않습니다. 왜 이런 식으로 하는지 이해가 되지 않습니다. 분명히, 지속적으로 작동하는 지표는 최면을 걸어야 합니다. :)
그 이유는 표시기가 인터페이스 스레드에서 작동하기 때문에 표시기를 잠자기 상태로 둘 수 없기 때문입니다. "속도를 늦출" 수 있다면 그 순간에 터미널의 어떤 버튼도 누를 수 없기 때문입니다(예: " 새 주문" 또는 주문 마감 등
이 주제의 또 다른 미묘함은 테스터에 관한 것입니다. 실생활에는 Expert Advisors를 위해 별도로 생성된 여러 스레드, 하나의 인터페이스 스레드가 있으며(이 때문에 결과 없이 속도가 느려질 수 있음) 테스터에서는 모두를 위한, 모두를 위한 것입니다. :)
따라서 테스트 모드 에서 Sleep() 함수는 이와 같이 특정한 방식으로 작동합니다. 테스터의 흐름을 잠자기 상태로 전환하면 모든 것이 각각 작동을 멈추고 어드바이저와 지표, 그리고 물론 틱 생성도 멈춥니다. 따라서 아이디어를 올바르게 이해했다면 데모에서만 테스트할 수 있으며 인터페이스 스트림의 속도를 늦추려면 예를 들어 다음 기능을 사용할 수 있습니다.
원하는 일시 정지(60초)를 카운트다운합니다.
주의 깊게 읽고 모든 것을 작성했으며 그래프 개체를 사용할 필요가 전혀 없습니다. 전역으로 얻을 수 있습니다 ....
그 이유는 표시기가 인터페이스 스레드에서 작동하기 때문에 잠자기 상태로 둘 수 없기 때문입니다...
이제 ... 더 밝아졌습니다. 감사합니다.
젠장, 어떤 종류의 돌. 하나의 지표에 넣을 수 없고 잠자기 상태로 둘 수도 없습니다... 전역 변수 로 휘젓도록 노력하겠습니다.
주의 깊게 읽고 모든 것을 작성했으며 그래프 개체를 사용할 필요가 전혀 없습니다. 전역으로 얻을 수 있습니다 ....
... 전역 변수를 휘젓도록 노력하겠습니다.
그러나 이것은 정확합니다. Rustam도 이에 대해 암시한 것 같습니다. 스레드를 일시 중단하는 것은 MQL뿐만 아니라 모든 프로그래밍 언어에서 일반적으로 수행해야 하는 마지막 조치이기 때문입니다.