MQL5에서 함께 배우고 쓰기 - 페이지 17

 
Yedelkin :

Sleep() 함수 에 대한 질문입니다. Expert Advisor에서 이 기능을 사용하면 이 Expert Advisor의 실행만 일시 중지되고 프로세서(커널) 리소스가 이 커널의 작업 목록에서 다음 작업으로 이전된다는 것을 올바르게 이해하고 있습니까? 즉, Sleep() 함수가 Expert Advisor가 처리되는 스레드의 속도를 늦추지 않고 현재 Expert Advisor와 특정 코어가 선택한 다른 프로그램 사이를 전환하는 역할을 하는 것이 맞습니까?

내가 이해하는 한, Sleep(0)을 설정한 다음 전환하고 Sleep(milliseconds)이면 지정된 밀리초 수 동안 전문가의 실행이 중지됩니다.

동시에 각 Expert Advisor는 독립적인 스레드이며 이러한 각 스레드는 CPU 시간을 요구합니다(참조에 따르면 스레드 상태는 100밀리초마다 확인됨).

따라서 스레드가 활성화되지 않은 경우 어떤 이유에서든 프로세서 시간이 다른 스레드로 전송되고 100밀리초 후에 "수면으로 결정된" 스레드의 상태가 확인된다는 아이디어입니다.

추신

스레드 간의 코어 분배와 관련하여 이것은 개발자에게 달려 있습니다.

 
Yedelkin :

Sleep() 함수 에 대한 질문입니다. Expert Advisor에서 이 기능을 사용하면 이 Expert Advisor의 실행만 일시 중지되고 프로세서(커널) 리소스가 이 커널의 작업 목록에서 다음 작업으로 이전된다는 것을 올바르게 이해하고 있습니까? 즉, Sleep() 함수가 Expert Advisor가 처리되는 스레드의 속도를 늦추지 않고 현재 Expert Advisor와 특정 코어가 선택한 다른 프로그램 사이를 전환하는 역할을 하는 것이 맞습니까?

각 전문가는 자체 스레드에서 실행됩니다. Sleep()은 이 스레드를 느리게 합니다. 코어(친화성 마스크)에 대한 바인딩이 없습니다.
 
Yedelkin :

MqlTradeResult 구조 에 대한 질문입니다. 기본 요청 검증이 성공한 시간(또는 이와 유사한 것)에서 시간 필드를 찾지 못했습니다. MqlTradeResult 구조에 추가 시간 필드를 도입하는 문제가 제기되었는지 기억하는 사람이 있습니까? 예약 주문이 갑자기 역사에 남을 경우 이를 해결해야 했습니다.

불명확한 요구. 주문이 열리면 시작 시간을 자체적으로 저장합니다. 서버 응답 시간 이 필요한 이유는 무엇입니까?
 
sergeev :
불명확한 요구. 주문이 열리면 시작 시간을 자체적으로 저장합니다. 서버 응답 시간 이 필요한 이유는 무엇입니까?

주문의 운명은 티켓으로 추적됩니다. 그렇죠? 동시에 OrderSend() 함수로 티켓을 반환한다고 해서 아직 거래 작업의 성공적인 실행이 보장되지는 않습니다. 프로그램의 논리에 따르면 내 티켓이 과거 주문 중에 나타났는지, 그리고 그 이후에 어떤 거래가 있었는지 확인하는 것으로 충분합니다. 이를 위해 히스토리의 최소 크기를 히스토리 캐시에 업로드하고 싶습니다. 초기 요청에 대한 서버의 응답 이후로 더 이상 없습니다. 열린 주문의 속성으로 작업할 필요가 없습니다. 이는 중복 코드 조각이 됩니다. 주문이 열리지 않을 수도 있습니다. 따라서 HistorySelect() 함수를 사용하여 최근 히스토리의 최적 크기(수량)를 로드하려면 서버 응답 시간이 필요합니다. "역사에서 명령을 찾아내는 것"에 대해 알기 쉽게?

내가 알기로는 추가 시간 필드를 MqlTradeResult 구조 에 도입하는 문제는 아직 제기되지 않았습니다.

 

EA의 쓰레드 딜레이가 다른 프로그램의 실행에 영향을 주지 않는다는 식으로 Sleep() 에 대해 이해했습니다. 고마워.

 

Sleep()에 대한 또 다른 질문입니다. 참고에는 " 표시기가 인터페이스 스레드에서 실행되고 속도를 늦추지 않아야 하기 때문에 사용자 정의 표시기 에서 Sleep() 함수를 호출할 수 없습니다 ."라고 말합니다. 포럼을 읽었지만 다음을 이해하지 못했습니다. "지표에서 호출할 수 없음"이라는 문구가 사전 설정된 금지 사항입니까 아니면 프로그래머에 대한 권장 사항입니까?

 
Yedelkin :

주문의 운명은 티켓으로 추적됩니다. 그렇죠? 동시에 OrderSend() 함수 로 티켓을 반환한다고 해서 아직 거래 작업의 성공적인 실행이 보장되지는 않습니다.

에헴 ....주문서 보내는 방법은 교과서를 보셔야 합니다.
 
Yedelkin :

Sleep()에 대한 또 다른 질문입니다. 참고에는 " 표시기가 인터페이스 스레드에서 실행되고 속도를 늦추지 않아야 하기 때문에 사용자 정의 표시기 에서 Sleep() 함수를 호출할 수 없습니다 ."라고 말합니다. 포럼을 읽었지만 다음을 이해하지 못했습니다. "지표에서 호출할 수 없음"이라는 문구가 사전 설정된 금지 사항입니까 아니면 프로그래머에 대한 권장 사항입니까?

 
sergeev :
에헴 ....주문서 보내는 방법은 교과서를 보셔야 합니다.

글쎄, 당신은 의미를 이해합니다. 기억을 통해 자세히 말씀드리면 다음을 확인할 수 있습니다. OrderSend() 함수 는 부울 값을 반환합니다. 이 경우 요청이 성공적으로 확인되면 주문 티켓이 MqlResult 구조의 변수에 기록됩니다. 나 자신을 위해 "주문 티켓 반환 기능"이라고 부릅니다. 다음은 출처에 대한 링크입니다. " OrderSend() 함수로 구매 요청을 보낼 때 요청이 성공적으로 검증되었을 때 생성된 주문 티켓을 즉시 찾을 수 있습니다 ."

"금지"에 대한 답변 - 감사합니다. 이해합니다.

 
Yedelkin :

글쎄, 당신은 의미를 이해합니다.

불행히도, 나는 아직 그것을 얻지 못했습니다.

어떤 이유로 반환 구조에 "시간" 필드가 있어야 합니다. 시간은 나타난 순서대로 사용하세요. 이것은 작은 역사를 통제하기에 충분합니다.