Code: Select all
using System;
using System.Drawing;
using System.Linq;
using PowerLanguage.Function;
namespace PowerLanguage.Indicator{
public class Aroon : IndicatorObject {
private ExtremesFC m_extremesfc;
private IPlotObject Plot1;
private VariableSeries<Double> m_oextremeval { get; set; }
private VariableSeries<int> m_oextremebarraw { get; set; }
private VariableSeries<int> m_aroonup { get; set; }
public Aroon(object _ctx):base(_ctx){
length = 10;
hilo = 1;
}
public ISeries<Double> price { get; set; }
[Input]
public Int32 length { get; set; }
[Input]
public Int32 hilo { get; set; }
protected override void Create() {
m_extremesfc = new Function.ExtremesFC(this);
m_oextremeval = new VariableSeries<Double>(this);
m_oextremebarraw = new VariableSeries<int>(this);
m_aroonup = new VariableSeries<int>(this);
Plot1 =
AddPlot(new PlotAttributes("Aroonup", 0, Color.Yellow,
Color.Empty, 0, 0, true));
}
protected override void StartCalc() {
// assign inputs
m_extremesfc.length = length +1;
m_extremesfc.hilo = hilo;
m_extremesfc.price = Bars.High;
m_extremesfc.oextremeval = m_oextremeval;
m_extremesfc.oextremebarraw = m_oextremebarraw;
}
protected override void CalcBar(){
m_aroonup = 100 * ((length - m_oextremebarraw) / length) ;
//m_aroonup = 100 * ((Length - HighestBar(High, Length+1)) / Length);
// 100 * ( Length - ExtremeHighBar ) / Length
Plot1.Set(m_aroonup[0]);
}
}
}