Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 245
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
Nello script ho fatto così:
tempo=0
SymbolInfoTick il lunedì.
Potete controllare con questo codice:
Ma hai bisogno di tick per simbolo.
Potete controllare con questo codice:
Ma hai bisogno di tick per simbolo.
Sì,"SymbolInfoTick", nessun controllo oggi.
Provato, non funziona finché non arrivano le zecche.
iask=0Sì, SymbolInfoTick, nessun controllo oggi.
Provato, finché i tic non si spengono non funziona nulla.
iask=0Questa funzione è troppo veloce.
Per misurare le prestazioni, è necessario applicare più chiamate in un ciclo con un gran numero di iterazioni e misurare il tempo di esecuzione totale.
Tanto più interessante, c'è un codice di esempio. Stiamo aspettando il risultato.
Per controllare una nuova barra nell'EA ho usato funzioni basate su "CopyTime", "CopyRates", che ho trovato sui forum. Sono giunto alla conclusione che il loro calcolo richiede molto tempo.
Ecco i dati di controllo (è interessante che la chiamata dell'indicatore richiede 171 ms):
E qui mi è venuta l'idea che se provo qualcos'altro Per esempio, "TimeCurrent".
Fatto il seguente codice per l'ottimizzazione:
Ha fatto il seguente codice per l'ottimizzazione in Expert Advisor:
Risultato in esecuzione singola senza controllo di una nuova barra, quando i valori dell'indicatore sono ricevuti ad ogni tick: 817,196 ms
Con controllo di una nuova barra: 735 904 ms
La differenza non è particolarmente impressionante, c'è qualche miglioramento, ma non è abbastanza.
Ottengo l'indicatore come segue:
Ho provato a mettere il codice con le chiamate di maniglie nel blocco in cui avviene il controllo della nuova barra, ma l'errore appare se
Ho messo return non restituisce nulla, nessun errore, ma l'EA non funziona.
Suppongo che la chiamata hendle, se è possibile, e in generale tutto il codice principale, tranne la variabile statica, dovrebbero essere messi dentro la dichiarazione condizionale che controlla la presenza di una nuova barra.
Se non mi sbaglio, ho letto da qualche parte che anche se chiamiamo un handle ma non richiediamo un indicatore nei buffer, viene comunque calcolato.
Chi può suggerire come fare un indicatore che visualizza i risultati di una singola formula buffer[i] = (1.3747-(MarketInfo("EURUSD", MODE_BID))+0.8835-(MarketInfo("USDCHF", MODE_BID))*10000;
Dovete scrivere un indicatore personalizzato. Per rendere il processo più facile - prendete uno degli indicatori più semplici -iMa e riscrivete un po'. Qui c'è un altro argomento, dove si parla di MarketInfo. Scrivere il codice, chiedere, se qualcosa non funziona.
Cosa è successo alle variabili statiche? Ho aggiornato la vecchia build del terminale oggi e ora ci sono errori durante la compilazione:
Ora i membri-dati statici della classe devono essere collocati: