오류, 버그, 질문 - 페이지 1809

 
fxsaber :
확인하지 않았다
datetime NewTimeCurrent( void )
{
   static ulong PrevStartTime = GetMicrosecondCount ();
   static datetime PrevTimeCurrent = TimeCurrent (); // TimeTradeServer()
  
   const datetime NewTimeCurrent = TimeCurrent (); // TimeTradeServer()
   const ulong NowTime = GetMicrosecondCount ();
  
   if (PrevTimeCurrent < NewTimeCurrent)  
  {
    PrevTimeCurrent = NewTimeCurrent;
    
    PrevStartTime = NowTime;
  }
  
   return (PrevTimeCurrent + ( datetime )((NowTime - PrevStartTime) / 1000000 ));
}
감사합니다. 그러나 특히 시간이 여전히 "실제가 아닌" 것이지만 근사치이며 많은 요인에 따라 달라지기 때문에 그러한 정확성에는 아직 의미가 없다고 생각합니다. 모든 것이 정확하려면 서버 에서 시간을 가져올 수 있어야 합니다. SymbolInfoDouble( _Symbol, SYMBOL_SESSION_INTEREST ) 매개변수를 요청하면 즉시 시간을 얻을 수 있습니다. 예: SymbolInfoInteger( _Symbol, SYMBOL_SESSION_TIME_INTEREST ) (밀리초 단위로 정확). 그러면 모든 것이 잘 될 것입니다!
 
fxsaber :
더 정확할 수도 있습니다. 예를 들어 SymbolInfoTick(+ CopyTicks) 요청을 통해 모든 기호를 살펴보십시오. 거기에서 시간을 밀리초 단위로 긁습니다. 나는 이것의 실제 적용이 무엇인지 이해하지 못합니다.

간단합니다 - 동기화! 그녀에 대한 모든 것입니다! 이제 틱, 감정, 주문서 등 많은 데이터를 사용할 수 있습니다. 틱에만 밀리초의 시간이 있습니다! 그리고 나머지 데이터의 도착 시간은 어떻게 됩니까? 유리에는 아무것도 없습니다. 감성도 없다! 따라서 모든 데이터를 함께 수집하면 동기화할 수 없습니다! 종합적인 분석은 불가능합니다! 왜 개발자들이 이것에 대해주의를 기울이지 않는지 이해가되지 않습니다. 데이터는 있지만 정확하게 작업하는 것은 불가능합니다! 그래서 우리는 나가야하지만 "목발"조차도 항상 올바르게 작동하는 것은 아닙니다.

 
TimeCurrent() 의 버그가 수정되었으며 오늘 MQ-Demo에 포함될 것이라고 말했습니다.
 
fxsaber :
GUI에 반영된 TimeCurrent의 일반 밀리초 아날로그는 이미 오래 전에 출시되었습니다.
+1. 하지만 위에서 설명한 값에 대해서는 별도의 획득 가능성을 만드는 것이 좋습니다.
 
Alexey Kozitsyn :
TimeCurrent()의 버그가 수정되었으며 오늘 MQ-Demo에 포함될 것이라고 말했습니다.
규정으로 하면 좋을텐데
 
fxsaber :
규정으로 하면 좋을텐데
때문에 논란의 여지가 있다. 응용 프로그램의 작성자를 제외하고는 아무도 이해하지 못할 것입니다. 자세한 설명은 충분하다고 생각합니다.
 

컴파일 오류: 이전에 선언이 있어도 나중에 함수를 정의할 수 없습니다.

int f(); //объявление
static int i1 = f(); //Error: 'f' - function must have a body
int g()
{
static int i2 = f(); //нормально //даже если нет объявления
    return i2;
}
void OnStart ()
{
    g();
}
int f() { return 0 ; }
 
A100 :

컴파일 오류: 이전에 선언이 있어도 나중에 함수를 정의할 수 없습니다.

int f(); //объявление
static int i1 = f(); //Error: 'f' - function must have a body
int g()
{
static int i2 = f(); //нормально //даже если нет объявления
    return i2;
}
void OnStart ()
{
    g();
}
int f() { return 0 ; }

논리적인 것 같아요.

그러나 여기에 오류가 없는 이유는 명확하지 않습니다.

int f(); //объявление
static int i1 = f(); //Error: 'f' - function must have a body
int g()
{
static int i2 = f(); //нормально //даже если нет объявления
     return i2;
}

class A
{
public :  
  A() { f(); }
};

A a;


void OnStart ()
{
    g();
}
int f() { return 0 ; }
 
fxsaber :

논리적인 것 같아요.

그러나 여기에 오류가 없는 이유는 명확하지 않습니다.

오류는 충돌이 있는 경우에만 논리적입니다. 모든 것이 올바르게 수행되면 불필요한 오류로 인해 유연성이 박탈됩니다.

class A; //не зря же такую запись придумали
 
다시 말하지만, 그들은 뭔가를 했습니다.

버전 1531에서 컴파일되었습니다. 시작하자마자 다음을 얻었습니다.

2017.02.16 18:55:19.101 MQL5 'TradePanel.ex5'에 지원되지 않는 최신 버전이 있습니다. 클라이언트 터미널을 업데이트하십시오.

전투 계정에 없는 것이 좋습니다.