런던 브레이크아웃

 

포럼 회원 여러분,

몇 주 이후로 나는 MQL4로 앞서기 위해 노력하고 있지만 얼마나 어려운 일입니까!! 나는 이미 전문가가 되기를 바랐다! 하지만 저는 그렇지 않으며 조금이나마 도움이 되기를 바랍니다.

런던 개회식을 위한 전문 고문을 만들려고 합니다. 내 전문 고문이 런던 개장 전에 5개 막대 중 고가와 저가를 계산한 다음 고가와 저가를 계산하기를 바랍니다.

함수 의 경우 범위를 계산하기 위해 iHigh 함수의 높은 값과 iLow 함수의 낮은 값을 사용해야 한다고 가정합니다. 그러나 이 범위는 낮 동안 변할 것입니다. 나는 그 범위의 높고 낮음이 가변적이지 않고 정적이기를 원합니다.

누구든지 아이디어가 있습니까?

고급 감사합니다!

 
Nour :

포럼 회원 여러분,

몇 주 이후로 나는 MQL4로 앞서기 위해 노력하고 있지만 얼마나 어려운 일입니까!! 나는 이미 전문가가 되기를 바랐다! 하지만 저는 그렇지 않으며 조금이나마 도움이 되기를 바랍니다.

런던 개회식을 위한 전문 고문을 만들려고 합니다. 내 전문 고문이 런던 개장 전에 5개 막대 중 고가와 저가를 계산한 다음 고가와 저가를 계산하기를 바랍니다.

이 함수의 경우 범위를 계산하기 위해 iHigh 함수의 높은 값과 iLow 함수의 낮은 값을 사용해야 한다고 가정합니다. 그러나 이 범위는 낮 동안 변할 것입니다. 나는 그 범위의 높고 낮음이 가변적이지 않고 정적이기를 원합니다.

누구든지 아이디어가 있습니까?

고급 감사합니다!


런던 오픈이 시작되는 바는 어떻게 찾나요...

당신이 그것을하는 방법을 보여

 

그것은 또 다른 문제입니다. 나는 지금 런던이 열리는 바를 찾는 방법을 모릅니다...

나는 여전히 MQL4에 익숙하지 않습니다.

 

... 내가 뭔가를 놓치고 있습니까, 아니면 MQL4에 내장된 날짜/시간 기능 이 이런 종류의 일에 여전히 부적절합니까?

두 가지 문제:

* (a) 일광 절약 시간제로 변경될 수 있고 (b) 오프셋 계산을 위한 TimeCurrent()와 TimeGMT()의 비교가 주말에 실패하기 때문에 브로커 서버와 GMT 사이의 오프셋을 안정적으로 얻을 수 없습니다.

* 시장이 열려 있는 동안 현재 오프셋을 얻을 수 있지만 GMT 시간을 런던과 같은 다른 시간대로 변환하는 기본 방법은 없습니다.

즉, (a) 브로커의 서버가 CET에서 실행되고 따라서 (b) 각 막대의 런던 시간이 MT4에서 보고한 시간보다 1시간 늦는지를 결정하는 내장된 방법이 없습니다.

 

Nour :

그것은 또 다른 문제입니다. 나는 지금 런던이 열리는 바를 찾는 방법을 모릅니다...

나는 여전히 MQL4에 익숙하지 않습니다.

https://docs.mql4.com/series/ibarshift
 
gchrmt4 :

... 내가 뭔가를 놓치고 있습니까, 아니면 MQL4에 내장된 날짜/시간 기능이 이런 종류의 일에 여전히 부적절합니까?

두 가지 문제:

* (a) 일광 절약 시간제로 변경될 수 있고 (b) 오프셋 계산을 위한 TimeCurrent()와 TimeGMT()의 비교가 주말에 실패하기 때문에 브로커 서버와 GMT 사이의 오프셋을 안정적으로 얻을 수 없습니다.

* 시장이 열려 있는 동안 현재 오프셋을 얻을 수 있지만 GMT 시간을 런던과 같은 다른 시간대로 변환하는 기본 방법은 없습니다.

즉, (a) 브로커의 서버가 CET에서 실행되고 따라서 (b) 각 막대의 런던 시간이 MT4에서 보고한 시간보다 1시간 늦는지를 결정하는 내장된 방법이 없습니다.


TimeGMT() 는 일광 절약 시간제로 변경되지 않는 것으로 보입니다. 예를 들어, 저는 미국에 살고 있으므로 현재 현지 시간대는 EDT입니다. 제 브로커의 MT4 서버는 현재 EEST입니다. 이제 다음 코드와 그 출력을 고려하십시오.

   Print ( "1. GMT = " , TimeToString ( TimeGMT ()));
   Print ( "2. Local Time (EDT) = " , TimeToString ( TimeLocal ()));
   Print ( "3. Daylight Saving Adjustment: " , TimeDaylightSavings ()/ 3600 );
   Print ( "4. GMTOffset for TimeLocal = " , TimeGMTOffset ()/ 3600 );
   Print ( "5. Server Time (EEST) = " , TimeToString ( TimeCurrent ()));
   
   int local = ( TimeLocal () - TimeGMT ()) / 3600 ;
   int server = MathRound (( TimeCurrent () - TimeGMT ()) / 3600.0 );
   string prt = "TimeLocal is " ;
   if (local > 0 )
      prt = StringConcatenate (prt, "GMT+" , MathAbs (local));
   else if (local < 0 )
      prt = StringConcatenate (prt, "GMT-" , MathAbs (local));
   else
      prt = StringConcatenate (prt, "GMT" );
      
   prt = StringConcatenate (prt, " and TimeCurrent is " );
   if (server > 0 )
      prt = StringConcatenate (prt, "GMT+" , MathAbs (server));
   else if (local < 0 )
      prt = StringConcatenate (prt, "GMT-" , MathAbs (server));
   else
      prt = StringConcatenate (prt, "GMT" );
    
   Print (prt);

17:52:28 Expert TestEA-1 EURUSD,H1: 성공적으로 로드됨

17:52:28 TestEA-1 EURUSD,H1: 1. GMT = 2014.03.11 21:52

17:52:28 TestEA-1 EURUSD,H1: 2. 현지 시간(EDT) = 2014.03.11 17:52

17:52:28 TestEA-1 EURUSD,H1: 3. 일광 절약 시간 조정: -1

17:52:28 TestEA-1 EURUSD,H1: 4. TimeLocal에 대한 GMTOffset = 4

17:52:28 TestEA-1 EURUSD,H1: 5. 서버 시간(EEST) = 2014.03.12 00:52

17:52:28 TestEA-1 EURUSD,H1: TimeLocal은 GMT-4이고 TimeCurrent는 GMT+3입니다.

위의 GMT 시간을 런던의 GMT 시간으로 확인했는데 동일했습니다(런던은 3월 말까지 BST로 변경되지 않음). 그래서 저는 TimeGMT()가 로컬 일광 절약 시간 조정을 추가하지 않고 GMT를 반환한다고 믿습니다. EDT 는 UTC-4로 정의되고 EEST 는 UTC+3으로 정의됩니다.

또한 미국 또는 EU의 일광 절약 시간 시작 및 종료 시간을 확인해야 하는 경우 이 함수를 참조하십시오 .

 
Thirteen :

나는 런던의 GMT 시간과 위의 GMT 시간을 확인했다 [...]

거의 확실하게 알다시피... 문제 중 하나는 브로커의 시간과 GMT 사이의 오프셋이 (a) 일광 절약 시간에 따라 가변적일 수도 있고 아닐 수도 있고 (b) 가변적인지 여부를 기반으로 결정할 수 없다는 것입니다. MT4가 제공하는 정보. 이 기능 을 자세히 살펴보진 않았지만 MT4에서 제공하는 정보만으로는 이러한 계산을 수행할 수 없다는 데 동의합니다.

내가 볼 수 있는 한, 4월 초에 위의 코드는 브로커가 GMT+4에 있다고 말하기 시작할 것입니다. 제 요점은 MT4에서 알려주는 내용에서 알 수 있는 방법이 없다는 것입니다. 이전 주에 브로커가 GMT+3에 있었고 예를 들어 iBarShift()를 사용하여 가격을 계산하려면 그에 따라 조정해야 할 수도 있습니다. 특정 GMT 시간의 활동 또는 GMT 시간의 오프셋.

BTW, 오늘 위의 코드를 실행했다면 브로커는 거의 확실히 EEST에 있을 수 없습니다. 그들은 3월 30일까지 EET에 있어야 합니다. 현재 GMT+3에 있다면 EEST가 아닌 다른 것을 사용하고 있는 것입니다. (링크된 페이지에 "올해 이 시간 동안 EEST의 위치는 이제 EET에 있습니다"라고 표시됨).

 

gchrmt4 :

. . .

BTW, 오늘 위의 코드를 실행했다면 브로커는 거의 확실히 EEST에 있을 수 없습니다. 그들은 3월 30일까지 EET에 있어야 합니다. 현재 GMT+3에 있다면 EEST가 아닌 다른 것을 사용하고 있는 것입니다. (링크된 페이지에 "올해 이 시간 동안 EEST의 위치는 이제 EET에 있습니다"라고 표시됨).

중개인은 MT4 서버의 시간대를 GMT+2에서 GMT+3으로 변경하여 뉴욕 마감 오후 5시에 해당 하며 동시에 미국이 2014년 3월 9일에 발생한 일광 절약 시간제로 변경합니다. 유럽의 경우 GMT+2는 표준 시간의 EET에 해당하므로 GMT+3은 일광 절약 시간의 EEST에 해당합니다. 예를 들어 유럽 시간대 를 참조하십시오. 따라서 보시다시피 오늘 내 현지 시간대가 EDT이고 브로커의 시간대가 EEST에 해당할 때 코드를 실행했음에 의심의 여지가 없습니다.

[1] 내가 아는 한, 4월 초에 위의 코드는 브로커가 GMT+4에 있다고 말하기 시작할 것입니다.

[2] 제 요점은 MT4에서 지난 주에 브로커가 GMT+3에 있었고 원하는 경우 iBarShift() 사용을 적절하게 조정해야 할 수도 있다는 것을 알 수 있는 방법이 없다는 것입니다. 특정 GMT 시간 또는 GMT 시간의 오프셋에서 가격 활동을 계산합니다.

1. 4월에 GMT+4를 반환하는 이유는 무엇입니까? 내 로컬 컴퓨터의 시간은 이미 일광 절약 시간에 맞게 조정되었고 내 브로커는 이미 일광 절약 시간을 반영하도록 서버를 조정했습니다. 그렇다면 4월에는 무엇이 변경됩니까?

2. 브로커는 일광 절약 시간제를 반영하기 위해 시간을 변경할 수 있습니다. 그러면 오프셋이 GMT로 변경됩니다. 그러나 당신은 그 변화를 예측할 수 있습니다. 예를 들어, 일광 절약 시간이 시작되고 끝나는 날짜/시간은 매년 변경되지만 그 변경은 예측 가능하므로 프로그래밍할 수 있습니다. 규칙을 코딩하면 됩니다. 그러나 TimeGMT()는 현지 표준 시간대, 브로커 표준 시간대 또는 일광 절약 시간 오프셋에 관계없이 GMT를 반환해야 합니다.

거의 확실하게 알다시피... 문제 중 하나는 브로커의 시간과 GMT 사이의 오프셋이 (a) 일광 절약 시간에 따라 가변적일 수도 있고 아닐 수도 있고 (b) 가변적인지 여부를 기반으로 결정할 수 없다는 것입니다. MT4가 제공하는 정보. 이러한 기능을 자세히 살펴보지는 않았지만 MT4가 제공하는 정보만으로는 이러한 계산을 수행할 수 없다는 데 동의합니다.

