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