I would like to leave the green set for bullish and bearish red cloud, and these colors are those who remain colorless.
Thanks in advance.
-----------------------------------------------------------------------------------------------------
// This namespace holds all indicators and is required. Do not change it.
namespace NinjaTrader.Indicator
{
/// <summary>
/// Ichimoku Clouds Senkou Span
/// </summary>
[Description("Ichimoku Clouds Senkou Span")]
public class IchimokuCloudsSenkouSpan : Indicator
{
#region Variables
// Wizard generated variables
private int tenkanPeriod = 9;
private int kijunPeriod = 26;
private int senkouPeriod = 52;
private int forward = 26;
private Color senkouCloudAColor = Color.Green;
private Color senkouCloudBColor = Color.Red;
private int senkouCloudOpacity = 2;
// User defined variables (add any user defined variables below)
#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()
{
Add(new Plot(Color.Empty, PlotStyle.Line, "Tenkan-sen"));
Add(new Plot(Color.Empty, PlotStyle.Line, "Kijun-sen"));
Add(new Plot(SenkouCloudAColor, PlotStyle.Line, "Senkou Span A"));
Add(new Plot(SenkouCloudBColor, PlotStyle.Line, "Senkou Span B"));
Overlay = true;
//No plot until the max of all bars are available
BarsRequired = System.Math.Max(System.Math.Max(tenkanPeriod,kijun Period),senkouPeriod);
Displacement = Forward;
}
/// <summary>
/// Called on each bar update event (incoming tick)
/// </summary>
protected override void OnBarUpdate()
{
if(CurrentBars[0] <= BarsRequired)
return;
//Calculate plot values
double vTenkanSen = (MAX(High,TenkanPeriod)[0] + MIN(Low,TenkanPeriod)[0])/2;
double vKijunSen = (MAX(High,KijunPeriod)[0] + MIN(Low,KijunPeriod)[0])/2;
double vSenkouSpanA = (vTenkanSen + vKijunSen)/2;
double vSenkouSpanB = (MAX(High,SenkouPeriod)[0] + MIN(Low,SenkouPeriod)[0])/2;
//Update plot values
TenkanSen.Set(vTenkanSen);
KijunSen.Set(vKijunSen);
SenkouSpanA.Set(vSenkouSpanA);
SenkouSpanB.Set(vSenkouSpanB);
//Draw the clouds
if(vSenkouSpanA > vSenkouSpanB)
{
DrawRegion(CurrentBar+"", -Forward-1, -Forward, SenkouSpanA, SenkouSpanB, Color.Empty, SenkouCloudAColor, SenkouCloudOpacity);
}
else
{
DrawRegion(CurrentBar+"", -Forward-1, -Forward, SenkouSpanA, SenkouSpanB, Color.Empty, SenkouCloudBColor, SenkouCloudOpacity);
}
}
#region Properties
[Browsable(false)] // this line prevents the data series from being displayed in the indicator properties dialog, do not remove
[XmlIgnore()] // this line ensures that the indicator can be saved/recovered as part of a chart template, do not remove
public DataSeries TenkanSen
{
get { return Values[0]; }
}
[Browsable(false)] // this line prevents the data series from being displayed in the indicator properties dialog, do not remove
[XmlIgnore()] // this line ensures that the indicator can be saved/recovered as part of a chart template, do not remove
public DataSeries KijunSen
{
get { return Values[1]; }
}
[Browsable(false)] // this line prevents the data series from being displayed in the indicator properties dialog, do not remove
[XmlIgnore()] // this line ensures that the indicator can be saved/recovered as part of a chart template, do not remove
public DataSeries SenkouSpanA
{
get { return Values[2]; }
}
[Browsable(false)] // this line prevents the data series from being displayed in the indicator properties dialog, do not remove
[XmlIgnore()] // this line ensures that the indicator can be saved/recovered as part of a chart template, do not remove
public DataSeries SenkouSpanB
{
get { return Values[3]; }
}
[Description("Tenkan/Conversion Line Period")]
[GridCategory("Parameters")]
public int TenkanPeriod
{
get { return tenkanPeriod; }
set { tenkanPeriod = Math.Max(1, value); }
}
[Description("Kijun/Base Line Period")]
[GridCategory("Parameters")]
public int KijunPeriod
{
get { return kijunPeriod; }
set { kijunPeriod = Math.Max(1, value); }
}
[Description("Senkou/Leading Span Period")]
[GridCategory("Parameters")]
public int SenkouPeriod
{
get { return senkouPeriod; }
set { senkouPeriod = Math.Max(1, value); }
}
[Description("Senkou Cloud Color when Span A is higher")]
[GridCategory("Parameters")]
public Color SenkouCloudAColor
{
get { return senkouCloudAColor; }
set { senkouCloudAColor = value; }
}
[Description("Senkou Cloud Color when Span B is higher")]
[GridCategory("Parameters")]
public Color SenkouCloudBColor
{
get { return senkouCloudBColor; }
set { senkouCloudBColor = value; }
}
[Description("Senkou Cloud Opacity")]
[GridCategory("Parameters")]
public int SenkouCloudOpacity
{
get { return senkouCloudOpacity; }
set { senkouCloudOpacity = Math.Max(0, value); }
}
[Description("Senkou Cloud Opacity")]
[GridCategory("Parameters")]
public int Forward
{
get { return forward; }
set { forward = Math.Max(0, value); Displacement = value;}
}
#endregion
Comment