Erros, bugs, perguntas - página 2319
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Definições de símbolos, não gráficos.
Na visão geral do mercado, seleccione "especificação do símbolo" no menu de contexto do símbolo
Obrigado.
Mostrar os registos do terminal no momento do problema desde o início
Obrigado.
Mostrar os registos do terminal no momento do problema desde o início
Enviei o ficheiro de registo através de mensagem privada.
Enviei o ficheiro de registo por mensagem privada.
Sim, obrigado.
Os registos são todos claros.
Diga-me, a situação que descreveu é continuada?
Volume sem DoubleToString(Volume, 2). A imagem do ecrã é EURUSD.
Sim, obrigado.
Tudo está claro a partir dos registos.
Diga-me, a situação que descreveu continua?
Depois de reiniciar o terminal, tudo está bem até agora.
Fórum sobre comércio, sistemas automatizados de comércio e testes de estratégia comercial
Insectos, insectos, perguntas
pantural, 2018.11.01 16:03
Olá caros programadores de MT, gostaria de reportar um erro no algoritmo de cálculo do Sharpe Ratio. No relatório anexo do Sr.Aleksey Vyazmikin onde SR=0,29 mas de acordo com os meus cálculos é cerca de 3,7-3,8 (dependendo se PnL zero) sugere que o erro na ausência de um factor de escala no desvio padrão (sqrt(comprimento)) porque o retorno médio não depende do comprimento da série, converge, e o RMS aumenta como sqrt(comprimento)
C++
double SharpRatio(vector<double> pnl)
{
double avret = 0;
for (int i = 0; i < pnl.size(); ++i) avret += pnl[i];
avret /= pnl.size();
double var = 0;
for (int i = 0; i < pnl.size(); ++i) var += pow(pnl[i] - avret, 2);
var = sqrt(var / pnl.size()) / sqrt(pnl.size());
return avret / var;
}
Vamos tomar dois TCs idênticos. Iniciamo-los simultaneamente. Um dia depois, ambos mostram a matriz pnl. A primeira foi parada, a segunda não. Depois de outro dia, o segundo mostrou-nos exactamente a mesma pnl.
Ou seja, o primeiro tem pnl[] e o segundo tem pnl[]+pnl[]. Ou seja, o segundo dia de troca foi idêntico ao primeiro dia de troca.
Depois, de acordo com a fórmula sugerida, a razão Sharpe do segundo TS será sqrt(2) (raiz de dois) menos do que a do primeiro. Mas eles negociaram de forma idêntica!
Tomar dois TCs idênticos. Execute-os ao mesmo tempo. Após 24 horas, ambos mostraram um conjunto de pnl. A primeira foi parada, a segunda não. Outro dia mais tarde, o segundo mostrou exactamente a mesma pnl.
Ou seja, o primeiro tem pnl[] e o segundo tem pnl[]+pnl[]. Ou seja, o segundo dia de troca foi idêntico ao primeiro dia de troca.
Então, de acordo com a fórmula sugerida, a segunda TS's Sharpe Ratio será sqrt(2) (raiz de dois) menor do que a da primeira. Mas eles negociaram de forma idêntica!
Como é que é a piada? "Devem ser mortos enquanto são pequenos" .
Bem, vejamos o exemplo do ficheiro anexado a #11396. Porque em teoria tudo parece assustador até o sentir com as mãos.
Existem 144 ofícios nesse ficheiro, cujo valor Sharpe é 0,29 (o site mostra-o com uma precisão de 2 casas decimais, e não há problema - ninguém precisa de 5 casas decimais, neste caso 2 casas decimais é suficiente para uma boa medida para comparar duas estratégias).
Sharpe é calculado como a razão K/STD, onde:
Suponhamos que temos o dobro das transacções que foram cópias de transacções anteriores. Isto significa que agora temos 288 ofícios = 144*2. Ao mesmo tempo, K não irá mudar. Assim, só podemos mudar Sharpe alterando as DST.
STD inicial=MathSqrt(X2/(n-1)), onde:
Isto é Sharpe=MathSqrt(X2/(144-1)) = MathSqrt(X2/143)
Duplicámos o número de transacções, por isso, para uma história duas vezes maior, o novo Sharpe é calculado desta forma
Onde X2_new=2*X2. Portanto SharpeNew/Sharpe ratio = MathSqrt(X2/(144-1)) / MathSqrt(X2_new/(2*144-1)) =
Mesmo se eu misturar o denominador com o numerador, SharpeNew estará na faixa de 0,292919- 0,296025. Ou seja, a diferença estará algures no terceiro dígito.
Mas não por 10-20 vezes. Verifique por si próprio onde cometi um erro.
Qual é a piada? "Devem ser mortos enquanto são pequenos".
Não me entendeu bem.
Fórum sobre comércio, sistemas de comércio automatizados e testes estratégicos
Insectos, insectos, perguntas
fxsaber, 2018.11.06 13:23
Depois, de acordo com a fórmula proposta, a razão Sharpe da segunda TS seria sqrt(2) (raiz de duas) menos do que a primeira. Mas eles negociaram de forma idêntica!
Referia-me à fórmula citada de C++.
E na fórmula utilizada em MT, é claro, não se subtrairia nada. Então o exemplo proposto, não importa quantos intervalos de 144, Sharp seria sempre o mesmo.