이건 이론적인 질문인가요, 아니면 데이터 센터에 실제로 이런 from-to 범위가 존재하나요?
두 개의 세션으로 설정한다는 게 무슨 뜻인가요? - 세션 정보는 MT5 설정에서 반환되는 것이지, 우리가 직접 설정하는 게 아니잖아요. 게다가 MT5에서는 하나의 세션이 하나의 기록에 해당합니다. 일부 브로커(시장과의 지리적 거리 때문에)에서는 이런 경우가 있을 수 있습니다. 이 경우 SymbolInfoSessionTrade는 추가 일수를 고려한 to 시간을 반환합니다(적어도 예전에는 그랬습니다 - 지금 당장은 확인해 보지 않았습니다). 즉, from < to 조건은 항상 유지되었습니다.
sunput에서 매일 세션을 직접 설정할 수 있습니다. 이 설정에 따라 작동합니다. 연결하기 #define LoadSessionFromInputs // 입력에서 세션 읽기
Stanislav Korotky #: 이 경우 SymbolInfoSessionTrade는 추가 일수를 고려한 to 시간을 반환합니다(적어도 예전에는 그랬습니다. 지금 당장은 확인하지 않았습니다). 즉,from < to 조건은항상 유지되었습니다.
즉, 20:00 - 32:00인가요?
브로커 측에서 테스트해 볼 수 있는 실제 예시가 있다면, 해당 예시에 맞춰 수정하고 확인할 수 있을 것입니다. 현재는 간단한 해결책이 있습니다. 자정을 기준으로 세션을 두 개로 직접 나누는 것입니다. 또한 어느 요일에 해당하는지 지정할 수 있습니다. 예를 들어 토요일 8:00까지는 금요일의 잔여 시간으로, 일요일 20:00부터는 월요일의 시작 시간으로 처리할 수 있습니다.
스크린샷에 나와 있는 옵션들, 즉 20:00-08:00과 같이 다음 날로 넘어가는 세션을 프로그래밍했습니다. 다음 함수를 수정했습니다:
for (int i = 0; i < this.TradeSessions[DayOfWeek]; i++){//해당 요일의 세션을 모두 확인if(( Sec >= this.TradeTimeFrom[i][DayOfWeek] )){ //세션이 시작되었다 - 끝을 찾기if(Sec < this.TradeTimeTo[i][DayOfWeek]){//아직 끝이 아니니, 명심해 두세요this.NextTradeStop = (datetime)(day * 86400) + this.TradeTimeTo[i][DayOfWeek]; //현재 세션의 종료 시간, 이 시간 전까지는 다음 세션을 확인할 필요가 없음 = (오늘의 시작 시간 + 세션 시간) //Print("new Stop ", this.NextTradeStop);returntrue;
}elseif (this.TradeTimeTo[i][DayOfWeek] < this.TradeTimeFrom[i][DayOfWeek]){// 종료 < 시작 (예: 20:00-04:00 - 다음 날로 넘어감 + 시간에 1일 추가)this.NextTradeStop = (datetime)((day+1) * 86400) + this.TradeTimeTo[i][DayOfWeek]; //현재 세션의 종료 시간, 이 시간 전까지는 다음 세션을 확인할 필요가 없음 = (오늘의 시작 시간 + 세션 시간) //Print("new Stop ", this.NextTradeStop);returntrue;
}
}
}
추가된 코드는 종료 시간이 세션 시작 시간보다 늦은지 확인한 후, 종료 시간에 1일을 더합니다.
다음과 같은 세션으로 테스트해 보았습니다:
날짜: 1 거래 세션: 1: 23:55-00:05 날짜: 2 거래 세션: 1: 00:15-00:17
단순히 시간 기준으로 비교가 이루어집니다.
대신 원하는 값을 자유롭게 설정할 수 있습니다.
세션 시간은 브로커에서 가져오거나 수동으로 설정할 수 있습니다.
제가 말한 건 내부 코드에 관한 것이지, 호출이나 입력 매개변수에 관한 것이 아닙니다.
여기서 Sec는 24시간 범위로 지정되어 있지만, from-to 경계는 없습니다. 예를 들어, 오전 3시를 요청했는데 세션이 밤 9시부터 오전 8시까지 거래된다면 true가 반환되어야 하지만, 조건이 충족되지 않아 false가 반환됩니다.
저는 호출이나 입력 매개변수가 아니라 내부 코드에 대해 말한 것입니다.
여기서 Sec는 24시간 단위로 표시되어 있지만, from-to 범위가 없습니다. 예를 들어, 오전 3시를 요청했는데 세션 거래 시간이 저녁 9시부터 오전 8시까지라면 true가 반환되어야 하지만, 조건이 충족되지 않아 false가 반환됩니다.
이는 두 개의 세션(
, 21-24 및 0-8)으로 설정할 수 있습니다.
이것은 이론적인 질문인가요, 아니면 거래 센터에 실제로 이와 유사한 from-to 범위가 존재하나요?
이는 두 세션으로 설정할 수 있습니다:
21-24 및 0-8
이건 이론적인 질문인가요, 아니면 데이터 센터에 실제로 이런 from-to 범위가 존재하나요?
두 개의 세션을 설정한다는 것이 무슨 뜻인가요?
sunput에서 매일 세션을 직접 설정할 수 있습니다. 이 설정에 따라 작동합니다.
연결하기
#define LoadSessionFromInputs // 입력에서 세션 읽기
이 경우 SymbolInfoSessionTrade는 추가 일수를 고려한 to 시간을 반환합니다(적어도 예전에는 그랬습니다. 지금 당장은 확인하지 않았습니다). 즉,from < to 조건은항상 유지되었습니다.
즉, 20:00 - 32:00인가요?
브로커 측에서 테스트해 볼 수 있는 실제 예시가 있다면, 해당 예시에 맞춰 수정하고 확인할 수 있을 것입니다.
현재는 간단한 해결책이 있습니다. 자정을 기준으로 세션을 두 개로 직접 나누는 것입니다. 또한 어느 요일에 해당하는지 지정할 수 있습니다. 예를 들어 토요일 8:00까지는 금요일의 잔여 시간으로, 일요일 20:00부터는 월요일의 시작 시간으로 처리할 수 있습니다.
즉, 20:00부터 32:00까지인가요?
네. 그런 서버를 갖춘 기성 데이터 센터는 눈에 띄지 않습니다. 뉴질랜드 어딘가에서 찾아봐야겠네요.
사용자 정의 기호 편집기를 사용하여 다음과 같이 만들었습니다:
사용자 정의 기호 편집기를 다음과 같이 설정했습니다:
다음 함수를 수정했습니다:
추가된 코드는 종료 시간이 세션 시작 시간보다 늦은지 확인한 후, 종료 시간에 1일을 더합니다.
다음과 같은 세션으로 테스트해 보았습니다:
날짜: 1 거래 세션: 1: 23:55-00:05
날짜: 2 거래 세션: 1: 00:15-00:17
다음 날로 넘어가는 첫 번째 세션:
2020.06.29 23:55:03 2020.06.29 23:55:03
2020.06.29 23:55:09 2020.06.29 23:55:09
2020.06.29 23:56:39 2020.06.29 23:56:39
2020.06.29 23:57:01 2020.06.29 23:57:01
2020.06.29 23:59:59 2020.06.29 23:59:59
2020.06.30 00:00:00 2020.06.30 00:00:00
2020.06.30 00:00:08 2020.06.30 00:00:08
2020.06.30 00:01:52 2020.06.30 00:01:52
2020.06.30 00:02:02 2020.06.30 00:02:02
2020.06.30 00:02:30 2020.06.30 00:02:30
2020.06.30 00:03:25 2020.06.30 00:03:25
2020.06.30 00:03:31 2020.06.30 00:03:31
두 번째 세션, 평소와 같이 하루에 진행:
2020.06.30 00:15:29 2020.06.30 00:15:29
2020.06.30 00:16:01 2020.06.30 00:16:01
2020.06.30 00:16:09 2020.06.30 00:16:09
일주일 뒤 첫 세션:
2020.07.06 23:55:01 2020.07.06 23:55:01
2020.07.06 23:55:09 2020.07.06 23:55:09