МQL5에서 Open,Low,High,Close 매개변수를 얻는 방법은 무엇입니까? - 페이지 5

 
Igor Makanu :

이 클래스 CNewbar 를 수행하거나 포럼 NewBar를 검색할 수 있습니다.


수업에 iTime이라는 전화가 있습니다. 나는 그것에 대해 잊어 버리라는 조언을 받았습니다.) 게다가 CopyRates와 동일한 작업을 수행하지 않는다는 보장은 어디에 있습니까? 매 틱마다 호출합니다. 요컨대, 매 틱마다 CopyRates를 호출하고 문제가 종료됩니다.

 
Artyom Trishkin :

예, 각 틱 의 시간을 확인합니다.

그리고 간단히 다음과 같습니다.

나는 단지 무릎을 꿇고 썼습니다 - 쓰기의 정확성이 아니라 아이디어를 보여주기 위해

계산 자체가 CopyRates 또는 이에 상응하는 것을 사용하는 경우 새 막대를 계산하는 것은 의미가 없습니다. 동일한 비용이 적용됩니다.

모든 틱에 전화하겠습니다. 고마워.

 
Igor Makanu :

이 클래스 CNewbar 를 수행하거나 포럼 NewBar를 검색할 수 있습니다.

추신: 전체 기사! https://www.mql5.com/en/articles/159



그것은 분명합니다. 모든 것이 평소와 같습니다 .. uff, oh, oh .. 코드 한 줄이 아닙니다.)))

나는 연속적인 OHLC 배열을 수신하는 것이 항상 편리한 것은 아니며 종종 거의 필요하지 않다는 것을 보여주기 위해 내 자신의 예를 들었습니다. 실제 작업에서는 종종 다른 막대에서 OHLC 값을 선택적으로 가져와야 하는 경우가 많습니다(지표는 계산되지 않음)

좋아, 아프지 마!

어서 해봐요. 두꺼운 것은 일반적으로 따뜻합니다. 따라서 이러한 비교도 사용할 수 있습니다. OHLC가 필요한지 누가 신경 쓰나요 ... Igor는 프랙탈을 사용해야한다고 했으므로 사용하십시오 ...

 
Реter Konow :

수업에 iTime이라는 전화가 있습니다. 나는 그것에 대해 잊어 버리라는 조언을 받았습니다.) 게다가 CopyRates와 동일한 작업을 수행하지 않는다는 보장은 어디에 있습니까? 매 틱마다 호출합니다. 요컨대, 매 틱마다 CopyRates를 호출하고 문제가 종료됩니다.

이것은 틱당 한 번 CopyTime () 또는 iTime()을 호출하는 것보다 깁니다.

모든 막대 값을 동시에 가져와야 하는 경우 - 새 막대를 정의하는 순간에만 CopyRates()를 호출하십시오.

 
Реter Konow :
계산 자체가 CopyRates 또는 이에 상응하는 것을 사용하는 경우 새 막대를 계산하는 것은 의미가 없습니다. 같은 비용이 됩니다.

모든 틱에 전화하겠습니다. 고마워.

당신이 틀렸다고 대답했습니다.

 
Artyom Trishkin :

이것은 틱당 한 번 CopyTime () 또는 iTime()을 호출하는 것보다 더 깁니다.

모든 막대 값을 동시에 가져와야 하는 경우 - 새 막대를 정의하는 순간에만 CopyRates()를 호출하십시오.

좋은. 따라서 iXXX 기능에 대해서는 설치를 잊어버려야 합니다.))

 
Реter Konow :

좋은. 따라서 iXXX 기능에 대해 잊어버려야 합니다.))

틀림없이. 그들이 말하는 모든 것이 유용한 것은 아닙니다. 그리고 나는 헛소리를 할 수 있습니다 :)))

