You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

指标反向信号设置需求:持仓错误时2%价差触发反向开仓

基于EMA+MACD指标的反向开仓触发实现

需求说明

当指标发出开仓信号后,若持仓方向错误,资产价格朝相反方向变动达到2%(默认值)时,触发反向开仓操作。

实现思路

  • 新增持仓状态变量,跟踪当前是多单、空单还是无持仓
  • 记录开仓时的价格,计算对应的反向触发阈值:
    • 多单持仓时,价格下跌至开仓价的98%触发反向开仓(转空)
    • 空单持仓时,价格上涨至开仓价的102%触发反向开仓(转多)
  • 新增反向开仓的条件判断,满足阈值条件时生成信号
  • 在图表上添加反向开仓的标记,区分初始开仓信号

修改后的完整代码

//@version=5
indicator("带反向开仓的EMA+MACD买卖指标", shorttitle="BSI-EMA-MACD-反向开仓", overlay=true)

// 配置参数:反向触发幅度(默认2%)
reverse_pct = input.float(2.0, "反向触发幅度(%)", minval=0.1, maxval=20.0)

// EMA计算
ema20 = ta.ema(close, 20)
ema50 = ta.ema(close, 50)

// MACD计算
[macdLine, signalLine, _] = ta.macd(close, 12, 26, 9)

// 初始开仓条件
buy_condition = ta.crossover(macdLine, signalLine) and ema20 > ema50  
sell_condition = ta.crossunder(macdLine, signalLine) and ema20 < ema50  

// 持仓状态与开仓价格跟踪
var int position = 0 // 0=无持仓, 1=多单, -1=空单
var float entry_price = na

// 更新持仓状态与开仓价
if (buy_condition)
    position := 1
    entry_price := close
elif (sell_condition)
    position := -1
    entry_price := close

// 反向开仓条件计算
reverse_to_sell = position == 1 and close <= entry_price * (1 - reverse_pct/100)
reverse_to_buy = position == -1 and close >= entry_price * (1 + reverse_pct/100)

// 触发反向开仓时更新持仓状态
if (reverse_to_sell)
    position := -1
    entry_price := close
elif (reverse_to_buy)
    position := 1
    entry_price := close

// 图表标记
// 初始多单开仓:绿色向下三角
plotshape(buy_condition ? close : na, style=shape.triangledown, color=color.green, location=location.abovebar, size=size.small, offset=-1, title="初始多单")
// 初始空单开仓:红色向上三角
plotshape(sell_condition ? close : na, style=shape.triangleup, color=color.red, location=location.belowbar, size=size.small, offset=-1, title="初始空单")
// 反向开仓:橙色方块
plotshape(reverse_to_sell ? close : na, style=shape.square, color=color.orange, location=location.belowbar, size=size.small, title="多转空反向开仓")
plotshape(reverse_to_buy ? close : na, style=shape.square, color=color.orange, location=location.abovebar, size=size.small, title="空转多反向开仓")

// 可选:绘制EMA均线
plot(ema20, color=color.blue, title="EMA20")
plot(ema50, color=color.purple, title="EMA50")

图表说明

  • 绿色向下三角:初始多单开仓信号,满足MACD金叉+EMA20上穿EMA50条件
  • 红色向上三角:初始空单开仓信号,满足MACD死叉+EMA20下穿EMA50条件
  • 橙色方块:反向开仓信号,持仓方向错误且价格变动达到设定幅度时触发
  • 蓝色/紫色均线:分别为EMA20与EMA50,用于趋势判断

内容的提问来源于stack exchange,提问作者fortion

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 01:48:18