优化完美代码,优化计算盈亏
This commit is contained in:
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user