Erros, bugs, perguntas - página 208

 
Ashes:

Logo acima de si escreveu:

Pode ter sido essa a intenção, mas... Realização de uma experiência de campo (construir 358).

Apago todos os símbolos da pasta "C:\Program Files\MetaTrader 5\Bases\Alpari-Demo\history" (C:\Program Files\MetaTrader 5\Bases\Alpari-Demo\history)

Ligo-me ao Alpari-Demo (terminal tem 5 cartas abertas: EURUSD H1, EURCHF H1, USDJPY H1, GPBUSD H1+M1).

Alguns minutos mais tarde posso ver a imagem (a história ainda está a ser descarregada):

Conteúdos da pasta C:Ficheiros de Programas\\MetaTrader 5\Bases\Alpari-Demo\historia

Obrigado pela sua mensagem. Vamos analisar o assunto.
 
Interesting:

...

Se bem entendi, o tamanho dos ficheiros de histórico está no directório terminal, que é indicado pela localização do directório "de trabalho" - C:\Program Files\MetaTrader 5\Bases\Alpari-Demo\EURJPY

O testador tem a sua própria pasta para estes dados - C:Ficheiros de programa MetaTrader 5 testador Agente(número de agentes)-BasesDC ou outro corretor (servidor)-COPY0

Qual é então o problema?

O problema é a relutância em ler cuidadosamente a mensagem original ;)

Existem realmente 2 ficheiros (2009, 2010) na pasta do testador, mas no início do testador para um símbolo específico todo o histórico é descarregado (se não tiver sido descarregado ou apagado antes) para a pasta "x:\Program Files\MetaTrader 5\Bases\Bases\Bases\Bases\Bases\Bases\Bases\Bases\Bases\Bases\Bases\Bases\Bases\Bases\Bases\Bases\Bases\Bases\Bases\Bases\Bases\Bases\Bases\Bases\Bases\Bases\Bases\Bases\Brasileiras

Não me importo de duplicar os dados de MetaTrader 5 Base para MetaTrader 5 test testador. Mas porquê carregar dados que são absolutamente desnecessários neste momento?

 
Ashes:

O problema é a relutância em ler cuidadosamente o post original ;)

Não me importo de duplicar os dados de MetaTrader 5 Base para MetaTrader 5 test testador. Mas porquê carregar dados que são absolutamente desnecessários neste momento?

Vou verificar, talvez eu esteja realmente enganado e haja algo em que pensar.
 
Renat:
O histórico é carregado correctamente - isto significa que houve um pedido para 2004. E ao utilizar o testador, toda a história é definitiva e correctamente carregada com a máxima profundidade - esta é uma decisão absolutamente correcta e consciente. Basta olhar para as exclamações "incompreensíveis" dos utilizadores do MT4 para compreender - se não tratarmos do histórico, então os utilizadores nem sequer serão capazes de controlar o histórico.

Reler novamente a minha resposta, por favor.

Não nos limitamos a descarregar e verificar novamente toda a história. Se um testador for utilizado, então inevitavelmente (não neste teste, mas no teste seguinte) significará um trabalho completo e incondicional com toda a história, independentemente do facto de que este teste em particular utilizará um pequeno período de história. Portanto, o terminal prepara com antecedência e verifica completamente a profundidade e correcção de toda a história do símbolo desejado. Naturalmente, apenas o intervalo histórico necessário é passado/sincronizado a um agente de teste específico para um determinado teste.

Como os comerciantes tendem a não notar as regras de preparação correcta das condições para os testes, o terminal tenta preparar e voltar a testar o ambiente tanto quanto possível. No MetaTrader 5, removemos especificamente a limitação do volume e profundidade dos dados solicitados, para que os comerciantes não tenham de descarregar e sincronizar manualmente os dados.

Документация по MQL5: Получение рыночной информации / SymbolIsSynchronized
Документация по MQL5: Получение рыночной информации / SymbolIsSynchronized
  • www.mql5.com
Получение рыночной информации / SymbolIsSynchronized - Документация по MQL5
 
Interesting:

1. testador de estratégia

Ao testar, o testador carrega apenas um par especificado nos parâmetros do testador. Se a optimização for realizada para todos os símbolos, cada símbolo será carregado sequencialmente.

Se o Expert Advisor for multi-moeda, outros símbolos devem ser carregados independentemente.

