public OptimProperty v_in = new OptimProperty(1, 1, 100, 1);
public OptimProperty ATR_Period = new OptimProperty(2, 1, 100, 1);
public void Execute(IContext ctx, ISecurity sec)
{
ISecurity newSec = sec.CompressTo(15);
IList<double> atr = ctx.GetData("ATR", new string[]{ATR_Period.ToString()},
delegate {return Series.AverageTrueRange(newSec.Bars, ATR_Period);});
IList<Bar> bars = newSec.Bars;
for(int i = 0; i < bars.Count - 1; i++)
{
if(...)
{
if(bars[i].Close > ... && bars[i].Close > ...)
newSec.Positions.SellIfGreater(i + 1, double.Parse(v_in.ToString()), bars[i].Close, "sellUp" + sellNumUp);
if(bars[i].Close < ... && bars[i].Close > ...)
newSec.Positions.BuyIfGreater(i + 1, double.Parse(v_in.ToString()), bars[i].Close, "buyUp" + buyNumUp);
}
else if(...)
{
if(bars[i].Close > ... && bars[i].Close < ...)
newSec.Positions.SellIfLess(i + 1, double.Parse(v_in.ToString()), bars[i].Close, "sellDown" + sellNumDown);
if(bars[i].Close < ... && bars[i].Close < ...)
newSec.Positions.BuyIfLess(i + 1, double.Parse(v_in.ToString()), bars[i].Close, "buyDown" + buyNumDown);
}
}
}