새 막대 표시 - 페이지 2

 
Doerk Hilger :

가장 쉬운 방법:

정적 날짜/시간 tlastbar=0;

날짜 시간 tnewbar=iTime(NULL,PERIOD_CURRENT,0);

bool isnewbar=tnewbar!=tlastbar;

tlastbar=tnewbar;

내가 아는 한 주제는 mql5에 대한 것입니다. 귀하의 코드는 mql4 전용입니다.
 
Willbur :

여기 내 최종 버전 이 있습니다.

사실 너무 쉬워서 조금 걱정입니다.

Alain: 축복을 내려주면 좋을 텐데.

// -----------------------------------------------------------------------
bool NewBar(void)
{
bool iNewBar = false;
static double currPeriodProgress = 0;

   if(MathMod(TimeCurrent(),PeriodSeconds()) < currPeriodProgress) iNewBar = true;

   currPeriodProgress = MathMod(TimeCurrent(),PeriodSeconds());

   return(iNewBar);
}
// ------------------------------------------------------------------------
void OnTick()
{
    if(NewBar())     PlaySound("tick.wav");


쾰른에서 인사드립니다
윌버

문제는 OnTick()에서만 사용할 수 있다는 것입니다. 다른 이벤트 핸들러에서는 TimeCurrent()가 원하는 기호와 관련되어 있는지 확신할 수 없습니다.

그리고 같은 계산을 두 번 하지 않는 것이 좋습니다.

 bool NewBar( void )
  {
   bool iNewBar= false ;
   static double currPeriodProgress= 0 ;

   double lastPeriodProgress= MathMod ( TimeCurrent (), PeriodSeconds ());

   if (lastPeriodProgress<currPeriodProgress) iNewBar= true ;

   currPeriodProgress=lastPeriodProgress;

   return (iNewBar);
  }
 
Alain Verleyen :
내가 아는 한 주제는 mql5에 대한 것입니다. 귀하의 코드는 mql4 전용입니다.
그게 무슨 뜻 이니? 그냥 잘라낸 것이며 원하는 곳이면 어디든 포함될 수 있습니다(예: NewBar() 함수 ). 그리고 가장 간단하고 빠르고 안정적인 솔루션입니다. 나는 이것을 모든 시간 프레임에 대해 개별적으로 CSymbolInfo 클래스의 파생물에 포함시켰고 완벽하게 작동합니다.
 

MQL4에서 이것을 사용했습니다.

 //global
long Bars_in_Chart;

   // detected new bar
   if (Bars_in_Chart< Bars )
   {
      Bars_in_Chart= Bars ;
   }
 
Doerk Hilger :
그게 무슨 뜻 이니? 그냥 잘라낸 것으로 NewBar() 함수와 같이 원하는 곳에 포함될 수 있습니다. 그리고 가장 간단하고 빠르고 안정적인 솔루션입니다. 나는 이것을 모든 시간 프레임에 대해 개별적으로 CSymbolInfo 클래스의 파생물에 포함시켰고 완벽하게 작동합니다.
mql5에는 iTime() 함수 가 없습니다.
 
Alain Verleyen :
mql5에는 iTime() 함수가 없습니다.
MT5, 정말? 그러나 MQL5는 MT5일 뿐만 아니라 적어도 내가 항상 이해한 방식은 MT4가 MQL5 컴파일러를 사용하기 때문입니다. 하지만 사실은 모르고 MT4를 주로 사용합니다. 어쨌든 제한에 대한 정보를 주셔서 감사합니다.
 
Doerk Hilger :
MT5, 정말? 그러나 MQL5는 MT5일 뿐만 아니라 적어도 내가 항상 이해한 방식은 MT4가 MQL5 컴파일러를 사용하기 때문입니다. 하지만 사실은 모르고 MT4를 주로 사용합니다. 어쨌든 제한에 대한 정보를 주셔서 감사합니다.
아니요, mql4는 MT4용이고 mql5는 MT5용입니다. 그들은 공통된 기능 의 하위 집합을 가지고 있지만 2개의 다른 언어입니다.
 

MQL4 iTime()은 대부분의 MQL4 다른 기능과 마찬가지로 트레이더가 쉽고 이해할 수 있습니다.

MQL5는 다릅니다. 코딩하려면 컴퓨터 공학 학위가 필요하며, 이것이 대부분의 사람들을 실망시킵니다.

지난 주에 MT4 EA를 시작하고 MT5와 내가 찾은 솔루션으로 변환하려고 할 때 만난 예입니다.


 
Alain Verleyen :
아니요, mql4는 MT4용이고 mql5는 MT5용입니다. 그들은 공통된 기능의 하위 집합을 가지고 있지만 2개의 다른 언어입니다.

언어는 동일하지만 공통되지 않은 기능 의 작은 하위 집합이 있습니다.) 어쨌든, 이 정의가 옳을 것입니다. MQ는 이 시점에서 많은 혼란을 야기했습니다.

 
Doerk Hilger :
MT5, 정말? 그러나 MQL5는 MT5일 뿐만 아니라, 적어도 내가 항상 이해한 방식은 MT4가 MQL5 컴파일러를 사용하기 때문입니다. 하지만 사실은 모르고 MT4를 주로 사용합니다. 어쨌든 제한에 대한 정보를 주셔서 감사합니다.
호환성을 위해 이전 iClose, iTime ... 기능 을 구현하는 공용 라이브러리/클래스가 있는지 알고 있습니까? 단계별 변환 중에 의미가 있습니다.