[code]
///<summary>
/// Enter the description of your new custom indicator here
///</summary>
[Description("Enter the description of your new custom indicator here")]
publicclass addkeltner : Indicator
{
#region Variables
privateint period = 20;
privatedouble offsetMultiplier = 3;
private DataSeries diff;
#endregion
///<summary>
/// This method is used to configure the indicator and is called once before any bar data is loaded.
///</summary>
protectedoverridevoid Initialize()
{
Add(new Plot(Color.Black, "Midline"));
Add(new Plot(Color.Magenta, "Upper"));
Add(new Plot(Color.Magenta, "Lower"));
diff = new DataSeries(this);
Overlay = true;
PriceTypeSupported = false;
}
///<summary>
/// Called on each bar update event (incoming tick).
///</summary>
protectedoverridevoid OnBarUpdate()
{
diff.Set(High[0] - Low[0]);
double middle = EMA(Typical, Period)[0];
double offset = EMA(diff, Period)[0] * offsetMultiplier;
double upper = middle + offset;
double lower = middle - offset;
Midline.Set(middle);
Upper.Set(upper);
Lower.Set(lower);
if ((High[0] >= KeltnerChannel(3, 20).Upper[0])
&& (High[0] >= SMA (80)[0])
)
DrawDiamond(Time[0].ToString(), 0, High[1] + 45.25* TickSize, Color.Lime);
if ((Low[0] <= KeltnerChannel(3, 20).Lower[0])
&& (Low[0] <= SMA (80)[0])
)
DrawDiamond(Time[0].ToString(), 0, Low[1] - 45.25* TickSize, Color.Red);
}
Comment