Lançamento, é claro. O próprio terminal armazena carraças na sua cache, das quais não preciso durante a operação.
É melhor para mim voltar a levantar estes carrapatos mais tarde, quando estiver frio. Precisa de um mecanismo para "arrefecer" o Terminal.
Não reparei nisso.
voidOnStart()
{
Print("используется памяти до закачки истории: "+string(MQLInfoInteger(MQL_MEMORY_USED))+" Mb");
MqlTick items[];
ulong t0=GetMicrosecondCount();
uint count=CopyTicks(Symbol(),items,COPY_TICKS_INFO,0,100000000);
t0=GetMicrosecondCount()-t0;
Print ("Загружено за "+string(t0/1000)+" миллисекунд "+ (string)count+ " тиков");
Print("используется памяти после закачки истории: "+string(MQLInfoInteger(MQL_MEMORY_USED))+" Mb");
ArrayFree(items);
Print("используется памяти после ArrayFree: "+string(MQLInfoInteger(MQL_MEMORY_USED))+" Mb");
}
SZY O triste é que em memória, os carrapatos são armazenados desempacotados num tamanho de 60 bytes por carrapato. Pode ser facilmente embalado 5 vezes (~12 bytes por carrapato).
É preciso olhar para o que o terminal está a consumir.
voidOnStart()
{
// Print("используется памяти до закачки истории: "+string(MQLInfoInteger(MQL_MEMORY_USED))+" Mb");Print("используется памяти до закачки истории: "+string(TerminalInfoInteger(TERMINAL_MEMORY_USED))+" Mb");
MqlTick items[];
ulong t0=GetMicrosecondCount();
uint count=CopyTicks(Symbol(),items,COPY_TICKS_INFO,0,1 e7);
t0=GetMicrosecondCount()-t0;
Print ("Загружено за "+string(t0/1000)+" миллисекунд "+ (string)count+ " тиков");
// Print("используется памяти после закачки истории: "+string(MQLInfoInteger(MQL_MEMORY_USED))+" Mb");Print("используется памяти после закачки истории: "+string(TerminalInfoInteger(TERMINAL_MEMORY_USED))+" Mb");
ArrayFree(items);
// Print("используется памяти после ArrayFree: "+string(MQLInfoInteger(MQL_MEMORY_USED))+" Mb");Print("используется памяти после ArrayFree: "+string(TerminalInfoInteger(TERMINAL_MEMORY_USED))+" Mb");
}
O resultado está num Terminal que já funciona há muito tempo. Não há EAs/indicadores em funcionamento. Dois gráficos, barras M1 apenas para o ano em curso.
используется памяти до закачки истории: 1043 Mb
Загружено за 11223 миллисекунд 10000000 тиков
используется памяти после закачки истории: 1675 Mb
используется памяти после ArrayFree: 1102 Mb
60Mb não foram libertados. Terminal Vazio consome mais do que um gigabyte. A única forma de reduzir o consumo é recarregar o Terminal.
Boa tarde, muito obrigado. Nunca tinha utilizado o novo operador antes porque logicamente deve ser mais lento do que o ArrayResize com memória reservada. Mas estou impressionado com os resultados obtidos, acontece que é o contrário, a matriz nativa através do novo operador é mais rápida.
MT5 (construir 2363):
Lançado em beta 2364 (infelizmente tem um erro de compilação para o novo T() dentro do modelo)
Aqui estão os registos do seu guião:
2020.03.1910:39:45.784 Test (EURUSD,H1) AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
2020.03.1910:39:46.765 Test (EURUSD,H1) Test Class ArrayResize all : loops=1000 ms=9842020.03.1910:39:48.233 Test (EURUSD,H1) Test Class ArrayResize one by one with reserved memory : loops=1000 ms=14692020.03.1910:39:49.944 Test (EURUSD,H1) Test Class ArrayResize one by one with newoperator : loops=1000 ms=17032020.03.1910:39:50.923 Test (EURUSD,H1) Test Class ArrayResize all : loops=1000 ms=9692020.03.1910:39:52.392 Test (EURUSD,H1) Test Class ArrayResize one by one with reserved memory : loops=1000 ms=14842020.03.1910:39:54.100 Test (EURUSD,H1) Test Class ArrayResize one by one with newoperator : loops=1000 ms=17032020.03.1910:39:55.079 Test (EURUSD,H1) Test Class ArrayResize all : loops=1000 ms=9852020.03.1910:39:56.548 Test (EURUSD,H1) Test Class ArrayResize one by one with reserved memory : loops=1000 ms=14692020.03.1910:39:58.258 Test (EURUSD,H1) Test Class ArrayResize one by one with newoperator : loops=1000 ms=17032020.03.1910:39:59.237 Test (EURUSD,H1) Test Class ArrayResize all : loops=1000 ms=9842020.03.1910:40:00.705 Test (EURUSD,H1) Test Class ArrayResize one by one with reserved memory : loops=1000 ms=14692020.03.1910:40:02.416 Test (EURUSD,H1) Test Class ArrayResize one by one with newoperator : loops=1000 ms=1703
Pode-se ver que o ArrayResize para objectos começou a funcionar mais rapidamente.
Mais uma vez, a complexidade de uma parte da função ArrayResize foi reduzida de logaritmo para zero
Ilyas: Podemos ver que o ArrayResize para objectos é agora mais rápido. Mais uma vez, conseguimos reduzir a complexidade de uma parte da função ArrayResize de logaritmo para zero.
Consegui comparar a velocidade do ArrayResizeReserve e ArrayOnNew num projecto real para o tipo de dados - classe com um único campo int, número de registos 20M.
Em MT5 (construir 2363) sobre todos os parâmetros comparados, excepto um ArrayOnNew foi pior para o ArrayResizeReserve:
Acesso de leitura/escrita (std::fill_n, std::copy, std::vector::clear): 2-2,5 vezes mais lento Criação de todos os elementos de uma só vez (std::vector::resize) para memória "fria"/"quente" - 1,1-1,2 vezes mais lento Criação de todos os elementos um a um (std::vector::push_back) para memória "quente" - 1,2 vezes mais rápido
Bug MT5 (build 2363) Desadequação das prioridades de execução das funções do modelo em MQL em comparação com as funções do modelo em C++(online:https://onlinegdb.com/HkNqBDZ88). O problema ocorre quando a primeira função "teste" contém uma classe base de modelo totalmenteespecializada como argumento, e a segunda função "teste" sobrecarrega a primeira, é uma função modelo e contém como argumento uma classe base de modelo não especializada.
Olá a todos!!! Pergunta: Utilizo duas plataformas MT4 e MT5 no meu copyutera. MT4 ligado ao sinal sem qualquer problema. Mas não me consigo ligar a outro sinal do MT5. Tenho uma conta e o movimento de fundos é exibido, mas não há número de conta na conta, não tenho nenhum botão de sinal no painel de instrumentos do terminal. Aluguei um servidor, vps, escrevi que preciso de migração, mas o botão de migração não funciona. Por favor, digam-me porquê.
Anna: Olá a todos!!! A minha pergunta é: utilizo duas plataformas MT4 e MT5 no meu copyutera. Liguei-me ao sinal do MT4 sem qualquer problema. Mas não me consigo ligar a outro sinal do MT5. Tenho uma conta e o movimento de fundos é exibido, mas não há número de conta na conta, não tenho botão de sinal no painel de instrumentos do terminal. Aluguei um servidor, vps, escrevi que preciso de migração, mas o botão de migração não funciona. Por favor, digam-me porquê.
MetaTrader 5 (para o aluguer de alojamento virtual incorporado no terminal) requer um sistema operativo de 64 bits.
Tentei ligar 2 PCs, o agente remoto está constantemente pronto a ligar-se... sem empregos.
dei uma olhada na firewall penso que existe uma marca de verificação para Metatrader Agent , export - import agent via file see ports and name of pc also
suspeito que preciso de encaminhar os portos para outro lugar?
Lançamento, é claro. O próprio terminal armazena carraças na sua cache, das quais não preciso durante a operação.
É melhor para mim voltar a levantar estes carrapatos mais tarde, quando estiver frio. Precisa de um mecanismo para "arrefecer" o Terminal.
Não reparei nisso.
SZY O triste é que em memória, os carrapatos são armazenados desempacotados num tamanho de 60 bytes por carrapato. Pode ser facilmente embalado 5 vezes (~12 bytes por carrapato).
É melhor fazer o download automático como por CopyRates.
Neste caso, o prazo é desconhecido. O download é iniciado por um pedido de símbolo de período.
Considerar o que pode ser feito
não notado.
É preciso olhar para o que o terminal está a consumir.
O resultado está num Terminal que já funciona há muito tempo. Não há EAs/indicadores em funcionamento. Dois gráficos, barras M1 apenas para o ano em curso.
60Mb não foram libertados. Terminal Vazio consome mais do que um gigabyte. A única forma de reduzir o consumo é recarregar o Terminal.
Boa tarde, muito obrigado.
Nunca tinha utilizado o novo operador antes porque logicamente deve ser mais lento do que o ArrayResize com memória reservada.
Mas estou impressionado com os resultados obtidos, acontece que é o contrário, a matriz nativa através do novo operador é mais rápida.
MT5 (construir 2363):
Lançado em beta 2364 (infelizmente tem um erro de compilação para o novo T() dentro do modelo)
Aqui estão os registos do seu guião:
Pode-se ver que o ArrayResize para objectos começou a funcionar mais rapidamente.Mais uma vez, a complexidade de uma parte da função ArrayResize foi reduzida de logaritmo para zero
Podemos ver que o ArrayResize para objectos é agora mais rápido.
Mais uma vez, conseguimos reduzir a complexidade de uma parte da função ArrayResize de logaritmo para zero.
Consegui comparar a velocidade do ArrayResizeReserve e ArrayOnNew num projecto real para o tipo de dados - classe com um único campo int, número de registos 20M.
Em MT5 (construir 2363) sobre todos os parâmetros comparados, excepto um ArrayOnNew foi pior para o ArrayResizeReserve:
estas ligações na ajuda (editor) levam a uma página não encontrada
O problema ocorre quando a primeira função "teste" contém uma classe base de modelo totalmenteespecializada como argumento,
e a segunda função "teste" sobrecarrega a primeira, é uma função modelo e contém como argumento uma classe base de modelo não especializada.
Olá a todos!!! A minha pergunta é: utilizo duas plataformas MT4 e MT5 no meu copyutera. Liguei-me ao sinal do MT4 sem qualquer problema. Mas não me consigo ligar a outro sinal do MT5. Tenho uma conta e o movimento de fundos é exibido, mas não há número de conta na conta, não tenho botão de sinal no painel de instrumentos do terminal. Aluguei um servidor, vps, escrevi que preciso de migração, mas o botão de migração não funciona. Por favor, digam-me porquê.
MetaTrader 5 (para o aluguer de alojamento virtual incorporado no terminal) requer um sistema operativo de 64 bits.
em Win 10 alguém liga os agentes locais?
Tentei ligar 2 PCs, o agente remoto está constantemente pronto a ligar-se... sem empregos.
dei uma olhada na firewall penso que existe uma marca de verificação para Metatrader Agent , export - import agent via file see ports and name of pc also
suspeito que preciso de encaminhar os portos para outro lugar?