Assista a como baixar robôs de negociação gratuitos
Encontre-nos em Telegram!
Participe de nossa página de fãs
Script interessante?
Coloque um link para ele, e permita que outras pessoas também o avaliem
Você gostou do script?
Avalie seu funcionamento no terminal MetaTrader 5
Visualizações:
83
Avaliação:
(8)
Publicado:
Atualizado:
Freelance MQL5 Precisa de um robô ou indicador baseado nesse código? Solicite-o no Freelance Ir para Freelance

Biblioteca para controle de sessão de negociação. Na inicialização, ela conta os horários das sessões de negociação para todos os 7 dias da semana (pode haver negociação de criptomoedas aos sábados e domingos), até 10 sessões por dia. Em seguida, em OnTick(), você pode fazer verificações e, se um tick estiver fora da sessão de negociação, você pode encerrar o processamento.

Exemplo de uso:

//+------------------------------------------------------------------+
//|testControl_Trade_Sessions.mq5
//+------------------------------------------------------------------+
// #definir LoadSessionFromInputs // Ler sessões de entradas
#include <Forester\Control_Trade_Sessions.mqh> // conectar o código para controlar a sessão de negociação

int OnInit()  {   return(INIT_SUCCEEDED);  }

void OnTick() {
  static TRADE_SESSIONS TradeSession(_Symbol);// obtém os horários de abertura/fechamento do mercado e os salva em matrizes por dias da semana. Chamado uma vez ao iniciar o Expert Advisor (veja static).
  if(!TradeSession.isSessionTrade(TimeCurrent())){Print("Market closed. OnTick return"); return;}
  
  // suas ações
  }

O resultado é uma impressão como esta:

2022.01.10 00:05:00   Day: 0 Trade sessions: 1: 00:00-00:00 - это воскресенье
2022.01.10 00:05:00   Day: 1 Trade sessions: 1: 00:15-23:55
2022.01.10 00:05:00   Day: 2 Trade sessions: 1: 00:15-23:55
2022.01.10 00:05:00   Day: 3 Trade sessions: 1: 00:15-23:55
2022.01.10 00:05:00   Day: 4 Trade sessions: 1: 00:15-23:55
2022.01.10 00:05:00   Day: 5 Trade sessions: 1: 00:15-23:55
2022.01.10 00:05:00   Day: 6 Trade sessions: 1: 00:00-00:00
2022.05.30 00:05:00   Market closed. OnTick return
2022.05.30 00:05:01   Market closed. OnTick return
...
2022.05.30 00:14:36   Market closed. OnTick return
2022.05.30 00:14:40   Market closed. OnTick return
2022.05.30 23:55:00   Market closed. OnTick return
2022.05.30 23:55:00   Market closed. OnTick return
...
2022.05.30 23:59:30   Market closed. OnTick return
2022.05.31 00:00:01   Market closed. OnTick return
...

O código foi criado durante o trabalho em um dos projetos. Decidi separá-lo em uma biblioteca para conectá-lo a qualquer outro projeto.
Novas funções MQL5 são usadas para ler a sessão de negociação de qualquer dia, incluindo fins de semana.
Funciona o mais rápido possível, apenas uma verificação é feita em cada tick dentro da sessão de negociação:
.
if(time < this.NextTradeStop ) { return true; }
Onde NextTradeStop é o horário de término da sessão de negociação atual.

A cada tick fora da sessão de negociação, também é feita uma verificação:
if(time < this.NextTradeStart ) { return false; }
Somente na transição entre as sessões, as matrizes são acessadas para obter o horário da próxima sessão.

Por exemplo, no meu CD, a sessão de negociação é das 00:15 às 23:55. Com o primeiro tick após 00:15, NextTradeStop será definido como 23:55 e, então, somente essa condição será verificada durante todo o dia.

Suas sessõesde negociação

Você também pode especificar o horário das sessões de negociação manualmente. Para ativar essa opção, adicione a linha
.
#define  LoadSessionFromInputs // Ler sessões de entradas

Ela criará 7 entradas para inserir as sessões de negociação por dia da semana.

Digite os horários das sessões sem espaços, estritamente com : - e ,

A aparência é a seguinte na guia de parâmetros:



E é assim que a saída será exibida no registro:
TradeSessionsMonday=00:15-17:45,17:55-23:55
TradeSessionsTuesday=00:15-23:55
TradeSessionsWednesday=00:10-17:45,17:55-23:00,23:05-23:55
TradeSessionsThursday=00:15-17:45,17:55-23:55
TradeSessionsFriday=00:15-23:55
TradeSessionsSaturday=00:15-23:55
TradeSessionsSunday=
EURUSD : ticks reais começam a partir de 2022.05.10 00:00:00, cada geração de ticks usada
2022.01.10 00:05:00 Dia: 1 Sessões de negociação: 1: 00:15-17:45, 2: 17:55-23:55
2022.01.10 00:05:00 Dia: 2 Sessões de negociação: 1: 00:15-23:55
2022.01.10 00:05:00 Dia: 3 Sessões de negociação: 1: 00:10-17:45, 2: 17:55-23:00, 3: 23:05-23:55
2022.01.10 00:05:00 Dia: 4 Sessões de negociação: 1: 00:15-17:45, 2: 17:55-23:55
2022.01.10 00:05:00 Dia: 5 Sessões de negociação: 1: 00:15-23:55
2022.01.10 00:05:00 Dia: 6 Sessões de negociação: 1: 00:15-23:55
2022.01.10 00:05:00 Mercado fechado. OnTick return
...

Se o horário de término da sessão for menor que o horário de início, por exemplo, 20:00-8:00, a sessão continuará até as 8:00 do dia seguinte. Isso pode ser útil nos casos em que a sessão de negociação estiver em um fuso horário diferente do horário do servidor.

O horário das sessões de negociação também pode ser especificado no código sem entradas. A função LoadFromInputs() foi criada para essa finalidade. Ela pode ser chamada sem Inputs, mas diretamente do código com uma matriz de strings, como no exemplo.

string s=["00:15-17:45,17:55-23:55","00:00-24:00",....] 
void LoadFromInputs(string &s[]){...}


Se o Expert Advisor for multimoeda e diferentes instrumentos tiverem diferentes horários de sessão de negociação, você poderá criar uma instância separada de TRADE_SESSIONS para cada instrumento e chamar LoadFromInputs() com dados de sessão e verificar isSessionTrade(). Para fazer isso, você terá de modificar o código de forma semelhante a este exemplo.

Traduzido do russo pela MetaQuotes Ltd.
Publicação original: https://www.mql5.com/ru/code/48059

Candle Fitness Candle Fitness

O conceito Candlestick Fitness é usado na codificação de HFT Algos com base em algoritmos de otimização de população.

Voitto Tappio Candle Gain Candle Loss MT5 Voitto Tappio Candle Gain Candle Loss MT5

Mostre o ganho e a perda do candle em porcentagem.

Moving Averages-14 different types Moving Averages-14 different types

Esse é um indicador que calcula 14 tipos de médias móveis com base no preço de fechamento.

Confluence Index Stoch+RSI+MACD Confluence Index Stoch+RSI+MACD

Índice de Confluência MULTI TF Stoch+RSI+MACD