Neo traderBot

Neo traderBot

Você sabia?

Um backtesting adequado deve buscar simular situações práticas do mercado (slippage, custo de operação, etc...)

Snippets e How-to

Snippets para Utilização de Indicadores da Plataforma

Leitura estimada: 5 minutos 124 views

Introdução

Esta seção visa apresentar trechos de códigos com exemplos de utilização dos indicadores disponibilizados na plataforma.

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 instanciar um indicador nativo - Ex: Bandas de Bollinger?

Reproduzir vídeo

Os indicadores podem ser utilizados apenas chamando seus métodos, não havendo necessidade de atribuir a uma variável da classe do seu NinjaScript. Veja o exemplo abaixo no qual apenas plotamos a Banda de Bollinger, utilizando o indicador nativo da plataforma.

				
					#region Using declarations
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Input;
using System.Windows.Media;
using System.Xml.Serialization;
using NinjaTrader.Cbi;
using NinjaTrader.Gui;
using NinjaTrader.Gui.Chart;
using NinjaTrader.Gui.SuperDom;
using NinjaTrader.Gui.Tools;
using NinjaTrader.Data;
using NinjaTrader.NinjaScript;
using NinjaTrader.Core.FloatingPoint;
using NinjaTrader.NinjaScript.DrawingTools;
#endregion

//This namespace holds Indicators in this folder and is required. Do not change it. 
namespace NinjaTrader.NinjaScript.Indicators
{
	public class testeBollinger : Indicator
	{
		protected override void OnStateChange()
		{
			if (State == State.SetDefaults)
			{
				Description									= @"Enter the description for your new custom Indicator here.";
				Name										= "testeBollinger";
				Calculate									= Calculate.OnBarClose;
				IsOverlay									= false;
				DisplayInDataBox							= true;
				DrawOnPricePanel							= true;
				DrawHorizontalGridLines						= true;
				DrawVerticalGridLines						= true;
				PaintPriceMarkers							= true;
				ScaleJustification							= NinjaTrader.Gui.Chart.ScaleJustification.Right;
				//Disable this property if your indicator requires custom values that cumulate with each new market data event. 
				//See Help Guide for additional information.
				IsSuspendedWhileInactive					= true;
				AddPlot(Brushes.Orange, "BandaSuperior");
				AddPlot(Brushes.White, "BandaCentral");
				AddPlot(Brushes.Orange, "BandaInferior");
			}
			else if (State == State.Configure)
			{
			}
		}

		protected override void OnBarUpdate()
		{
			BandaSuperior[0] = Bollinger(2.0,20).Upper[0];
			BandaCentral[0] = Bollinger(2.0,20).Middle[0];
			BandaInferior[0] = Bollinger(2.0,20).Lower[0];

		}

		#region Properties

		[Browsable(false)]
		[XmlIgnore]
		public Series<double> BandaSuperior
		{
			get { return Values[0]; }
		}

		[Browsable(false)]
		[XmlIgnore]
		public Series<double> BandaCentral
		{
			get { return Values[1]; }
		}

		[Browsable(false)]
		[XmlIgnore]
		public Series<double> BandaInferior
		{
			get { return Values[2]; }
		}
		#endregion

	}
}

#region NinjaScript generated code. Neither change nor remove.

namespace NinjaTrader.NinjaScript.Indicators
{
	public partial class Indicator : NinjaTrader.Gui.NinjaScript.IndicatorRenderBase
	{
		private testeBollinger[] cachetesteBollinger;
		public testeBollinger testeBollinger()
		{
			return testeBollinger(Input);
		}

		public testeBollinger testeBollinger(ISeries<double> input)
		{
			if (cachetesteBollinger != null)
				for (int idx = 0; idx < cachetesteBollinger.Length; idx++)
					if (cachetesteBollinger[idx] != null &&  cachetesteBollinger[idx].EqualsInput(input))
						return cachetesteBollinger[idx];
			return CacheIndicator<testeBollinger>(new testeBollinger(), input, ref cachetesteBollinger);
		}
	}
}

namespace NinjaTrader.NinjaScript.MarketAnalyzerColumns
{
	public partial class MarketAnalyzerColumn : MarketAnalyzerColumnBase
	{
		public Indicators.testeBollinger testeBollinger()
		{
			return indicator.testeBollinger(Input);
		}

		public Indicators.testeBollinger testeBollinger(ISeries<double> input )
		{
			return indicator.testeBollinger(input);
		}
	}
}

namespace NinjaTrader.NinjaScript.Strategies
{
	public partial class Strategy : NinjaTrader.Gui.NinjaScript.StrategyRenderBase
	{
		public Indicators.testeBollinger testeBollinger()
		{
			return indicator.testeBollinger(Input);
		}

		public Indicators.testeBollinger testeBollinger(ISeries<double> input )
		{
			return indicator.testeBollinger(input);
		}
	}
}

#endregion

				
			

Leave a Comment

CONTENTS