Boa tarde!
Estou interessado em saber se é possível colocar a correlação LR na função OnTester(), a fim de otimizar o Expert Advisor por esse critério, via Custom max?
Estou interessado em saber se é possível colocar a correlação LR na função OnTester()....
A descrição fornece um exemplo com OnTrade(). Nada o impede de mover os cálculos para OnTester().
A descrição dá um exemplo com OnTrade(). Nada impede que você transfira os cálculos para OnTester().
Não estou muito familiarizado com o mql5, portanto, desculpe-me por quaisquer erros óbvios.
Tentei fazer isso no código do EA antes do OnDeinit:
double OnTester() { double lrk=TesterStatistics(STAT_LR_CORRELATION); return(lrk); }
O erro "'STAT_LR_CORRELATION' - can't convert enum" é exibido.
Se for o caso:
double OnTester() { //--- bloquear solicitações repetidas na mesma seção. static datetime time_on_trade; if(time_on_trade==TimeTradeServer())return; time_on_trade=TimeTradeServer(); //--- atualizar estatísticas if(!m_stat.Calculate())Print(m_stat.GetLastErrorString()); }
Erros: "'return' - a função deve retornar um valor", " '}' - nem todos os caminhos de controle retornam um valor".
Linha 1 e 2 no EA:
#include <CTradeStatistics.mqh>
CTradeStatistics m_stat;Diga-me o que está errado?
Fiz isso por tentativa e erro:
double OnTester() { CTradeStatistics m_stat; if(m_stat.Calculate()) PrintFormat("LR Correlation: %.2f",m_stat.LRCorrelation()); else Print(m_stat.GetLastErrorString()); double LRC=(double)m_stat.LRCorrelation(); return(LRC); }Acho que funcionou...?
Andrei, há alguns comentários.
1. Linha 500
if(m_balance_data.At(i)!=0.0) corrija para if(m_balance_data.At(i-1)!=0.0)
2. Linha 511
nenhuma verificação do denominador m_initial_deposit para 0
3. certifique-se de especificar que está usando o cálculo m_sharpe_ratio para a opção Índice de Sharpe Anual com a opção RiskFreeRate
pois essa é apenas uma das opções e é especificamente diferente da opção padrão.
Descobri que esse código não consegue calcular nenhuma estatística relacionada à redução do patrimônio líquido. Alguém conseguiu calcular o rebaixamento do patrimônio com seu próprio código?
O que quer dizer com isso? Devo estar entendendo mal sua pergunta, pois essa resposta simples não pode ser o que você está procurando, não é? ---> Com as classes de negociação do MT5, você pode criar um objeto de conta CAccountInfo acc; acc é o objeto de informações da conta criada que oferece acesso rápido a todas as funções de detalhes da conta. Então, faça o seguinte acc.Equity()-acc.Balance(). Bem, para ser honesto, você pode usar um código ainda mais simples acc.Profit(). Se positivo é lucro, se negativo é saque, certo? Lucro de patrimônio líquido negativo é o mesmo que saque. Profit() é a diferença entre patrimônio líquido e saldo
Se sua pergunta for mais complexa, adicione detalhes;)
Funciona perfeitamente!
Se você quiser evitar receber avisos de compilação
você precisa adicionar o elemento null ao enum deal_result:
//+------------------------------------------------------------------+
//| deal result |
//+------------------------------------------------------------------+
enum deal_result
{
NOVALUE=0, //<---- added
WIN=1,
LOSS
};
- 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
CTradeStatistics:
Autor: Andrey Voytenko