Descobrir número mágico

Samuel Manoel De Souza  

Boa noite.

Usando a função ChartGetString é possivel saber o nome do expert anexado a um gráfico. Já que o número mágico não é uma propriedade de um EA, teria como obter os parâmetros de um EA anexado, para eu saber o número mágico dele?

Pensei em setar o número mágico nas variáveis globais, para obter essa informação, mas se houver outra forma, seria útil saber.

Rogerio Giannetti Torres  
Samuel Manoel De Souza:

Boa noite.

Usando a função ChartGetString é possivel saber o nome do expert anexado a um gráfico. Já que o número mágico não é uma propriedade de um EA, teria como obter os parâmetros de um EA anexado, para eu saber o número mágico dele?

Pensei em setar o número mágico nas variáveis globais, para obter essa informação, mas se houver outra forma, seria útil saber.

Olá Samuel,

se a intenção é setar o número mágico porque não usar o input?

input long                  inpMagicNumber = 200502;        // Magic Number
Samuel Manoel De Souza  
Rogerio Giannetti Torres:

Olá Samuel,

se a intenção é setar o número mágico porque não usar o input?

Não. A ideia é tornar um EA consciente da existência de outros EAs no terminal.

Samuel Manoel De Souza  
No caso quero saber se um negócio foi realizado pelo mesmo EA, anexado em outro gráfico, mesmo que o EA anexado em outro gráfico esteja usando número mágico diferente.
Rogerio Giannetti Torres  
Samuel Manoel De Souza:
No caso quero saber se um negócio foi realizado pelo mesmo EA, anexado em outro gráfico, mesmo que o EA anexado em outro gráfico esteja usando número mágico diferente.

Entendi, não tem nada que associe o MagicNumber ao nome do EA, tem que buscar uma solução, eu  gravei arquivos na COMMON/FILES para trocar msg entre as instâncias que estavam rodando o EA.

Vinicius Pereira De Oliveira  
Samuel Manoel De Souza:
No caso quero saber se um negócio foi realizado pelo mesmo EA, anexado em outro gráfico, mesmo que o EA anexado em outro gráfico esteja usando número mágico diferente.

Caso não seja necessário anexar o mesmo EA em mais de 1 gráfico do mesmo símbolo e timeframe, utilizando configurações diferentes, então não é preciso deixar o magic number nos parâmetros de entrada. Define apenas internamente como no exemplo abaixo:

//=== Global variables
ulong MAGICNUM;

. . .

//+--------------------------------------------------------------------------------------------------------------------+
//| Expert initialization function                                                                                     |
//+--------------------------------------------------------------------------------------------------------------------+
int OnInit()
  {
   //--- Inicializar objeto para o controle correto das operações
   MAGICNUM = MagicNumberTF(_Period);
   trade.SetExpertMagicNumber(MAGICNUM);

. . .

//+--------------------------------------------------------------------------------------------------------------------+
//| Magic number timeframes function                                                                                   |
//+--------------------------------------------------------------------------------------------------------------------+
int MagicNumberTF(int CodeTF)
  {
   //--- Local variable
   int ResMN;

   switch(CodeTF)
     {
      case PERIOD_M1:    ResMN = 7001;   break;
      case PERIOD_M2:    ResMN = 7002;   break;
      case PERIOD_M3:    ResMN = 7003;   break;
      case PERIOD_M4:    ResMN = 7004;   break;
      case PERIOD_M5:    ResMN = 7005;   break;
      case PERIOD_M6:    ResMN = 7006;   break;
      case PERIOD_M10:   ResMN = 7007;   break;
      case PERIOD_M12:   ResMN = 7008;   break;
      case PERIOD_M15:   ResMN = 7009;   break;
      case PERIOD_M20:   ResMN = 7010;   break;
      case PERIOD_M30:   ResMN = 7011;   break;
      case PERIOD_H1:    ResMN = 7012;   break;
      case PERIOD_H2:    ResMN = 7013;   break;
      case PERIOD_H3:    ResMN = 7014;   break;
      case PERIOD_H4:    ResMN = 7015;   break;
      case PERIOD_H6:    ResMN = 7016;   break;
      case PERIOD_H8:    ResMN = 7017;   break;
      case PERIOD_H12:   ResMN = 7018;   break;
      case PERIOD_D1:    ResMN = 7019;   break;
      case PERIOD_W1:    ResMN = 7020;   break;
      case PERIOD_MN1:   ResMN = 7021;   break;
      default:           ResMN = 0;      break;
     }
   return(ResMN);
  }



Se realmente for necessário manter o MN editável, talvez a solução com as variáveis globais seja a mais viável.

Razão: