From 02fe8eb09b6667d4c1a340a6acbcc26a50dcafa7 Mon Sep 17 00:00:00 2001 From: 27942 <1313123@342> Date: Sat, 7 Feb 2026 21:03:42 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=AE=8C=E7=BE=8E=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=EF=BC=8C=E4=BC=98=E5=8C=96=E8=AE=A1=E7=AE=97=E7=9B=88?= =?UTF-8?q?=E4=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bitmart/四分之一,五分钟,反手条件充足修改版.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/bitmart/四分之一,五分钟,反手条件充足修改版.py b/bitmart/四分之一,五分钟,反手条件充足修改版.py index 1714843..0ce5b52 100644 --- a/bitmart/四分之一,五分钟,反手条件充足修改版.py +++ b/bitmart/四分之一,五分钟,反手条件充足修改版.py @@ -41,6 +41,8 @@ class BitmartFuturesTransaction: self.bit_id = bit_id self.default_order_size = 25 # 开仓/反手张数,统一在此修改 + self.last_trade_kline_id = None # 上次开仓/平仓所在K线ID,同一根K线只允许开一笔仓位 + # 策略相关变量 self.prev_kline = None # 上一根K线 self.current_kline = None # 当前K线 @@ -580,16 +582,24 @@ class BitmartFuturesTransaction: logger.info(f"移动止损:当前盈利 {pnl_usd:.2f} 从最高 {self.max_unrealized_pnl_seen:.2f} 回撤 >= {self.trailing_distance_usd} 美元,平仓") self.平仓() self.max_unrealized_pnl_seen = None + self.last_trade_kline_id = current_kline_time # 平仓后标记当前K线,下一根K线才能再开仓 + logger.info(f"平仓后标记K线({current_kline_time}),等待下一根K线再开仓") time.sleep(3) continue # 4. 检查信号 signal = self.check_signal(current_price, prev_kline, current_kline) - # 5. 有信号则执行交易 + # 5. 同一根K线只允许开一笔仓位,平仓后等下一根K线再开仓 + if signal and self.last_trade_kline_id == current_kline_time: + logger.info(f"同一根K线({current_kline_time})已交易过,等待下一根K线") + signal = None + + # 6. 有信号则执行交易 if signal: trade_success = self.execute_trade(signal) if trade_success: + self.last_trade_kline_id = current_kline_time # 记录开仓所在K线 logger.success(f"交易执行完成: {signal[0]}, 当前持仓状态: {self.start}") page_start = True else: