开会了各位客户
This commit is contained in:
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user