비교가 70년 이후 경과된 초 수를 기반으로 한다는 것이 분명하지만 이 초 수에는 날짜와 시간 모두가 고려됩니다.
실제로 최근에 겪었던 문제의 단순화를 예로 들겠습니다.
작업: 금요일이 오면 문자열 변수 "21:30"을 고려하여 이날 거래 종료 시간(날짜/시간)을 계산합니다.
내 원래 솔루션은 다음과 같습니다.
datetime EndTrading;
if (TimeDayOfWeek( TimeCurrent ())== 5 ) // если сейчас пятница, например возьмем сегодняшний день, первый тик 2014.11.07 00:00
EndTrading= StringToTime ( "21:30" ); // подразумевается что тут должно быть время пятницы...if (TimeDayOfWeek( TimeCurrent ())== 5 ) // если настала пятницаif ( TimeCurrent ()>EndTrading) // и время удовлетворяет условиюPrint ( "Настала пятница и текущее время больше чем 21:30" );
이제 농담입니다. 코드에 지정된 인쇄는 금요일에 팝업되지만 21:30 이후가 아니라 첫 번째 눈금의 00:00에 나타납니다.
브로커의 서버에서 금요일이었을 때 시간 이동이 다르기 때문에 내 로컬 컴퓨터에서는 여전히 목요일이었습니다.
테스터에서 모든 것이 정상이며 금요일 21:30 이후에 인쇄가 팝업됩니다. 글쎄, 혼란스럽지 않습니까?
비교가 70년 이후 경과된 초 수를 기반으로 한다는 것이 분명하지만 이 초 수에는 날짜와 시간 모두가 고려됩니다.
실제로 최근에 겪었던 문제의 단순화를 예로 들겠습니다.
작업: 금요일이 오면 문자열 변수 "21:30"을 고려하여 이날 거래 종료 시간(날짜/시간)을 계산합니다.
내 원래 솔루션은 다음과 같습니다.
이제 농담입니다. 코드에 지정된 인쇄는 금요일에 팝업되지만 21:30 이후가 아니라 첫 번째 눈금의 00:00에 나타납니다.
브로커의 서버에서 금요일이었을 때 시간 이동이 다르기 때문에 내 로컬 컴퓨터에서는 여전히 목요일이었습니다.
테스터에서 모든 것이 정상이며 금요일 21:30 이후에 인쇄가 팝업됩니다. 글쎄, 그것은 혼란이 아닌가?
확실히 혼란. 머리에 혼란만 있을 뿐입니다. TimeToString ("21:30")은 21:30:00부터 다음 날 21:29:59까지의 현재 날짜를 제공합니다. 코드의 주석을 수정하겠습니다.
datetime EndTrading;
if (TimeDayOfWeek( TimeCurrent ())== 5 ) // если сейчас пятница, от текущего времени. Наступит когда по времени сервера будет 00:00
EndTrading= StringToTime ( "21:30" ); // А тут в 00:00 устанавливается четверг 21:30 потому, что это время пятницы ещё далеко.
if (TimeDayOfWeek( TimeCurrent ())== 5 ) // если настала пятницаif ( TimeCurrent ()>EndTrading) // А тут условие если (текущее время больше чем четверг 21:30)
{
Print ( "EndTrading = ", TimeToString(EndTrading ) ); // Посмотри что будет напечатано.
}
그리고 이 코드는 올바르게 작동할 것입니다
if (TimeDayOfWeek( TimeCurrent ()) == 5 && TimeCurrent () >= StringToTime ( "21:30" ))
Print ( "Настала пятница и текущее время больше чем 21:30" );
ikatsko : 하나의 노트북에는 2개의 MT4 터미널이 있습니다. 하나는 소수점 이하 4자리이고 다른 하나는 소수점 이하 5자리입니다. 동시에 첫 번째 105/0kb의 트래픽과 두 번째 3450/0kb의 트래픽. 첫 번째는 프로세서를 6% 충돌시키고 두 번째는 39% 충돌시킵니다. 문제가 무엇입니까? 이것이 일반적으로 표준입니까?
첫 번째 경우 TimeCurrent() 는 2014.11과 비교됩니다. 0611:30, 두 번째 경우2014.11. 0811:30
PS는 강조 표시된 부분을 수정했습니다.
if (TimeDayOfWeek( TimeCurrent ())== 5 ) // если сейчас пятница, от текущего времени. Наступит когда по времени сервера будет 00:00
EndTrading= StringToTime ( "21:30" ); // А тут в 00:00 устанавливается четверг 21:30 потому, что это время пятницы ещё далеко.
첫 번째 줄은 명확하고 두 번째 줄의 주석은 그렇지 않습니다.
벌써 금요일이 왔는데 왜 금요일이 멀까요? 결국 두 번째 줄은 금요일인 경우에만 실행됩니다.
바로 답이 보이지 않았습니다. 글쎄요, 솔직히 말해서, 나는 당신이 이것에 혼란이 없다고 주장하는 당신이 의미하는 바를 잘 이해하지 못했습니다.
즉, " StringToTime() 함수가 경과된 초를 계산하는 시간은 중요하지 않습니다"?
사실 이 함수는 일반적으로 왼쪽 날짜 (로컬 PC의 날짜가 왼쪽 날짜라고 생각합니다)를 취하여 브로커 서버의 현재 시간과 비교합니다. 왜 이것이 중요하지 않을까요?
위의 스크린샷에서 주석은 로컬 컴퓨터의 시간이 브로커의 시간보다 1시간 빠르다고 말합니다. 즉, GMT 이동이 더 큽니다. X시간이 적다면 금요일쯤에 내가 쓴 경우처럼 중요할 것입니다.
그리고 거래 시간이 끝날 무렵. 브로커가 거래일이나 주를 종료할 때 StringToTime() 함수에 문제가 되지 않아야 한다고 생각합니다...
나는 다른 설명이 없습니다.
모스크바의 현재 시간이 11:40이면 1970년 1월 1일부터 현재 시간 까지 XXX초가 지난 것입니다.
예를 들어 런던에 있을 때 11시 40분이면 초 수는 지금 모스크바에서와 같을 것입니다. 1970년 1월 1일 런던이 현재 시간만큼 늦었기 때문입니다. 비교는 지정된 시간이 아니라 경과된 시간(초)입니다.
1970년 1월 1일 00:00:00부터 초를 계산하는 공식을 작성해 보세요.
짧은 기간 동안 그러한 공식이 있을 것입니다. 이번 달 초부터 6*24*60*60 + 11*60*60 + 59*60 + 현재 초 값이 당신이 보고 있는 시계를 지나갔습니다.
비교가 70년 이후 경과된 초 수를 기반으로 한다는 것이 분명하지만 이 초 수에는 날짜와 시간 모두가 고려됩니다.
실제로 최근에 겪었던 문제의 단순화를 예로 들겠습니다.
내 원래 솔루션은 다음과 같습니다.
이제 농담입니다. 코드에 지정된 인쇄는 금요일에 팝업되지만 21:30 이후가 아니라 첫 번째 눈금의 00:00에 나타납니다.
브로커의 서버에서 금요일이었을 때 시간 이동이 다르기 때문에 내 로컬 컴퓨터에서는 여전히 목요일이었습니다.
테스터에서 모든 것이 정상이며 금요일 21:30 이후에 인쇄가 팝업됩니다. 글쎄, 혼란스럽지 않습니까?
비교가 70년 이후 경과된 초 수를 기반으로 한다는 것이 분명하지만 이 초 수에는 날짜와 시간 모두가 고려됩니다.
실제로 최근에 겪었던 문제의 단순화를 예로 들겠습니다.
내 원래 솔루션은 다음과 같습니다.
이제 농담입니다. 코드에 지정된 인쇄는 금요일에 팝업되지만 21:30 이후가 아니라 첫 번째 눈금의 00:00에 나타납니다.
브로커의 서버에서 금요일이었을 때 시간 이동이 다르기 때문에 내 로컬 컴퓨터에서는 여전히 목요일이었습니다.
테스터에서 모든 것이 정상이며 금요일 21:30 이후에 인쇄가 팝업됩니다. 글쎄, 그것은 혼란이 아닌가?
확실히 혼란. 머리에 혼란만 있을 뿐입니다. TimeToString ("21:30")은 21:30:00부터 다음 날 21:29:59까지의 현재 날짜를 제공합니다. 코드의 주석을 수정하겠습니다.
그리고 이 코드는 올바르게 작동할 것입니다
하나의 노트북에는 2개의 MT4 터미널이 있습니다. 하나는 소수점 이하 4자리이고 다른 하나는 소수점 이하 5자리입니다. 동시에 첫 번째 105/0kb의 트래픽과 두 번째 3450/0kb의 트래픽. 첫 번째는 프로세서를 6% 충돌시키고 두 번째는 39% 충돌시킵니다. 문제가 무엇입니까? 이것이 일반적으로 표준입니까?
알렉세이비크
컴퓨터의 날짜를 2000으로 변경했습니다.
이 스크립트를 실행했습니다:
그리고 받은:
따라서 StringToTime() 함수는 로컬 컴퓨터에서 날짜를 가져옵니다.
알렉세이비크
컴퓨터의 날짜를 2000으로 변경했습니다.
이 스크립트를 실행했습니다:
그리고 받은:
따라서 StringToTime() 함수는 로컬 컴퓨터에서 날짜를 가져옵니다.
그래서 뭐??? 적어도 달에서 시간이 걸리면 "from and to" XXX초가 지났고 이 결과 정수는 필요한 시간의 1970년 1월 1일부터 경과한 시간(초)과 비교됩니다. .
이 줄을 확인하는 것이 좋습니다.
어디에 문제가 있었는지. 오늘은 금요일과 같습니다.
이 줄을 확인하는 것이 좋습니다.
어디에 문제가 있었는지. 오늘은 금요일과 같습니다.
로컬 컴퓨터의 날짜가 브로커 날짜보다 작은지 확인해보니 지문이 나오고,
로컬 컴퓨터의 날짜가 브로커의 날짜보다 큰 경우 인쇄가 없습니다.
이미 정확히 지나간 시간, 즉 "11:30"을 확인하면서
첫 번째 경우 TimeCurrent() 는 2014.11과 비교됩니다. 06 11:30, 두 번째 경우 2014.11. 08 11:30
PS는 강조 표시된 부분을 수정했습니다.
첫 번째 줄은 명확하고 두 번째 줄의 주석은 그렇지 않습니다.
벌써 금요일이 왔는데 왜 금요일이 멀까요? 결국 두 번째 줄은 금요일인 경우에만 실행됩니다.
로컬 컴퓨터의 날짜가 브로커 날짜보다 작은지 확인해보니 지문이 나오고,
로컬 컴퓨터의 날짜가 브로커의 날짜보다 큰 경우 인쇄가 없습니다.
동시에 이미 정확히 지나간 시간, 즉 "11:30"을 확인했습니다.
첫 번째 경우 TimeCurrent()는 2014.11과 비교됩니다. 06 11:30, 두 번째 경우 2014.11. 08 11:30
PS는 강조 표시된 부분을 수정했습니다.
글쎄요, 제 현지 시간 은 서버 시간보다 1시간 더 깁니다.
이 스크립트
다음과 같은 값을 출력합니다.
먼저 1970년 1월 1일부터 지정된 시간까지 경과한 시간(초)을 입력한 다음 우리에게 익숙한 형식의 시간입니다.
이를 바탕으로 이러한 가치에서 무엇이 당신을 혼란스럽게 하는지 설명하십시오.
네. 두 번째 댓글에서는 그것에 대해 전혀 생각하지 않았습니다.
네.
안녕하세요.
그런 과제가 있습니다. (티크에 나사를 조일 수 없음)
보류 중인 주문 이 실행되면 {then...}
주문 계산을 위해 EA에서 Terminal.mqh를 사용합니다.
터미널 // Mas_Tip[0] 오픈 매수
// Buy 주문 수가 1 증가하면...
if (Mas_Tip[0]+1)
{
기능
}
모든 것이 작동합니다. 그러나 다음 틱마다 작동합니다.
이 케이스를 진드기에 부착하는 방법은 무엇입니까? 그런 다음 이전 눈금과 현재 눈금의 값을 비교합니다.