Limitar robô por horário e/ou numero de operções. - página 3

 
Anderson Almeida:

Descobri a solução, nem precisa programar!

No gerador de experts, tem um módulo de filtro intradiário. Eu já tinha visto, mas achava que ele não limitava os trades.

Na verdade, ele limita a abertura dos trades, mas não necessariamente fecha quando o período termina.

É possível interromper um expert "convencional" usando uma rotina no OnInit (como neste exemplo).

No Wizard, resolvi fazendo a verificação de close e mandando fechar "na unha",tudo dentro do Direction() mesmo.

Tudo sobre Arquitetura de Robôs
Tudo sobre Arquitetura de Robôs
  • 2019.09.06
  • www.mql5.com
Decidi criar esse tópico para concentrar tudo (perguntas, respostas, cases, informações, etc...
 
Willian De Caldas Leite:

Se te ajudar eu uso esse padrao nos meus EA.


cara muito obrigado, entendi perfeitamente a lógica e apliquei aqui deu super certo. muito obrigado.

 
Boa tarde galera, hoje foi o primeiro dia operando com robô, cheguei a ter um lucro de 152 reais e reduziu a 63 reais, haviam dois robôs funcionando, onde descubro qual deles estava operando?
 

Olá pessoal, criei um robo porém estou com dificuldade em alguns tópicos pois gostaria de um robo que trabalhe da seguinte forma.

Se o preço do ativo variar 300 pontos em relação ao preço de abertura do mesmo dia, ele efetua uma ordem.

Por exemplo, o ativo WIN abriu hoje a 1000 pontos, quando ele atingir 1300 pontos gostaria que a EA efetuasse uma ordem. 

 
Rogerio Giannetti Torres #:

Olá,

tres observações:

1) O evento correto para efetuar trades seria on OnTick.

2) O seu teste de data só vai funcionar no primeiro dia do backtest, pois datetime é dia e hora e do jeito que você fez o dia está fixo. A cada novo dia tem que ajustar novamente as datas.

3) PosistionsTotal() é a quantidade de posições abertas no MT5, ou seja de todos EA(s) e todas a operações manuais que você fez. Você quer mesmo fechar tudo?


Olá  Rogerio Giannetti Torres 

 Como seria essa função para verificar se é um novo dia?

Você poderia me passar uma documentação de como fazer?

Grato

Rogerio Giannetti Torres
Rogerio Giannetti Torres
  • www.mql5.com
Perfil do Trader
 

tks.

 
silmarvc #:

Olá  Rogerio Giannetti Torres 

 Como seria essa função para verificar se é um novo dia?

Você poderia me passar uma documentação de como fazer?

Grato


Uma solução bem simples.


void OnTick()
{

   if(nDias != ((int)TimeCurrent() / PeriodSeconds(PERIOD_D1))) // Novo dia ?
     {
      ...
      ...
      nDias = (int) TimeCurrent() / PeriodSeconds(PERIOD_D1);
     }
...
...
}
 
Willian De Caldas Leite #:

Se te ajudar eu uso esse padrao nos meus EA.


O autor de Clean Code ficaria orgulhoso de você! Incrível o código, parabéns!

 
জচেলিনো #:

Cara, eu fiz assim:

Primeiro declarei as variaveis:

   datetime hora = TimeCurrent(Time);           //-- Capturando hora atual

   TimeToString(hora,TIME_SECONDS);             //-- Normalizacao da Hora Atual

   datetime close_time=D'17:15:00';             //-- Hora limite encerrar posicoes

   TimeToString(close_time,TIME_SECONDS);       //-- Normalizacao da Hora oara encerrar Trades

   datetime hora_limite=D'16:00:00';            //-- Hora limite para operar

   TimeToString(hora_limite,TIME_SECONDS);      //-- Noramlizacao da Hora limite para operar

Depois criei uma logica simples:

if(hora>=close_time && PositionSelect(_Symbol)>=1) 

        {

       //-- Fecha a posicao pelo limite de horario

         trade.PositionClose(ticket,-1);

Esta funcionando corretamente.

[]'s  

Olá amigão, vc declarou as variáveis dentro de qual escopo?

Global?

Depois dos input?

No OnInit?

No OnTick?

Preciso fazer meu EA começar as 9:15 h e parar as 12:00 h ...

Você poderia explicar melhor ou exemplificar melhor?

santoslucimardos2@gmail.com / Whats 19 98963 8783 

 
Willian De Caldas Leite #:

Se te ajudar eu uso esse padrao nos meus EA.


Amigão, testei em um EA e mudei os horários mas me parece que o EA não obedece o tempo imposto no input.

Coloquei para abrir 9:30 e fechar 12:00 mas acho que não aconteceu o fechamento...

Se ajudar meu comentário, não leve a mal!!