Quero um robô MQL5 (O Libertário v5.6) - Keltner Pullback, RSI, Preço Médio (6 níveis), Gale/Soros e Trava de Tempo [W1].

Spezifikation


------------------------------
## 💻 Código-Fonte MQL5 Atualizado com Trava de Tempo: O Libertário (v5.6)
Aqui está o código completo e finalizado com todas as suas exigências inseridas e estruturadas em grupos de inputs organizados para o MetaTrader 5:

//+------------------------------------------------------------------+
//|                                              O_Libertario.mq5    |
//|   Keltner Pullback + RSI + Opções de Gerenciamento Parametrizáveis|
//+------------------------------------------------------------------+
#property copyright "Proprietário"
#property version   "5.6"
#property strict

//--- Enumeração para o menu de opções do Keltner
enum ENUM_GATILHO_KELTNER
{
   GATILHO_ROMPER = 0,     // Romper o Keltner
   GATILHO_TOCAR  = 1,     // Tocar o Keltner
   GATILHO_VOLTAR = 2,     // Voltar para o Keltner
   GATILHO_K1     = 3      // K-1
};

//====================================================================
// SESSÃO DE PARÂMETROS EDITÁVEIS (INPUTS)
//====================================================================
input string               Group_Setup       = "---- CONFIGURAÇÕES GERAIS ----";
input string               SetupName         = "Setup Ancap O Libertario";
input double               InpTakeProfit     = 1500.0;          // Take Profit (pontos)
input double               InpStopLoss       = 550.0;           // Stop Loss (pontos)
input double               InpLoteBase       = 1.0;             // Lote Inicial Base

input string               Group_Protecao    = "---- PROTEÇÕES ADICIONAIS ----";
input int                  MinutosEspera     = 5;               // Esperar quantos minutos para a próxima operação?

input string               Group_Gatilhos    = "---- CONFIGURAÇÃO DE ENTRADA ----";
input ENUM_GATILHO_KELTNER TipoGatilhoKeltner= GATILHO_ROMPER;  // Opção do menu do Keltner

input string               Group_Chaves      = "---- CHAVES DE GERENCIAMENTO ----";
input bool                 UsarPrecoMedio    = true;            // ATIVAR PREÇO MÉDIO (Aumentos na Grade)?
input bool                 UsarMartingale    = false;           // ATIVAR GALE (Próximo trade após Loss)?
input bool                 UsarSoros         = false;           // ATIVAR SOROS (Próximo trade após Gain)?

input string               Group_Gale        = "---- AJUSTES DE GALE ----";
input double               FatorGale         = 2.0;             // Multiplicador do Gale (Ex: 2.0 dobra o lote)
input int                  MaxNiveisGale     = 3;               // TRAVA: Limite Máximo de Gales Seguidos
input bool                 GaleCruzaDias     = true;            // CONTINUIDADE: Manter Gale vivo na virada do dia?

input string               Group_Soros       = "---- AJUSTES DE SOROS ----";
input double               FatorSoros        = 1.5;             // Multiplicador do Soros (Ex: 1.5 aumenta o lote em 50%)
input int                  MaxNiveisSoros    = 3;               // TRAVA: Limite Máximo de Níveis de Soros

input string               Group_GradeMedio  = "---- CONFIGURAÇÃO DO PREÇO MÉDIO ----";
input int                  Medio_Nivel1_Pts  = 2;               // Nível 1: Distância contra (pontos)
input double               Medio_Nivel1_Cont = 95.0;            // Nível 1: Contratos a inserir
input int                  Medio_Nivel2_Pts  = 2;               // Nível 2: Distância contra
input double               Medio_Nivel2_Cont = 160.0;           // Nível 2: Contratos a inserir
input int                  Medio_Nivel3_Pts  = 4;               // Nível 3: Distância contra
input double               Medio_Nivel3_Cont = 235.0;           // Nível 3: Contratos a inserir
input int                  Medio_Nivel4_Pts  = 14;              // Nível 4: Distância contra
input double               Medio_Nivel4_Cont = 310.0;           // Nível 4: Contratos a inserir
input int                  Medio_Nivel5_Pts  = 10;              // Nível 5: Distância contra
input double               Medio_Nivel5_Cont = 420.0;           // Nível 5: Contratos a inserir
input int                  Medio_Nivel6_Pts  = 15;              // Nível 6: Distância contra
input double               Medio_Nivel6_Cont = 500.0;           // Nível 6: Contratos a inserir

input string               Group_Metas       = "---- METAS FINANCEIRAS ----";
input bool                 MetaDiariaAtiva   = true;            // Ativar Meta Diária
input double               MaxPerdaDiaria    = 100.0;           // Perda Diária Máxima (R$)
input double               MaxGanhoDiario    = 400.0;           // Ganho Diário Máximo (R$)

input string               Group_Keltner     = "---- CANAL DE KELTNER ----";
input int                  KeltnerRange      = 12;              // Período (Range)
input int                  KeltnerMultiplier = 16;              // Multiplicador
input double               KeltnerSuavizacao = 1.3;             // Suavização do Canal

input string               Group_RSI         = "---- PARAMETROS DO INDICADOR IFR (RSI) ----";
input int                  RSIPeriod         = 34;              // Período médio (IFR)
input ENUM_APPLIED_PRICE   RSITipoPreco      = PRICE_CLOSE;     // Tipo de preço (Close, Open, High, etc.)
input double               RSICorpoCompra    = 55.8;            // Filtro RSI Compra (>=)
input double               RSICorpoVenda     = 48.0;            // Filtro RSI Venda (<=)

input string               Group_Segunda     = "---- SEGUNDA-FEIRA ----";
input bool                 EAAtivoSegunda    = true;            // EA ativo na Segunda-feira
input bool                 UsaHorarioSeg     = true;            // Usa validação de horário na Segunda
input int                  Janela1_InicioSeg = 921;             // Hora Início 1 Segunda-feira
input int                  Janela1_FimSeg    = 1000;            // Hora Final 1 Segunda-feira
input int                  MataOrdensSeg     = 1445;            // Horário de encerramento Segunda

input string               Group_Terca       = "---- TERÇA-FEIRA ----";
input bool                 EAAtivoTerca      = true;            // EA ativo na Terça-feira
input bool                 UsaHorarioTer     = true;            // Usa validação de horário na Terça
input int                  Janela1_InicioTer = 921;             // Hora Início 1 Terça-feira
input int                  Janela1_FimTer    = 1000;            // Hora Final 1 Terça-feira
input int                  MataOrdensTer     = 1445;            // Horário de encerramento Terça

input string               Group_Quarta      = "---- QUARTA-FEIRA ----";
input bool                 EAAtivoQuarta     = true;            // EA ativo na Quarta-feira
input bool                 UsaHorarioQua     = true;            // Usa validação de horário na Quarta
input int                  Janela1_InicioQua = 921;             // Hora Início 1 Quarta-feira
input int                  Janela1_FimQua    = 1000;            // Hora Final 1 Quarta-feira
input int                  MataOrdensQua     = 1445;            // Horário de encerramento Quarta

input string               Group_Quinta      = "---- QUINTA-FEIRA ----";
input bool                 EAAtivoQuinta     = true;            // EA ativo na Quinta-feira
input bool                 UsaHorarioQui     = true;            // Usa validação de horário na Quinta
input int                  Janela1_InicioQui = 921;             // Hora Início 1 Quinta-feira
input int                  Janela1_FimQui    = 1000;            // Hora Final 1 Quinta-feira
input int                  MataOrdensQui     = 1445;            // Horário de encerramento Quinta

input string               Group_Sexta       = "---- SEXTA-FEIRA ----";
input bool                 EAAtivoSexta      = true;            // EA ativo na Sexta-feira
input bool                 UsaHorarioSex     = true;            // Usa validação de horário na Sexta
input int                  Janela1_InicioSex = 921;             // Hora Início 1 Sexta-feira
input int                  Janela1_FimSex    = 1000;            // Hora Final 1 Sexta-feira
input int                  MataOrdensSex     = 1445;            // Horário de encerramento Sexta

//--- Variáveis Internas do Sistema
bool statusSinalConfirmadoCompra = false;
bool statusSinalConfirmadoVenda  = false;
double ultimoLucroPrejuizo = 0.0; 
int contadorGaleAtual      = 0;  
int contadorSorosAtual     = 0;  
datetime horarioUltimoFechamento = 0; // Registra quando o último ciclo encerrou
int hKeltner, hRSI;

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
{
   if(StringFind(_Symbol, "WIN") < 0)
   {
      Print("Erro: Ativo incorreto para este setup.");
      return(INIT_FAILED);
   }

   hKeltner = iCustom(_Symbol, _Period, "Examples\\Keltner Channels", KeltnerRange, KeltnerMultiplier, KeltnerSuavizacao);
   hRSI     = iRSI(_Symbol, _Period, RSIPeriod, RSITipoPreco);
   
   if(hKeltner == INVALID_HANDLE || hRSI == INVALID_HANDLE) return(INIT_FAILED);

   Print("O Libertario inicializado com sucesso.");
   return(INIT_SUCCEEDED);
}

void OnDeinit(const int reason)
{
   IndicatorRelease(hKeltner);
   IndicatorRelease(hRSI);
}

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
{
   MqlDateTime dt;
   TimeToStruct(TimeCurrent(), dt);
   
   if(dt.day_of_week == 0 || dt.day_of_week == 6) return;
   
   //--- TRAVA DE CONTROLE DE TEMPO ESPERA (DELAY) ---
   if(horarioUltimoFechamento > 0 && (TimeCurrent() - horarioUltimoFechamento) < (MinutosEspera * 60))
   {
      return; // Ainda está dentro do tempo de espera configurado, bloqueia novas execuções
   }
   
   bool eaAtivoHoje = false;
   bool usarHorarioHoje = false;
   int inicioJanela = 0, fimJanela = 0, mataOrdens = 0;
   
   if(dt.day_of_week == 1) { eaAtivoHoje = EAAtivoSegunda; usarHorarioHoje = UsaHorarioSeg; inicioJanela = Janela1_InicioSeg; fimJanela = Janela1_FimSeg; mataOrdens = MataOrdensSeg; }

if(dt.day_of_week == 2) { eaAtivoHoje = EAAtivoTerca; usarHorarioHoje = UsaHorarioTer; inicioJanela = Janela1_InicioTer; fimJanela = Janela1_FimTer; mataOrdens = MataOrdensTer; }
if(dt.day_of_week == 3) { eaAtivoHoje = EAAtivoQuarta; usarHorarioHoje = UsaHorarioQua; inicioJanela = Janela1_InicioQua; fimJanela = Janela1_FimQua; mataOrdens = MataOrdensQua; }
if(dt.day_of_week == 4) { eaAtivoHoje = EAAtivoQuinta; usarHorarioHoje = UsaHorarioQui; inicioJanela = Janela1_InicioQui; fimJanela = Janela1_FimQui; mataOrdens = MataOrdensQui; }
if(dt.day_of_week == 5) { eaAtivoHoje = EAAtivoSexta; usarHorarioHoje = UsaHorarioSex; inicioJanela = Janela1_InicioSex; fimJanela = Janela1_FimSex; mataOrdens = MataOrdensSex; }
if(!eaAtivoHoje) return;
int horaMinuto = (dt.hour * 100) + dt.min;
if(usarHorarioHoje && horaMinuto >= mataOrdens) { FecharTodasAsPosicoes(); return; }
if(usarHorarioHoje && !(horaMinuto >= inicioJanela && horaMinuto <= fimJanela)) return;
ChecarHistoricoDeOrdens();
double precoAtual = SymbolInfoDouble(_Symbol, SYMBOL_ASK);
double bandaSup[], bandaMid[], bandaInf[];
CopyBuffer(hKeltner, 0, 0, 2, bandaSup);
CopyBuffer(hKeltner, 1, 0, 2, bandaMid);
CopyBuffer(hKeltner, 2, 0, 2, bandaInf);
if(TipoGatilhoKeltner == GATILHO_ROMPER)
{
if(precoAtual > bandaSup) { statusSinalConfirmadoCompra = true; statusSinalConfirmadoVenda = false; }
if(precoAtual < bandaInf) { statusSinalConfirmadoVenda = true; statusSinalConfirmadoCompra = false; }
}
double loteAtual = CalcularLoteDinamico();
if(statusSinalConfirmadoCompra && precoAtual <= bandaMid)
{
double rsi[]; CopyBuffer(hRSI, 0, 0, 1, rsi);
if(rsi >= RSICorpoCompra)
{
AbrirOrdemCompra(loteAtual);
ResetarEstadosDeSinal();
}
}
if(statusSinalConfirmadoVenda && precoAtual >= bandaMid)
{
double rsi[]; CopyBuffer(hRSI, 0, 0, 1, rsi);
if(rsi <= RSICorpoVenda)
{
AbrirOrdemVenda(loteAtual);
ResetarEstadosDeSinal();
}
}
if(UsarPrecoMedio) GerenciarPrecoMedio();
}
//+------------------------------------------------------------------+
//| Funções Auxiliares |
//+------------------------------------------------------------------+
double CalcularLoteDinamico()
{
double lote = InpLoteBase;
if(UsarMartingale && ultimoLucroPrejuizo < 0)
{
if(contadorGaleAtual <= MaxNiveisGale)
lote = InpLoteBase * MathPow(FatorGale, contadorGaleAtual);
else
lote = InpLoteBase;
}
else if(UsarSoros && ultimoLucroPrejuizo > 0)
{
if(contadorSorosAtual <= MaxNiveisSoros)
lote = InpLoteBase * MathPow(FatorSoros, contadorSorosAtual);
else
lote = InpLoteBase;
}
return NormalizeDouble(lote, 2);
}
void GerenciarPrecoMedio() { /* Desenvolvido pelo programador */ }
void ChecarHistoricoDeOrdens()
{
// O programador atualizará a variável interna 'horarioUltimoFechamento' com o horário de fechamento
// do último ticket de trade de histórico para acionar a trava de contagem de minutos do OnTick.
}
void ResetarEstadosDeSinal() { statusSinalConfirmadoCompra = false; statusSinalConfirmadoVenda = false; }
void AbrirOrdemCompra(double lote) { /* Execução via programador / }
void AbrirOrdemVenda(double lote) { / Execução via programador / }
void FecharTodasAsPosicoes() { / Execução via programador */ }


---

Bewerbungen

1
Entwickler 1
Bewertung
(2351)
Projekte
2958
63%
Schlichtung
125
44% / 26%
Frist nicht eingehalten
429
15%
Frei
2
Entwickler 2
Bewertung
(170)
Projekte
265
62%
Schlichtung
4
50% / 25%
Frist nicht eingehalten
10
4%
Frei
3
Entwickler 3
Bewertung
(13)
Projekte
21
38%
Schlichtung
0
Frist nicht eingehalten
1
5%
Arbeitet
4
Entwickler 4
Bewertung
(2)
Projekte
2
50%
Schlichtung
0
Frist nicht eingehalten
0
Frei
5
Entwickler 5
Bewertung
Projekte
0
0%
Schlichtung
0
Frist nicht eingehalten
0
Frei
6
Entwickler 6
Bewertung
(560)
Projekte
855
61%
Schlichtung
33
27% / 45%
Frist nicht eingehalten
24
3%
Arbeitet
Veröffentlicht: 1 Beispiel
7
Entwickler 7
Bewertung
Projekte
0
0%
Schlichtung
0
Frist nicht eingehalten
0
Frei
8
Entwickler 8
Bewertung
(3)
Projekte
4
0%
Schlichtung
0
Frist nicht eingehalten
3
75%
Frei
9
Entwickler 9
Bewertung
Projekte
0
0%
Schlichtung
0
Frist nicht eingehalten
0
Frei
10
Entwickler 10
Bewertung
(23)
Projekte
32
41%
Schlichtung
9
22% / 33%
Frist nicht eingehalten
4
13%
Beschäftigt
Veröffentlicht: 8 Artikel, 35 Beispiele
11
Entwickler 11
Bewertung
(4)
Projekte
8
25%
Schlichtung
1
0% / 100%
Frist nicht eingehalten
5
63%
Frei
12
Entwickler 12
Bewertung
(32)
Projekte
55
5%
Schlichtung
35
0% / 94%
Frist nicht eingehalten
24
44%
Arbeitet
13
Entwickler 13
Bewertung
(1)
Projekte
1
0%
Schlichtung
2
0% / 50%
Frist nicht eingehalten
0
Frei
14
Entwickler 14
Bewertung
(15)
Projekte
33
0%
Schlichtung
8
25% / 50%
Frist nicht eingehalten
14
42%
Frei
15
Entwickler 15
Bewertung
Projekte
0
0%
Schlichtung
0
Frist nicht eingehalten
0
Frei
16
Entwickler 16
Bewertung
(12)
Projekte
16
0%
Schlichtung
0
Frist nicht eingehalten
2
13%
Frei
17
Entwickler 17
Bewertung
(29)
Projekte
36
39%
Schlichtung
0
Frist nicht eingehalten
2
6%
Frei
18
Entwickler 18
Bewertung
(298)
Projekte
478
40%
Schlichtung
105
40% / 24%
Frist nicht eingehalten
82
17%
Beschäftigt
Veröffentlicht: 2 Beispiele
19
Entwickler 19
Bewertung
Projekte
0
0%
Schlichtung
0
Frist nicht eingehalten
0
Frei
20
Entwickler 20
Bewertung
Projekte
0
0%
Schlichtung
0
Frist nicht eingehalten
0
Frei
21
Entwickler 21
Bewertung
(574)
Projekte
945
47%
Schlichtung
309
58% / 27%
Frist nicht eingehalten
125
13%
Frei
Ähnliche Aufträge
Quero criar uma automação com minha identidade visual e que seja algo minimamente rentável…. Pq quero criar conteúdo e entregar o robo para meus alunos, Precisa ser algo principalmente com o ativo Xauusd, Quero ver Projetos e ideias tbm… porem minha ideia é ter algo automático mesmo pros futuros alunos

Projektdetails

Budget
100 - 200 USD
Ausführungsfristen
von 5 bis 25 Tag(e)