From aef0e89631af8c29c762940202f1504031c8ea06 Mon Sep 17 00:00:00 2001 From: 27942 <1313123@342> Date: Wed, 4 Feb 2026 00:35:42 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=8F=8D=E6=89=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bitmart/三分之一策略交易.py | 36 +++++++++++++++++++++++++++++------- 1 file changed, 29 insertions(+), 7 deletions(-) diff --git a/bitmart/三分之一策略交易.py b/bitmart/三分之一策略交易.py index 7b873af..3ffb0c5 100644 --- a/bitmart/三分之一策略交易.py +++ b/bitmart/三分之一策略交易.py @@ -356,6 +356,9 @@ class BitmartFuturesTransaction: logger.info("开始运行三分之一策略交易...") + # 标记是否刚执行过交易(用于跳过从交易所获取持仓状态,避免延迟问题) + just_traded = False + while True: try: # 1. 获取K线数据(当前K线和上一根K线) @@ -372,11 +375,15 @@ class BitmartFuturesTransaction: time.sleep(2) continue - # 3. 获取持仓状态 - if not self.get_position_status(): - logger.warning("获取持仓状态失败,等待重试...") - time.sleep(2) - continue + # 3. 获取持仓状态(如果刚交易过,信任本地状态,跳过API查询避免延迟) + if not just_traded: + if not self.get_position_status(): + logger.warning("获取持仓状态失败,等待重试...") + time.sleep(2) + continue + else: + logger.info(f"刚执行交易,信任本地持仓状态: {self.start}") + just_traded = False # 重置标记 # 4. 检查信号 signal = self.check_signal(current_price, prev_kline, current_kline) @@ -384,8 +391,23 @@ class BitmartFuturesTransaction: # 5. 有信号则执行交易 if signal: self.execute_trade(signal, size=1) - logger.success(f"交易执行完成: {signal[0]}") - time.sleep(2) # 交易后等待一下 + logger.success(f"交易执行完成: {signal[0]}, 当前持仓状态: {self.start}") + just_traded = True # 标记刚执行过交易 + + # 交易后立即再次检查是否有反手信号(同一根K线内可能多次反手) + time.sleep(1) # 短暂等待 + + # 重新获取价格,检查是否需要再次反手 + new_price = self.get_current_price() + if new_price: + new_signal = self.check_signal(new_price, prev_kline, current_kline) + if new_signal: + logger.info(f"检测到连续反手信号!当前价格: {new_price:.2f}") + self.execute_trade(new_signal, size=1) + logger.success(f"连续反手执行完成: {new_signal[0]}, 当前持仓状态: {self.start}") + + time.sleep(1) # 交易后稍等 + continue # 立即进入下一次循环继续监控 # 6. 短暂等待后继续循环(同一根K线遇到信号就操作) time.sleep(3)