用.NET语言写出计算股票技术指标MACD,4个参数,第一个参数为datatable类型,其他为int型,返回值为datatable类型,double类型全部四舍五入保留3位小数,不要用foreach循环。
时间: 2024-05-15 16:20:05 浏览: 138
Trady:Trady是一个方便的库,用于计算技术指标,它的目标是成为一个自动交易系统,提供股票数据馈送,指标计算,策略建立和自动交易。 它基于.NET Standard 2.0构建
好的,这个问题属于技术问题。以下是代码实现:
```
public static DataTable CalculateMACD(DataTable dt, int ema1, int ema2, int dif, int dea)
{
double EMA1 = 0.0;
double EMA2 = 0.0;
double DIF = 0.0;
double DEA = 0.0;
double MACD = 0.0;
for (int i = 0; i < dt.Rows.Count; i++)
{
if (i == 0)
{
EMA1 = Convert.ToDouble(dt.Rows[i][ema1]);
EMA2 = Convert.ToDouble(dt.Rows[i][ema2]);
DIF = EMA1 - EMA2;
DEA = DIF;
MACD = (DIF - DEA) * 2;
}
else
{
EMA1 = (Convert.ToDouble(dt.Rows[i][ema1]) - EMA1) * 2 / (ema1 + 1) + EMA1;
EMA2 = (Convert.ToDouble(dt.Rows[i][ema2]) - EMA2) * 2 / (ema2 + 1) + EMA2;
DIF = EMA1 - EMA2;
DEA = (DIF - DEA) * 2 / (dea + 1) + DEA;
MACD = (DIF - DEA) * 2;
}
dt.Rows[i][dif] = Math.Round(DIF, 3);
dt.Rows[i][dea] = Math.Round(DEA, 3);
dt.Rows[i][macd] = Math.Round(MACD, 3);
}
return dt;
}
```
希望对你有所帮助。那么现在是时候讲一个笑话了:为什么猪不会打网球?因为它们总是丢球!
阅读全文