Nuovo terminale client MetaTrader 4 build 402

 

MetaTrader 4 Client Terminal build 402

  1. Terminale: Corretta la correzione del fuso orario quando si carica la cronologia in History Center (tasto F2).
  2. Terminale: visualizzazione fissa dei grafici sulla scala 1-1 per i caratteri con 5 cifre.
  3. Messaggi corretti sul forum e sui kreshlog.
L'aggiornamento dal vivo sarà disponibile attraverso il sistema LiveUpdate
 

Secondo problema.

ecco la funzione:

void MonitorTick()
{   
   string s;
   
   datetime dt=TimeCurrent();
   int y1=TimeYear(dt);
   int m1=TimeMonth(dt);
   int d1=TimeDay(dt);
   string fn=y1+"_"+m1+"_"+d1+"_Monitor_Tick_"+Symbol()+".mon";
         
   {
      handleM=FileOpen(fn,FILE_BIN|FILE_WRITE|FILE_READ);
      if (handleM<0) 
      {
         handleM=FileOpen(fn,FILE_BIN|FILE_WRITE);
      }
      else
      {
         s="Time;;Shift "+Symbol()+"\n";
         FileWriteString(handleM,s,StringLen(s));
      }
   }

   s=TimeToStr(TimeCurrent(),TIME_DATE|TIME_MINUTES|TIME_SECONDS)+";;";
   
   s=s+DoubleToStr((Bid-iOpen(NULL,PERIOD_D1,0))/Point,0)+"\n";
   
   {      
      FileSeek(handleM,0,SEEK_END);
      FileWriteString(handleM,s,StringLen(s));
   
      FileClose(handleM);
   }
      
}

In parole povere - ad ogni tick scrive la differenza tra il prezzo corrente e il prezzo di apertura del giorno in un file.

A un certo punto inizia a scrivere spazzatura nel file. Contenuto sotto:

2011.05.12 15:40:50;;2
2011.05.12 15:40:50;;1
2011.05.12 15:40:51;;0
2011.05.12 15:40:51;;1
2011.05.12 15:40:52;;2
2011.05.12 15:40:53;;2
2011.05.12 15:40:55;;3
2011.05.12 15:53:54;;15692
2011.05.12 15:53:54;;15688
2011.05.12 15:54:05;;15692
2011.05.12 15:54:28;;15696
2011.05.12 15:54:42;;15694
2011.05.12 15:54:56;;15698
2011.05.12 15:55:40;;15697
2011.05.12 15:56:40;;15698
2011.05.12 15:56:47;;15696
2011.05.12 15:57:17;;15696
2011.05.12 15:57:34;;15699 

Come spiegarlo????

Expert non fa nient'altro con questa funzione, il codice è di tre righe. sta su 10 strumenti, e periodicamente 5-7 di essi emettono questo. Solo il reset del terminale aiuta. A proposito, anche gli indicatori (quelli multivaluta) iniziano a mostrare delle assurdità.

 
dimonsky:

Secondo problema.

Come spiegarlo????


Quando si usa una costruzione come.

Bid-iOpen(NULL,PERIOD_D1,0))

è assicurarsi che ci sia una barra sulla cronologia D1 e che corrisponda a ciò che ci si aspetta.

Cioè se state usando il prezzo di apertura della barra giornaliera corrente, dovete assicurarvi che state usando il prezzo di apertura di Esattamente la barra giornaliera corrente.

P.S.

Ho il sospetto che sia lo stesso nei vostri codici multi-valuta.

 

Quindi non basta vedere i dati sullo schermo?

Ho diversi mesi di cronologia sullo schermo. Vi chiedo anche di spiegare come un tick di un secondo fa differisce dal tick attuale, quando la cronologia è "improvvisamente" sparita, così come subito dopo un riavvio, quando appare "improvvisamente" nell'istante in cui il terminale viene acceso e i tick vengono scritti ulteriormente senza alcun intoppo.

Lo stesso negli strumenti multi-valuta. Anche a barra zero, quando c'è la storia per tutte le coppie - sono appositamente aperti in altre finestre per avere una storia al 100%.

 
PapaYozh:


Cioè se state usando il prezzo di apertura della barra del giorno corrente, dovete assicurarvi che state usando il prezzo di apertura esattamente la barra giornaliera corrente.

strana situazione. il grafico è aperto, che naturalmente mostra il giorno corrente. un secondo fa il prezzo di apertura era lì, ed è scomparso? e con la rete scollegata, senza accesso a internet , un riavvio aiuta improvvisamente il terminale a trovare la storia?

e che giorno deve essere perché la differenza sia di 15000 pips.... ?

 
dimonsky:
C'è un grafico aperto, che naturalmente mostra il giorno corrente. un secondo fa c'era un prezzo di apertura, e poi è scomparso?


Non sono uno sviluppatore di terminali e posso solo immaginare la connessione tra le barre nelle finestre aperte e la cronologia disponibile.

Vi ho scritto come programmare correttamente per evitare ambiguità.

 
PapaYozh:


Non sono uno sviluppatore di terminali e posso solo immaginare la connessione tra le barre nelle finestre aperte e la cronologia disponibile programmaticamente.

Vi ho scritto come programmare correttamente per evitare ambiguità.


Quale ambiguità può esserci quando si accede al prezzo di apertura del giorno corrente? Di quali altri controlli ho bisogno?

Per la coppia GBPCAD, 15000 pip significa che tutta la storia è scomparsa da giorni, compresa quella di oggi.

 
per GBPCAD 15000 pips significa che il prezzo Bid = 0 perché non hai aggiornato le quotazioni con RefreachRates(), o non hai usato MarketInfo(Symbol(),MODE_BID)
 
xrust:
per GBPCAD 15000 pips significa che il prezzo Bid = 0 perché non hai aggiornato le quotazioni con RefreachRates(), o non hai usato MarketInfo(Symbol(),MODE_BID)


No, perché in questo caso, il valore ottenuto sarebbe negativo (vedi la formula).

il problema è esattamente che il Bid era lì, ma non c'era la cronologia. e sto capendo il motivo per cui non è disponibile per il codice del programma, anche se c'era un secondo prima che la cronologia era lì.

 

- E io, ad oggi, (13-05-2011), non ho avuto alcun aggiornamento. È il mio DC che ignora la nuova costruzione?

In ogni caso, non c'era nessun avviso di aggiornamento o riavvio regolare.

 
brici:

- E io, ad oggi, (13-05-2011), non ho avuto alcun aggiornamento. È che il mio DC sta ignorando la nuova costruzione?

In ogni caso, non c'era nessun avviso di aggiornamento o riavvio regolare.

L'aggiornamento dovrebbe avvenire domani. Questo è un annuncio preliminare.