Could you please help me mod my indicator, its basically a smoothed Heiken Ashi. What I would like to do is have hollow candles if....
When a blue candle closed higher than it opens
When a red candle closed lower than it opens.
How can I do this please.
#region Using declarations
using System;
using System.ComponentModel;
using System.Diagnostics;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Xml.Serialization;
using NinjaTrader.Cbi;
using NinjaTrader.Data;
using NinjaTrader.Gui.Chart;
#endregion
// This namespace holds all indicators and is required. Do not change it.
namespace NinjaTrader.Indicator
{
/// <summary>
/// HEKICOL
/// </summary>
[Description("HEKICOL")]
public class HEKICOL : Indicator
{
#region Variables
// Wizard generated variables
private Color upcol = Color.Blue; // Default setting for LongColour
private Color dncol = Color.Red; // Default setting for ShortColour
private int barWidth = 1; // Default setting for BarWidth
// User defined variables (add any user defined variables below)
private DataSeries haClose;
private DataSeries haOpen;
private DataSeries icolor;
#endregion
/// <summary>
/// This method is used to configure the indicator and is called once before any bar data is loaded.
/// </summary>
protected override void Initialize()
{
Overlay = true;
haClose = new DataSeries(this);
haOpen = new DataSeries(this);
icolor = new DataSeries(this);
}
/// <summary>
/// Called on each bar update event (incoming tick)
/// </summary>
protected override void OnBarUpdate()
{
double CompBars = 6 ;
//Color UpCol = Color.FromArgb(15,90,180);
//Color DnCol = Color.FromArgb(255,50,50);
//Color icolor = Color.FromArgb(255,50,50);
/*If LongColour = 0 then upcol = RGB(15,90,180)
Else UpCol = LongColour;
If ShortColour = 0 then dncol = RGB(255,50,50)
Else DnCol = ShortColour;*/
if (CurrentBar == 1)
{
haOpen[0] = Open[0];
haClose[0] = (Open[0] + High[0] + Low[0] + Close[0])/4;
}
if (CurrentBar > 1)
{
haClose[0] = (Open[0] + High[0] + Low[0] + Close[0])/4;
haOpen[0] = (haOpen[1] + haClose[1])/2;
if (haClose[0] > haOpen[0])
icolor[0] = 1;
else icolor[0] = 2;
/////////////////////////////////////////
if (icolor[0] == 1)
{
BarColor = UpCol;
}
if (icolor[0] == 2)
{
BarColor = DnCol;
}
////////////////////////////////////////
for (int x = 1; x <= CompBars; x++)
{
if ((haOpen[0] <= Math.Max(haOpen[x],haClose[x])) &&
(haOpen[0] >= Math.Min(haOpen[x],haClose[x])) &&
(haClose[0] <= Math.Max(haOpen[x],haClose[x])) &&
(haClose[0] >= Math.Min(haOpen[x],haClose[x])))
icolor[0] = icolor[x];
}
if (icolor[0] == 1)
{
BarColor = UpCol;
CandleOutlineColor = UpCol;
}
if (icolor[0] == 2)
{
BarColor = DnCol;
CandleOutlineColor = DnCol;
}
}
}
#region Properties
[XmlIgnore()]
[Description("Color for up")]
[GridCategory("Parameters")]
public Color UpCol
{
get { return upcol; }
set { upcol = value; }
}
// Serialize our Color object
[Browsable(false)]
public string UpColSerialize
{
get { return NinjaTrader.Gui.Design.SerializableColor.ToString(upcol); }
set { upcol = NinjaTrader.Gui.Design.SerializableColor.FromString(value); }
}
[XmlIgnore()]
[Description("Color for painted region")]
[GridCategory("Parameters")]
public Color DnCol
{
get { return dncol; }
set { dncol = value; }
}
[Browsable(false)]
public string DnColSerialize
{
get { return NinjaTrader.Gui.Design.SerializableColor.ToString(dncol); }
set { dncol = NinjaTrader.Gui.Design.SerializableColor.FromString(value); }
}
[Description("")]
[GridCategory("Parameters")]
public int BarWidth
{
get { return barWidth; }
set { barWidth = Math.Max(1, value); }
}
#endregion
}
}

Comment