Discussão do artigo "Otimizando uma estratégia usando o gráfico do saldo e comparando os resultados com o critério "Balance + max Sharpe Ratio""
O artigo é interessante como um exemplo do uso de bibliotecas padrão para atingir o objetivo. Uso a análise de equilíbrio RMS há mais de dois anos no MT4 - é um método muito útil para Expert Advisors com média de posição.
Pessoalmente, o artigo carece de informações sobre a criação de um relatório personalizado, ou seja, a gravação dos resultados da otimização em um arquivo, especialmente ao otimizar por meio de agentes.
Houve um artigo recente (estou com preguiça de procurá-lo) que também usoua "regressão linear". Fiz um comentário detalhado sobre ele e vou repeti-lo.
Ambos os autores cometem erros idênticos: eles confundem conceitos qualitativamente diferentes de "regressão linear" e "aproximação linear". O primeiro se refere a variáveis aleatórias e o segundo a variáveis determinísticas. Suas equações diferem pela variável aleatória, que é o erro. Não sei como no Alglib, mas em qualquer pacote estatístico normal a contabilização do erro resulta na AVALIAÇÃO dos coeficientes de regressão, pois há um erro para eles, que pode ser múltiplo do valor nominal do coeficiente calculado, o que leva a um resultado triste: o valor do coeficiente é calculado, nós o vemos, mas na realidade ele não está lá, e não podemos usar o que vemos.
Se mudarmos as palavras "regressão linear" para "aproximação linear", o que corresponderá à essência do artigo, no qual a balança é considerada como um conjunto de valores determinísticos e não aleatórios, então o artigo é bastante interessante e útil.
Ei, por algum motivo, meu arquivo não inclui o balanceregression. Há alguma maneira de solucionar o problema? Eu o salvei em meus arquivos e em include.
1. Leia a descrição do erro e verifique seus caminhos.
2. Se você tiver algum erro, forneça resultados reproduzíveis: no mínimo, você precisa de um código completo e, no mínimo, precisa de uma prova da presença de arquivos nas pastas especificadas.
Tenho uma pergunta geral: por que, quando estamos preenchendo matrizes de resultados de negociação, consideramos apenas as negociações com impactos positivos no saldo? ou seja, por que arr_profits é preenchido apenas com negociações de (comissão + swap + lucro) > 0,0?
As quedas na curva de saldo (que são os resultados da perda de negociações) também não estão afetando a linha LR e, portanto, o GetProfitStability?
Recebi alguns erros quando tentei compilar o BalanceRegression.mph:
As duas linhas comentadas geraram o seguinte erro - depois de pesquisar um pouco, descobri que a biblioteca alglib foi atualizada.
As linhas atualizadas foram compiladas e o código foi executado, mas como nunca usei CMatrixDouble antes, não tenho 100% de certeza de que a correção esteja correta.
operator[] constant variable cannot be passed as reference
CMatrixDouble xy(arr_size,2); for(int i=0;i<arr_size;i++) { //xy[i].Set(0,i+1); //xy[i].Set(1, arr_profits[i]); xy.Set(i, 0, i+1); xy.Set(i, 1, arr_profits[i]);
Além disso, a linha comentada, no mesmo arquivo, retornou uma variável indefinida - novamente, acho que foi devido à atualização da alglib:
//double TrendMSE=linear_report.m_rmserror; double TrendMSE=linear_report.m_RMSError;
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso

Novo artigo Otimizando uma estratégia usando o gráfico do saldo e comparando os resultados com o critério "Balance + max Sharpe Ratio" foi publicado:
Neste artigo, nós ainda consideramos um outro critério personalizado de otimização de uma estratégia de negociação com base na análise do gráfico de saldo. A regressão linear é calculada usando a função da biblioteca ALGLIB.
Ela representa o lucro por negociação para a linha de regressão traçada:
Fig. 2. Parâmetro TrendProfit
Autor: Vladimir Karputov