Para a consideração dos profissionais. - página 3

 
khorosh:
O objetivo do seu posto é mostrar como contar corretamente o sorteio? Obrigado pela EA. Só me parece que seu código, se incluído em uma EA real, determinará o saque para uma ou mais negociações abertas desde o momento da abertura até o fechamento dessas negociações, mas não buscará o saque máximo de todo o tempo em que a EA estiver funcionando. Ou será que eu me enganei? Você pode criticar meu código? Ela desempenha corretamente sua tarefa de encontrar o máximo de drawdown?


Este (meu) código economiza exatamente o drawdown máximo para todo o tempo de trabalho do Expert Advisor, ou seja, ele não zera variáveis máximas e mínimas ao fechar uma ou mais transações, quando o patrimônio é igual ao saldo e não há min para todo o tempo.

Escrevi-a puramente como exemplo e para mantê-la simples - como uma comparação com um testador.

Sobre seu código não está claro o porquê de usá-lo aqui:

  if(AccountEquity()>MaxEquity) 
    {MaxEquity=AccountEquity();MinEquity=AccountEquity();}

A MinEquidade é reinicializada.

MinEquity=AccountEquity();

Se numa situação em que AccountEquity() > MaxEquity não houver possibilidade de fechar ou abrir uma ordem (ou ordens) por vários motivos, muito menos reiniciar MinEquity=AccountEquity();

Geralmente, a mesma coisa pode ser programada de maneiras diferentes, de maneiras diferentes, o principal é o algoritmo correto.

Se você quiser inserir a variável em um EA real, é melhor escrever as variáveis em arquivos (com cheque).

Na minha opinião, o máximo de drawdown e o relativo drawdown não são levados em conta no testador; dei um link de exemplo anteriormente.

 
serferrer:


Este (meu) código economiza exatamente o drawdown máximo para toda a duração da EA, ou seja, não reinicia variáveis máximas e mínimas quando se fecha uma ou mais transações, quando a equidade é igual ao saldo e não há mínimo para todo o tempo.

Escrevi-a puramente como exemplo e para mantê-la simples - como uma comparação com um testador.

Sobre seu código não está claro o porquê de usá-lo aqui:

A MinEquidade é reinicializada.

Se numa situação em que AccountEquity() > MaxEquity não houver possibilidade de fechar ou abrir uma ordem (ou ordens) por vários motivos, muito menos reiniciar MinEquity=AccountEquity();

Geralmente, a mesma coisa pode ser programada de maneiras diferentes, de maneiras diferentes, o principal é o algoritmo correto.

Se você quiser inserir a variável em um EA real, é melhor escrever as variáveis em arquivos (com cheque).

Na minha opinião, o testador leva em conta, erroneamente, a maximização de drawdown e drawdown relativo, a ligação com o exemplo que dei anteriormente.

A MinEquidade é reiniciada no momento em que um novo máximo é atualizado, o que significa que o mínimo anterior é passado e depois que o novo máximo é formado é necessário encontrar um novo mínimo que possa dar ao saque maior do que o saque encontrado anteriormente em relação ao novo máximo. Note que devemos calcular o drawdown relativo ao último máximo pelo mínimo formado após este máximo e selecionar o máximo entre eles. Veja a confirmação nos postos da Integer, que também acha que isto está correto. Acho que esta é a razão pela qual você tem uma discrepância com o testador.

 
Serferrer, sua variante mostrará o drawdown errado, no caso de uma sucessão de ordens perdidas. Você pode receber 10 pedidos perdidos em uma fila com uma perda de 100 cada, e então você perderá 1000 e o saque máximo será de apenas 100, o que é errado.
 
Integer:
Serferrer, sua variante mostrará um drawdown incorreto no caso de uma série de pedidos perdidos. Você pode ter 10 pedidos perdidos em uma fila com uma perda de 100 cada um e drenar 1000, enquanto que o máximo de drawdown será de apenas 100, o que é errado.


Repito - escrevi-o puramente como um exemplo e mais simples (para maior clareza) - como uma comparação com o testador.

E não é, de forma alguma, definitivo.

Se você fizer o código final, você precisa acrescentar muitas outras características a ele.

 
serferrer:


Repito - escrevi-o puramente como exemplo e por simplicidade - como uma comparação com o testador.