그러나 여기 - 속도의 이유로: CopyRates()는 동시에 한 막대의 여러 값을 가져와야 할 때 편리합니다(귀하의 경우). CopyTime() 또는 iTime()보다 느리지만 CopyOpen(), CopyHigh(), CopyLow() 및 CopyClose() + (필요한 경우 CopyTime())를 4번 호출하면 CopyRates 를 호출하는 것보다 느립니다. () , 필요한 모든 값을 한 번에 반환합니다.

결론: 각 틱에서 CopyTime() 또는 iTime()을 사용하여 새 막대를 결정하고 새 막대가 나타나는 순간 CopyRates()를 한 번 호출합니다.

그리고 믿음 이외의 다른 어떤 것으로도 확인되지 않는 종교적 진술은 고려되어서는 안 됩니다. 새로운 막대를 정의하는 경우 - CopyTime() 또는 iTime() - 최근에 크로스 플랫폼 코드 작성을 용이하게 하는 본격적인 MQL5 함수(여기에 누워 있습니다 - MQL4도 CopyXXX 기능이 있지만 MQL4 이식 - MQL5의 코드가 더 쉬워짐 - iXXX 기능을 다시 실행할 필요 없음)

 
Реter Konow :
그렇지 않으면 현재 막대의 여는 시간이 변경되었음을 어떻게 알 수 있습니까?
 //+------------------------------------------------------------------+
//|                                                       NewBar.mq5 |
//|                        Copyright 2019, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2019, MetaQuotes Software Corp."
#property link        "https://www.mql5.com"
#property version    "1.00"

MqlDateTime time;

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
{

   EventSetMillisecondTimer ( 100 );
   return ( INIT_SUCCEEDED );
}

//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
{
   EventKillTimer ();   
}

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ()
{

   
}

//+------------------------------------------------------------------+
//| Timer function                                                   |
//+------------------------------------------------------------------+
void OnTimer ()
{
   TimeGMT (time);   
   //TimeLocal(time);

   if (NewMinute())
   {
     Print ( "Я новая минута" );
   }		
}

//####################################################################

//Получить новое время
int zero = 0 ;
bool NewMinute()
{
   int minute = time.min; //time.sec; time.hour;  time.day; 
   if (zero != minute)
  {    
    zero = minute;
     return ( true );
  }
   else return ( false ); 
}
 
Реter Konow :

수업에 iTime이라는 전화가 있습니다. 나는 그것에 대해 잊어 버리라는 조언을 받았습니다.) 게다가 CopyRates와 동일한 작업을 수행하지 않는다는 보장은 어디에 있습니까? 매 틱마다 호출합니다. 요컨대, 매 틱마다 CopyRates를 호출하고 문제가 종료됩니다.

항상 글만 쓰고 읽으려고 하지 않으세요? "New Bar"에 대한 전체 기사에 대한 링크를 제공했습니다! 글은 포럼에 꾸준히 글을 쓰는 사람들과 다른 능력을 가진 사람들에 의해 확인됩니다.)

추신: 예를 들어 내 링크의 기사를 쓰기를 중단하고 읽기 시작하면 iXXX() 함수를 사용하지 않는 다른 방법( SERIES_LASTBAR_DATE ) 을 찾을 수 있습니다. 개발자가 해킹을 발표했다는 오류)))))

 
Igor Makanu :

항상 글만 쓰고 읽으려고 하지 않으세요? "New Bar"에 대한 전체 기사에 대한 링크를 제공했습니다! 글은 포럼에 꾸준히 글을 쓰는 사람들과 다른 능력을 가진 사람들에 의해 확인됩니다.)

추신: 예를 들어 내 링크의 기사를 쓰기를 중단하고 읽기 시작하면 iXXX() 함수를 사용하지 않는 다른 방법( SERIES_LASTBAR_DATE ) 을 찾을 수 있습니다. 개발자가 해킹을 발표했다는 오류)))))

SERIES_LASTBAR_DATE에 몇 가지 문제가 있습니다. 여기 어딘가에서 오랫동안 논의되었습니다. 이미 수정되었을 수 있습니다.