중개인이 일광 절약 시간제를 조정하면 해당 조정으로 오프셋이 GMT로 변경되지만 위에서 언급했듯이 이러한 변경 사항을 예측하고 조정할 수 있습니다. 또는 장소(예: 런던)에서 일광 절약 시간제를 조정하는 경우 지역 규칙을 코딩하여 해당 변경 사항을 예측하고 그에 맞게 조정할 수 있습니다.

 
Thirteen :

중개인이 일광 절약 시간제를 조정하면 해당 조정으로 오프셋이 GMT로 변경되지만 위에서 언급했듯이 이러한 변경 사항을 예측하고 조정할 수 있습니다. 또는 장소(예: 런던)에서 일광 절약 시간제를 조정하는 경우 지역 규칙을 코딩하여 해당 변경 사항을 예측하고 그에 맞게 조정할 수 있습니다.

나는 여전히 기본적으로 변경 사항이 예측 가능하고 코딩할 수 있다는 점에 동의하지만 MT4 자체에서 제공하는 정보만 사용하는 것은 아닙니다. MT4에 "런던에서 x에 해당하는 시간을 주세요"라고 말하는 대신 런던 GMT에 대해 "로컬 규칙을 코딩"해야 합니다.

GMT+3의 서버 시간은 EEST가 GMT+3이라는 점에서 EEST에 해당할 수 있지만 Wikipedia와 worldclock.com에 따르면 아직 EEST에 있는 곳이 없습니다. 이 변경 사항은 3월 30일까지 발생해서는 안 됩니다. 키프로스, 그리스, 이스라엘 등의 현재 시간 은 GMT+2입니다.

따라서 아마도 GMT+2에서 서버를 실행하지만 유럽 날짜가 아닌 미국 날짜에 일광 절약 시간제로 변경하는 브로커가 있을 것입니다. EET/EEST와 다릅니다. (그리고 브로커가 사용하는 시간 설정에 대한 입력을 사용자에게 묻지 않고도 시간과 날짜를 자동으로 조정하는 코드를 작성할 수 있다는 점에서 예측하기가 훨씬 어렵습니다.)

따라서 브로커가 GMT+3에서 GMT+4로 변경될 예정이 아니라 최근에 GMT+2에서 GMT+3으로 변경된 경우 이는 브로커 시간과 GMT 사이의 현재 오프셋이 잘못된 경우 미국 시계가 변경되기 전인 지난 주에 막대에 적용하려고 했습니다. 이번 주 중개인의 바는 런던보다 3시간 빠릅니다. 지난 주에 그들은 2시간 앞서 있었습니다. (그리고 3월 30일부터는 다시 2시간 앞당겨집니다.) 3시간의 현재 오프셋을 사용하여 지난 주 런던 시간 오전 8시에 가격을 구하려고 하면 오답이 나옵니다. .

내가 말하고자 하는 것은 MT4 자체에서 얻을 수 있는 정보(브로커 시간과 GMT 사이의 현재 오프셋)가 실제로 "지난 수요일 런던 시가를 계산하세요"와 같은 작업을 수행하는 데 부적절하다는 것입니다.

 

어떻게 하면 MT4를 더 적절하게 만들 수 있습니까? 나는 당신에 대해 모르지만 나는 지역 역사적 GMT 오프셋 계산기를 만드는 작업을 좋아하지 않을 것입니다. 당신은 단지 상상할 수 있습니까? 어머나. 내가 할 수 있다면 시장에 내놓을 것입니다. 큰 수표 책을 가지고 계시는 것이 좋습니다. ;)

농담입니다. 코딩을 시도할 방법이 없습니다. WHR은 할 수 있지만 그는 이미 하고 있습니다.

사유: