초보자의 질문 MQL5 MT5 MetaTrader 5 - 페이지 784

 
Aleksey Vyazmikin :

함수를 만들 수 있도록 도와주세요.

현재 시간 프레임과 계산된 시간 프레임이 있습니다. 측정이 막대 단위인 경우 함수는 두 시간 프레임의 차이를 어떤 조합으로든 반환해야 합니다.

예상 TF 열 다섯 열 다섯 열 다섯 60 60 60 240 240 240
현재 TF 열 다섯 5 하나 열 다섯 5 하나 60 열 다섯 5
Nbar의 차이 하나 열 다섯 4 12 60 4 열여섯 48

올바르게 구현하는 방법은 무엇입니까?


그랬어

 int TFk()
{
   int K= 0 ;
   K=TF_transfer(TF)/TF_transfer( Period ());
//   Print(TF_transfer(TF),"   ",TF_transfer(Period()));
//Print (K);
   if    (K< 1 ) return ( 1 );
   else        return (K);
}


int TF_transfer( ENUM_TIMEFRAMES tf)
  {
   if (tf== PERIOD_CURRENT ) return ( 0 );
   if (tf== PERIOD_M1 ) return ( 1 );
   if (tf== PERIOD_M5 ) return ( 5 );
   if (tf== PERIOD_M15 ) return ( 15 );
   if (tf== PERIOD_M30 ) return ( 30 );
   if (tf== PERIOD_H1 ) return ( 60 );
   if (tf== PERIOD_H4 ) return ( 240 );
   if (tf== PERIOD_D1 ) return ( 1440 );
   if (tf== PERIOD_W1 ) return ( 10080 );
   if (tf== PERIOD_MN1 ) return ( 43200 );  
   if (tf== PERIOD_M2 ) return ( 2 );
   if (tf== PERIOD_M3 ) return ( 3 );
   if (tf== PERIOD_M4 ) return ( 4 );
   if (tf== PERIOD_M6 ) return ( 6 );
   if (tf== PERIOD_M10 ) return ( 10 );
   if (tf== PERIOD_M12 ) return ( 12 );
   if (tf== PERIOD_H2 ) return ( 120 );
   if (tf== PERIOD_H3 ) return ( 180 );  
   if (tf== PERIOD_M6 ) return ( 360 );
   if (tf== PERIOD_H8 ) return ( 480 );
   if (tf== PERIOD_H12 ) return ( 720 );
   return ( 1 );
  }

문제는 지표에 이 행복이 필요하지만 이상하고 그러한 코드로 올바르게 초기화되기를 원하지 않는다는 것입니다.

 int OnInit()
  {
   Print ( "K=" ,TFk(), " Период=" , Period ());

return(INIT_SUCCEEDED); }

다음과 같이 반응합니다.

2017.09.22 14:23:27.742 donchian_channel_prognoz_MTF (Eu Splice,M5) K=3 기간=5

2017.09.22 14:23:27.776 donchian_channel_prognoz_MTF (Eu Splice,M5) 시험

2017.09.22 14:23:27.790 donchian_channel_prognoz_MTF (유 스플라이스,M15) K=1 기간=15

가장 이해하기 힘든 점은 이미 OnCalculate의 본문에 있는 테스트가 인쇄된다는 것입니다!

 if ( BarsCalculated (handle)< 0 ) { Print ( "test" ); return ( 0 );}

처음에는 시간 프레임이 올바르게 정의되고 두 번째에는 그렇지 않은 것으로 나타났습니다...

어떤 기적, 나는 모릅니다 ...

알지만 이 표시기에서 표시기의 호출 이 발생합니다... 원을 그리며...
 
Aleksey Vyazmikin :

그랬어

문제는 지표에 이 행복이 필요하지만 이상하고 그러한 코드로 올바르게 초기화되기를 원하지 않는다는 것입니다.

다음과 같이 반응합니다.

2017.09.22 14:23:27.742 donchian_channel_prognoz_MTF (Eu Splice,M5) K=3 기간=5

2017.09.22 14:23:27.776 donchian_channel_prognoz_MTF (Eu Splice,M5) 시험

2017.09.22 14:23:27.790 donchian_channel_prognoz_MTF (유 스플라이스,M15) K=1 기간=15

가장 이해하기 힘든 점은 이미 OnCalculate의 본문에 있는 테스트가 인쇄된다는 것입니다!

처음에는 시간 프레임이 올바르게 정의되고 두 번째에는 그렇지 않은 것으로 나타났습니다...

어떤 기적, 나는 모릅니다 ...

알지만 이 표시기에서 표시기의 호출 이 발생합니다... 원을 그리며...

그리고 왜 그런 변태???

그게 더 쉽지 않니?

K = PeriodSeconds (TF)/ PeriodSeconds ( Period ());
 
Alexey Viktorov :

그리고 왜 그런 변태???

그게 더 쉽지 않니?


그래서 초보자를 위한 브랜치라 이런 가능성을 몰랐는데 알려주셔서 감사합니다.

 

지금 두 개의 TF가 있는 iBarShift의 가장 안정적인 기능은 무엇입니까?

내 작업은 예를 들어 분 막대에서 상위 시간대의 표시기 값(예: M15)을 찾는 것입니다. 시간 프레임은 무엇이든 될 수 있으므로 결정이 복잡합니다.

TF시간은 스트럭처로 해봤는데 M15라면 헷갈리는데...

 
Aleksey Vyazmikin :

지금 두 개의 TF가 있는 iBarShift의 가장 안정적인 기능은 무엇입니까?

내 작업은 예를 들어 분 막대에서 상위 시간대의 표시기 값(예: М15)을 찾는 것입니다. 시간 프레임은 무엇이든 될 수 있으므로 결정이 복잡합니다.

TF시간은 스트럭처로 해봤는데 M15라면 헷갈리는데...

이 스크립트 회전: 가장 가까운 막대 검색

 
Vladimir Karputov :

이 스크립트 회전: 가장 가까운 바 검색


고맙습니다.

 
Aleksey Vyazmikin :

그래서 초보자를 위한 브랜치라 이런 가능성을 몰랐는데 알려주셔서 감사합니다.

Alexey, 이것은 오랫동안 mql4에 있었습니다.


알렉세이 비아즈미킨 :

지금 두 개의 TF가 있는 iBarShift의 가장 안정적인 기능은 무엇입니까?

내 작업은 예를 들어 분 막대에서 상위 시간대의 표시기 값(예: M15)을 찾는 것입니다. 시간 프레임은 무엇이든 될 수 있으므로 결정이 복잡합니다.

TF시간은 스트럭처로 해봤는데 M15라면 헷갈리는데...

그리고 이 경우 mql4에서와 같이 막대 번호 지정을 잊어버리십시오. mql5에서는 거의 모든 것이 바 시간에 의해 결정됩니다. 글쎄, 최후의 수단으로 Bars() 함수 를 사용하십시오.

 int    Bars (
   string            symbol_name,     // имя символа
   ENUM_TIMEFRAMES   timeframe,       // период
   datetime          start_time,       // с какой даты
   datetime          stop_time         // по какую дату
   );
Документация по MQL5: Доступ к таймсериям и индикаторам / Bars
Документация по MQL5: Доступ к таймсериям и индикаторам / Bars
  • www.mql5.com
Доступ к таймсериям и индикаторам / Bars - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Alexey Viktorov :
Alexey, 이것은 오랫동안 mql4에 있었습니다.

분명히 이것은 내가 mql4를 잘 모른다는 것을 의미합니다.

알렉세이 빅토로프 :

그리고 이 경우 mql4에서와 같이 막대 번호 지정을 잊어버리십시오. mql5에서는 거의 모든 것이 바 시간에 의해 결정됩니다. 글쎄, 최후의 수단으로 Bars() 함수 를 사용하십시오.

반올림이 확실합니까?

m1의 시간이 14:44이고 14:30(첫 번째 막대는 M15) 시간을 가져와야 한다고 가정해 보겠습니다.

 
Aleksey Vyazmikin :

분명히 이것은 내가 mql4를 잘 모른다는 것을 의미합니다.

반올림이 확실합니까?

m1의 시간이 14:44이고 14:30(첫 번째 막대는 M15) 시간을 가져와야 한다고 가정해 보겠습니다.

다른 시리즈입니다. 14:30 마디의 M15 기간에서 14:44에 무엇을 받아야합니까? Copy**** 함수에 PERIOD_M15 를 넣고 시간은 14시 44분에 어떤 일이 일어나는지 보십시오. 그리고 그것이 예상과 다른 것으로 밝혀지면 질문이 달라질 것입니다.

 
Alexey Viktorov :

다른 시리즈입니다. 14:30 마디의 M15 기간에서 14:44에 무엇을 받아야합니까? Copy**** 함수에 PERIOD_M15 를 넣고 시간은 14시 44분입니다. 무슨 일이 일어나는지 보십시오. 그리고 그것이 예상과 다른 것으로 밝혀지면 질문이 달라질 것입니다.


네, 이 방향으로 작업했습니다. 일반적으로 그들은 나를 도왔습니다. 감사합니다.

사유: