Errori, bug, domande - pagina 1809

 
fxsaber:
Non ha controllato.
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));
}
Grazie, ma non credo che abbia senso una tale precisione, soprattutto perché il tempo sarà comunque "non reale", ma approssimativo e dipenderà da molti fattori. Per essere precisi, abbiamo bisogno della possibilità di ottenere il tempo dal server, cioè se imposto SymbolInfoDouble( _Symbol, SYMBOL_SESSION_TIME_INTEREST ), allora posso ottenere il tempo immediatamente, per esempio con SymbolInfoInteger( _Symbol, SYMBOL_SESSION_TIME_INTEREST ) (con precisione al millisecondo). Allora starete bene!
 
fxsaber:
Potresti essere più preciso. Per esempio, potreste passare attraverso tutti i simboli interrogando SymbolInfoTick (+ CopyTicks). Da lì, gratta via il tempo in millisecondi. Solo che non capisco quale utilità pratica possa avere.

È semplice - il tempismo! È tutto su questo! Ci sono un sacco di dati disponibili ora: tick, sentimento, vetro. Il tempo al millisecondo è disponibile solo per le zecche! Ma che dire del tempo di arrivo del resto dei dati? Il vetro non ce l'ha. Anche il sentimento non ce l'ha! Di conseguenza, se raccogliamo tutti i dati insieme - non saremo in grado di sincronizzarli! Non è possibile fare un'analisi complessa! Non capisco perché gli sviluppatori non vi prestino la dovuta attenzione. Hanno i dati, ma è impossibile lavorarci correttamente! Quindi dobbiamo fare qualcosa, ma anche le "stampelle", come si è scoperto, non sempre funzionano correttamente.

 
Il bug TimeCurrent() è stato risolto, hanno detto che sarebbe stato su MQ-Demo oggi.
 
fxsaber:
Un analogo in millisecondi di TimeCurrent è atteso da tempo, con il suo riflesso nella GUI.
+1. Ma per i valori che ho descritto sopra, sarebbe meglio fare un'opzione di fetching separata.
 
Alexey Kozitsyn:
Il bug TimeCurrent() è stato risolto, hanno detto che sarebbe stato su MQ-Demo oggi.
Sarebbe bene farne una regola
 
fxsaber:
Sarebbe bene farne una regola
Discutibile, dato che nessuno, tranne il creatore dell'applicazione, capirebbe nulla. Penso che le descrizioni dettagliate siano sufficienti.
 

Errore di compilazione: nessuna funzione può essere definita in seguito, anche se dichiarata prima

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:

Errore di compilazione: non si può definire una funzione in seguito, anche se c'è una dichiarazione prima

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; }

Per me ha senso.

Ma perché non ci sia un errore qui non è chiaro.

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:

Mi sembra logico.

Ma perché non ci sia un errore qui non è chiaro.

Un errore è logico solo se c'è una sorta di collisione. Se tutto è fatto correttamente - gli errori inutili tolgono flessibilità

class A; //не зря же такую запись придумали
 
Hanno fatto di nuovo qualcosa di sbagliato.

Compilato nella versione 1531. All'avvio ho ottenuto:

2017.02.16 18:55:19.101 MQL5 'TradePanel.ex5' ha una nuova versione non supportata, aggiorna il tuo terminale client

Meno male che non è su un conto live.