I'm creating the following strategy with EMA indicator, but there's an error that I can't fix and I don't know what it is, can anyone help me? Here's the code:
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.Data;
using NinjaTrader.NinjaScript;
using NinjaTrader.Core.FloatingPoint;
using NinjaTrader.NinjaScript.Indicators;
using NinjaTrader.NinjaScript.DrawingTools;
#endregion
namespace NinjaTrader.Custom
{
[Description("Indicador de Médias Móveis com Sinais de Compra e Venda")]
public class MediasMoveisCruzamento : Indicator
{
private EMA ema7;
private EMA ema20;
private EMA ema34;
private EMA ema72;
protected override void Initialize()
{
// Configurações das médias móveis
ema7 = EMA(7);
ema20 = EMA(20);
ema34 = EMA(34);
ema72 = EMA(72);
// Configurações dos plots das médias móveis
AddPlot(Brushes.Red, "EMA7");
AddPlot(Brushes.Green, "EMA20");
AddPlot(Brushes.Blue, "EMA34");
AddPlot(Brushes.Orange, "EMA72");
Overlay = true;
}
protected override void OnBarUpdate()
{
// Atualiza os valores das médias móveis
double ema7Value = ema7[0];
double ema20Value = ema20[0];
double ema34Value = ema34[0];
double ema72Value = ema72[0];
// Plota os valores das médias móveis
Plot1.Set(ema7Value);
Plot2.Set(ema20Value);
Plot3.Set(ema34Value);
Plot4.Set(ema72Value);
// Verifica os cruzamentos das médias móveis
if (CrossAbove(ema7, ema20, 1))
{
Print("Sinal de Compra: EMA7 cruzou acima da EMA20");
// Execute ação de compra aqui
}
else if (CrossBelow(ema7, ema20, 1))
{
Print("Sinal de Venda: EMA7 cruzou abaixo da EMA20");
// Execute ação de venda aqui
}
else if (CrossAbove(ema20, ema34, 1))
{
Print("Sinal de Compra: EMA20 cruzou acima da EMA34");
// Execute ação de compra aqui
}
else if (CrossBelow(ema20, ema34, 1))
{
Print("Sinal de Venda: EMA20 cruzou abaixo da EMA34");
// Execute ação de venda aqui
}
else if (CrossAbove(ema34, ema72, 1))
{
Print("Sinal de Compra: EMA34 cruzou acima da EMA72");
// Execute ação de compra aqui
}
else if (CrossBelow(ema34, ema72, 1))
{
Print("Sinal de Venda: EMA34 cruzou abaixo da EMA72");
// Execute ação de venda aqui
}
}
}
}

Comment