Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 1496
![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
"Trova il valore massimo nell'array ticks" - il valore massimo di cosa stiamo trovando?
ticks[copied-1].bid o ticks[copied-1].flags
Scherzo)))))
Molto probabilmente avete confuso CopyTicks con CopyRates, sebbene anche in questo caso abbiate un array di strutture e specifichiate quale elemento della struttura vi serve.
double PrevClose = rates[copied-1].close;
Nelcodice c'è una riga in più.
Non è necessaria perché CopyTicks e CopyRates allocano la dimensione dell'array durante la copia.Grazie per il suggerimento. Non lo sapevo. Inserisco questa riga per sicurezza.
Ho capito bene la tua battuta che nei tassi tutti i prezzi sono mediati e tengono conto della barra, mentre nei tick no? Per questo motivo ho considerato i tick come un intervallo di tempo arbitrario e non come i prezzi delle barre. CopyRates nella mia formula simile riempiva la variabile copiata con il valore massimo di tipo ulong per l'intervallo di ore. Non sono riuscito a risolvere nemmeno questo problema.
Grazie per il suggerimento. Non lo sapevo. Inserisco questa riga per sicurezza.
Ho capito bene la tua battuta sul fatto che i tassi hanno tutti i prezzi mediati e tengono conto della barra, ma i tick no? Per questo motivo ho inteso il tick come un intervallo di tempo arbitrario e non come i prezzi delle barre. CopyRates nella mia formula simile riempiva la variabile copiata con il valore massimo di tipo ulong per l'intervallo di ore. Non sono riuscito a risolvere nemmeno questo problema.
Tutto è sbagliato.
MqlRates è una struttura e tu la tratti come una variabile.
AncheMqlTick è una struttura.
State cercando di combinare caldo e morbido, quindi il compilatore non vi capisce.
Nemmeno io)))))
Forse potrei suggerire qualcosa di utile, ma dal vostro codice non è chiaro cosa stiate cercando di trovare.
È tutto sbagliato.
MqlRates è una struttura e voi la trattate come una variabile.
AncheMqlTick è una struttura.
Si sta cercando di combinare caldo e morbido, quindi il compilatore non lo capisce.
Nemmeno io))))
Forse potrei suggerire qualcosa di utile, ma dal codice non è chiaro cosa si stia cercando di trovare.
Il compito è quello di modificare il WPR (Williams Percent Range) in modo da ottenere la differenza dei valori WPR per un periodo di tempo arbitrario, indipendentemente dalle barre.
È possibile (ma non certo) che questo sia ciò che si voleva ottenere.
double lowestLow = ArrayMinimum(bid, 0, copied);
Grazie. Ecco cosa ho ottenuto, se ho capito bene la lezione:
Ma, sfortunatamente, sulla linea bid_arr[i] = ticks[i].bid; l'Expert Advisor è uscito dal grafico a causa di un array fuori range in 'namemyexpert.mq5' (204,12).Grazie. Ecco cosa è venuto fuori, se ho imparato bene la lezione:
Dal momento che stiamo comunque eseguendo un loop su tutti i tick, non possiamo copiare in questo ciclo, ma cercare i massimi e i minimi in una volta sola.
A proposito, se copiamo, sarebbe bene impostare prima le dimensioni degli array in cui copiamo, il ciclo non lo farà per noi, voleremo fuori dall'array alla prima iterazione. Solo CopyTicksRange ridimensiona l'array di destinazione.
Poiché il ciclo si svolge comunque attraverso tutti i tick, non possiamo copiare in questo ciclo, ma cercare i massimi e i minimi in una sola volta.
A proposito, se copiamo, sarebbe bene impostare prima le dimensioni degli array in cui copiamo, perché il ciclo non lo farà per noi, che voleremo fuori dall'array alla prima iterazione. Solo CopyTicksRange ridimensionerà l'array di destinazione.
Sono un perfezionista, ordinare i singoli elementi di un array di strutture è come colpire il vetro con il polistirolo.
Poiché il ciclo si svolge comunque attraverso tutti i tick, non possiamo copiare in questo ciclo, ma cercare i massimi e i minimi in una sola volta.
A proposito, se copiamo, sarebbe bene impostare prima le dimensioni degli array in cui copiamo, perché il ciclo non lo farà per noi, che voleremo fuori dall'array alla prima iterazione. Solo CopyTicksRange ridimensiona l'array di destinazione.
Scusate. La mia disattenzione. Corretto. Grazie. Ho dimenticato che il valore ArrayMaximum è un indice, non un prezzo. Ma ora è stato corretto.
Poiché ArrayMaximum non funzionava con l'array di ticks, ho provato a fare dei calcoli alternativi, con if in un ciclo. Perché è meglio?
Perché è meglio?