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

 
Andrei01:
il tempo di una nuova candela è Time[0].

e come posso determinare ulteriormente l'arrivo di una nuova candela?
 
reag:

e come determinare ulteriormente l'arrivo di una nuova candela?
memorizzare il precedente in una variabile e confrontarlo.
 
Andrei01:
memorizzare il precedente in una variabile e confrontare.

Lo proverò ora...
 
reag:

e come identificare l'arrivo di una nuova candela?


Ci sono diverse opzioni, eccone un paio:

1. all'avvio dell'Expert Advisor, ricorda il numero totale di barre sul grafico e monitora i cambiamenti del numero di barre durante l'esecuzione dell'Expert Advisor:

//начало кода - самый верх
int counted;

int init(){
   counted=Bars;     // запомним общее количество баров на активном ТФ
    Myorders();
return(0);
}

int start(){
   Myorders();
........................

// я рассполагаю этот код в самом конце ф-ции start() - мне так удобнее
  int bar = Bars;
  if (bar != counted ) { // сравним запомненное кол-во баров с текущим если они равны тогда нет нового бара на активном ТФ
      counted= bar;
// код который необходимо выполнить по закрытию/открытию бара
  }
return(0);
}

2. ricordate il tempo dell'ultima barra aperta; il codice è circa lo stesso,

use datetime last=Time[0];

e confrontare last==Time[0] --> se l'ultimo tempo aperto è lo stesso dell'ultima volta, se non è uguale, significa che abbiamo una nuova barra

Non so quale schema sia più efficiente 1 o 2 - ho dei dubbi sul download automatico della cronologia nel terminale, ma non vedo problemi

 
IgorM:


Ci sono diverse opzioni, eccone un paio:

1. all'avvio dell'Expert Advisor, ricorda il numero totale di barre sul grafico e controlla i cambiamenti del numero di barre durante l'esecuzione dell'Expert Advisor:

questo non funzionerà. il numero di barre è limitato.
 
Andrei01:
Non funzionerà. il numero di barre è limitato.


Questo funziona, perché il numero totale non ha importanza, ci interessa solo il momento in cui il numero di barre sul grafico è cambiato, in questo momento la variabile bar != counted, fate attenzione, ricordo volutamente int bar = Bars; - per non perdere il valore di Bars, e poi confrontare e assegnare questo valore counted = bar; - e si potrebbe fare tutto con Bars senza la variabile extra - ma ho deciso di controllare due volte

Ho anche detto che ci può essere un piccolo kazutz durante l'auto-pompaggio della storia - può essere buono o può essere cattivo, se usiamo il tempo di apertura del bar, funzionerà sicuramente - il tempo di apertura del bar non cambierà mai

 
IgorM:


interessato solo al momento in cui il numero di barre sul grafico è cambiato

Una volta raggiunto il valore massimo impostato nelle impostazioni, il numero di barre sul grafico non dovrebbe aumentare. anche se può essere che salti più o meno uno al massimo, non ho controllato, allora potrebbe essere possibile prenderlo, ma questa è un'opzione non documentata.
 
Andrei01:
Dopo aver raggiunto il valore massimo impostato nelle impostazioni, il numero di barre sul grafico non dovrebbe aumentare. anche se potrebbe saltare, non ho controllato, allora potrebbe essere possibile prenderlo, ma questa è già un'opzione non documentata.

Questa era la domanda. Ho controllato quando viene raggiunto il massimo... Bars non cambia, ma rimane uguale a Max bars nella finestra (vedi proprietà).
 
reag:

questa era la domanda. Ho controllato quando viene raggiunto il massimo... Bars non cambia, ma rimane uguale a Max bars nella finestra (vedi proprietà).
Beh, dovrebbe esserlo, quindi la prima opzione non funzionerà.
 
Andrei01:
Beh, è così che dovrebbe essere, quindi la prima opzione non funziona.

Sì, la prima opzione non funziona, anche se sto lavorando su un tempo non standard, la seconda sì. Grazie a tutti!