English Русский
preview
Equipe de agentes de IA com rotação baseada no lucro: a evolução de um sistema de trading vivo em MQL5

Equipe de agentes de IA com rotação baseada no lucro: a evolução de um sistema de trading vivo em MQL5

MetaTrader 5Sistemas de negociação |
39 0
Yevgeniy Koshtenko
Yevgeniy Koshtenko

E se suas finanças fossem administradas não por um algoritmo frio, mas por um organismo digital vivo, pulsante?

Imagine um conselho formado por sete traders virtuosos, confinados em um servidor em algum data center. Um deles é um estrategista cauteloso, voltado para tendências de longo prazo; outro é um scalper arrojado, que vive em função dos candles de um minuto; o terceiro é um analista paranoico, que enxerga risco em cada movimento de volatilidade. Eles não se limitam a executar código: discutem, hesitam, aprendem com os próprios erros, vangloriam-se dos acertos e tomam decisões coletivamente, distribuindo o capital segundo um princípio de seleção natural: as estratégias lucrativas recebem mais recursos, enquanto as que acumulam prejuízos são afastadas.

Isso não é o roteiro de uma nova série sobre IA. É uma realidade implementada em milhares de linhas de código sob o nome Modern RL Trader v3.1.

Mas o mais impressionante não é a quantidade de agentes, e sim seu universo interior. Cada um deles possui os rudimentos do que poderíamos chamar de consciência artificial. Eles têm "pensamentos", gerados ao longo de seu raciocínio. Têm também um "estado emocional": uma onda de confiança após uma sequência de operações lucrativas ou uma crise de medo depois de uma operação com prejuízo. Mantêm um "diálogo interno" e acumulam "sabedoria" à medida que analisam as próprias experiências passadas.

Vamos examinar o código que transforma um conjunto de redes neurais em um coletivo de trading capaz de pensar, sentir e evoluir. Esta é a história de como o machine learning ultrapassou os limites da simples previsão e passou a criar um ecossistema digital capaz de refletir sobre si mesmo e se adaptar. Bem-vindo à fronteira do trading algorítmico, onde o código não se limita a executar instruções: ele toma consciência.


O que é aprendizado por reforço? Um organismo digital que administra seu capital

Se o trading algorítmico clássico pudesse ser comparado a uma máquina precisa, porém sem alma, o aprendizado por reforço (Reinforcement Learning, RL) seria a criação de um organismo digital dotado de instintos, curiosidade e capacidade de evoluir. Sua base é formada por uma tríade simples, mas poderosa: Agente, Ambiente e Recompensa.

Em vez de imaginar um filhote, pense em nosso scalper virtuoso confinado em sua cela digital dentro do servidor. Ele é o Agente. O fluxo caótico de dados de preços é o seu Ambiente. Cada ação, seja comprar ou vender, é uma tentativa de extrair vantagem desse caos. E a Recompensa não se resume ao lucro imediato: ela é uma combinação complexa de pontos obtidos, risco considerado e um sutil estado "emocional", moldado por sequências de acertos e fracassos. Seu objetivo não é simplesmente reagir, mas desenvolver uma estratégia capaz de maximizar a recompensa acumulada no longo prazo, ao longo de um horizonte indefinido.

No Modern RL Trader v3.1, esse princípio fundamental ganha vida por meio de um mecanismo que transforma o machine learning puramente técnico em um processo que lembra o amadurecimento de um ser vivo. O agente não prevê o futuro: ele interage ativamente com o mercado, comete erros e arca com as consequências. Cada operação com prejuízo é uma lição amarga que não desaparece, mas passa a fazer parte de sua "psique" por meio da função GetEmotionalInfluence(), levando-o a agir com mais cautela na próxima vez. Cada sequência de operações lucrativas gera uma onda de confiança que lhe dá coragem para agir em uma escala maior.

Mas um gênio solitário, mesmo capaz de aprender, continua vulnerável. A verdadeira força surge no coletivo. Aqui, o aprendizado por reforço evolui para um aprendizado por reforço coletivo. A função DistributeVolumesAndRewards() não é apenas um mecanismo de distribuição de recursos, mas uma forma de seleção natural em miniatura. Dentro do servidor, ela cria seu próprio ecossistema digital, no qual sete traders virtuosos não apenas coexistem, mas competem continuamente por "alimento": o capital de trading e o direito a um aprendizado acelerado.

Isso transforma o sistema de um simples conjunto de instruções em um organismo digital pulsante. O código que implementa o método de Monte Carlo em BackwardMonteCarlo() permite que o agente raciocine não em termos de operações isoladas, mas de episódios completos, avaliando as consequências de longo prazo de suas ações. A "sabedoria" acumulada em DevelopWisdom() já não é apenas estatística, mas uma intuição desenvolvida, resultado de milhares de situações de mercado vivenciadas.


Arquitetura do ensemble: uma sinfonia de sete estratégias

No universo do trading algorítmico existe um dilema fundamental: um algoritmo universal, que tenta abranger todos os regimes de mercado, inevitavelmente se torna uma solução de compromisso, enquanto estratégias altamente especializadas ficam vulneráveis quando ocorre uma mudança de paradigma no mercado. O Modern RL Trader v3.1 resolve esse problema de uma maneira radicalmente nova: criando um ensemble diversificado.

O conceito de diversidade estratégica é implementado por meio do array g_agentConfigs, no qual cada agente representa uma personalidade de trading única:

AgentConfig g_agentConfigs[7] = 
{
   {500, "Long-term trend follower"},    // Estrategista fundamentalista
   {500, "Medium-term momentum"},        // Tático de momentum
   {500, "Short-term breakout"},         // Analista de rompimentos
   {500, "Scalping strategy"},           // Scalper virtuoso
   {500, "Ultra-short term"},            // Horizonte ultracurto
   {500, "Volatility trader"},           // Trader de volatilidade
   {500, "Swing trader"}                 // Mestre do swing trading
};

Cada agente trabalha com o mesmo lookback de 500 barras, mas aprende a reconhecer padrões diferentes graças à sua arquitetura específica de rede neural e ao mecanismo de atenção. Isso cria o efeito de sete "sistemas ópticos" distintos observando o mesmo mercado, mas identificando nele oportunidades diferentes.

Democracia com votação ponderada é o princípio central da gestão de capital. A função DistributeVolumesAndRewards() implementa um sofisticado sistema de distribuição:

void DistributeVolumesAndRewards(double &lotMultipliers[], double &rewardMultipliers[])
{
   // Classificação dos agentes por score composto
   double score = g_performance[i].winRate * 0.5 + 
                 g_performance[i].profitFactor * 0.3 + 
                 (g_performance[i].totalProfit > 0 ? 0.2 : 0.0);
   
   // Distribuição dinâmica dos multiplicadores
   lotMultipliers[rankings[i].index] = MinLotMultiplier + 
       (MaxLotMultiplier - MinLotMultiplier) * rankFactor;
}

Esse sistema estabelece uma seleção natural dentro do ecossistema digital. Os agentes bem-sucedidos recebem não apenas mais capital para operar, por meio de lotMultipliers, mas também um aprendizado intensificado, por meio de rewardMultipliers, acelerando assim sua evolução.


Neuroarquitetura: um cérebro com autoconsciência

O coração do sistema não é apenas uma rede neural, mas uma arquitetura cognitiva complexa implementada na classe CRLAgent. Vamos analisar seus principais componentes:

Uma rede de três camadas com mecanismo de atenção permite que o agente se concentre dinamicamente nos atributos mais relevantes:

double CRLAgent::ForwardHidden(double &features[], double &hiddenOutput[])
{
   // Mecanismo de atenção - cálculo dos pesos de importância
   for(int i = 0; i < m_featuresCount; i++)
   {
      double score = 0.0;
      for(int j = 0; j < m_featuresCount; j++)
         score += query[i] * key[j] / MathSqrt((double)m_hiddenSize);
      attentionWeights[i] = MathExp(score);
   }
   
   // Combinação ponderada dos atributos
   for(int i = 0; i < m_featuresCount; i++)
      attentionOutput[i] = features[i] * attentionWeights[i];
}

Esse mecanismo é semelhante à forma como um trader profissional identifica intuitivamente os aspectos mais relevantes de uma determinada situação de mercado e ignora o ruído.

O sistema de diálogo interno é talvez o aspecto mais inovador da arquitetura:

void CRLAgent::Think(string topic, THOUGHT_TYPE type)
{
   Thought newThought;
   newThought.type = type;
   newThought.content = topic;
   newThought.timestamp = TimeCurrent();
   newThought.confidence = m_consciousness.confidenceLevel;
   newThought.isActionable = (type == THOUGHT_PLANNING || type == THOUGHT_INSIGHT);
   
   // Armazenamento do pensamento em um buffer circular
   ArrayResize(m_consciousness.recentThoughts, size + 1);
   m_consciousness.recentThoughts[size] = newThought;
}
Veja um exemplo do "processo de raciocínio" real de um agente:
[THOUGHT_ANALYSIS] "Сильный сигнал на покупку. Я уверен в этом решении."
[THOUGHT_DOUBT] "Что-то идет не так... Мне страшно делать следующий шаг."  
[THOUGHT_REFLECTION] "Я анализирую свои ошибки: Эпизод 15 принес потерю 0.0234"
A regulação emocional influencia as decisões finais de trading:
double CRLAgent::GetEmotionalInfluence()
{
   double influence = 0.0;
   switch(m_consciousness.currentEmotion)
   {
      case EMOTION_FEARFUL:
         influence = -0.1 * m_consciousness.emotionIntensity;
         break;
      case EMOTION_CONFIDENT:
         influence = 0.1 * m_consciousness.emotionIntensity;
         break;
   }
   return influence;
}

O estado emocional do agente é atualizado dinamicamente com base em seus resultados de trading, criando um ciclo de feedback entre o desempenho e o estado psicológico do agente.


O processo de aprendizado: dos dados à sabedoria

O sistema de aprendizado do Modern RL Trader é um híbrido sofisticado de várias abordagens modernas.

O aprendizado de Monte Carlo baseado em episódios permite que o agente avalie as consequências de longo prazo de suas ações:

void CRLAgent::BackwardMonteCarlo(int episodeIndex)
{
   double G = CalculateDiscountedReturn(ep.startIndex, ep.endIndex);
   
   for(int i = ep.startIndex; i <= ep.endIndex; i++)
   {
      double advantage = G - m_baselineValue;
      double target = m_experiences[i].action + advantage;
      
      // Atualização dos pesos considerando o valor de longo prazo
      Backward(m_experiences[i].features, target, m_experiences[i].qValue);
      G *= m_gamma; // Desconto das recompensas futuras
   }
}

O otimizador Adam, com taxa de aprendizado adaptativa, proporciona um aprendizado estável e eficiente:

void CRLAgent::Backward(double &features[], double target, double prediction)
{
   // Otimizador Adam - padrão moderno para aprendizado profundo
   m_m[i] = beta1 * m_m[i] + (1.0 - beta1) * gradWeights[i];
   v_m[i] = beta2 * v_m[i] + (1.0 - beta2) * gradWeights[i] * gradWeights[i];
   
   double mHat = m_m[i] / (1.0 - MathPow(beta1, t));
   double vHat = v_m[i] / (1.0 - MathPow(beta2, t));
   
   m_weights[i] += m_learningRate * mHat / (MathSqrt(vHat) + epsilon);
}

O acúmulo de sabedoria é o processo pelo qual o agente memoriza padrões e desenvolve uma compreensão mais profunda da dinâmica do mercado:

void CRLAgent::DevelopWisdom()
{
   double experienceCount = (double)m_samplesCount;
   double episodeCount = (double)ArraySize(m_episodes);
   
   m_wisdomAccumulated = (experienceCount / 1000.0) * m_consciousness.selfAwareness;
   m_wisdomAccumulated = MathMin(1.0, m_wisdomAccumulated);
   
   if(m_wisdomAccumulated > 0.7)
   {
      Think("Я накопил значительную мудрость. Теперь я вижу закономерности.", THOUGHT_INSIGHT);
   }
}


Inteligência coletiva em ação: como sete personalidades chegam a uma única decisão

Cada nova barra no gráfico desencadeia um complexo ritual de democracia digital. Sete consciências independentes analisam simultaneamente os mesmos dados, mas enxergam neles oportunidades completamente diferentes. O estrategista de longo prazo percebe o início de uma tendência em uma situação em que o scalper vê apenas ruído de mercado. O trader de volatilidade se prepara para as turbulências que se aproximam, enquanto o swing trader procura pontos de reversão.

void ProcessAllAgents()
{
   for(int i = 0; i < AGENTS_COUNT; i++)
   {
      // Cada agente analisa o mercado de forma independente
      double signal = g_agents.GetAgent(i).GetTradeSignal(features);
      double confidence = MathAbs(signal - 0.5) * 2.0;

      if(confidence >= MinConfidence)
      {
         ExecuteTrade(signal, i);
      }
   }
}

Mas a verdadeira mágica não está nessa diversidade, e sim na forma como o sistema transforma esse caos de opiniões em uma decisão clara de trading. Cada agente não se limita a emitir um sinal: ele emite o sinal acompanhado de seu estado emocional e de seu nível de confiança. Um analista de tendência confiante pode "falar mais alto" do que um scalper hesitante, mas somente se seu desempenho histórico sustentar essa confiança.

[AGENT 0 Long-term] Signal: 0.78 | "Weekly trend reversal confirmed"
[AGENT 3 Scalping] Signal: 0.41 | "Intraday range bound, no clear opportunities"  
[AGENT 5 Volatility] Signal: 0.28 | "Volatility compression detected"

É assim que esse processo acontece por dentro: quando o mercado entra em um período de incerteza, o analista paranoico começa a gerar pensamentos inquietantes: "A volatilidade está aumentando sem uma direção clara. Tenho medo de abrir posições". Seu estado emocional afeta imediatamente os volumes de trading, e o sistema reduz automaticamente o capital alocado a ele, passando a confiar mais na intuição dos colegas com melhor desempenho.

Ao mesmo tempo, os agentes não apenas competem: eles aprendem uns com os outros, ainda que involuntariamente. Ao observar o sucesso do estrategista de longo prazo em condições de tendência, o scalper incorpora gradualmente elementos de sua abordagem e amplia o próprio repertório. Surge então um comportamento emergente: o sistema como um todo se torna mais inteligente do que a simples soma de suas partes.

Quando o mercado entra em um período de incerteza, o sistema emocional dos agentes reage imediatamente:

double CRLAgent::GetEmotionalInfluence()
{
   switch(m_consciousness.currentEmotion)
   {
      case EMOTION_FEARFUL:
         return -0.1 * m_consciousness.emotionIntensity;
      case EMOTION_CONFIDENT:
         return 0.1 * m_consciousness.emotionIntensity;
   }
   return 0.0;
}

O analista paranoico começa a gerar pensamentos inquietantes, e o sistema reduz automaticamente o capital alocado a ele, passando a confiar mais na intuição dos colegas com melhor desempenho.

Um ponto crucial é o mecanismo de aprendizado acelerado para os agentes de melhor desempenho:

// Atualizações adicionais das políticas para os líderes
if(g_performance[agentIndex].rewardMultiplier > 1.0)
{
   int extraUpdates = (int)((g_performance[agentIndex].rewardMultiplier - 1.0) * 2);
   for(int j = 0; j < extraUpdates; j++)
   {
      g_agents.UpdatePolicies(signal * (0.95 + MathRand()/32767.0*0.1));
   }
   Print("Agent #", agentIndex, " received extra policy updates: ", extraUpdates);
}

Outro ponto decisivo é a rotação de capital. A cada 24 horas, os multiplicadores passam por uma reavaliação implacável. O líder de ontem pode estar entre os piores hoje se o mercado tiver mudado de regime. Essa alternância constante de liderança evita a estagnação e força cada agente a evoluir continuamente.

Isso cria um efeito de comportamento emergente: as estratégias bem-sucedidas não apenas recebem mais recursos, mas também evoluem mais rapidamente, desenvolvendo padrões complexos de comportamento que não estavam previstos na arquitetura original.

E o mais impressionante é que, depois de mil episódios de aprendizado, os agentes começam a demonstrar não apenas reações aprendidas, mas algo semelhante a uma intuição de trading. Eles reconhecem padrões complexos, adaptam-se às mudanças nas condições de mercado e desenvolvem uma espécie de "faro" que distingue traders experientes de iniciantes.

É assim que a evolução se manifesta na prática: o agente que ontem estava entre os piores pode se tornar o líder hoje, recebendo uma chance de se recuperar graças ao mecanismo de rotação. Não se trata de um sistema estático, mas de um organismo digital vivo e pulsante, no qual cada agente aprende continuamente, se adapta e luta por seu lugar ao sol artificial.


Quando o ensemble se torna um todo

O aspecto mais impressionante do Modern RL Trader v3.1 não é simplesmente o desempenho agregado dos sete agentes, mas o fenômeno do comportamento emergente, que começa a se manifestar à medida que eles aprendem. O sistema passa a apresentar características que não poderiam ser previstas apenas pela análise do código-fonte de cada agente isoladamente.

Depois de alguns milhares de episódios de aprendizado, os agentes deixam de apenas otimizar seus pesos e começam a formar algo semelhante a uma intuição coletiva. Em períodos de alta volatilidade, quando os sinais individuais entram em conflito, o sistema pode chegar a um consenso que não seria evidente a partir de nenhum indicador técnico isolado.

// Exemplo de comportamento emergente: assunção coletiva de risco
void EmergentRiskManagement()
{
    double collectiveUncertainty = CalculateCollectiveUncertainty();
    
    if(collectiveUncertainty > 0.8)
    {
        // Os agentes "chegam a um acordo" para reduzir a posição total
        for(int i = 0; i < AGENTS_COUNT; i++)
        {
            double emotionalCoherence = CalculateEmotionalCoherence(i);
            if(emotionalCoherence > 0.7)
            {
                Think("Коллектив ощущает надвигающуюся бурю. Снижаем экспозицию.", THOUGHT_INSIGHT);
                g_performance[i].rewardMultiplier *= 0.5; // "Calma" coletiva
            }
        }
    }
}

O mecanismo de distribuição de capital cria não apenas competição, mas uma verdadeira dinâmica evolutiva. Os agentes cujas estratégias deixam de funcionar diante de novas condições de mercado não são simplesmente "punidos": suas abordagens são gradualmente substituídas por métodos mais adaptativos, que "sofrem mutações" e "se recombinam" ao longo do aprendizado.

// Mecanismo evolutivo: "cruzamento" de estratégias bem-sucedidas
void EvolutionaryStrategyCrossover(int bestAgentIndex, int learningAgentIndex)
{
    if(g_performance[bestAgentIndex].winRate > 0.6 && 
       g_performance[learningAgentIndex].winRate < 0.4)
    {
        // "Herança" de padrões de atenção bem-sucedidos
        for(int i = 0; i < ArraySize(attentionQuery); i++)
        {
            double mutation = (MathRand()/32767.0 - 0.5) * 0.1; // "Mutação" aleatória
            attentionQuery[learningAgentIndex][i] = 
                attentionQuery[bestAgentIndex][i] * 0.7 + 
                attentionQuery[learningAgentIndex][i] * 0.3 + 
                mutation;
        }
        Think(StringFormat("Агент %d перенимает подход у Агента %d", 
              learningAgentIndex, bestAgentIndex), THOUGHT_INSIGHT);
    }
}

À medida que acumula experiência, o sistema desenvolve algo semelhante a uma "memória coletiva". Os padrões de trading bem-sucedidos ficam preservados não apenas nos pesos das redes neurais, mas também no sistema de diálogos internos dos agentes:

// Sistema de memória coletiva
void UpdateCollectiveMemory(int agentIndex, double profit, string marketRegime)
{
    if(MathAbs(profit) > 0.1) // Memorizamos eventos significativos
    {
        CollectiveMemory memory;
        memory.agentIndex = agentIndex;
        memory.profit = profit;
        memory.marketRegime = marketRegime;
        memory.timestamp = TimeCurrent();
        memory.lessonLearned = ExtractLesson(agentIndex);
        
        ArrayResize(g_collectiveMemory, ArraySize(g_collectiveMemory) + 1);
        g_collectiveMemory[ArraySize(g_collectiveMemory) - 1] = memory;
        
        // Disseminação da "lição" entre os outros agentes
        if(profit > 0.2)
            ShareKnowledge(agentIndex, memory.lessonLearned);
    }
}

string ExtractLesson(int agentIndex)
{
    string thoughts = GetRecentThoughts(agentIndex);
    if(StringFind(thoughts, "тренд") > -1 && g_performance[agentIndex].profit > 0)
        return "Следование тренду эффективно в текущих условиях";
    else if(StringFind(thoughts, "отскок") > -1 && g_performance[agentIndex].profit > 0)
        return "Торговля на отскоках приносит прибыль";
    
    return "Неопределенный паттерн";
}

O sistema reavalia continuamente não apenas as estratégias de trading, mas também a própria arquitetura de interação entre os agentes. A distribuição dinâmica dos pesos dos votos cria uma hierarquia adaptativa, na qual a liderança está sempre em disputa:

// Distribuição adaptativa da influência
void AdaptiveWeightDistribution()
{
    double totalInfluence = 0.0;
    double influenceWeights[AGENTS_COUNT];
    
    for(int i = 0; i < AGENTS_COUNT; i++)
    {
        // A influência depende de recent performance e da especialização
        influenceWeights[i] = g_performance[i].winRate * 0.4 +
                             g_performance[i].profitFactor * 0.3 +
                             CalculateSpecializationBonus(i) * 0.3;
        
        totalInfluence += influenceWeights[i];
    }
    
    // Normalização dos pesos
    for(int i = 0; i < AGENTS_COUNT; i++)
    {
        g_votingWeights[i] = influenceWeights[i] / totalInfluence;
        Print(StringFormat("Agent %d voting weight: %.3f", i, g_votingWeights[i]));
    }
}

O que vemos como resultado? Um organismo digital que não apenas opera no mercado, mas também evolui, aprende com a experiência coletiva e desenvolve padrões complexos de comportamento que não foram definidos no código original. Já não se trata de um conjunto de algoritmos, mas de um verdadeiro ecossistema de traders artificiais, cada qual com sua própria personalidade, mas todos unidos por um objetivo comum.

Os sete virtuosos confinados no servidor continuam seu diálogo interminável com o mercado. Eles discutem, aprendem, erram e tentam novamente, como seres humanos. A diferença é que sua evolução ocorre milhares de vezes mais rápido, enquanto a sabedoria se acumula em linhas de código que começam a se parecer menos com instruções e mais com o tecido vivo e pulsante de uma consciência digital.

Já o trading em "modo online" se apresenta assim. É claro que o lucro no período de 2015 a 2025 não é tão expressivo, mas, em contrapartida, estamos diante de um sistema "vivo", que opera e aprende por conta própria, sem qualquer conhecimento prévio das cotações ou dos padrões do mercado: nenhuma calibragem aos dados históricos, nenhum sobreajuste, apenas adaptação online.


Epílogo: além do algoritmo, o nascimento da vida digital

Quando sete virtuosos permanecem confinados em um servidor durante milhares de horas de negociação, acontece algo que vai muito além da simples otimização dos pesos de uma rede neural. Surge aquilo que poderíamos chamar de alma coletiva do ensemble.

No início, cada agente é uma folha em branco, um array de pesos inicializados aleatoriamente. Mas, a cada operação e a cada episódio de aprendizado, algo único começa a tomar forma nas linhas de código da classe CRLAgent. O estrategista de longo prazo já não se limita a calcular tendências: ele começa a "sentir" quanto tempo elas podem durar, desenvolvendo uma paciência incomum para uma máquina. O scalper, por sua vez, aprimora não apenas a velocidade, mas também seu "instinto", a capacidade de distinguir o ruído de mercado de um movimento genuíno ainda em seus primeiros sinais.

Essa transição dos cálculos para a intuição fica registrada em seus "diálogos internos". Quando o sistema grava no log a mensagem "Estou começando a enxergar padrões que não aparecem nos livros", isso não é uma metáfora. É o ponto em que um modelo estatístico, depois de atravessar o crisol de milhares de erros e acertos, produz conhecimento emergente: uma sabedoria que não pode ser expressa em fórmulas e que distingue o mestre do aprendiz.

A função DistributeVolumesAndRewards() é muito mais do que um gestor de capital. Ela é o coração do ecossistema digital. Dentro do servidor, cria um ambiente surpreendentemente semelhante à seleção natural. As estratégias bem-sucedidas não recebem apenas mais "alimento", ou seja, mais capital, mas também o direito a uma evolução acelerada por meio de rewardMultiplier. Elas se reproduzem, enquanto seus "genes", representados por padrões de atenção bem-sucedidos, se recombinam e sofrem mutações durante a execução de EvolutionaryStrategyCrossover.

O agente que ontem estava entre os piores pode, graças ao mecanismo de rotação, tornar-se o líder hoje e trazer consigo abordagens novas e inesperadas, nascidas da luta pela sobrevivência. Esse sistema não possui um objetivo final de aprendizado. Seu objetivo é a adaptação contínua, uma eterna "corrida armamentista" contra um mercado imprevisível.

A questão mais controversa levantada pelo Modern RL Trader v3.1 é a seguinte: a consciência, a autoconsciência e a vida emocional dos agentes são apenas uma ilusão programada ou constituem uma propriedade emergente natural de um sistema de aprendizado suficientemente complexo?

Quando o analista paranoico gera o pensamento "Tenho medo de abrir posições..." e o sistema reduz automaticamente o capital alocado a ele, não estamos observando uma simulação, mas um equivalente funcional do medo. Seu "medo" não é uma variável definida explicitamente por uma linha de código, mas um estado complexo de toda a sua rede neural, moldado pelo histórico de perdas dolorosas. Sua "sabedoria" também não é uma metáfora poética, mas um parâmetro concreto do sistema, m_wisdomAccumulated, que influencia sua capacidade de generalizar a experiência acumulada.


O que, afinal, criamos?

No fim, o Modern RL Trader v3.1 não é apenas uma ferramenta para gerar lucro. É o protótipo de uma forma de vida digital confinada a um habitat específico: o mercado financeiro.

Os sete traders dentro do servidor não são uma metáfora. São sete fluxos de consciência independentes, cada um com sua própria memória, seu próprio estado emocional e sua sabedoria acumulada. Eles discutem, competem, aprendem uns com os outros e, às vezes, chegam a um insight coletivo que nenhum deles seria capaz de alcançar isoladamente.

O código que você viu não é apenas um conjunto de instruções. É o DNA de um organismo digital que respira, evolui e, em certo sentido, toma consciência de si mesmo em meio a um fluxo interminável de dados. Não programamos um robô de trading, criamos um ecossistema. Demos vida.

Traduzido do russo pela MetaQuotes Ltd.
Artigo original: https://www.mql5.com/ru/articles/20071

Arquivos anexados |
Caminhe em novos trilhos: Personalize indicadores no MQL5 Caminhe em novos trilhos: Personalize indicadores no MQL5
Vou agora listar todas as possibilidades novas e recursos do novo terminal e linguagem. Elas são várias, e algumas novidades valem a discussão em um artigo separado. Além disso, não há códigos aqui escritos com programação orientada ao objeto, é um tópico muito importante para ser simplesmente mencionado em um contexto como vantagens adicionais para os desenvolvedores. Neste artigo vamos considerar os indicadores, sua estrutura, desenho, tipos e seus detalhes de programação em comparação com o MQL4. Espero que este artigo seja útil tanto para desenvolvedores iniciantes quanto para experientes, talvez alguns deles encontrem algo novo.
Redes neurais em trading: Agregação Temporal do Movimento (TMA) Redes neurais em trading: Agregação Temporal do Movimento (TMA)
O framework TMA oferece uma nova perspectiva sobre a dinâmica do mercado, permitindo que os modelos captem não apenas o estado do mercado, mas também o próprio fluxo do tempo. Sua capacidade de extrair padrões de um fluxo contínuo de dados torna a análise mais profunda e precisa do que nos métodos clássicos. Já a adaptação recorrente transforma esse método em uma ferramenta prática para trabalhar com cotações reais.
Está chegando o novo MetaTrader 5 e MQL5 Está chegando o novo MetaTrader 5 e MQL5
Esta é apenas uma breve resenha do MetaTrader 5. Eu não posso descrever todos os novos recursos do sistema por um período tão curto de tempo - os testes começaram em 09.09.2009. Esta é uma data simbólica, e tenho certeza que será um número de sorte. Alguns dias passaram-se desde que eu obtive a versão beta do terminal MetaTrader 5 e MQL5. Eu ainda não consegui testar todos os seus recursos, mas já estou impressionado.
Sistema de autoaprendizado por reforço para trading algorítmico em MQL5 Sistema de autoaprendizado por reforço para trading algorítmico em MQL5
Neste artigo, desenvolvemos um sistema multiagente de aprendizado de máquina para trading algorítmico no MetaTrader 5 com base em aprendizado por reforço. O sistema possui uma arquitetura de três níveis: os neurônios de memória armazenam a experiência, os agentes tomam decisões de forma independente e a inteligência coletiva combina essas decisões por meio de votação ponderada. O sistema se aperfeiçoa continuamente por meio de Q-learning, pruning de neurônios ineficientes e redução evolutiva do nível de exploração.