Discussão do artigo "EA baseado em um aproximador universal MLP" - página 2 12 Novo comentário Andrey Dik 2025.08.06 19:47 #11 Eric Ruvalcaba #:Muito obrigado por compartilhar esse artigo e suas percepções. Ótima ideia. Implementei alguns controles de posição independentes e consegui fazê-lo funcionar em uma conta de hedge (minha corretora) Você é o melhor. Excelente! John_Freeman 2026.01.03 07:08 #12 Caro autor, reli o código TargetFunction() várias vezes e parece que você cometeu alguns erros. 1. Ao calcular o lucro em uma posição, você faz uma soma dupla do lucro. if (!truTradeTime [h]) { if (posType != 0) { // Se houver uma posição aberta posClPrice = rates [h].open; // Fechar ao preço de abertura da barra profit = (posClPrice - posOpPrice) * signal - 0.00003; // Comissão if (profit > 0.0) allProfit += profit; else allLoss += -profit; if (posType == 1) buys++; else sells++; allProfit += profit; posType = 0; // Redefinir posição } continue; // Pular o tempo sem negociação } if ((posType == 1 && signal == -1) || (posType == -1 && signal == 1)) { posClPrice = rates [h].open; // Fechar ao preço de abertura da barra atual profit = (posClPrice - posOpPrice) * signal - 0.00003; // Cálculo do lucro // Contabilidade de lucros/perdas if (profit > 0.0) allProfit += profit; else allLoss += -profit; // Estatísticas sobre transações if (posType == 1) buys++; else sells++; allProfit += profit; posType = 0; // Posição fechada } 2. O coeficiente ko não é usado no cálculo do índice de adaptabilidade. double ko = 1.0; if (sells == 0 || buys == 0) return -DBL_MAX; if (sells / buys > 1.5 || buys / sells > 1.5) ko = 0.001; return (allProfit / (allLoss + DBL_EPSILON)) * dealsNumb; Andrey Dik 2026.01.03 19:25 #13 John_Freeman #:Caro autor, reli o código TargetFunction() várias vezes e parece que você cometeu alguns erros. 1. Ao calcular o lucro em uma posição, você faz uma soma dupla do lucro. 2. Você não usa o coeficiente ko ao calcular o índice de adaptabilidade. 1. Sim, você está certo, remova as linhas no final dos dois blocos de códigoallProfit += profit;para que fique parecido com este:f (!truTradeTime [h]) { if (posType != 0) { // Se houver uma posição aberta posClPrice = rates [h].open; // Fechar ao preço de abertura da barra profit = (posClPrice - posOpPrice) * signal - 0.00003; // Comissão if (profit > 0.0) allProfit += profit; else allLoss += -profit; if (posType == 1) buys++; else sells++; //allProfit += profit; posType = 0; // Redefinir posição } continue; // Pular o tempo sem negociação } if ((posType == 1 && signal == -1) || (posType == -1 && signal == 1)) { posClPrice = rates [h].open; // Fechar ao preço de abertura da barra atual profit = (posClPrice - posOpPrice) * signal - 0.00003; // Cálculo do lucro // Contabilidade de lucros/perdas if (profit > 0.0) allProfit += profit; else allLoss += -profit; // Estatísticas sobre transações if (posType == 1) buys++; else sells++; //allProfit += profit; posType = 0; // Posição fechada }2. Sim, o ko não é usado. 12 Novo comentário
Muito obrigado por compartilhar esse artigo e suas percepções. Ótima ideia. Implementei alguns controles de posição independentes e consegui fazê-lo funcionar em uma conta de hedge (minha corretora)
Você é o melhor.
Excelente!
Caro autor, reli o código TargetFunction() várias vezes e parece que você cometeu alguns erros.
1. Ao calcular o lucro em uma posição, você faz uma soma dupla do lucro.
2. O coeficiente ko não é usado no cálculo do índice de adaptabilidade.Caro autor, reli o código TargetFunction() várias vezes e parece que você cometeu alguns erros.
1. Ao calcular o lucro em uma posição, você faz uma soma dupla do lucro.
2. Você não usa o coeficiente ko ao calcular o índice de adaptabilidade.