这是我的移动平均班。我在以下代码行上遇到运行时错误:_ma [_period-1] .ClosingPrice = sum / _period;
public class MyMovingAverage
{
private static DateClose[] _ma;
private static int _period;
private static DateClose[] _source;
private static DateClose _dateClose;
public static DateClose[] MovingAverage(int period, DateClose[] source)
{
_period = period;
_source = source;
_ma = new DateClose[_source.Length];
decimal sum = 0;
for (int bar = 0; bar < _period; bar++)
{
_dateClose = _source[bar];
sum += _dateClose.ClosingPrice;
}
_ma[_period - 1].ClosingPrice = sum / _period; //RUN TIME ERROR HERE
_ma[_period - 1].Time = _dateClose.Time;
for (int bar = _period; bar < _source.Length; bar++)
{
_dateClose = _source[bar];
_ma[bar].ClosingPrice = _ma[bar - 1].ClosingPrice + _dateClose.ClosingPrice / _period
- _source[bar - _period].ClosingPrice / _period;
}
return _ma;
}
}
这是DateClose类:
public class DateClose
{
public DateTime Time { get; set; }
public decimal ClosingPrice { get; set; }
}
上面的代码(标记有代码)中引发的异常是System.NullReferenceException
。
_ma
在设置其属性之前,应首先为数组中的项目创建一个对象。
在_ma[_period - 1].ClosingPrice = sum / _period;
您应该做之前:
_ma[_period - 1] = new DateClose();
接着
_ma[_period - 1].ClosingPrice = sum / _period;
和其他代码...
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句