[SERVICE DESK] Errore nell'ottenere il tempo del TF senior nel timer! - pagina 13

 
Alexey Kozitsyn:

Leggere il punto 1.

Per ottenere il tempo di apertura della barra il timer non serve a nulla, e qualsiasi altro dato, se non da un altro simbolo diverso dal grafico. Se non è legato ad un simbolo diverso dal grafico corrente, ma ad un altro TF del simbolo corrente, è interessante. Non si aggiornerà fino all'arrivo dei nuovi dati. Ma tutto il vostro lavoro si basa sul simbolo attuale. Quindi non preoccupatevi del timer. Il resto in quanto tale viene masticato più volte. L'argomento è andato in circolo.

 
Konstantin Nikitin:

Per ottenere il tempo di apertura della barra il timer non serve a nulla, e qualsiasi altro dato, se non da un altro simbolo diverso dal grafico. Se non è legato a un simbolo diverso dal grafico corrente, ma a un altro TF del simbolo corrente, è interessante controllarlo ogni millisecondo. Non si aggiornerà fino all'arrivo dei nuovi dati. Ma tutto il vostro lavoro si basa sul simbolo attuale. Quindi non preoccupatevi del timer. Il resto in quanto tale viene masticato più volte. L'argomento è andato in circolo.

Amico, ovviamente non capisci cosa sta succedendo qui. Non si tratta più del timer, dimenticatelo. Il timer si riferisce al mio vero problema. Il problema ora è l'errore nei dati ricevuti. Il punto 1, che ti ho consigliato di leggere, dice che in presenza di IsConnected(), l'indicatore si connetterà al server solo sul secondo evento OnCalculate(). Quindi il tuo consiglio precedente è inutile.

 
Alexey Kozitsyn:

Amico, è chiaro che non capisci cosa sta succedendo qui. Non si tratta più del timer, dimenticatelo. Il timer si riferisce al mio vero problema. Il problema ora è l'errore nei dati ricevuti. Il punto 1, che ti ho consigliato di leggere, dice che in presenza di IsConnected(), l'indicatore si connetterà al server solo sul secondo evento OnCalculate(). Quindi il tuo consiglio precedente è inutile.

L'avete controllato sperimentalmente? Consiglio di controllare. Quindi riavvia il terminale con il test.

int OnCalculate(
   const int rates_total,
   const int prev_calculated,
   const datetime &time[],
   const double &open[],
   const double &high[],
   const double &low[],
   const double &close[],
   const long &tick_volume[],
   const long &volume[],
   const int &spread[]
)
{
   static int num = 1;
   
     
     if( IsConnected() )
          if( num == 1 )
               Comment( "Test: ", num );
     num++;
     return(rates_total);
}

E cosa vedi?

Al primo passaggio, se c'è una connessione al server, tutto funziona.

 
Konstantin Nikitin:

L'avete testato empiricamente? Vi suggerisco di farlo. Quindi riavvia il terminale con il test.

E cosa vedi?

Al primo passaggio, se c'è una connessione al server, tutto funziona.

Chi, nella sua mente e nei suoi pensieri, testa quando il mercato non funziona?

E sì, l'ho testato empiricamente, che è quello di cui ho scritto.

 
Alexey Kozitsyn:

Chi, nella sua mente e nei suoi pensieri, testa quando il mercato non funziona?

E sì, l'ho testato sperimentalmente, che è quello di cui ho scritto.

Questo non ha niente a che vedere con il fatto che il mercato funzioni o meno. L'indicatore ha funzionato e la sua analisi è iniziata. Il risultato del primo passaggio è nel commento. Hai detto

Alexey Kozitsyn:

Dovresti leggerlo - riguarda il fatto che se IsConnected() è presente, l'indicatore si connette al server solo sul secondo evento OnCalculate(). Quindi il tuo consiglio precedente è inutile.

 
Konstantin Nikitin:

Cosa c'entra se il mercato funziona o no? L'indicatore è iniziato, l'analisi è in corso. Il risultato del primo passaggio è nel commento. Lei ha detto.

Sì... Tutto a posto. Ora spegni il terminale con questo indicatore installato sul grafico ed eseguilo di nuovo.

 
Alexey Kozitsyn:

Accidenti. Va bene, allora. Ora spegnete il terminale con questo vostro indicatore installato sul grafico e riavviatelo.

Quindi questo grafico

è stato fatto solo pochi minuti prima della sua pubblicazione. Cioè oggi. Ed è stato dopo che il terminale è stato riavviato.
La connessione con il server viene stabilita anche durante il fine settimana. Lo stesso saldo da controllare, può ottenere gli ultimi dati, se è stato disconnesso prima che la sessione fosse chiusa.

 
Konstantin Nikitin:

Quindi questo grafico

ed è stato fatto solo pochi minuti prima della sua pubblicazione. Cioè oggi. Ed è stato dopo che il terminale è stato riavviato.
La connessione al server viene stabilita anche durante il fine settimana. Lo stesso saldo da controllare, può ottenere gli ultimi dati, se è stato disconnesso prima che la sessione fosse chiusa.

#property strict
#property indicator_chart_window
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
   if( !IsConnected() )
     {
        Print( __FUNCTION__,": IsConnected = false" );
        return( 0 );
     }
   //---
   Print( "Connected!" );
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+

Sto ottenendo un risultato:

2018.10.06 18:24:32.261 test_isConnected GBPUSD,M1: initialized
2018.10.06 18:24:32.313 test_isConnected GBPUSD,M1: OnCalculate: IsConnected = false
2018.10.06 18:24:33.080 test_isConnected GBPUSD,M1: Connected!
E il tuo codice non mostra alcun commento durante il caricamento.
 
Alexey Kozitsyn:

Ottengo un risultato:

E il tuo codice non mostra alcun commento quando viene caricato.

Beh, è possibile. Il mio server a volte va giù per manutenzione la domenica, ma non per molto. Può essere una delle ragioni per cui non c'è connessione.
Può essere un'altra ragione per cui il terminale non può connettersi al server prima dell'avvio dell'indicatore.
Il mio terminale si collega immediatamente.

 
Konstantin Nikitin:

Potrebbe benissimo essere così. Il mio server potrebbe essere giù per manutenzione domenica, ma non rimarrà giù a lungo. Può essere una delle ragioni della mancanza di connessione.
Può essere un'altra ragione per cui il terminale non ha il tempo di connettersi al server prima dell'inizio dell'indicatore.
Il mio terminale si collega immediatamente.

Allora rendilo semplice: carica il mio indicatore con le tue modifiche sul grafico ora. Spegnere il terminale. Riaccendilo lunedì e vedi il risultato. Ulteriori discussioni sono inutili.