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

 
fxsaber:
Se estas forem as fórmulas correctas


O Testador calcula estes números de forma muito diferente. Tenho diferenças notáveis nos resultados entre estas fórmulas e o que o Testador mostra (para além do lucro).

Sugiro que cheguemos ao fundo da questão. O obstáculo é exactamente o que MT5 considera um comércio lucrativo.

const double Profit = OrderProfit() + OrderCommission() + OrderSwap();

Remover um, ou ambos ao mesmo tempo, e comparar.

Ou aqui (se acima não ajudar) remover "=".

if (Profit >= 0)
 
Slava:

O que estamos a discutir agora? Desactivar agentes ou permitir a utilização de caracteres em testes/optimização?

Se existem dois problemas, devemos provavelmente discutir e resolver ambos. Ou será impossível?

1. Porque é que há uma desactivação dos agentes após a optimização ter sido feita.

2. Qual é a razão pela qual a adição automática de caracteres ao testador é interrompida?

 
Artyom Trishkin:

Remover um, ou ambos ao mesmo tempo, e comparar.

Ou aqui (se acima não ajudar) remover "=".

É assim que funciona o MT5

double ProfitPlus = 0;  // Профит неотрицательных закрытых позиций.
double ProfitMinus = 0; // Профит отрицательных закрытых позиций.

int AmountPlus = 0;  // Количество неотрицательных закрытых позиций.
int AmountMinus = 0; // Количество отрицательных закрытых позиций.

for (int i = OrdersHistoryTotal() - 1; i >= 0; i--)
  if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY) && (OrderType() <= OP_SELL))
  {
    const double Profit = OrderProfit()+ (OrderCommission() / 2) + OrderSwap();
    
    if (Profit >= 0)
    {
      ProfitPlus += Profit;
      AmountPlus++;
    }
    else
    {
      ProfitMinus += Profit;
      AmountMinus++;
    }      

    ProfitMinus += OrderCommission() / 2;
  }

const double PF = ProfitMinus ? -ProfitPlus / ProfitMinus : DBL_MAX; // Профит-фактор.
const double Profit = ProfitPlus + ProfitMinus;                      // Профит

Isto é, em MT5 pode fechar uma posição e obter uma perda (o saldo antes da abertura é inferior ao saldo após o fecho). Mas neste caso o MT5-Tester (terminal não foi verificado) considerará este comércio como rentável.


Por exemplo, MT5_PF = 1,89 e MT4_PF = 2,01.

 
fxsaber:
Se estas forem as fórmulas certas


O Testador calcula estes números de forma muito diferente. Tenho diferenças notáveis nos resultados entre estas fórmulas e o que o Testador mostra (excepto no que respeita ao lucro).

Proponho que isto fique claro. O obstáculo é o que MT5 considera um comércio lucrativo.

Porque é que existe aqui um modificador constante?

const double Profit = OrderProfit() + OrderCommission() + OrderSwap();

Quando esta variável deixar espaço, provavelmente será reinicializada. imho, const não é necessário


Se removermos OrderCommission() + OrderSwap() ? - estamos a falar de lucro nas transacções, não de comissão?

SZZ: como opção, o testador pode trabalhar com o saldo, se a ordem for fechada, o saldo mudou, compará-lo com o saldo antigo, em geral, não consigo adivinhar.... , não encontrei a fonte, mas existe um artigohttps://www.mql5.com/ru/articles/4226 com o mesmo cálculo de lucro, mas ainda não o li.

Пользовательский тестер стратегий на основе быстрых математических вычислений
Пользовательский тестер стратегий на основе быстрых математических вычислений
  • www.mql5.com
Тестер стратегий, предоставляемый MetaTrader 5, имеет мощный функционал для решения разнообразных задач. С его помощью можно тестировать как сложные стратегии торговли корзинами инструментов, так и одиночные стратегии с простыми правилами входов и выходов. Однако такой обширный функционал нам пригождается далеко не всегда. Часто нам просто...
 
Igor Makanu:

Porque é que existe aqui um modificador constante?

É necessário calcular a variável Lucro em todas as iterações do loop , embora seja possível que, quando esta variável sair do âmbito, seja reinicializada... imho, não precisa de constantes.

Será recriado. Tudo está correcto aí.

E se eu remover OrderCommission() + OrderSwap() ? - estamos a falar de lucro por comércio, não por comissão ?

Fórmula MT5 acima. Isto cria graves distorções ao calcular o PF do escalpe de TSs. E como pode ser que a PF dependa da plataforma? Tem de ser inequívoca.

 
zevs1980:
Este problema já foi levantado por mim em ramos de construção anteriores. Nunca foi corrigido. Encontrei a minha muleta. Desactivo alguns dos agentes (3 de 10 no meu caso) e habilito-os após 0 iteração, e tudo corre bem. Por vezes, no entanto, alguns agentes param no processo, mas raramente, o algoritmo da solução é o mesmo.

É uma pena, mas a direcção manual não é uma opção. Tenho uma optimização automática.

 
KENT3004:

Se existem dois problemas, talvez ambos devam ser discutidos e resolvidos. Ou será isso impossível?

1. Porque é que os agentes são desligados após a optimização.

2. Qual é a razão pela qual a adição automática de caracteres ao testador é interrompida?

1. Ver os registos do testador, está tudo aí.

2. já está fixado. Mas até que tenha uma construção com correcções, pode usar drag-drop (não discutimos por que razão a adição de caracteres parou, discutimos como ainda pode testar nestas condições)

 
fxsaber:

Corro alternadamente em cada símbolo personalizado. A partir de um certo ponto é impossível ver o caminho até eles no Testador, mas ainda são seleccionáveis através de arrastar e largar do Market Watch. Depois de algum tempo isto também não funciona: pode seleccionar ou um símbolo normal, ou apenas um símbolo personalizado. Os outros não são possíveis. A animação abaixo mostra esta situação.


Reproduzido e corrigido. Obrigado.
 
Slava:

1. Ver os registos do testador, está tudo aí.

2. já está fixado. Mas até que tenha uma construção com correcções, pode usar drag-drop (não discutimos porque é que a adição de caracteres parou, discutimos como é que ainda pode testar nestas condições)

Obrigado pela sua prontidão e conselhos úteis. Atrevo-me a "relatar" um pequeno mas inconveniente detalhe. O botão start/stop cobre as ferramentas/ botão de teste, o que faz com que se façam acções extra. Mas não é muito conveniente.
 
Edgar:
Durante a optimização genética, utilizo muitos parâmetros. Assim que o número de variantes se torna tão grande que aparece na notação científica (6,8768769e+21), a optimização continua com metade dos agentes (4 em 8) após a geração 0. Nenhuma menção a isto nos registos. A optimização em si funciona bem, mas com meia carga, o dobro do tempo.

O comportamento nem sempre é reproduzido, e pode ser por isso que não está a ser corrigido. Ontem tinha-o, hoje não o tenho. Talvez dependa também da EA. Tenho-o com molduras. O tamanho do ex5 é cerca de 0.5 Mb. Tenho 8 Gb de memória. Intel i7, 4 núcleos, 8 fios. Divorciado. Sem supervisão.

Razão: