Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
Cattura tutti gli eventi per tick, confrontandoli con i dati registrati in precedenza.
Tutto in array.
In realtà, a volte ci sono dei freni, quando ci sono molti tic. Ecco perché ho fatto un Ritardo tra i controlli di 1 secondo.
Riguarda il monitoraggio di molte posizioni.
E se si monitorano solo le posizioni di un particolare robot, è ovviamente più facile lì.
Ho un compito semplice, e non ci sono più di due o tre dozzine di ordini al lavoro.
E quindi userò un timer per controllare cosa c'è in OrdersTotal() e scrivere i volumi nelle nuove e vecchie variabili con sostituzione ad ogni iterazione, e se il volume è cambiato - fare ulteriori passi.
Ho un compito semplice, e non ci sono più di due o tre dozzine di ordini al lavoro.
E quindi userò un timer per controllare cosa c'è in OrdersTotal() e scrivere i volumi nelle nuove e vecchie variabili con sostituzione ad ogni iterazione, e se il volume è cambiato - fare ulteriori passi.
Il volume non cambia quando scatta un ordine pendente.
Il volume non cambierà quando l'ordine pendente scatta.
Bene, filtro gli ordini per tipo nel ciclo e calcolo il volume della posizione cumulativa aperta.
Mi rattrista il fatto di dover sprecare risorse e perdere tempo, quando in MT5 si può semplicemente aspettare un evento specifico senza alcuno stress.
Bene, filtro gli ordini per tipo nel ciclo e calcolo il volume della posizione cumulativa aperta.
È triste che tu debba allenarti in questo modo e sprecare risorse, quando in MT5 puoi semplicemente aspettare un evento specifico senza alcuno stress.Beh, mt5 è un ordine di grandezza superiore a mt4.
Questo vale anche per altre funzioni.
Nella mia situazione specifica, se trattiamo una volta al giorno e abbiamo un evento una volta al giorno, avremo 60*60*24=86.400 sforzi extra. E non c'è ancora un altro modo.
Dipende dal compito.
Se vogliamo catturare l'apertura/chiusura (non parziale) di una posizione e l'impostazione/cancellazione di un ordine, allora non abbiamo bisogno di passare attraverso la lista ogni volta in un ciclo.
Possiamo semplicemente controllare i valori attuali e precedenti di OrdersTotal(). Se rileviamo una differenza, abbiamo un evento, e poi guardiamo il valore.
Ho fatto tutto usando la somma hash delle proprietà ordine e posizione. Non appena è cambiato - abbiamo qualche evento - allora guardiamo cosa esattamente è cambiato lì.
Ma avevo un compito per tracciare tutto, e qualsiasi cambiamento.
Nella mia situazione specifica, se i trade vengono eseguiti una volta al giorno e un evento ha luogo una volta al giorno, dovremo fare 60*60*24=86.400 sforzi extra. E non c'è altro modo.
C'è anche questo approccio (se la comparsa di un nuovo ordine è possibile solo dal lato EA):
Se l'ordine è presente, aggiorna i suoi dati se necessario. Questo se il monitoraggio di SL/TP/volume è necessario. Se non è richiesto, non facciamo nient'altro.
Se l'ordine si trova nella lista dei chiusi (OrderCloseTime() > 0), allora cancellalo dall'array. L'array sarà rifornito solo quando l'ordine è aperto da un EA.
Di conseguenza, non dovremo passare attraverso l'intera lista di ordini ad ogni tick. Le operazioni sono possibili solo con il proprio array.
Proverò a confrontare i valori di OrdersTotal() per ora (grazie a @Artyom Trishkin), questo dovrebbe essere sufficiente. Non avrò chiusure parziali.
Durante l'inizializzazione, assegnerò il valore -1 al vecchio ordine, in modo che all'inizio venga sempre eseguito il controllo completo, indipendentemente dalla presenza di ordini nel mercato.
Dopo di che, un nuovo ordine apparirà (evento) o il vecchio sarà cancellato (evento) e anche il simbolo non ha importanza - possiamo controllare tutto completamente, è ancora molte volte meno frequente di un continuo agitarsi.
Proverò a confrontare i valori di OrdersTotal() per ora (grazie a @Artyom Trishkin), questo dovrebbe essere sufficiente. Non avrò chiusure parziali.
Durante l'inizializzazione, assegnerò il valore -1 al vecchio, in modo che all'inizio venga sempre eseguito il controllo completo, indipendentemente dalla presenza di ordini nel mercato.
Dopo di che, il nuovo ordine apparirà (evento) o il vecchio sarà cancellato (evento) e anche il simbolo non ha importanza - possiamo eseguire un controllo completo su tutti, è ancora molte volte meno frequente del martellamento senza fine.
Ma deve essere gestito con attenzione, oggi ho affrontato che una posizione si è chiusa e l'altra aperta su un'altra, e quasi allo stesso tempo tra i tick.
Alla fine OrdersTotal() è rimasto 8. La logica dell'Expert Advisor si è confusa - non ha ricalcolato i nuovi dati