A ideia é a seguinte

а. O testador tem a sua própria visão geral do mercado, no qual inicialmente apenas o par especificado nos parâmetros do testador é definido.

б. Se necessário, outros pares podem ser adicionados à visão geral do mercado do testador de um EA, utilizando Select.

в. O testador de estratégia sincroniza os dados com o terminal, que por sua vez os sincroniza com o servidor de negociação (onde a conta é aberta).

Neste caso, o histórico para todo o período de testes é carregado + uma certa quantidade de informação antes da data dos testes (se não estou enganado, 1 ano).

в. Se o Expert Advisor (você) não estiver satisfeito com a profundidade exigida, o histórico deve ser carregado independentemente. Por exemplo, no bloco de inicialização, após verificação do histórico e sincronização dos dados.

a. logicamente

b. Ou seja, no caso geral, é IMPOSSÍVEL descarregar tudo o que o Consultor Especialista precisa durante os testes (a menos que descarregue absolutamente tudo).

c. isto é, antes do início da EA no testador, os pares correspondentes ainda não estão disponíveis na visão geral do mercado do testador (de acordo com o ponto a.)

c(2). a profundidade está ok, não pedi mais.

Assim, é mais lógico (mas um pouco mais complicado) descarregar os dados de acordo com b, c, c(2) quando acedemos aos dados na EA.

Sugiro a adição de #símbolo do testador de propriedade para preencher a tabela do ponto a (se a ideia for descrita correctamente), com a capacidade de definir vários, como # descrição da propriedade. Mas ainda convencidos de que, na ausência de #property tester_symbol paging deve ir "como brincadeira" (excepto para o personagem base), pois a sua REALIDADE depende unicamente do algoritmo da própria EA.

Interessante:

2. terminal

Aqui a história é formada de forma semelhante (tanto quanto sei, de acordo com os símbolos indicados na revisão do mercado do terminal, tendo em conta os gráficos abertos). Quando se começa a trabalhar com o terminal, forma-se um mínimo necessário de história para os símbolos com que se está a trabalhar (não me lembro do número exacto de barras, mas este tem sido repetidamente mencionado no fórum).

Se esta profundidade do histórico não for conveniente, os dados devem ser carregados manualmente. Para fazer esta mudança para o mês máximo (uma das opções recomendadas) e utilizando o scroll esquerdo do gráfico carregar o histórico até à profundidade máxima.

Também seria desejável definir o número necessário de barras no gráfico nos parâmetros do terminal.

Como se verificou, neste caso não é o mínimo necessário, mas sim toda a história do símbolo, com o qual estamos a trabalhar.

Uma observação (a construção mudou em 360): se modificarmos ligeiramente as condições - não apagarmos toda a pasta do histórico após o download inicial e deixarmos o ano actual nela, os anos anteriores não serão trocados automaticamente! Até que o testador seja executado sobre este personagem.

 
Renat:

Volte a ler a minha resposta, por favor.

Não nos limitamos a descarregar e a testar novamente toda a história por uma razão. Se um testador for utilizado, significa inevitavelmente (não neste teste, mas no teste seguinte) um trabalho completo e incondicional com toda a história, independentemente do facto de este teste em particular utilizar um pequeno período de história. Portanto, o terminal prepara com antecedência e verifica completamente a profundidade e correcção de toda a história do símbolo desejado. Naturalmente, apenas o intervalo histórico necessário é passado/sincronizado a um agente de teste específico para um determinado teste.

Como os comerciantes tendem a não notar as regras de preparação correcta das condições para os testes, o terminal tenta preparar e voltar a testar o ambiente tanto quanto possível. No MetaTrader 5, eliminámos propositadamente a limitação do volume e profundidade dos dados solicitados, para que os comerciantes não tivessem de descarregar e sincronizar manualmente os dados.

Isso é só para "ter"! Pela próxima utilização do testador, a história poderia ser corrigida (especialmente agora, quando tem muitas falhas em diferentes empresas de corretagem, desde a ausência completa, a dados tortuosos).

O utilizador não compreende a felicidade que lhe caiu em cima! Adicionar nas definições a caixa de verificação "NÃO O QUERER, só o quero quando solicitado pelo utilizador ou perito/escritor/indicador". E "NÃO quero também actualizações automáticas forçadas do MT5".

 
Ashes:

a. logicamente

b. ou seja, em geral, é IMPOSSÍVEL bombear tudo o que a EA necessitará durante os testes ANTES do INÍCIO (a menos que tudo seja bombeado).

c. isto é, antes do início da EA no testador, os pares correspondentes ainda não estão disponíveis na visão geral do mercado do testador (de acordo com o ponto a.)

c(2). a profundidade está ok, não pedi mais.

Assim, é mais lógico (mas um pouco mais complicado) descarregar os dados de acordo com b, c, c(2) quando acedemos aos dados na EA.

Sugiro a adição de #símbolo do testador de propriedade para preencher a tabela do ponto a (se a ideia for descrita correctamente), com a capacidade de definir várias, como # descrição da propriedade. Mas ainda convencidos de que, na ausência de #property tester_symbol paging deve ir "como brincadeira" (excepto para o personagem base), uma vez que a sua REALIDADE depende unicamente do algoritmo da própria EA.


Estas funções são convenientes (e bastante suficientes) para formar a lista de símbolos no testador

Obtenção de dados de mercado

Funções para a obtenção de informações sobre as condições do mercado.

A função

Acção

SymbolsTotal

Devolve o número de símbolos disponíveis (seleccionados em MarketWatch ou todos)

SymbolName

Devolve o nome do símbolo especificado

SymbolSelect

Selecciona um símbolo no MarketWatch ou remove o símbolo da janela

 
"Utiliza frequentemente o redimensionamento da matriz? Por vezes o seu cérebro está a ferver, e não sabe porque é que a mensagem"Array out of range in..." aparece? "? Então vamos ter convosco!" :D

-Cheque se o ArrayResize() devolve "-1"?

Antes, uma mensagem como "Out of memory" costumava aparecer e o programa falhou - agora não aparece.

Документация по MQL5: Операции с массивами / ArrayResize
Документация по MQL5: Операции с массивами / ArrayResize
  • www.mql5.com
Операции с массивами / ArrayResize - Документация по MQL5
 

Construir 360. Parece um erro no CTrade:

2010.10.04 18:59:00 CTrade::PositionOpen: compra imediata 0,10 EURUSD a 1,36890 sl: 1,36390 tp: 1,37890 [feito a 0,00000]

2010.10.05 09:43:00 CTrade::PositionModify: modificar compra 0.00 EURUSD (sl: 1.36897, tp: 1.37861) [feito]

 

Construir 360. Várias vezes no testador houve mensagens "agente testador falhou".

GK 0 Tester 18:26:31 EURUSD: histórico de download preliminar iniciado

CL 0 Tester 18:28:55 EURUSD: histórico de download preliminar concluído

GH 0 Core 2 18:28:59 processo de agente iniciado

HP 0 Core 2 18:29:00 ligação a 127.0.0.1:3000

OI 2 Testador 18:29:05 agente testador falhou

LI 0 Core 2 18:29:05 ligar

GN 0 Core 2 18:34:14 processo de agente

KJ 0 Core 2 18:34:14 ligar a 127.0.

0.

1:3000

RJ 0 Core 2 18:34:15 ligado

OP 0 Core 2 18:34:15 autorizado (agente build 360)

NH 0 Testador 18:34:15 EURUSD,M1 (Alpari-Demo): teste de peritos\terceiro.ex5 de 2010.10.04 00:00 a 2010.11

.

05 00:00:00 a ser iniciado

...

HQ 0 Core 2 19:27:47 processo de agente iniciado

II 0 Core 2 19:27:48 ligação a 127.0.0.1:3000

CP 2 Testador 19:27:53 agente testador falhado

HP 0 Core 2 19:27:53 ligar

KI 0 Core 2 19:28:10 ligar a 127.0.0.1:3000

QL 0 Core 2 19:28:10 ligado

PN 0 Core 2 19:28:10 autorizado (agente build 360)

RJ 0 Testador 19:28:10 EURUSD,M1 (MetaQuotes-Demo): teste de peritos\third_alptest2.ex5 de 2010.10.04 00:00 a 2010.11.05 00:00 a ser iniciado

MF 0 Core 2 19:28:11 sincronização comum concluída

IM 0 Core 2 19:28:11 3124 bytes de informação de conta

carregada