Snippets para Utilização de Indicadores da Plataforma
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?
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 BandaSuperior
{
get { return Values[0]; }
}
[Browsable(false)]
[XmlIgnore]
public Series BandaCentral
{
get { return Values[1]; }
}
[Browsable(false)]
[XmlIgnore]
public Series 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 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(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 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 input )
{
return indicator.testeBollinger(input);
}
}
}
#endregion