Errori, bug, domande - pagina 1234
![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
Poi questa domanda. Se l'indicatore funziona su M15. Si forma una nuova candela. Quando si richiedono i dati per M15 e M30, devono essere disponibili allo stesso tempo?
Sì.
Dopo aver creato un indicatore(includendolo nel normale ciclo di elaborazione) ed essere entrati nel normale ciclo di elaborazione dei tick (ontik), i dati saranno disponibili con un'alta probabilità. Ma non dimenticate che non c'è alcuna garanzia a causa della possibile storia di download per altri simboli.
Cioè, controllare sempre i risultati delle richieste di dati degli indicatori. Se richiedete i dati nell'ontika e non sono disponibili, allora uscite immediatamente per controllare la prossima spunta.
Non fare il tipico errore "tutto è sempre pronto, non penso ai processi tecnici di consegna e calcolo dei dati, non mi deve interessare, sono sempre fortunato". Implementare sempre una logica di inizializzazione pigra e il controllo dei dati.
Assicuratevi di testare i vostri programmi su una base grafica vuota. Di solito è sufficiente riavviare il terminale con un database storico cancellato manualmente per ottenere una serie di errori di accesso sull'indice sbagliato o sulla divisione per zero.
Se hai una barra m15 su un simbolo, allora c'è sicuramente una barra m30 sullo stesso simbolo.
Sì.
Un'altra domanda. La funzione BarsCalculated() si comporta allo stesso modo quando viene chiamata da un EA e da un indicatore?
Cosa c'è che non va?
È solo che ho sperimentato diverse informazioni. Per come la vedo io, dovrebbero funzionare allo stesso modo. Ma non lo fanno. Dato che è domenica, non c'è modo di controllare l'ora corrente. Ma funzionano diversamente anche nel tester. Ecco due esempi di codice. Il succo è il seguente. Stiamo cercando di ottenere dati da sette TF. Lo facciamo partire (sia il consulente che l'indicatore) non dal TF più significativo. Per esempio, da М15. Se il tick corrente ha sincronizzato la formazione di una nuova candela e l'ottenimento di dati su questa candela tramite BarsCalculated() - allora registriamo il numero di barre calcolate usando BarsCalculated() e il tempo della candela corrente. Vedere i dettagli nel codice.
L'indicatore.
Prima spunta.
Per ogni TF, si forma una nuova candela. Ma su TF M1, M5, M15, BarsCalculated() restituisce 0. Ma su TF M30, H1, H4, D1 restituisce -1. Qui abbiamo una domanda: perché la funzione funziona in modo diverso? Di conseguenza, se lo eseguiamo sul TF M30, per i TF M1, M5, M15, M30,BarsCalculated() restituisce 0. E, rispettivamente, per i TF H1, H4, D1, restituisce -1. Da questo possiamo concludere che per la TF superiore i dati non sono inizialmente disponibili.
La seconda spunta.
Secondo la logica del codice, la sincronizzazione, cioè la scrittura dei parametri (tutto secondo i registri dei campioni);
Il terzo e il prossimo tick.
Otteniamo una nuova barra per indicatore per TF M30, H1, H4, D1. Anche se i dati sembrano essere già stati ottenuti. E si scopre che il numero su TF, maggiore di quello attuale, è maggiore di 1. Un comportamento molto strano. In futuro (utilizzando l'esempio attuale) non saremo in grado di ottenere la sincronizzazione.
Consulente esperto.
La prima spunta.
La sincronizzazione viene attuata immediatamente. Il nuovo valore di BarsCalculated() viene ricevuto sincronicamente alla formazione di una nuova candela.
La seconda e le successive zecche.
Comportamento logico della funzione. Tutto è sincronizzato.
Eseguite entrambi gli esempi a zecche nel tester, lo vedrete voi stessi. Il comportamento attuale della funzione è diverso per Expert Advisors e indicatori. Anche i dati provenienti dagli indicatori sono ritardati per i timeframe più alti. Così, penso chequando si richiedono i dati per M15 e M30 non saranno disponibili allo stesso tempo.I dati reali non lo sono affatto!
Se mi sbaglio, mi consigliate come ottenere correttamente i dati dell'indicatore dal vecchio TF? Grazie.
Perché chiamareCompare due volte? Può essere un'operazione costosa (se dobbiamo controllare l'uguaglianza di grandi oggetti, non l'equivalenza di alcuni campi).
Si può semplicemente salvare il risultato dopo la prima chiamata diCompare.
Da dove vengono queste icone nella parte inferiore del grafico?
Non c'è nessun indicatore sul grafico, ma le icone appaiono ogni volta. Sono stufo di cancellarle. Come faccio a disattivare questa merda? Non riesco a trovare nulla nelle impostazioni del terminale a riguardo.
Da dove vengono queste icone nella parte inferiore del grafico?
Non c'è nessun indicatore sul grafico, ma le icone appaiono ogni volta. Sono stufo di cancellarle. Come posso disattivare questa merda? Non riesco a trovare nulla di relativo nelle impostazioni del terminale.
Questi sono eventi della scheda "Calendario". Per cancellare: clicca con il tasto destro del mouse all'interno della scheda "Calendario" -> "Mostra sui grafici" -> "Cancella tutti gli eventi".
P. S. E deseleziona l'opzione "Aggiornamento automatico". Ora i nuovi eventi del Calendario non saranno mostrati sul grafico.
Prendi un qualsiasi Expert Advisor (dagli esempi di MetaQuotes), eseguilo sotto la build 975 su un certo periodo e con gli stessi parametri,
Ottenere i risultati, cioè il grafico della curva dei rendimenti e la tabella delle offerte.
Ora esegui lo stesso EA sotto la build 1010 sullo stesso periodo e con gli stessi parametri, ottieni risultati completamente diversi...
P.S. Metatester è a 32 bit
Ciao a tutti) Per favore aiutatemi ad avviare il timer:
int OnInit()
{
bool setTimer=EventSetTimer(60);
Stampa("setTimer");
}
void OnTimer()
{
Stampa("Passando il tempo");
}
Domanda: perché non funziona? Mi ha fatto saltare la testa...((((.