From 2911432f3d146791edda5e911909d2360953842b Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Tue, 23 Dec 2025 18:05:58 +0800
Subject: [PATCH] feat(indicator): 优化交易策略并调整日志级别
---
src/main/java/com/xcong/excoin/modules/okxNewPrice/indicator/FifteenMinuteStrategyExample.java | 81 ++++++++++++++++++++++++++++++++++++++++
1 files changed, 81 insertions(+), 0 deletions(-)
diff --git a/src/main/java/com/xcong/excoin/modules/okxNewPrice/indicator/FifteenMinuteStrategyExample.java b/src/main/java/com/xcong/excoin/modules/okxNewPrice/indicator/FifteenMinuteStrategyExample.java
new file mode 100644
index 0000000..ed1b226
--- /dev/null
+++ b/src/main/java/com/xcong/excoin/modules/okxNewPrice/indicator/FifteenMinuteStrategyExample.java
@@ -0,0 +1,81 @@
+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;
+ }
+}
\ No newline at end of file
--
Gitblit v1.9.1