E não é, de forma alguma, definitivo.

Se você fizer o código final, você precisa acrescentar muitas outras características a ele.


Para um exemplo de quê e comparação com o quê no testador? Seu código não calcula o levantamento de conta e não pode ser usado como exemplo para calcular o levantamento de conta e, portanto, não pode ser usado para comparar os cálculos de levantamento de conta no testador.
 
khorosh:

A MinEquidade é reiniciada no momento em que um novo máximo é atualizado, o que significa que o mínimo anterior é passado e depois que o novo máximo é formado é necessário encontrar um novo mínimo que possa dar ao saque maior do que o saque encontrado anteriormente em relação ao novo máximo . Note que devemos calcular o drawdown relativo ao último máximo pelo mínimo formado após este máximo e selecionar o máximo entre eles. Veja a confirmação nos postos da Integer, que também acha que isto está correto. Acho que esta é a razão pela qual você tem uma discrepância com o testador.


Esta é sua opinião, eu a entendo e eu mesmo a acho incorreta e o saque deve ser calculado com base no preço da(s) ordem(s) aberta (s) e não no máximo de patrimônio líquido, repito:

Se, por exemplo, em uma situação onde AccountEquity()>MaxEquity não há possibilidade de fechar ou abrir uma ordem(s), por várias razões.

 
Integer:

Para um exemplo de quê e uma comparação com o quê no testador? Seu código não calcula o levantamento de conta e, portanto, não pode ser usado como um exemplo para calcular o levantamento de conta e, portanto, não pode ser usado para comparar os cálculos de levantamento de conta no testador.


Para comparação e um exemplo claro para deixar claro até mesmo para não-programadores que o testador está errado.

Drawdown Absoluto - drawdown do saldo inicial mostrando quanto o saldo diminuiu relativamente ao valor inicial;
Drawdown Máximo - o drawdown mostrando o drawdown máximo fixado em termos de dinheiro (a diferença entre o último máximo e o mínimo atual); pode exceder o Drawdown Absoluto, mostrando a quantidade de perda possível, mesmo que o comércio seja positivo;
Drawdown relativo - drawdown relativo, mostra a porcentagem máxima de drawdown em relação ao depósito inicial;

http://www.onix-trade.net/forum/index.php?showtopic=82146&st=0&p=342915&#entry342915

Inteiro:

Você concorda que, no meu exemplo - Desembolso máximo 1013,00 (50,85%) Desembolso relativo 50,85% (1013,00) e isto é correto?

 
serferrer:


Para comparação e exemplo ilustrativo, mesmo os não-programadores entendem que o testador não faz os cálculos corretamente.

Drawdown Absoluto - drawdown do saldo inicial, que mostra quanto o saldo diminuiu relativamente ao valor inicial;
Drawdown Máximo - o drawdown mostrando o drawdown máximo fixado em termos de dinheiro (a diferença entre o último máximo e o mínimo atual); pode exceder o Drawdown Absoluto, mostrando a quantidade de perda possível, mesmo que o comércio seja positivo;
Drawdown relativo - drawdown relativo, mostra a porcentagem máxima de drawdown em relação ao depósito inicial;

http://www.onix-trade.net/forum/index.php?showtopic=82146&st=0&p=342915&#entry342915

Inteiro:

Você concorda que, no meu exemplo - Desembolso máximo 1013,00 (50,85%) Desembolso relativo 50,85% (1013,00) e isto é correto?


Não, eu não concordo com você em absoluto ou em nada.
 
khorosh:

Explique onde você encontrou tal parâmetro, como o mínimo de drawdown, em que relatório. Acredito que a queda máxima de equidade encontrada durante o teste pode ser repetida no comércio real, por isso acho correto contá-la a partir do máximo.

Desculpem pelo saque mínimo - erro meu. Fixou o poste. E por que não faz sentido calcular o saque máximo de capital em uma ordem aberta em vôo livre?
 
Reshetov:

Bem, se você não precisa disso ou não entende para que serve, por que juntar-se à conversa e até mesmo impor sua opinião?
Leia com atenção. Perguntei por que os outros precisam dele, não eu mesmo. Eu não estou impondo minha opinião, apenas expliquei a lógica.
Razão: