- www.mql5.com
- Proteção de Indicadores
- Indicador com topos e fundos
- Ajuda na codificação
Olá Leandro, tudo bem?
Você está na comunidade portuguesa da MQL5, então poste em português para que um moderador não o chame a atenção ou, pior, apague seu post :)
Com respeito a proteger sua ferramenta existe várias formas, e depende de como é sua ferramenta.
Se você deseja fazer um período trial, por exemplo, pode criar uma data X e utilizar o comando TimeCurrent() para checar quando chega a expiração.
Outra forma é pedir o(s) número(s) da(s) conta(s) do seu(s) cliente(s) e cadastrar na sua ferramenta, de forma que ela verifica se é a conta cadastrada.
O modo como é apresentado naquele artigo é muito complexo, existem formas bem mais simples de se fazer isso.
Olá Leandro, tudo bem?
Você está na comunidade portuguesa da MQL5, então poste em português para que um moderador não o chame a atenção ou, pior, apague seu post :)
Com respeito a proteger sua ferramenta existe várias formas, e depende de como é sua ferramenta.
Se você deseja fazer um período trial, por exemplo, pode criar uma data X e utilizar o comando TimeCurrent() para checar quando chega a expiração.
Outra forma é pedir o(s) número(s) da(s) conta(s) do seu(s) cliente(s) e cadastrar na sua ferramenta, de forma que ela verifica se é a conta cadastrada.
O modo como é apresentado naquele artigo é muito complexo, existem formas bem mais simples de se fazer isso.
Boa noite Thiago, tudo bem?
Então, meu indicador é bem simples, é baseado em RSI. É o segundo que eu faço pro meu próprio uso.
Como estou conhecendo a programação MQL, estou estudando e pesquisando sobre.
Achei esse artigo sobre proteção e gostaria de proteger a minha por segurança e principalmente, conhecer como funciona o código!
Tentei adicionar a proteção por numero ID do meu meta trader, para que ele funcione somente no meu ID. Mas quando colo aqueles códigos do artigo e compilo meu programa, ele dá um erro!
Pode me ajudar com essa forma mais simples? E muito obrigado por responder e pela dica do idioma!
Boa noite Thiago, tudo bem?
Então, meu indicador é bem simples, é baseado em RSI. É o segundo que eu faço pro meu próprio uso.
Como estou conhecendo a programação MQL, estou estudando e pesquisando sobre.
Achei esse artigo sobre proteção e gostaria de proteger a minha por segurança e principalmente, conhecer como funciona o código!
Tentei adicionar a proteção por numero ID do meu meta trader, para que ele funcione somente no meu ID. Mas quando colo aqueles códigos do artigo e compilo meu programa, ele dá um erro!
Pode me ajudar com essa forma mais simples? E muito obrigado por responder e pela dica do idioma!
Claro, ajudo sim! Você pode fazer de várias formas. As duas mais simples que consigo pensar são:
1) Verificar a conta:
uint conta = 12345 void OnStart() { if (AccountInfoInteger(ACCOUNT_LOGIN) != conta) { Alert("Conta não cadastrada!"); // Fecha o programa } }
2) Verifica o titular (no caso você):
string titular; void OnStart() { titular = StringSubstr(AccountInfoString(ACCOUNT_NAME),0,6); //Recorta 6 caracteres do nome do titular, nesse caso Thiago if (titular != "Thiago") { Alert("A conta não é sua!"); } }
Claro, ajudo sim! Você pode fazer de várias formas. As duas mais simples que consigo pensar são:
1) Verificar a conta:
2) Verifica o titular (no caso você):
Muito Obrigado Thiago! Vou testar aqui se consigo proteger o indicador!
Estou conhecendo MQL agora, então tenho que aprender muita coisa ainda! rsrsr
Mais uma vez obrigado e tenha um ótimo final de semana!
Abraço!
PS. Thiago, tentei aqui e nao consegui ainda! rsrs
Mas, onde eu coloco esse código? Fiz aqui mas nao deu certo! Desculpe destas perguntas bobas, mas estou começado agora e descobrindo as coisas ainda!
//+------------------------------------------------------------------+ //| Sinal.mq5 | //| Leandro Camargo | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Leandro Camargo" #property link "https://www.mql5.com" #property version "1.00" #property indicator_chart_window #property indicator_buffers 3 #property indicator_plots 3 //--- plot Venda #property indicator_label1 "Venda" #property indicator_type1 DRAW_ARROW #property indicator_color1 clrRed #property indicator_style1 STYLE_SOLID #property indicator_width1 1 //--- plot Compra #property indicator_label2 "Compra" #property indicator_type2 DRAW_ARROW #property indicator_color2 clrGreen #property indicator_style2 STYLE_SOLID #property indicator_width2 1 //--- plot Sinal #property indicator_label3 "Sinal" #property indicator_type3 DRAW_NONE #property indicator_color3 clrWhiteSmoke #property indicator_style3 STYLE_SOLID #property indicator_width3 1 //--- input parameters input int periodos=14; //--- indicator buffers double VendaBuffer[]; double CompraBuffer[]; double SinalBuffer[]; //--------------- //Chave //--------------- uint conta = 123456 void OnStart() { if (AccountInfoInteger(ACCOUNT_LOGIN) != conta) { Alert("Conta não cadastrada!"); // Fecha o programa } } //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- indicator buffers mapping SetIndexBuffer(0,VendaBuffer,INDICATOR_DATA); SetIndexBuffer(1,CompraBuffer,INDICATOR_DATA); SetIndexBuffer(2,SinalBuffer,INDICATOR_DATA);
- www.mql5.com
Aqueles dois exemplos que mandei são em forma de script rsrsr.
Você primeiro vai declarar a variável conta, fez corretamente
colocando no âmbito global. Você só muda o valor da variável conta, que é "123456" para o número da sua conta na corretora :)
Agora a condição você precisa tirar do âmbito global e colocar no OnInit.
Só esse pedaço você coloca no OnInit:
if (AccountInfoInteger(ACCOUNT_LOGIN) != conta) { Alert("Conta não cadastrada!"); return(INIT_FAILED); //Fecha o programa }
Aqueles dois exemplos que mandei são em forma de script rsrsr.
Você primeiro vai declarar a variável conta, fez
corretamente
colocando
no âmbito global. Você só muda o valor da variável conta, que é "123456" para o número da sua conta na corretora :)
Agora
a condição você precisa tirar do âmbito global e colocar no OnInit.
Só esse pedaço você coloca no OnInit:
olha como eu fiz:
//+------------------------------------------------------------------+ //| Entradas de Sinal.mq5 | //| Leandro Camargo | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Leandro Camargo" #property link "https://www.mql5.com" #property version "1.00" #property indicator_chart_window #property indicator_buffers 3 #property indicator_plots 3 //--- plot Venda #property indicator_label1 "Venda" #property indicator_type1 DRAW_ARROW #property indicator_color1 clrRed #property indicator_style1 STYLE_SOLID #property indicator_width1 1 //--- plot Compra #property indicator_label2 "Compra" #property indicator_type2 DRAW_ARROW #property indicator_color2 clrGreen #property indicator_style2 STYLE_SOLID #property indicator_width2 1 //--- plot Sinal #property indicator_label3 "Sinal" #property indicator_type3 DRAW_NONE #property indicator_color3 clrWhiteSmoke #property indicator_style3 STYLE_SOLID #property indicator_width3 1 //--- input parameters input int periodos=14; //--- indicator buffers double VendaBuffer[]; double CompraBuffer[]; double SinalBuffer[]; //--------------- //Chave //--------------- uint conta = 20975302 //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int OnInit() if (AccountInfoInteger(ACCOUNT_LOGIN) != conta) { Alert("Conta não cadastrada!"); return(INIT_FAILED); //Fecha o programa } { //--- indicator buffers mapping SetIndexBuffer(0,VendaBuffer,INDICATOR_DATA); SetIndexBuffer(1,CompraBuffer,INDICATOR_DATA); SetIndexBuffer(2,SinalBuffer,INDICATOR_DATA); //--- setting a code from the Wingdings charset as the property of PLOT_ARROW PlotIndexSetInteger(0,PLOT_ARROW,234); PlotIndexSetInteger(1,PLOT_ARROW,233); //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int OnCalculate(const int rates_total, const int prev_calculated,
os erros estão no anexo!
Obrigado pela ajuda!
Não esquenta, to aqui pra ajudar, amo conversar sobre programação :D
O erro é simples, basta mover aquela chave aberta para a parte superior da condição como mostra a imagem:
[Editado pelo Moderador]
- 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