Neo traderBot

Neo traderBot

Você sabia?

Abordamos o tema de automatização de estratégias em NTSL, MQL5 e NinjaScript!

Snippets e How-to

Snippets para Localização Temporal

Leitura estimada: 4 minutos 49 views

Esta seção visa apresentar trechos de códigos com funcionalidades relativas à localização temporal da estratégia. Por exemplo, identificar se a atual barra é a primeira barra do dia para verificar gap diário.

Você pode acessar os Snippets diretamente pelo menu lateral direito, ou fazendo CTRL+F (CTRL+L) para localizar algum texto específico na página, uma vez que o conteúdo tende a crescer ao longo do tempo, dificultando a navegação pelo menu.

Caso tenham sugestões de código para acrescentar à lista, gentileza deixar o código nos comentários com o link para seu perfil em rede social (para devido crédito de autoria).

Snippets

Identificação de primeira barra do dia

Algumas estratégias necessitam da identificação da primeira barra do dia (candle) para executar determinada ação ou calcular o gap em relação ao fechamento do dia anterior. Segue abaixo um trecho de código para identificar a primeira barra de um dia.

				
					public override void Update(TickStatus args)
{
	if (HistoryDataSeries.GetTimeUtc(0).ToLocalTime().Date != HistoryDataSeries.GetTimeUtc(1).ToLocalTime().Date)
	{
		DateTime datahora = HistoryDataSeries.GetTimeUtc(0);
    	datahora = datahora.ToLocalTime();
    	Notification.Print("[" + datahora.ToString() + "] - Está é a primeira barra do dia!");
	}			
}
				
			

Identificação de barra por data e hora específicos

Reproduzir vídeo

Este código localiza a barra (candle ou box) por uma data e hora desejados. Onde a hora é referente ao horário de abertura do candle desejado.

Observe que criamos uma variável contendo a data/hora “11:03:00 15/06/2023” para exemplificação de código, mas poderia ser substituído por outras variáveis. E para todos os ticks dessa barra será impressa uma notificação, pois não realizamos um filtro de eventos no método Update.

				
					public override void Update(TickStatus args)
{
	DateTime barra = new DateTime(2023, 6, 15, 11, 03, 0, DateTimeKind.Local);
	if (barra == HistoryDataSeries.GetTimeUtc(0).ToLocalTime())
	{
		DateTime datahora = HistoryDataSeries.GetTimeUtc(0);
    	datahora = datahora.ToLocalTime();
		Notification.Print("[" + datahora.ToString() + "] - Está é a barra desejada!");
	}
}
				
			

Identificação do primeiro tick de uma barra

Este código identifica o primeiro tick de uma barra. Esta tarefa é bem facilitada em EvoCode, tendo em vista a existência do TickStatus de nova barra (IsBar).

				
					public override void Update(TickStatus args)
{
	if (args == TickStatus.IsBar)
	{
		DateTime datahora = HistoryDataSeries.GetTimeUtc(0);
    	datahora = datahora.ToLocalTime();
		Notification.Print("[" + datahora.ToString() + "] - Este é o primeiro tick da barra!");					
	}
}
				
			

Leave a Comment

CONTENTS