开会了各位客户

This commit is contained in:
ddrwode
2026-02-09 16:15:02 +08:00
parent 2495ce2f11
commit 9665764194

View File

@@ -77,14 +77,14 @@ class BitmartFuturesTransaction:
})
formatted.sort(key=lambda x: x['id'])
# 返回最近2根K线:倒数第二根(上一根)和最后一根(当前)
# 返回最近根K线列表,供主循环按「实体>0.1%」向前选取上一根
if len(formatted) >= 2:
return formatted[-2], formatted[-1]
return None, None
return formatted
return None
except Exception as e:
logger.error(f"获取K线异常: {e}")
self.ding(text="获取K线异常", error=True)
return None, None
return None
def get_current_price(self):
"""获取当前最新价格"""
@@ -270,14 +270,9 @@ class BitmartFuturesTransaction:
检查交易信号
返回: ('long', trigger_price) / ('short', trigger_price) / None
"""
# 计算上一根K线实体
# 计算上一根K线实体(主循环已保证所选 prev 实体 > 0.1%
prev_entity = self.calculate_entity(prev_kline)
# 实体过小不交易(实体 < 0.1
if prev_entity < 0.1:
logger.info(f"上一根K线实体过小: {prev_entity:.4f},跳过信号检测")
return None
# 获取上一根K线的实体上下边
prev_entity_edge = self.get_entity_edge(prev_kline)
prev_entity_upper = prev_entity_edge['upper'] # 实体上边
@@ -567,13 +562,27 @@ class BitmartFuturesTransaction:
page_start = False
try:
# 1. 获取K线数据当前K线和上一根K线
prev_kline, current_kline = self.get_klines()
if not prev_kline or not current_kline:
# 1. 获取K线数据当前K线=最后一根;上一根=从后往前第一根实体>0.1%的K线
formatted = self.get_klines()
if not formatted or len(formatted) < 2:
logger.warning("获取K线失败等待重试...")
time.sleep(5)
continue
current_kline = formatted[-1]
prev_kline = None
for i in range(len(formatted) - 2, -1, -1):
k = formatted[i]
entity = abs(k['close'] - k['open'])
entity_pct = entity / k['open'] * 100 if k['open'] else 0
if entity_pct > 0.1:
prev_kline = k
break
if prev_kline is None:
logger.info("没有实体>0.1%的上一根K线跳过信号检测")
time.sleep(0.1)
continue
# 记录进入新的K线
current_kline_time = current_kline['id']
if self.last_kline_time != current_kline_time: