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.

//----------------------//
// 7. CORE
//----------------------//

// 7. 1 OnTick():

void OnTick()
{
// 1. Fechar todas as posições abertas quando do início do horário restrito.
if (HorarioRestrito()) {
// Fechar TODAS as posições dos dois magics
Fechar_Posicoes(POSITION_TYPE_BUY, InpMagicnumber1);
Fechar_Posicoes(POSITION_TYPE_SELL, InpMagicnumber1);
Fechar_Posicoes(POSITION_TYPE_BUY, InpMagicnumber2);
Fechar_Posicoes(POSITION_TYPE_SELL, InpMagicnumber2);
return; // Não abrir novas operações durante o horário restrito
}
// 2. Obter o tick atual
if(!SymbolInfoTick(_Symbol, currentTick)) {
Print("OnTick - Erro ao obter tick atual.");
return;
}
// 3. Verificar spread (em pontos)
double spread = NormalizeDouble((currentTick.ask - currentTick.bid) / Point, Digits);
if(spread > 30) {
DEBUG("Spread inválido, linha: " + string(spread));
Print("Spread inválido, valor: ", spread);
return;
}

// 4. Atualizar apenas no fechamento de cada candle M5
if(IsNewCandle(PERIOD_M5))
{
// Obter o preço atual
SymbolInfoTick(_Symbol, currentTick);

// Identificar topos e fundos para todos os timeframes
IdentificarToposFundos(PERIOD_M15, topo_M15, fundo_M15, time_topo_M15, time_fundo_M15);
IdentificarToposFundos(PERIOD_H1, topo_H1, fundo_H1, time_topo_H1, time_fundo_H1);
IdentificarToposFundos(PERIOD_H4, topo_H4, fundo_H4, time_topo_H4, time_fundo_H4);
IdentificarToposFundos(PERIOD_D1, topo_D1, fundo_D1, time_topo_D1, time_fundo_D1);
IdentificarToposFundos(PERIOD_W1, topo_W1, fundo_W1, time_topo_W1, time_fundo_W1);

// Desenhar suportes e resistências
DesenharSuportesResistencias();

// DEBUG: Informar no log
Print("Suportes e Resistências atualizados no fechamento do candle M5 - ", TimeToString(TimeCurrent()));
}

// 5. Atualizar indicadores
AtualizarIndicadores();
// 6. Checar histórico de operações por Magic
Checar_Historico();
// 7. Verificar horários permitidos
if(HorarioRestrito()) {
return;
}
// 8. Verificar bloqueio por Magic Number
bool magic1Bloqueado = Magic_Bloqueado(InpMagicnumber1);
bool magic2Bloqueado = Magic_Bloqueado(InpMagicnumber2);
if(magic1Bloqueado && magic2Bloqueado) {
return;
}
// 9. Atualizar total de posições abertas
int totalPositions = PositionsTotal();
if(totalPositions < 0) {
Print("OnTick - Erro ao obter número de posições.");
return;
}
// --- EXECUÇÃO DAS ESTRATÉGIAS ---
// 10. Estratégia 1 (se não estiver bloqueada)
if(!magic1Bloqueado) {
Executar_Condicao1();
}
// 11. Estratégia 2 (se não estiver bloqueada)
if(!magic2Bloqueado) {
Executar_Condicao2();
}
}
// 7.2 OnDeinit():
void OnDeinit(const int reason)
{
// Limpar todos os objetos gráficos criados
LimparObjetosAntigos();
Print("EA de Suportes e Resistências removido - objetos limpos");
}

Código Bloco 7