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 Manipulação de Gráficos

Leitura estimada: 6 minutos 110 views

Esta seção visa apresentar trechos de códigos com funcionalidades relativas à manipulação de gráficos.

Você pode acessar os Snippets diretamente pelo menu lateral direito, ou fazendo CRL+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

Como configurar as propriedades de Plots nos Indicadores?

Reproduzir vídeo

Praticamente todas as propriedades de um plot no NinjaScript podem ser definidas no método AddPlot. Este método possui duas sobrecargas.

A primeira versão cria apenas uma linha sólida com cor específica. Na segunda versão de AddPlot, os parâmetros permitem maior flexibilidade na configuração, conforme pode ser visto no exemplo abaixo.

				
					AddPlot(new Stroke(Brushes.LimeGreen, DashStyleHelper.Solid, 1, 10), PlotStyle.Bar, "Plot1");
Plots[0].Autowidth = true;
				
			

No exemplo acima, criamos um plot chamado “Plot1” que é uma barra na cor verde limão, sólida, com opacidade em 10%. Também configuramos a largura da barra para ser a mesma da série de dados do gráfico.

O objeto Stroke permite definir a cor do plot pelo parâmetro da classe Brush, o tipo de traçado pelo parâmetro da classe DashStyleHelper, a espessura e transparência do plot. A transparência é o único parâmetro que não pode ser configurado na interface gráfica.

Existem diversos tipos de plots na NinjaTrader, tais como linhas, barras, gráfico em degrau, linha horizontal, marcações em bloco, cruz, triangulos, pontos. E também é possível não exibir o plot no gráfico, mas apenas no DataBox, passando como parâmetro o tipo PlotStyle.PriceBox.

Como alterar a cor da barra e do fundo do gráfico?

Reproduzir vídeo

Em NinjaScript é possível pintar a barra e o fundo do gráfico utilizando a lógica que desejar. Além disso, você pode em qualquer momento do tempo refazer a pintura de qualquer barra ou fundo de barra no gráfico, o que dá uma grande flexibilidade ao trader programador.

Veja abaixo exemplo de como pintar para o momento atual uma barra de azul e o fundo de oliva. Caso deseje pintar uma barra do passado, basta usar o indexador da série com o valor desejado. Por exemplo, BarBrushes[1] refere-se a cor da penúltima barra do gráfico em relação a barra processada no momento.

				
					BarBrushes[0] = Brushes.Blue;
BackBrushes[0] = Brushes.Olive;

				
			

OBS: Caso você deseje retirar a cor atribuído a um desses elementos basta atribuir o valor null a série desejada.

Como plotar indicadores em estratégias em painel separado?

Reproduzir vídeo

Essa é uma tarefa que pode ser realizada em uma única linha de comando no NinjaScript. Basta no método OnStateChange, quando o estado do ninjascript for DataLoaded, ou seja, quando já tiver carregado todos os dados do gráfico, você chamar o método AddChartIndicator, conforme demonstrado abaixo.

				
					if (State == State.DataLoaded)
{
    AddChartIndicator(MACD(12,26,9));
}

				
			

Pintando uma região entre duas médias ou séries

Seguem abaixo dois exemplos de pintura de região entre as médias exponencias de 9 e 90 períodos utilizando diferentes sobrecargas do método Draw.Region. Na primeira sobrecarga, vamos pintar essa região desde o início do gráfico utilizando os índices de barras e na segunda sobrecarga, vamos pintar apenas um intervalo de datahora específico.

				
					protected override void OnBarUpdate()
{
    //Pinta a região entre as duas médias em todo o gráfico
    Draw.Region(this, "pinturaRegiao", CurrentBar, 0, EMA(9), EMA(90), Brushes.White, Brushes.Blue, 30);
    
    //Pinta a região entre as médias apenas no intervalo de data informado
    Draw.Region(this, "pinturaTempo", new DateTime(2023,8,30), new DateTime(2023,8,31,9,5,30), EMA(9), EMA(90), Brushes.Blue, Brushes.Yellow, 80);
}
				
			

Como escrever texto nas barras e em região fixa do gráfico?

Reproduzir vídeo

Seguem abaixo dois exemplos de pintura de região entre as médias exponencias de 9 e 90 períodos utilizando diferentes sobrecargas do método Draw.Region. Na primeira sobrecarga, vamos pintar essa região desde o início do gráfico utilizando os índices de barras e na segunda sobrecarga, vamos pintar apenas um intervalo de datahora específico.

				
					protected override void OnBarUpdate()
{
    //Cria texto nas barras que fecharam acima da barra anterior
    if (isRising(Close))
        Draw.Text(this, "Barra" + CurrentBar.ToString(), true, Close[0].ToString(), Close[0], 0, Brushes.White, new SimpleFont(), TextAlignment.Left, Brushes.Yellow, Brushes.Blue, 20);
        
    //Cria um texto em região específica do gráfico
    Draw.TextFixed(this, "TextoFixo", "Coded by NeoTraderBot\n", TextPosition.BottomRight);
}
				
			

Leave a Comment

CONTENTS