已执行及平仓交易背景色标注异常问题咨询
问题分析与解决方案
核心问题排查
1. 盈亏判断逻辑错误
原代码用strategy.netprofit > 0判断当前交易盈亏,这是账户累计净利润,不是单笔交易的实际盈亏:
- 你遇到的1a问题:之前交易累计亏损,当前单笔盈利后累计净利润仍为负,
strategy.netprofit>0返回false,误标红色 - 1b问题:之前交易累计盈利,当前单笔亏损后累计净利润仍为正,
strategy.netprofit>0返回true,误标绿色
另外,strategy.position_size > 1会漏掉持仓量为1的多头持仓,应该改成strategy.position_size > 0。
2. 透明度参数使用错误
color.new()的第二个参数是透明度百分比,范围是0(完全不透明)~100(完全透明),你写的5几乎等于不透明,所以看起来没生效。
修正后的完整代码
// 多头持仓判断(覆盖所有多头持仓场景) longExists = strategy.position_size > 0 // 持仓期间:判断当前持仓的浮动盈亏 isPositionProfitable = strategy.openprofit > 0 // 平仓K线:判断最新平仓交易的实际盈亏 isClosedTradeProfitable = strategy.closedtrades.profit(strategy.closedtrades - 1) > 0 isClosedTradeBar = strategy.closedtrades.entry_bar_index(strategy.closedtrades - 1) == bar_index[1] // 颜色设置(调整透明度为80,既明显又不遮挡K线) profitColor = color.new(color.green, 80) lossColor = color.new(color.red, 80) // 背景色逻辑:持仓时用浮动盈亏,平仓K线用实际盈亏 bgcolor(longExists ? isPositionProfitable ? profitColor : lossColor : na) bgcolor(isClosedTradeBar ? isClosedTradeProfitable ? profitColor : lossColor : na)
代码说明
- 持仓期间:用
strategy.openprofit > 0判断当前持仓的浮动盈亏,实时显示背景色 - 平仓K线:用
strategy.closedtrades.profit()获取最新平仓交易的实际盈亏,精准标记平仓时的交易结果 - 透明度:把参数调到
80,背景色既清晰可见又不会遮挡K线 - 持仓判断:改成
strategy.position_size > 0,覆盖所有多头持仓场景
内容的提问来源于stack exchange,提问作者marcq
相关产品推荐
相关产品推荐

