Perguntas de Iniciantes MQL5 MT5 MetaTrader 5 - página 714
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Com a utilização da OnTradeTransaction, o tempo de optimização mudou estranhamente. Um sistema em 15M, muito simples, histórico anual, uma corrida ocorre em 0,3 - 0,4 segundos.
Após o início da optimização, as primeiras 200-300 corridas vão a menos de um segundo, as seguintes abrandam até 15-20 segundos (50 vezes!);
Sem sobreaquecimento do processador ou trolling, mais de metade da memória é livre (de 16GB).
Antes de utilizar o manipulador da OnTradeTransaction não havia nada parecido - ainda mais complexos Expert Advisors em pequenos prazos eram optimizados com aproximadamente a mesma velocidade.
O HistoryDealSelect afecta tanto a velocidade? Como podemos eliminar os desfasamentos?
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;
}
Hi!
Quem sabe - como exibir as barras à direita da barra de zero no indicador e quantas no máximo? (previsão de preço a fazer)
É a HistóriaDealSelect que afecta gravemente a velocidade? Como pode ser eliminada a desaceleração?
Os programadores recomendam minimizar as funções de histórico de chamadas (caro) - através do cache de histórico.
Afixei uma solução de trabalho em kodobase (MT4Orders), mas provavelmente não lhe servirá.
Não vi nenhum atraso após a utilização do cache.
Embora, a sua OnTradeTransaction não deve abrandar, mesmo que não seja escrita de forma óptima.
Hi!
Quem sabe - como exibir as barras à direita da barra de zero no indicador e quantas no máximo? (previsão de preço a fazer)
Adicione PeriodSeconds() ao tempo de abertura da última barra e desenhe ali uma vela com objectos gráficos. No máximo, será visível à direita. Mas ainda não verifiquei como será exibido se houver uma saída. Provavelmente, dever-se-ia ter em conta.
Adicionar PeriodSeconds() ao tempo de abertura da última barra e desenhar o candelabro ali. No máximo, vê-lo-ão à direita. Mas ainda não verifiquei a sua aparência. Provavelmente, é necessário ter em conta.
No gráfico desenha uma continuação, mas infelizmente não na janela indicadora.
Talvez eu esteja errado, é claro...
O que pensa - posso continuar a linha indicadora para além da barra de zero à direita?
Quem sabe - pode a linha indicadora ser estendida para além da barra zero para a direita?
Pode. Pode deslocá-lo, mas o cálculo provavelmente não será feito utilizando valores inexistentes e o tempo não é utilizado na visualização do indicador. É por isso que eu estava a falar sobre a exibição de barras usando elementos gráficos. O ObjectCreate() contém tanto o número da janela (subjanela) como o tempo. Por conseguinte, não deve haver problemas na criação de elementos gráficos.
Na janela do gráfico, utilizando os carimbos temporais, pode referir-se a futuras barras pretendidas. Tem funcionado.
No entanto, não posso fazer o mesmo na janela indicadora. Isto é, não posso escrever valores no buffer de indicadores com o índice -1, -2, etc.
A questão é esta.
É claro, em princípio. A solução consiste em criar um indicador por objectos gráficos.
Na janela do gráfico, utilizando os carimbos temporais, pode referir-se a futuras barras pretendidas. Tem funcionado.
No entanto, não posso fazer o mesmo na janela indicadora. Isto é, não posso escrever valores no buffer de indicadores com o índice -1, -2, etc.
A questão é esta.
Em princípio, é claro. A solução consiste em criar o indicador por objectos gráficos.