DISCLAIMER – USO DE CÓDIGOS MQL5
Todo o conteúdo disponibilizado nesta página, incluindo, mas não se limitando a códigos-fonte em linguagem MQL5, exemplos de implementação, funções, rotinas, módulos e estruturas de robôs de negociação automatizada, tem finalidade exclusivamente educacional, acadêmica e demonstrativa.
Os códigos aqui apresentados NÃO devem, em hipótese alguma, ser utilizados em contas reais de negociação, seja parcial ou integralmente, sob pena de total responsabilidade do usuário por quaisquer perdas financeiras, danos patrimoniais, falhas operacionais, mau funcionamento de plataformas, bloqueios de conta, inconsistências de execução, slippage, requotes, falhas de corretoras ou quaisquer outros riscos inerentes à atividade de trading automatizado.
O uso dos códigos é estritamente permitido apenas em ambiente simulado (Conta de Demonstração – DEMO) do MetaTrader 5 (MT5), com objetivo de estudo, aprendizado, testes controlados e validação técnica de conceitos de programação e lógica de mercado.
O proprietário do site, bem como seus desenvolvedores, autores, colaboradores e representantes legais:
Não se responsabilizam por perdas financeiras de qualquer natureza;
Não oferecem garantia de rentabilidade, desempenho, estabilidade, integridade ou adequação dos códigos a qualquer finalidade específica;
Não prestam consultoria financeira, de investimentos ou recomendações de trading;
Não se responsabilizam por decisões operacionais tomadas com base direta ou indireta nos códigos aqui apresentados.
O usuário declara estar ciente de que operações no mercado financeiro envolvem riscos elevados, podendo resultar na perda total do capital investido, e que qualquer utilização dos códigos fora do ambiente educacional simulado é feita por conta e risco exclusivamente do usuário.
Ao acessar, copiar, estudar, modificar ou executar qualquer trecho de código disponibilizado nesta página, o usuário declara concordar integralmente com os termos deste aviso de isenção de responsabilidade (Disclaimer).
Caso o usuário não concorde com qualquer dos termos acima, deverá interromper imediatamente o acesso a este conteúdo e abster-se de utilizar os códigos aqui disponibilizados.
Código Bloco 2
//---------------------------------------//
// 2. VOLATILIDADE DE MERCADO //
//--------------------------------------//
// 2.1 Função OnTime: Evento Calendário Econômico, verifica se o período de restrição e de alta volatilidade estão ativos.
int Ontime() {
datetime agora = TimeCurrent();
for (int i = 0; i < ArraySize(AltavolatilidadeInicio); i++) {
// Se estiver dentro do período de alta volatilidade.
if (agora >= AltavolatilidadeInicio[i] && agora <= AltavolatilidadeFim[i]) {
Print("Em alta volatilidade: ", AltavolatilidadeInicio[i], " a ", AltavolatilidadeFim[i]);
return 2;
}
// Se estiver dentro do período de restrição (60 minutos antes do evento).
if (agora >= AltavolatilidadeInicio[i] - 30 * 60 && agora < AltavolatilidadeInicio[i]) {
Print("Período restrito: ", AltavolatilidadeInicio[i] - 30 * 60, " até ", AltavolatilidadeInicio[i]);
return 1;
}
}
return 0; // Fora de alta volatilidade e fora da restrição.
}
/* Retorna 2: Período de Calendário Econômico;
Retorna 1: Período anterior ao Calendário Econômico, 60min; e
Retorna 0: Período fora de restrição.
Constantes de períodos de Calendário Econômico (forma adotada para execução de testes em momentos pretéritos):
*/
datetime AltavolatilidadeInicio[] = {
D'2025.01.02 15:29:55', D'2025.01.02 16:44:55', D'2025.01.03 16:59:55', D'2025.01.06 16:44:55', D'2025.01.07 15:29:55',
D'2025.01.07 16:59:55', D'2025.01.08 15:14:55', D'2025.01.08 15:29:55', D'2025.01.08 20:59:55', D'2025.01.10 15:29:55',
D'2025.01.10 16:59:55', D'2025.01.14 15:29:55', D'2025.01.15 15:29:55', D'2025.01.16 15:29:55', D'2025.01.17 15:29:55',
D'2025.01.20 18:59:55', D'2025.01.23 15:29:55', D'2025.01.24 16:44:55', D'2025.01.24 16:59:55', D'2025.01.27 16:59:55',
D'2025.01.28 15:29:55', D'2025.01.29 15:29:55', D'2025.01.29 20:59:55', D'2025.01.29 21:29:55', D'2025.01.30 15:29:55',
D'2025.01.31 15:29:55', D'2025.02.03 16:44:55', D'2025.02.03 16:59:55', D'2025.02.04 16:59:55', D'2025.02.05 15:14:55',
D'2025.02.05 16:44:55', D'2025.02.05 16:59:55', D'2025.02.06 15:29:55', D'2025.02.07 15:29:55', D'2025.02.07 16:59:55',
D'2025.02.11 16:59:55', D'2025.02.12 15:29:55', D'2025.02.12 16:59:55', D'2025.02.13 15:29:55', D'2025.02.14 15:29:55',
D'2025.02.18 15:29:55', D'2025.02.19 15:29:55', D'2025.02.19 20:59:55', D'2025.02.20 15:29:55', D'2025.02.21 16:44:55',
D'2025.02.21 16:59:55', D'2025.02.26 16:59:55', D'2025.02.27 15:29:55', D'2025.02.28 15:29:55', D'2025.03.03 16:44:55',
D'2025.03.03 16:59:55', D'2025.03.05 15:14:55', D'2025.03.05 16:44:55', D'2025.03.05 16:59:55', D'2025.03.06 15:29:55',
D'2025.03.07 15:29:55', D'2025.03.07 19:29:55', D'2025.03.11 15:59:55', D'2025.03.12 14:29:55', D'2025.03.13 14:29:55',
D'2025.03.14 15:59:55', D'2025.03.17 14:29:55', D'2025.03.18 14:29:55', D'2025.03.19 19:59:55', D'2025.03.19 20:29:55',
D'2025.03.20 14:29:55', D'2025.03.20 15:59:55', D'2025.03.24 15:44:55', D'2025.03.25 15:59:55', D'2025.03.26 14:29:55',
D'2025.03.27 14:29:55', D'2025.03.28 14:29:55', D'2025.03.28 15:59:55', D'2025.04.01 15:44:55', D'2025.04.01 15:59:55',
D'2025.04.02 14:14:55', D'2025.04.02 21:59:55', D'2025.04.03 14:29:55', D'2025.04.03 15:44:55', D'2025.04.03 15:59:55',
D'2025.04.04 14:29:55', D'2025.04.04 17:24:55', D'2025.04.09 19:59:55', D'2025.04.10 14:29:55', D'2025.04.11 14:29:55',
D'2025.04.11 15:59:55', D'2025.04.15 14:29:55', D'2025.04.16 14:29:55', D'2025.04.16 19:29:55', D'2025.04.17 14:29:55',
D'2025.04.23 15:44:55', D'2025.04.23 15:59:55', D'2025.04.24 14:29:55', D'2025.04.24 15:59:55', D'2025.04.25 15:59:55',
D'2025.04.29 14:29:55', D'2025.04.29 15:59:55', D'2025.04.30 14:14:55', D'2025.04.30 14:29:55', D'2025.04.30 15:59:55',
D'2025.05.01 14:29:55', D'2025.05.01 15:44:55', D'2025.05.01 15:59:55', D'2025.05.02 14:29:55', D'2025.05.05 15:44:55',
D'2025.05.05 15:59:55', D'2025.05.07 19:59:55', D'2025.05.07 20:29:55', D'2025.05.08 14:29:55', D'2025.05.13 14:29:55',
D'2025.05.15 14:29:55', D'2025.05.16 14:29:55', D'2025.05.16 15:59:55', D'2025.05.22 14:29:55', D'2025.05.22 15:44:55',
D'2025.05.22 15:59:55', D'2025.05.23 15:59:55', D'2025.05.27 14:29:55', D'2025.05.28 19:59:55', D'2025.05.29 14:29:55',
D'2025.05.30 14:29:55', D'2025.05.30 15:59:55', D'2025.06.02 15:44:55', D'2025.06.02 15:59:55', D'2025.06.03 15:59:55',
D'2025.06.04 14:14:55', D'2025.06.04 15:44:55', D'2025.06.04 15:59:55', D'2025.06.05 14:29:55', D'2025.06.06 14:29:55',
D'2025.06.11 14:29:55', D'2025.06.12 14:29:55', D'2025.06.13 15:59:55', D'2025.06.16 14:29:55', D'2025.06.17 14:29:55',
D'2025.06.18 14:29:55', D'2025.06.18 19:59:55', D'2025.06.18 20:29:55', D'2025.06.19 14:29:55', D'2025.06.23 15:44:55',
D'2025.06.23 15:59:55'
};
datetime AltavolatilidadeFim[] = {
D'2025.01.02 15:35:00', D'2025.01.02 16:50:00', D'2025.01.03 17:05:00', D'2025.01.06 16:50:00', D'2025.01.07 15:35:00',
D'2025.01.07 17:05:00', D'2025.01.08 15:20:00', D'2025.01.08 15:35:00', D'2025.01.08 21:05:00', D'2025.01.10 15:35:00',
D'2025.01.10 17:05:00', D'2025.01.14 15:35:00', D'2025.01.15 15:35:00', D'2025.01.16 15:35:00', D'2025.01.17 15:35:00',
D'2025.01.20 19:05:00', D'2025.01.23 15:35:00', D'2025.01.24 16:50:00', D'2025.01.24 17:05:00', D'2025.01.27 17:05:00',
D'2025.01.28 15:35:00', D'2025.01.29 15:35:00', D'2025.01.29 21:05:00', D'2025.01.29 21:35:00', D'2025.01.30 15:35:00',
D'2025.01.31 15:35:00', D'2025.02.03 16:50:00', D'2025.02.03 17:05:00', D'2025.02.04 17:05:00', D'2025.02.05 15:20:00',
D'2025.02.05 16:50:00', D'2025.02.05 17:05:00', D'2025.02.06 15:35:00', D'2025.02.07 15:35:00', D'2025.02.07 17:05:00',
D'2025.02.11 17:05:00', D'2025.02.12 15:35:00', D'2025.02.12 17:05:00', D'2025.02.13 15:35:00', D'2025.02.14 15:35:00',
D'2025.02.18 15:35:00', D'2025.02.19 15:35:00', D'2025.02.19 21:05:00', D'2025.02.20 15:35:00', D'2025.02.21 16:50:00',
D'2025.02.21 17:05:00', D'2025.02.26 17:05:00', D'2025.02.27 15:35:00', D'2025.02.28 15:35:00', D'2025.03.03 16:50:00',
D'2025.03.03 17:05:00', D'2025.03.05 15:20:00', D'2025.03.05 16:50:00', D'2025.03.05 17:05:00', D'2025.03.06 15:35:00',
D'2025.03.07 15:35:00', D'2025.03.07 19:35:00', D'2025.03.11 16:05:00', D'2025.03.12 14:35:00', D'2025.03.13 14:35:00',
D'2025.03.14 16:05:00', D'2025.03.17 14:35:00', D'2025.03.18 14:35:00', D'2025.03.19 20:05:00', D'2025.03.19 20:35:00',
D'2025.03.20 14:35:00', D'2025.03.20 16:05:00', D'2025.03.24 15:50:00', D'2025.03.25 16:05:00', D'2025.03.26 14:35:00',
D'2025.03.27 14:35:00', D'2025.03.28 14:35:00', D'2025.03.28 16:05:00', D'2025.04.01 15:50:00', D'2025.04.01 16:05:00',
D'2025.04.02 14:20:00', D'2025.04.02 22:05:00', D'2025.04.03 14:35:00', D'2025.04.03 15:50:00', D'2025.04.03 16:05:00',
D'2025.04.04 14:35:00', D'2025.04.04 17:30:00', D'2025.04.09 20:05:00', D'2025.04.10 14:35:00', D'2025.04.11 14:35:00',
D'2025.04.11 16:05:00', D'2025.04.15 14:35:00', D'2025.04.16 14:35:00', D'2025.04.16 19:35:00', D'2025.04.17 14:35:00',
D'2025.04.23 15:50:00', D'2025.04.23 16:05:00', D'2025.04.24 14:35:00', D'2025.04.24 16:05:00', D'2025.04.25 16:05:00',
D'2025.04.29 14:35:00', D'2025.04.29 16:05:00', D'2025.04.30 14:20:00', D'2025.04.30 14:35:00', D'2025.04.30 16:05:00',
D'2025.05.01 14:35:00', D'2025.05.01 15:50:00', D'2025.05.01 16:05:00', D'2025.05.02 14:35:00', D'2025.05.05 15:50:00',
D'2025.05.05 16:05:00', D'2025.05.07 20:05:00', D'2025.05.07 20:35:00', D'2025.05.08 14:35:00', D'2025.05.13 14:35:00',
D'2025.05.15 14:35:00', D'2025.05.16 14:35:00', D'2025.05.16 16:05:00', D'2025.05.22 14:35:00', D'2025.05.22 15:50:00',
D'2025.05.22 16:05:00', D'2025.05.23 16:05:00', D'2025.05.27 14:35:00', D'2025.05.28 20:05:00', D'2025.05.29 14:35:00',
D'2025.05.30 14:35:00', D'2025.05.30 16:05:00', D'2025.06.02 15:50:00', D'2025.06.02 16:05:00', D'2025.06.03 16:05:00',
D'2025.06.04 14:20:00', D'2025.06.04 15:50:00', D'2025.06.04 16:05:00', D'2025.06.05 14:35:00', D'2025.06.06 14:35:00',
D'2025.06.11 14:35:00', D'2025.06.12 14:35:00', D'2025.06.13 16:05:00', D'2025.06.16 14:35:00', D'2025.06.17 14:35:00',
D'2025.06.18 14:35:00', D'2025.06.18 20:05:00', D'2025.06.18 20:35:00', D'2025.06.19 14:35:00', D'2025.06.23 15:50:00',
D'2025.06.23 16:05:00'
};
// 2.2 Função HorarioRestrito(): Horário de restrição de operações para evitar Gap de preços na abertura do pregão.
bool HorarioRestrito() {
datetime agora = TimeCurrent();
MqlDateTime horarioLocal;
TimeToStruct(agora, horarioLocal);
int horaInicio = RestricaoHoraInicio;
int minutoInicio = RestricaoMinutoInicio;
int horaFim = RestricaoHoraFim;
int minutoFim = RestricaoMinutoFim;
// Verifica se o horário atual está dentro do intervalo restrito.
bool horarioRestrito = false;
if (horaFim < horaInicio || (horaFim == horaInicio && minutoFim < minutoInicio)) {
// Intervalo atravessando a meia-noite.
if ((horarioLocal.hour >= horaInicio || (horarioLocal.hour == horaInicio && horarioLocal.min >= minutoInicio)) ||
(horarioLocal.hour < horaFim || (horarioLocal.hour == horaFim && horarioLocal.min <= minutoFim))) {
horarioRestrito = true;
}
} else {
// Caso normal.
if ((horarioLocal.hour > horaInicio || (horarioLocal.hour == horaInicio && horarioLocal.min >= minutoInicio)) &&
(horarioLocal.hour < horaFim || (horarioLocal.hour == horaFim && horarioLocal.min <= minutoFim))) {
horarioRestrito = true;
}
}
if (horarioRestrito) {
PrintFormat("Horário restrito (GAP): %02d:%02d até %02d:%02d", horaInicio, minutoInicio, horaFim, minutoFim);
// Fechar todas as posições abertas dos 4 Magic Numbers.
for (int i = PositionsTotal() - 1; i >= 0; i--) {
ulong ticket = PositionGetTicket(i); // Obtém o ticket da posição.
if (ticket > 0) { // Certifica-se de que o ticket é válido.
string symbol = PositionGetString(POSITION_SYMBOL); // Obtém o símbolo da posição.
if (PositionSelect(symbol)) { // Seleciona a posição pelo símbolo.
long magic = PositionGetInteger(POSITION_MAGIC); // Obtém o Magic Number.
// Fechar somente se o Magic Number for um dos especificados.
if (magic == InpMagicnumber1 || magic == InpMagicnumber2 ||
magic == InpMagicnumber3) {
if (trade.PositionClose(ticket)) {
Print("Posição fechada devido ao horário restrito. Ticket: ", ticket, " | Magic Number: ", magic);
} else {
Print("Erro ao fechar a posição. Ticket: ", ticket, " | Magic Number: ", magic);
}
}
}
}
}
return true; // Retorna indicando que estamos dentro do horário restrito.
}
return false;
}
Indicadores
Produtos
Artigos
Determine
Estudo Semanal
Robô MQL5
