Segue resposta do ChatGPT (editada):
Na MQL5, o número mágico (magic number) é um identificador único que você associa a cada ordem ou posição aberta pelo seu Expert Advisor (EA). Isso permite que o EA diferencie suas operações de outras que possam estar na conta, como as abertas manualmente ou por outros EAs.
Passos para adicionar um número mágico ao seu EA:
Definir o número mágico no código do EA: Crie uma constante ou uma variável global no início do seu código para armazenar o número mágico. Isso facilita a reutilização e identificação.
// Número mágico definido como constante #define MAGIC_NUMBER 123456Ou, se preferir uma variável global:
// Número mágico como variável global input int magicNumber = 123456; // Permite modificar no testador de estratégia
Configurar o número mágico no testador: Se usar a diretiva input , o número mágico pode ser alterado diretamente no testador de estratégia ou ao inicializar o EA em uma conta real.
input int magicNumber = 123456; // Número mágico ajustável
Considerações:
- Número único: Certifique-se de que cada EA em execução na mesma conta use um número mágico único para evitar conflitos.
- Comentário adicional: Além do número mágico, use o campo de comentário na ordem para adicionar informações extras que podem ajudar na identificação.
A classe CTrade, que faz parte da biblioteca padrão da MQL5, simplifica o gerenciamento de ordens e posições. Vou mostrar como usar o número mágico ao abrir ordens com essa classe.
Exemplo com a classe CTrade :
A classe CTrade possui o método SetExpertMagicNumber() que permite definir o número mágico. Após configurá-lo, todas as ordens abertas pela instância da classe terão o número mágico especificado.
#include <Trade\Trade.mqh> // Inclui a biblioteca para operações de trade // Criação de uma instância da classe CTrade CTrade trade; // Definir o número mágico como uma variável ajustável input int magicNumber = 123456; // Número mágico ajustável no testador ou no EA void OnInit() { // Configura o número mágico para a instância da classe CTrade trade.SetExpertMagicNumber(magicNumber); Print("Número mágico configurado: ", magicNumber); } void OnTick() { double lotSize = 0.1; // Lote double askPrice = SymbolInfoDouble(_Symbol, SYMBOL_ASK); // Preço de compra double stopLoss = askPrice - 20 * _Point; // Stop Loss (20 pontos) double takeProfit = askPrice + 50 * _Point; // Take Profit (50 pontos) // Condição para abrir uma ordem de compra (exemplo simples) if(ConditionsForBuy()) // Substitua por sua lógica de entrada { bool result = trade.Buy( lotSize, // Volume do lote _Symbol, // Símbolo atual askPrice, // Preço de abertura stopLoss, // Stop Loss takeProfit, // Take Profit "Compra via CTrade" // Comentário opcional ); if(result) Print("Ordem de compra enviada com sucesso!"); else Print("Erro ao abrir ordem de compra: ", GetLastError()); } } // Função de exemplo para condições de compra (modifique conforme necessário) bool ConditionsForBuy() { static bool orderPlaced = false; if(!orderPlaced && iClose(_Symbol, PERIOD_M1, 1) > iOpen(_Symbol, PERIOD_M1, 1)) { orderPlaced = true; // Evita enviar múltiplas ordens return true; } return false; }
Explicação do código:
-
Definição do número mágico:
- Configuramos o número mágico com trade.SetExpertMagicNumber(magicNumber) no evento OnInit() . Isso garante que todas as operações realizadas pela instância de CTrade terão o número mágico configurado.
-
Método Buy:
- O método Buy da classe CTrade simplifica o envio de ordens de compra. Ele utiliza os parâmetros como volume, preço, Stop Loss e Take Profit.
-
Condição de entrada (ConditionsForBuy):
- Uma lógica simples verifica se o candle anterior foi de alta ( iClose > iOpen ). Essa condição é apenas um exemplo, você pode substituí-la pela sua lógica de entrada real.
-
Evitar múltiplas ordens:
- A variável orderPlaced é usada para evitar enviar várias ordens no mesmo tick. No seu caso, implemente controles adequados para evitar repetição.
Resultado:
Quando o EA identifica uma oportunidade de compra, ele envia a ordem com o número mágico configurado. Todas as ordens gerenciadas por essa instância da classe CTrade terão o número mágico especificado.
⚠️ Atenção @Vinicius Pereira De Oliveira! Não utilize “Inteligência Artificial” para gerar respostas automáticas, mesmo que sejam posteriormente editadas. Da próxima vez, será removida.
Por gentileza, poderia remover a resposta atual (e outras que você julgar que estão em desacordo)? Não está mais disponível para que eu mesmo possa excluir...
- 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