diff --git a/1111 b/1111 index caacc67..204db4e 100644 --- a/1111 +++ b/1111 @@ -41,9 +41,6 @@ bitmart\框架.py 读取这个代码文件夹 反手做空,当前 k 线开盘价 - 上一根实体 / 3(收盘价向下 1/3 实体) 反手做多,当前 k 线开盘价 + 上一根实体 / 3(收盘价向上 1/3 实体) -反手信号, -当前这根线线跌倒了上一根的三分之一,我开了空,但是这根涨到了上一根 k 线的最高价格,上一根 k 线的上阴线涨幅大于 0.01%,反手做多 - diff --git a/bitmart/四分之一_新反手策略.py b/bitmart/四分之一_新反手策略.py index fd6d53e..14e86be 100644 --- a/bitmart/四分之一_新反手策略.py +++ b/bitmart/四分之一_新反手策略.py @@ -292,20 +292,28 @@ class BitmartFuturesTransaction: logger.info(f"触发做空信号!价格 {current_price:.2f} <= 触发价(上1/4) {short_trigger:.2f}") return ('short', short_trigger) - # ========== 新反手逻辑 ========== + # ========== 反手逻辑 ========== # 检查当前K线是否已执行过反手(每根K线只执行一次) current_kline_id = current_kline['id'] if self.reverse_executed_kline_id == current_kline_id: logger.debug(f"当前K线 {current_kline_id} 已执行过反手,跳过反手检测") return None + # 计算基于当前K线开盘价的触发价(用于反手) + current_open = current_kline['open'] + reverse_long_trigger = current_open + prev_entity / 4 # 反手做多触发价 = 当前开盘价 + 上一根实体/4 + reverse_short_trigger = current_open - prev_entity / 4 # 反手做空触发价 = 当前开盘价 - 上一根实体/4 + + logger.info(f"反手触发价: 做多={reverse_long_trigger:.2f}, 做空={reverse_short_trigger:.2f}") + # 持多仓时检查反手做空信号 if self.start == 1: - # 新反手条件: - # 1. 上一根是阳线(收盘 > 开盘) - # 2. 下影线跌幅 >= 0.1% - # 3. 当前K线先涨过(high > open,说明先往上走了) - # 4. 当前价格跌到上一根最低价 + # 反手条件1: 四分之一触发价 - 价格跌到 当前开盘价 - 上一根实体/4 + if current_price <= reverse_short_trigger and not skip_short_by_upper_third: + logger.info(f"【四分之一反手做空】价格 {current_price:.2f} <= 触发价 {reverse_short_trigger:.2f}") + return ('reverse_short', reverse_short_trigger) + + # 反手条件2: 新逻辑 - 上一根阳线 + 下影线>=0.1% + 当前先涨后跌到上一根最低价 if prev_is_bullish: # 上一根是阳线 lower_shadow_pct = self.calculate_lower_shadow(prev_kline) current_went_up_first = current_kline['high'] > current_kline['open'] @@ -315,17 +323,18 @@ class BitmartFuturesTransaction: f"当前价格={current_price:.2f}, 上一根最低价={prev_kline['low']:.2f}") if lower_shadow_pct >= 0.1 and current_went_up_first and current_price <= prev_kline['low']: - logger.info(f"【新反手做空信号】上一根阳线, 下影线跌幅 {lower_shadow_pct:.4f}% >= 0.1%, " + logger.info(f"【影线反手做空】上一根阳线, 下影线跌幅 {lower_shadow_pct:.4f}% >= 0.1%, " f"当前K线先涨过, 价格 {current_price:.2f} <= 上一根最低价 {prev_kline['low']:.2f}") return ('reverse_short', prev_kline['low']) # 持空仓时检查反手做多信号 elif self.start == -1: - # 新反手条件: - # 1. 上一根是阴线(收盘 < 开盘) - # 2. 上影线涨幅 >= 0.1% - # 3. 当前K线先跌过(low < open,说明先往下走了) - # 4. 当前价格涨到上一根最高价 + # 反手条件1: 四分之一触发价 - 价格涨到 当前开盘价 + 上一根实体/4 + if current_price >= reverse_long_trigger and not skip_long_by_lower_third: + logger.info(f"【四分之一反手做多】价格 {current_price:.2f} >= 触发价 {reverse_long_trigger:.2f}") + return ('reverse_long', reverse_long_trigger) + + # 反手条件2: 新逻辑 - 上一根阴线 + 上影线>=0.1% + 当前先跌后涨到上一根最高价 if prev_is_bearish: # 上一根是阴线 upper_shadow_pct = self.calculate_upper_shadow(prev_kline) current_went_down_first = current_kline['low'] < current_kline['open'] @@ -335,7 +344,7 @@ class BitmartFuturesTransaction: f"当前价格={current_price:.2f}, 上一根最高价={prev_kline['high']:.2f}") if upper_shadow_pct >= 0.1 and current_went_down_first and current_price >= prev_kline['high']: - logger.info(f"【新反手做多信号】上一根阴线, 上影线涨幅 {upper_shadow_pct:.4f}% >= 0.1%, " + logger.info(f"【影线反手做多】上一根阴线, 上影线涨幅 {upper_shadow_pct:.4f}% >= 0.1%, " f"当前K线先跌过, 价格 {current_price:.2f} >= 上一根最高价 {prev_kline['high']:.2f}") return ('reverse_long', prev_kline['high']) diff --git a/models/database.db b/models/database.db index b566631..8d9b2d8 100644 Binary files a/models/database.db and b/models/database.db differ