有股票的每日开盘价,收盘价,最高价,最低价,用springboot中talib写出MACD
时间: 2023-10-10 08:07:39 浏览: 209
好的,我知道了。以下是使用Spring Boot和TALib库编写的计算MACD指标的示例代码:
首先,你需要在pom.xml文件中添加TALib的依赖:
```xml
<dependency>
<groupId>com.tictactec</groupId>
<artifactId>ta-lib</artifactId>
<version>0.4.0</version>
</dependency>
```
然后创建一个Spring Boot服务,并在其中编写计算MACD的方法:
```java
import org.springframework.stereotype.Service;
import org.ta4j.core.*;
import org.ta4j.core.indicators.MACDIndicator;
import org.ta4j.core.indicators.helpers.ClosePriceIndicator;
import org.ta4j.core.indicators.helpers.HighPriceIndicator;
import org.ta4j.core.indicators.helpers.LowPriceIndicator;
import org.ta4j.core.indicators.helpers.OpenPriceIndicator;
import org.ta4j.core.num.DoubleNum;
import org.ta4j.core.num.Num;
import java.util.ArrayList;
import java.util.List;
@Service
public class MacdService {
public List<Double> calculateMacd(List<Double> open, List<Double> high, List<Double> low, List<Double> close) {
List<Double> macdValues = new ArrayList<>();
TimeSeries series = new BaseTimeSeries.SeriesBuilder().withName("Stock Series").build();
for (int i = 0; i < close.size(); i++) {
ZonedDateTime date = ZonedDateTime.now().plusDays(i);
series.addBar(date, open.get(i), high.get(i), low.get(i), close.get(i), 0);
}
// 计算 MACD
ClosePriceIndicator closePrice = new ClosePriceIndicator(series);
MACDIndicator macd = new MACDIndicator(closePrice, 12, 26);
TimeSeriesData seriesData = new TimeSeriesData(series, new OpenPriceIndicator(series), new HighPriceIndicator(series), new LowPriceIndicator(series), closePrice);
List<Num> macdValuesNum = macd.calculate(seriesData);
for (Num num : macdValuesNum) {
double doubleValue = num.doubleValue();
macdValues.add(doubleValue);
}
return macdValues;
}
}
```
这个方法接收四个列表,分别代表开盘价、最高价、最低价和收盘价。它将这些价格转换为一个时间序列,然后使用TALib计算MACD指标。最后,它将计算出的MACD值转换为一个双精度浮点数列表,并将其返回。
请注意,这个方法使用了TA4J库中的一些类和方法。如果你还没有使用过TA4J,你需要在pom.xml中添加TA4J的依赖:
```xml
<dependency>
<groupId>org.ta4j</groupId>
<artifactId>ta4j-core</artifactId>
<version>0.13</version>
</dependency>
```
希望这能帮助到你!
阅读全文