Caratteristiche del linguaggio mql5, sottigliezze e tecniche - pagina 159
![MQL5 - Linguaggio delle strategie di trading integrato nel client terminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Potete dirmi per favore, pls.
In indicatore l'ordine delle serie, per esempio close[], è impostato da ArraySetAsSeries() una volta o in qualche altro modo?
Viene fatto in OnCalculate() o in OnInit()?
Ho incontrato una situazione confusa:
L'ordine in close[], impostato da AS_SERIES all'entrata sul primo tick, sul prossimo tick cambia spontaneamente in normale, cioè !AS_SERIES.
Non ho trovato la ragione di questo nel codice.
in qualsiasi funzione che ottiene lo scalare &arr[] non si può essere assolutamente sicuri della direzione di indicizzazione dell'array:-(
Inoltre, se cambiate la "serialità" all'interno, questa direzione rimarrà dopo la fine della vostra funzione... sarà un effetto collaterale, che nessuno si aspetta
ecco perché, purtroppo, quando si ottiene un array per l'input in una funzione, ricordate la sua serializzazione, impostatela su una conveniente e restituite SEMPRE l'originale quando uscite dalla funzione
Questo è un caso raro con OnCalculate, ma in pratica veniva chiamato anche da altro codice.
Inoltre, se cambiate "serializzazione" internamente, questa direzione rimarrà quando la vostra funzione finisce...
Era quello su cui contavo. Ecco perché ho messoArraySetAsSeries(close,true) nel bloccoOnCalculate(), che viene eseguito solo una volta al primo accesso. E questa "serializzazione" era effettivamente impostata. Tuttavia, con mia sorpresa, al secondo tick, e oltre, la "serialità" era già il contrario.
Con OnCalculate è un caso raro, ma in pratica è capitato che venisse chiamato anche da altro codice.
Non ho queste esotiche e, inoltre, non cambio la "serializzazione" delle serie temporali e degli array di buffer all'interno del programma. Pertanto, mi basterebbe impostarlo una volta sola, all'inizio dell'indicatore. Ma, se non possiamo essere sicuri che la "serialità" di questi array sia salvata, dobbiamo impostarla all'inizio di ogni ciclo OnCalculate(). Questo sembra essere qualcosa di completamente innaturale.
È una buona idea generare un avvertimento al momento della compilazione.
Se non è cambiato nulla dai vecchi tempi, NULL != "" Molte persone ci sono cadute prima.
Se non è cambiato nulla dai vecchi tempi, NULL != "" Molte persone ci sono cadute prima.
Non è di questo che stiamo parlando.
Stiamo parlando di qualcos'altro.
Allora spiega perché non può esserlo. Perché
può essere, ma
non può essere.
Allora spiega perché non può esserlo.
Lo script qui sopra lo mostra.
Lo script qui sopra lo mostra.
Se fosse così, non ci sarebbero domande. Pensi sempre che tutti quelli che ti circondano debbano leggerti nel pensiero, o essere meglio addestrati di te nella programmazione.
Se fosse così, non ci sarebbero domande. Pensate sempre che tutti debbano leggervi nel pensiero, o essere meglio addestrati di voi nella programmazione.
Non capisco le ragioni di questa reazione. Il codice terso dimostra la funzione al 100%.
Non capisco le ragioni di questa reazione. Il codice terso dimostra la funzione al 100%.
Reazione normale. Non capisco i vostri codici, ho chiesto una spiegazione, e la risposta è...
Il NULLA è una tale ambiguità che bisogna trattarla con attenzione. Specialmente se applicato a variabili stringhe.
Dalla documentazione
Quindi, in questo esempio NULL non significa che la lunghezza della stringa è uguale a zero, ma che la variabile non è inizializzata.
Nel tuo esempio
la variabile è inizializzata. Non mi è chiaro come viene inizializzato e non ho voglia di risolverlo.
Di conseguenza,
Indica che la variabile è inizializzata. Di nuovo, con cosa è la grande domanda. Perché pensate che sia impossibile inizializzare una variabile con NULL?
Apparentemente questa inizializzazione fa sì che la lunghezza della stringa sia uguale a zero, che è ciò che dice questo controllo