MetaTrader 5 Strategy Tester: bugs, bugs, sugestões para melhorias - página 21

 

No testador, as ordens de limite não são verificadas para aceitação no conjunto/modificação do tick.

Devido a isto, quando uma ordem limite é colocada ao preço actual, não é executada, o que não está de acordo com as regras do mercado.


Haverá alguma alteração no testador para esta situação?

 

O testador está a funcionar em 12 córregos há já 27 horas. Esta é uma estranha imagem de memória. Pode ver aqui que a aplicação não consome muita memória.


Especialmente o estatuto dos agentes é mais do que gratuito.



Há também uma instância que já terminou de trabalhar em 1 fio. A memória de troca é atribuída.


Fechou a instância de funcionamento:

Imediatamente 26 GB libertados. Penso que os fios estão a segurar a memória no estado alocado? O Process Explorer mostra exactamente isso. Cada instância tem 4GB (excepto uma). Dito isto, desistiram (deveria ser 12).


O problema é que, embora a memória privada não esteja a ser utilizada, quando o ficheiro swap está cheio, o mesmo Cromo começa a jurar sobre memória insuficiente. Ao mesmo tempo, a RAM é meio livre.


A segunda questão é esta. Porque é que durante a optimização genética os fios ficam ociosos e esperam que um fio termine? Faz sentido matá-los através de computação com previsão e detecção de diferentes resultados de espera para que o fio esperado termine? Ou tentar "sacudir" alguns parâmetros novamente e procurar outras soluções?

PS. Colocar agentes desactivados e depois activados de novo - eles deixaram de comer memória. Mas parece-me que a cache do disco também irá recriar no arranque?
 

Há um erro no tempo de cancelamento de uma ordem pendente sobre um evento de falta de dinheiro.

Há tempo zero (destacado na imagem do ecrã) em vez de tempo de cancelamento.

E o estatuto colocado em vez de cancelado.

 

Agora para analisar a situação sobre o pedaço destacado


tem de mover o cursor, lembrar-se da data de pop-up, abrir o gráfico de execução, ir para o local requerido no Histórico Comercial e fazer duplo clique sobre a linha relevante na tabela.


Tudo isto pode ser substituído por um duplo clique no local no gráfico acima?

 
fxsaber:

Tudo isto pode ser substituído por um duplo clique no local no gráfico acima?

Acho isso fantástico, uma "característica" muito necessária - eu apoio-o!!!

 

Fórum sobre comércio, sistemas automatizados de comércio e testes de estratégia comercial

MetaTrader 5 Strategy Tester: bugs, bugs, sugestões para melhorias

fxsaber, 2019.10.14 23:32

Em MT5 pode fechar uma posição e obter uma perda (o saldo antes da abertura é inferior ao saldo após o fecho). Mas ao mesmo tempo, o MT5 Tester (Terminal não verificado) considerará este comércio como rentável.

Elaborei um consultor especializado para jogar

#include <MT4Orders.mqh> // https://www.mql5.com/ru/code/16006

#define  Ask SymbolInfoDouble(_Symbol, SYMBOL_ASK)

void OnTick()
{
  if (!OrderSelect(0, SELECT_BY_POS))
    OrderSend(_Symbol, OP_BUY, 1, Ask, 0, 0, 0);
  else if ((OrderProfit() > -OrderCommission()) &&
           (OrderProfit() < -OrderCommission() * 2) &&
           OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 0))
    ExpertRemove();
}


Execute-o no Testador de Estratégia a partir de um servidor de negociação, onde existe uma comissão (executei-o neste: ForexTimeFXTM-Demo01).

O resultado está em imagens.


Na imagem do ecrã pode ver-se que havia uma posição COMPRAR, que fechou com perda total - o saldo inicial diminuiu.


E é isso que se destaca aqui na coluna da esquerda - o Conselheiro Especialista sofreu uma perda.

E agora temos um olhar para o que é destacado na segunda coluna. Lá tudo é óptimo com expectativas matemáticas positivas e negócios 100% lucrativos!


Assim, acontece que o Expert Advisor está a perder enquanto o indicador parece ser rentável. Daí que o cálculo do PF seja enviesado.


A ZZY escreveu um exemplo num minuto. Tenho pensado com terror, quanto tempo deve levar para o escrever em MQL5 ou SB. Quem não é preguiçoso - experimente.

 

No Testador, o separador Síntese tem uma lista muito útil de acções anteriores com um filtro interactivo.

Nesta lista, os nomes dos EAs são exibidos sem caminho. Devido a isto, quando existem dois EA com o mesmo nome, mas em pastas diferentes, a lista não mostra (e não pode filtrar) qual EA corresponde a que entrada.


É possível produzir nesta lista de acções anteriores os nomes de EAs com os seus caminhos a partir da pasta Especialistas?

Não utilizo indicadores, mas provavelmente seria razoável fazer o mesmo por eles.

 
O testador tem em conta ambos os lados do CloseBy trades ao calcular o número de trades. Daí o número incorrecto de ofícios, expectativas matemáticas, etc.
 
EA
#include <MT4Orders.mqh> // https://www.mql5.com/ru/code/16006

#define  Bid SymbolInfoDouble(_Symbol, SYMBOL_BID)
#define  Ask SymbolInfoDouble(_Symbol, SYMBOL_ASK)

int OnInit()
{
  return(OrderCloseBy(OrderSend(_Symbol, OP_BUY, 1, Ask, 0, 0, 0), OrderSend(_Symbol, OP_SELL, 
2, Bid, 0, 0, 0)));
}


o relatório não chama mais do que zeros. Embora o comércio estivesse em curso.


Porque = 1 também não é claro. Não está presente no código fonte.

 
fxsaber:
EA


o relatório não chama mais do que zeros. Embora o comércio estivesse em curso.


Porque é que OnTester == 1 também não é claro. Não está presente no código fonte.

Tem a certeza de que está a negociar no OnInit? E como vai utilizar GetLastError com o seu código? E outra questão. Tem a certeza sobre a ordem em que os argumentos da função são calculados?