![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
ilunga:
P.S. Ho ragione di supporre che nel mio (e nel tuo) codice bar_info[1] sia il massimo della barra corrente?
Nessuno ha parlato del bar attuale. :)
Ho appena rifatto il tuo esempio: se vuoi esattamente la barra attuale, devi farlo:
1. definire la direzione delle serie della matrice (0 bar - corrente o più alta).
Se, come nel nostro caso, l'array viene spostato fuori, potete farlo una volta nel blocco di inizializzazione. Se nascondiamo l'array in una funzione, lo definiamo sul posto.
2. Se l'array è dichiarato come una serie, la barra corrente sarà zero, e quella chiusa prima sarà 1.
Almeno per quanto mi ricordo.
Forse mi sono perso qualcosa, ma per aprire sulla barra attuale (tenendo conto di tutte le aggiunte) dovrebbe essere così.
Spostate l'array nella funzione!
E nessuno ha detto niente di quello attuale. :)
Ho appena rielaborato il tuo esempio, se hai bisogno di quello attuale, devi farlo:
1. Definire la direzione delle serie di matrici (0 bar - corrente o l'ultima).
Se, come nel nostro caso, l'array viene spostato fuori, potete farlo una volta nel blocco di inizializzazione. Se nascondiamo l'array in una funzione, lo definiamo sul posto.
2. Se l'array è dichiarato come una serie, la barra corrente sarà zero, e la barra chiusa prima sarà 1.
Almeno per come lo ricordo io.
Ho espanso l'array a 3 elementi. Ho una discrepanza tra il prezzo attuale e quello che c'è dentro. Questo è molto probabilmente il motivo.
Risultati (il test è stato fatto su GBPUSD):
Otteniamo che sia Ask che Bid sono maggiori del massimo di zero e maggiori del massimo della seconda barra
Se eseguiamo il test su EURUSD, tutto è OK:
Ho la sensazione che quando si prova la coppia "non mia" la situazione "le informazioni sulle barre sono state aggiornate, ma il tick è ancora assente".
Ho espanso l'array a 3 elementi. Ottengo un'incoerenza tra il prezzo corrente e il contenuto dell'array. Questo è molto probabilmente il motivo.
Risultati:
Otteniamo che Ask e Bid sono entrambi maggiori del massimo della barra zero e maggiori del massimo della seconda barra
Non consideri la serialità degli array nel tuo codice. Nessuno può garantire che con questo risultato 0 bar non sarà, diciamo, nell'anno 2000.
Ho dato il codice qui sopra che è adatto a tutti i TF nella variante dell'array.
Questo codice è lì per una ragione.
Se avete bisogno solo di un timeframe giornaliero (D1) per identificare il massimo della barra non avete bisogno di trattare con l'array, basta cambiare la prima parte della funzione con questa
Non consideri la serialità degli array nel tuo codice. Nessuno può garantire che a questo risultato 0 bar non sarà in diciamo 2000.
Ho dato il codice qui sopra che è adatto a tutti i TF nella variante dell'array.
Questo codice è lì per una ragione
Non consideri la serialità degli array nel tuo codice. Nessuno può garantire che a questo risultato 0 bar non sarà nell'anno 2000.
Ho dato il codice qui sopra che è adatto a tutti i TF nella variante dell'array.
Questo codice è lì per una ragione.
Ok, rendere l'array dinamico.
Invece di xxx mettiamo vero e falso.
I risultati:
и
L'ordine nell'array è cambiato, il risultato no. L'offerta è maggiore della massima [0]-esima barra dell'array
ArraySetAsSeries solo per gli array dinamici?
Non ricordo, ad essere onesti. Ma il risultato di quel codice, che ho citato sopra coincide con quello che otteniamo (per EUR il prezzo di apertura è 1,24516 per GBP 1,56721)
Anche se sì, funziona bene senza ArraySetAsSeries a questo punto
PS
Cioè, se volete ottenere la barra corrente, copiate inutilmente tre barre nell'array su questa linea.
PS
Cioè, se avete bisogno di ottenere la barra corrente, copiate assolutamente invano tre barre in questa linea nell'array
Grazie! Questa opzione funziona senza errori ed è pienamente sufficiente in questo caso.
Tuttavia, la domanda lasciata in sospeso poco sopra è come il Bid può essere maggiore del massimo =(
ilunga:
Tuttavia, la domanda lasciata in sospeso sopra è come il Bid può essere maggiore del massimo =(
Prima di tutto, dobbiamo determinare per quale periodo si prende questo massimo.
Se l'array è dichiarato come double bar_info[n] allora la barra corrente in esso sarà l'indice più grande.
se n = 2 questo codice funzionerà con la barra giornaliera di ieri
e questo con la barra corrente
Cioè, se copiate diverse barre, dovreste organizzare qualcosa del genere per ottenere la barra corrente (anche se potreste aver bisogno di ulteriori controlli su quante barre sono state copiate nell'array)
La prima cosa da fare è definire il periodo in cui questo massimo viene preso.
Se l'array è dichiarato come double bar_info[n] allora la barra corrente in esso sarà l'indice più grande.