Proteção Código

 

Olá,

Gostaria de proteger um código para ser utilizado apenas com uma conta (de números) específica.

É possível?


Grato

 

Bom dia!

Sim, é possível, veja um exemplo de uma função que pode te ajudar.

bool funcao_verifica_liberacao(string TmpBancoLiberado, long TmpContaLiberada, datetime TmpDataValidade)  
{
     
     
     //verifica se o banco liberado bate com o banco que esta sendo usado o robo
         if(AccountInfoString(ACCOUNT_SERVER)!=TmpBancoLiberado)return(false);
     
     //verificar se a conta liberada bate com a conta que esta sendo usado o robo
         if(AccountInfoInteger(ACCOUNT_LOGIN)!=TmpContaLiberada)return(false);
     
     //verificar se e data atual esta dentro da data de validade liberada para uso so robo
          if(TimeCurrent() > TmpDataValidade) return(false);

            
     return(true);
}
;

At.

Daniel

 
Daniel Andrejczuk:

Bom dia!

Sim, é possível, veja um exemplo de uma função que pode te ajudar.

At.

Daniel


Show Daniel.

Na hora que você respondeu eu achei esse código que também achei interessante:


//+------------------------------------------------------------------+
//|                                           AccountProtectedEA.mq5 |
//|                                      Copyright 2012, Investeo.pl |
//|                                           http://www.investeo.pl |
//+------------------------------------------------------------------+
#property copyright "Copyright 2012, Investeo.pl"
#property link      "http://www.investeo.pl"
#property version   "1.00"


const string allowed_broker = "MetaQuotes Software Corp.";
const long allowed_accounts[] = { 979890, 436290, 646490, 225690, 279260 };
                             
int password_status = -1;

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   string broker = AccountInfoString(ACCOUNT_COMPANY);
   long account = AccountInfoInteger(ACCOUNT_LOGIN);
   
   printf("The name of the broker = %s", broker);
   printf("Account number =  %d", account);
   
   if (broker == allowed_broker) 
      for (int i=0; i<ArraySize(allowed_accounts); i++)
       if (account == allowed_accounts[i]) { 
         password_status = 1;
         Print("EA account verified");
         break;
       }
   if (password_status == -1) Print("EA is not allowed to run on this account."); 
    
//---
   return(0);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---  
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
  if (password_status == 1) 
  {
    // password correct
  } 
  }

Me falta agora um entendimento de onde aplicar dentro do meu código.
Ao meu entender devo inserir a partir do "int OnInit()" certo?

Porém o meu código há a inicialização com  void OnInit () .

É "a mesma" coisa?

Abs.

 

Opa, 

Bacana, cada dia vamos aumentando o nosso repertório, tem muitas opções de códigos, vamos vendo gradativamente lapidando o sistema.

Sim, tem que ser no evento OnInit(), seu código estar com void não interfere!

Abraço!

 

Com a meta do dia batida sobra até tempo para programar eim!!!!   heheheh

 

Bom dia, tudo bem? 

Estou tentando proteger um código que fiz também, porem acho que não estou conseguindo!

Eu também havia encontrado esse código que o Japa Trader BR mostrou, adicionei ao meu código, compilei tudo certinho. Só que quando vou rodar o indicador, ele roda normal, troquei o número da minha conta no código, compilei e fui rodar o indicador e ele continuou funcionando normalmente. Era pra nao ter funcionado, correto?

Alguém pode por favor me ajudar?

Sou novo nesse negócio de MQL, ainda estou aprendendo e conhecendo como funciona!

Obrigado a todos!

 
Japa Trader Br:

Show Daniel.

Na hora que você respondeu eu achei esse código que também achei interessante:


Me falta agora um entendimento de onde aplicar dentro do meu código.
Ao meu entender devo inserir a partir do "int OnInit()" certo?

Porém o meu código há a inicialização com  void OnInit () .

É "a mesma" coisa?

Abs.

Seria interessante fazer a verificação por usuário  e senha em lugar de verificar a conta, para que não tenha que atualizar o programa sempre que liberar um novo acesso. Assim em lugar de atualizar o programa pode apenas verificar em uma lista os usuários disponíveis para novas ativações.

 

Bom dia ,

Neste mesmo tópico gostaria de fazer uma liberação via site, alguém sabe se tem como fazer isto, sempre que o robô abrir um novo dia ele verifica se está valido, para fazer um robô por aluguel.


Atenciosamente,

Rodrigo Monteiro

 
Rodrigo Monteiro #:

Bom dia ,

Neste mesmo tópico gostaria de fazer uma liberação via site, alguém sabe se tem como fazer isto, sempre que o robô abrir um novo dia ele verifica se está valido, para fazer um robô por aluguel.


Atenciosamente,

Rodrigo Monteiro

É possível sim, mas a pessoa vai ter que incluir a liberação do site nas opções dela e dai tu usar WebRequest() ou então tu joga isso numa dll já que pra ir pra loja aqui não pode ter nenhum controle adicional.

 
Rodrigo Monteiro #:

Bom dia ,

Neste mesmo tópico gostaria de fazer uma liberação via site, alguém sabe se tem como fazer isto, sempre que o robô abrir um novo dia ele verifica se está valido, para fazer um robô por aluguel.


Atenciosamente,

Rodrigo Monteiro

Procure por Ds Coding eles fazem isso.
Razão: