[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate. Non posso andare da nessuna parte senza di te. - pagina 862

 
FOReignEXchange:

Volevi cinque minuti, vero?

È così che dovrebbe funzionare. Ogni 5 minuti ci sarà un ridisegno, se si azzerano i parametri richiesti, che sono utilizzati dall'indicatore.


extern int timedraw=1; - questo è un minuto

Per quanto riguarda i tick, non sono molto regolari, ma non è cruciale, non saranno usati nella storia - questo è uno script e un indicatore per il trading manuale

tre schermi, anzi 4

ZS: Il tuo codice - sì, in effetti è più utile per scrivere un indicatore da utilizzare dall'EA

 
FOReignEXchange:

Tranne che a volte non ci sono ticchettii per tre minuti, come adesso. Guardando il grafico M1 di GBPUSD, non c'erano tick a 3-4 minuti. Non si può usare TimeCurrent() sulla cronologia. Oppure non si può usare nel tester perché è l'ora corrente e non cambia.

In base al codice di cui sopra, possiamo dire che il segnale del messaggio non sarà ogni 5 minuti, ma ogni 5 barre sui minuti.


datetime TimeCurrent( )

Restituisce l'ultimo tempo noto del server (last quoted time) come numero di secondi trascorsi dalle 00:00 del 1 gennaio 1970.

Nota: Nei test, viene simulata l'ultima ora conosciuta del server.

Ma comunque, è simulato? Sì - non sarà esatto con un margine di errore non trascurabile credo, ma l'uso sul test è possibile. Se non so o non capisco qualcosa, vi sarei grato se mi spiegaste.
 
usver:
Ma comunque, è simulato? Sì - non sarà preciso con un margine di errore non trascurabile, credo, ma l'uso su un test è possibile. Se c'è qualcosa che non so o non capisco, vi sarei grato se poteste spiegare.

Penso che ti sbagli. Aspetta un attimo...

Ah, mi sono ricordato, TimeCurrent() non può essere usato quando si ricalcola la storia del grafico corrente.

Per esempio, quando il seguente codice è attualmente allegato

                                      while(i>0)
                                      {
if (iHigh(NULL,0,i)>X)     
   {
   t=TimeCurrent();
   }
                                      i--
                                      }                                 

ricorderà il tempo reale corrente, non l'i-esima barra dove iHigh(NULL,0,i)>X

E nel tester non lo so.

 
FOReignEXchange:

Penso che ti sbagli. Aspetta un attimo...

Ah, mi sono ricordato, TimeCurrent() non può essere usato quando si ricalcola la storia del grafico corrente.

Per esempio, quando il seguente codice è attualmente allegato

ricorderà il tempo reale corrente, non l'i-esima barra dove iHigh(NULL,0,i)>X

E nel tester non lo so.

TimeCurrent() restituisce l'ultimo tempo noto del server (tempo di arrivo dell'ultima quotazione) come numero di secondi, e non ha nulla a che fare con i-bar sia in tester, demo e reale
 
FOReignEXchange:

Penso che ti sbagli. Aspetta un attimo...

Ah, mi sono ricordato, TimeCurrent() non può essere usato quando si ricalcola la storia del grafico corrente.

Per esempio, quando il seguente codice è attualmente allegato

ricorderà il tempo reale corrente, non l'i-esima barra dove iHigh(NULL,0,i)>X

E nel tester non lo so.


Sì, è chiaro. Ero solo confuso dalla frase che TimeCurrent() non può essere usata nella storia e nel tester.

Il seguente codice non sarà errato? L'ora di arrivo dell'ultimo preventivo è simulata e la usiamo.

int time;
if (time==0)
   time=iTime(NULL,1,0); // Точка отсчета
if (TimeCurrent()-time>=300) // Проверяем сколько времени прошло - равно ли 5 минутам
   {
      // Выполняем, что хотели
      ...
      ...
      ...
      time=0;
    }

La tua soluzione mi è sembrata migliore di quella descritta sopra.

 
E grazie anche da parte mia. Come si dice, tutto ciò che è brillante è semplice.
keekkenen:
 
E grazie anche da parte mia. Come si dice, tutto ciò che è brillante è semplice.
keekkenen:
 
Si scopre che tutto è genialmente semplice. Grazie per Notepad.
keekkenen:
 
usver:

Il seguente codice non sarà sbagliato?

int time;

   int start()
   {

if (time==0)  time=iTime(NULL,1,0);    // Точка отсчета

if ((TimeCurrent()-time)>=300)        // Проверяем сколько времени прошло - равно ли 5 минутам
   {
      // Выполняем, что хотели
      ...
      ...
      ...
      time=0;
    }

   }

int time; deve essere impostato più alto dell'ora di inizio, altrimenti il tempo sarà sempre uguale a zero. E dovrebbe essere racchiuso da(TimeCurrent()-time)

Il resto del codice sembra essere a posto. Non l'ho controllato.

 

qual è il modo migliore per salvare dati/variabili importanti nel caso in cui il terminale si blocchi (mancanza di corrente)?

- variabili globali del terminale? in un file?

- quanto spesso devono essere salvati? (l'ultimo valore di equità e alcune boole sono importanti)

Motivazione: