package com.xcong.excoin.modules.okxNewPrice.indicator;
|
|
import java.math.BigDecimal;
|
import java.util.ArrayList;
|
import java.util.List;
|
|
/**
|
* 15分钟交易策略使用示例
|
* 展示如何使用FifteenMinuteTradingStrategy处理100个15分钟价格数据点
|
*/
|
public class FifteenMinuteStrategyExample {
|
|
public static void main(String[] args) {
|
// 1. 创建策略实例
|
FifteenMinuteTradingStrategy strategy = new FifteenMinuteTradingStrategy();
|
|
// 2. 准备100个15分钟价格数据(这里使用模拟数据,用户可以替换为真实数据)
|
List<BigDecimal> prices = generateSampleFifteenMinuteData();
|
System.out.println("已加载 " + prices.size() + " 个15分钟价格数据点");
|
|
// 3. 获取当前价格
|
BigDecimal currentPrice = prices.get(prices.size() - 1);
|
System.out.println("当前价格: " + currentPrice);
|
|
// 4. 示例1:获取多空方向
|
System.out.println("\n=== 多空方向分析 ===");
|
FifteenMinuteTradingStrategy.Direction direction = strategy.getDirection(prices);
|
System.out.println("当前市场方向: " + direction);
|
|
// 5. 示例2:获取开仓平仓信号(假设当前没有持仓)
|
System.out.println("\n=== 开仓平仓信号分析(无持仓)===");
|
FifteenMinuteTradingStrategy.PositionSignal signal1 =
|
strategy.getPositionSignal(prices, false, false);
|
System.out.println("无持仓时的信号: " + signal1);
|
|
// 6. 示例3:获取开仓平仓信号(假设当前持有多仓)
|
System.out.println("\n=== 开仓平仓信号分析(持有多仓)===");
|
FifteenMinuteTradingStrategy.PositionSignal signal2 =
|
strategy.getPositionSignal(prices, true, false);
|
System.out.println("持有多仓时的信号: " + signal2);
|
|
// 7. 示例4:获取开仓平仓信号(假设当前持有空仓)
|
System.out.println("\n=== 开仓平仓信号分析(持有空仓)===");
|
FifteenMinuteTradingStrategy.PositionSignal signal3 =
|
strategy.getPositionSignal(prices, false, true);
|
System.out.println("持有空仓时的信号: " + signal3);
|
|
// 8. 示例5:获取完整交易结果
|
System.out.println("\n=== 完整交易结果分析 ===");
|
FifteenMinuteTradingStrategy.TradingResult result =
|
strategy.getTradingResult(prices, false, false);
|
System.out.println("市场方向: " + result.getDirection());
|
System.out.println("交易信号: " + result.getSignal());
|
System.out.println("\n指标状态详情:");
|
System.out.println(result.getIndicatorStatus());
|
}
|
|
/**
|
* 生成模拟的15分钟价格数据(100个数据点)
|
* 用户可以替换为真实的价格数据
|
* @return 15分钟价格数据列表
|
*/
|
private static List<BigDecimal> generateSampleFifteenMinuteData() {
|
List<BigDecimal> prices = new ArrayList<>();
|
|
// 模拟ETH价格数据(从2400开始,有一定波动)
|
BigDecimal basePrice = new BigDecimal(2400);
|
|
for (int i = 0; i < 100; i++) {
|
// 添加一些随机波动,但保持整体上升趋势
|
double random = (Math.random() - 0.48) * 10; // -5 到 5 的随机波动,略微偏向上行
|
BigDecimal price = basePrice.add(new BigDecimal(random));
|
prices.add(price.setScale(2, BigDecimal.ROUND_HALF_UP));
|
|
// 整体缓慢上升
|
basePrice = basePrice.add(new BigDecimal(0.2));
|
}
|
|
return prices;
|
}
|
}
|