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

 
Alexey Viktorov :

이 경우 첫 번째 막대에서 확실히 10 CopyRates가 있습니다. 그리고 모든 틱 을 호출하는 것이 아니라 새 막대가 나타날 때 충분합니다.

CopyRates 없이 새 막대가 표시되었음을 이해하는 방법은 무엇입니까? 어떤 의미에서 먼저 new bar 이벤트를 잡아야 합니다. CopyRates 없이 가능합니까? 조금 헷갈리네요.)

이것이 의미하는 바입니다. 저는 MT5에서 이 주제를 다룬 적이 없습니다. 이해해주세요.))

 
Alexey Viktorov :

오 블라디미르. 이렇게 말했지만 불행히도 나는 예약을 하지 않았다. 예를 들어 개점 또는 시간과 같은 가격만 필요한 경우 이 경우 CopyRates()를 특별히 사용할 필요가 없습니다. CopyOpen 또는 iOpen ... 각각 CopyTime 또는 iTime이면 충분합니다. 종교적 선호도에 따라 선택됩니다.

그리고 나는 나의 예약을 추가할 것이다: 공연 비용 측면에서 실질적인 차이는 없다. 따라서 종교적 취향만 남습니다.

fxsaber는 CopyRates() 의 비용을 확인했습니다. 별도로 필요한 속성을 얻는 것보다 비용이 많이 듭니다. 모든 가격을 한 번에 가져와야 하는 상황에는 적용되지 않습니다.

 
Реter Konow :
CopyRates 없이 새 막대가 표시되었음을 이해하는 방법은 무엇입니까? 어떤 의미에서 먼저 new bar 이벤트를 잡아야 합니다. CopyRates 없이 가능합니까? 조금 헷갈리네요.)

아무 것도 신경 쓰지 않고 새로운 막대의 모양을 모니터링하고 CopyRates를 호출합니다.

마차와 작은 카트 사이트에 새로운 바를 정의하는 다양한 기능과 방법.

 
Реter Konow :

CopyRates 없이 새 막대가 표시되었음을 이해하는 방법은 무엇입니까? 어떤 의미에서 먼저 new bar 이벤트를 잡아야 합니다. CopyRates 없이 가능합니까? 조금 헷갈리네요.)

이것이 의미하는 바입니다. 저는 MT5에서 이 주제를 다룬 적이 없습니다. 이해해주세요.))

가장 쉬운 방법은 현재 막대 의 여는 시간 을 비교하는 것입니다. 이전에 기억한 것과 같지 않으면 새 막대가 있습니다. 새 막대에서 수행해야 할 작업을 수행하고 다음 확인을 위해 이 시간을 기억합니다.

 
Alexey Viktorov :

아무 것도 신경 쓰지 않고 새로운 막대의 모양을 모니터링하고 CopyRates를 호출합니다.

마차와 작은 카트 사이트에 새로운 바를 정의하는 다양한 기능과 방법.

MT5에서 새로운 바의 등장은 분의 시작과 관련이 없습니다. 시간에 얽매이지 않습니다. 여기에 걸림돌이 있습니다. 틱만 기준으로 새 막대의 모양을 정확하게 이해하려면? 여전히 시계열을 참조해야 합니다. 그렇지 않으면 거의 불가능합니다. 비록... 100% 확실하지는 않습니다.
 
Artyom Trishkin :

fxsaber는 CopyRates()의 비용을 확인했습니다. 별도로 필요한 속성을 얻는 것보다 비용이 많이 듭니다. 모든 가격을 한 번에 가져와야 하는 상황에는 적용되지 않습니다.

fxsaber와 관련하여 저는 그러한 차이를 무시하는 것을 선호합니다. 그래서 그는 "눈에 띄는 차이가 없다"고 말했고, 1e6 반복 주기를 돌릴 때의 차이는 관심이 없다. 결국, 우리는 한 번에 1e6 총알을 발사할 수 있는 슈터를 쓰지 않습니다.
 
Artyom Trishkin :

가장 쉬운 방법은 현재 막대 의 여는 시간 을 비교하는 것입니다. 이전에 기억한 것과 같지 않으면 새 막대가 있습니다. 새 막대에서 수행해야 할 작업을 수행하고 다음 확인을 위해 이 시간을 기억합니다.

따라서 매 틱마다 CopyRates를 호출하시겠습니까? 그렇지 않으면 현재 막대의 여는 시간이 변경되었음을 어떻게 알 수 있습니까?
 
Реter Konow :
모든 틱에서 CopyRates를 호출하시겠습니까? 그렇지 않으면 현재 막대의 여는 시간이 변경되었음을 어떻게 알 수 있습니까?

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

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



알렉세이 빅토로프 :

이고르, 당신은 일등석에 가야합니다. 그들은 편지를 가르치고 공부한 후에 CopyRates와 CopyBuffer의 차이점을 이해하게 될 것입니다.

CopyRates 없이 이 문제에 대한 더 나은 솔루션이 있습니다.


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

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

좋아, 아프지 마!

Обработчик события "новый бар"
Обработчик события "новый бар"
  • www.mql5.com
Для создателей индикаторов и экспертов всегда был актуален вопрос написания экономичного кода с точки зрения времени выполнения. Можно подойти к решению этой задачи с разных сторон. Из этой обширной темы в данной статье будет затронут, казалось бы уже решенный вопрос: проверка появления нового бара. Это достаточно популярный способ ограничения...
 
Реter Konow :
따라서 매 틱마다 CopyRates를 호출하시겠습니까? 그렇지 않으면 현재 막대의 여는 시간이 변경되었음을 어떻게 알 수 있습니까?

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

 //+------------------------------------------------------------------+
//| Возвращает время указанного бара                                 |
//+------------------------------------------------------------------+
datetime Time( const string symbol_name, const ENUM_TIMEFRAMES timeframe, const int index)
  {
   datetime array[];
   return ( CopyTime (symbol_name,timeframe,index, 1 ,array)== 1 ? array[ 0 ] : 0 );
  }
//+------------------------------------------------------------------+

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

 static datetime last_time= 0 ;
datetime time_current=Time( Symbol (), PERIOD_CURRENT , 0 );
if (time_current== 0 )
   return ;
if (time_current!=last_time)
  {
   // Новый бар или первый запуск (для контроля первого запуска можно сделать флаг - чтобы не обрабатывать его как новый бар)
   // делаем что нужно на новом баре
   last_time=time_current;
  }

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

 
Реter Konow :
따라서 매 틱마다 CopyRates를 호출하시겠습니까? 그렇지 않으면 현재 막대의 여는 시간이 변경되었음을 어떻게 알 수 있습니까?

if(prevTime!=iTime(...))

{

// 현재 막대 의 여는 시간 이 변경되었습니다.

}

prevTime=iTime(...);