Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 714
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
Con l'uso di OnTradeTransaction, il tempo di ottimizzazione è stranamente cambiato. Un sistema su 15M, molto semplice, storia annuale, una corsa avviene in 0,3 - 0,4 secondi.
Dopo l'inizio dell'ottimizzazione le prime 200-300 corse vanno a meno di un secondo, le successive rallentano fino a 15-20 secondi (50 volte!);
Nessun surriscaldamento del processore o trotto, più della metà della memoria è libera (da 16GB).
Prima di usare il gestore OnTradeTransaction non c'era nulla del genere - anche Expert Advisors più complessi su piccoli timeframe erano ottimizzati con circa la stessa velocità.
HistoryDealSelect influenza così tanto la velocità? Come possiamo eliminare i ritardi?
const MqlTradeRequest &request,
const MqlTradeResult &result)
{
if( trans.type != TRADE_TRANSACTION_DEAL_ADD) return;
ENUM_TRADE_TRANSACTION_TYPE type=trans.type;
long deal_type =0;
double deal_volume =0;
long deal_magic =0;
if(HistoryDealSelect(trans.deal))
{
deal_type =HistoryDealGetInteger(trans.deal,DEAL_TYPE);
deal_volume =HistoryDealGetDouble(trans.deal,DEAL_VOLUME);
deal_magic =HistoryDealGetInteger(trans.deal,DEAL_MAGIC);
}
else
return;
if (deal_type == DEAL_TYPE_BUY && deal_magic == MagicNumber) current_position += deal_volume;
if (deal_type == DEAL_TYPE_SELL && deal_magic == MagicNumber) current_position -= deal_volume;
}
Ciao!
Chi sa - come visualizzare le barre a destra della barra zero nell'indicatore e quanti max? (previsione di prezzo da fare)
È HistoryDealSelect che influisce negativamente sulla velocità? Come si può eliminare il rallentamento?
Gli sviluppatori raccomandano di ridurre al minimo le chiamate alle funzioni di cronologia (costose) - attraverso il caching della cronologia.
Ho postato una soluzione funzionante in kodobase (MT4Orders), ma probabilmente non sarà adatta a te.
Non ho visto alcun lag dopo aver usato la cache.
Tuttavia, la vostra OnTradeTransaction non dovrebbe rallentare, anche se non è scritta in modo ottimale.
Ciao!
Chi sa - come visualizzare le barre a destra della barra zero nell'indicatore e quanti max? (previsione di prezzo da fare)
Aggiungi PeriodSeconds() al tempo di apertura dell'ultima barra e disegna lì una candela con oggetti grafici. Al massimo sarà visibile sulla destra. Ma non ho controllato come verrà visualizzato se c'è un'uscita. Probabilmente si dovrebbe prendere in considerazione.
Aggiungi PeriodSeconds() al tempo di apertura dell'ultima barra e disegna la candela lì. Al massimo, lo vedrete sulla destra. Ma non ho controllato il suo aspetto. Probabilmente, è necessario prendere in considerazione.
Sul grafico disegna una continuazione, ma purtroppo non nella finestra dell'indicatore.
Forse mi sbaglio, naturalmente...
Cosa ne pensi - posso continuare la linea dell'indicatore oltre la barra zero a destra?
Chissà - la linea dell'indicatore può essere estesa oltre la barra dello zero a destra?
È possibile. È possibile spostarlo, ma il calcolo probabilmente non sarà fatto utilizzando valori inesistenti, e il tempo non viene utilizzato nella visualizzazione dell'indicatore. Questo è il motivo per cui parlavo della visualizzazione delle barre tramite elementi grafici. L'ObjectCreate() contiene sia il numero della finestra (sottofinestra) che il tempo. Pertanto, non ci dovrebbero essere problemi quando si creano elementi grafici.
Nella finestra del grafico, usando i timestamp, potete fare riferimento alle barre future previste. Ha funzionato.
Tuttavia non posso fare lo stesso nella finestra dell'indicatore. Cioè non posso scrivere valori nel buffer dell'indicatore con l'indice -1, -2, ecc.
La domanda è questa.
È chiaro, in linea di principio. La soluzione è quella di creare un indicatore di oggetti grafici.
Nella finestra del grafico, usando i timestamp, potete fare riferimento alle barre future previste. Ha funzionato.
Tuttavia non posso fare lo stesso nella finestra dell'indicatore. Cioè non posso scrivere valori nel buffer dell'indicatore con l'indice -1, -2, ecc.
La domanda è questa.
In linea di principio, è chiaro. La soluzione è creare l'indicatore tramite oggetti grafici.