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

如何修改AlphaTrend策略仅做多并在卖出信号触发时平仓获利?

AlphaTrend 仅做多策略修改方案(卖出信号平仓)

修改说明

原策略支持多空双向开仓,现调整为仅建立多头仓位,且触发卖出信号时立即平仓现有多头持仓。核心修改逻辑为删除空头开仓代码,将卖出信号绑定多头平仓操作。

修改后的完整代码

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// author © KivancOzbilgic
// developer © KivancOzbilgic
//@version=5

strategy("AlphaTrend 仅做多策略", shorttitle='ATSt-Long', overlay=true, format=format.price, precision=2, margin_long=100)
coeff = input.float(1, '乘数', step=0.1)
AP = input(14, '通用周期')
ATR = ta.sma(ta.tr, AP)
src = input(close)
showsignalsk = input(title='显示信号标记?', defval=false)
novolumedata = input(title='无成交量数据时切换计算方式?', defval=false)
upT = low - ATR * coeff
downT = high + ATR * coeff
AlphaTrend = 0.0
AlphaTrend := (novolumedata ? ta.rsi(src, AP) >= 50 : ta.mfi(hlc3, AP) >= 50) ? upT < nz(AlphaTrend[1]) ? nz(AlphaTrend[1]) : upT : downT > nz(AlphaTrend[1]) ? nz(AlphaTrend[1]) : downT

color1 = AlphaTrend > AlphaTrend[2] ? #00E60F : AlphaTrend < AlphaTrend[2] ? #80000B : AlphaTrend[1] > AlphaTrend[3] ? #00E60F : #80000B
k1 = plot(AlphaTrend, color=color.new(#0022FC, 0), linewidth=3)
k2 = plot(AlphaTrend[2], color=color.new(#FC0400, 0), linewidth=3)

fill(k1, k2, color=color1)

buySignalk = ta.crossover(AlphaTrend, AlphaTrend[2])
sellSignalk = ta.crossunder(AlphaTrend, AlphaTrend[2])

K1 = ta.barssince(buySignalk)
K2 = ta.barssince(sellSignalk)
O1 = ta.barssince(buySignalk[1])
O2 = ta.barssince(sellSignalk[1])

plotshape(buySignalk and showsignalsk and O1 > K2 ? AlphaTrend[2] * 0.9999 : na, title='买入', text='买入', location=location.absolute, style=shape.labelup, size=size.tiny, color=color.new(#0022FC, 0), textcolor=color.new(color.white, 0))

plotshape(sellSignalk and showsignalsk and O2 > K1 ? AlphaTrend[2] * 1.0001 : na, title='卖出', text='卖出', location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.new(color.maroon, 0), textcolor=color.new(color.white, 0))

// 仅触发多头开仓
longCondition = buySignalk
if (longCondition)
    strategy.entry("多头仓位", strategy.long)

// 卖出信号触发时平仓多头
sellCondition = sellSignalk
if (sellCondition)
    strategy.close("多头仓位")

关键修改点

  1. 移除空头配置:删除原策略的margin_short=100参数,取消空头仓位支持
  2. 替换空头操作:删除原代码中的空头开仓逻辑,改为在卖出信号触发时调用strategy.close("多头仓位"),直接平掉已持有的多头持仓
  3. 优化策略标识:修改策略名称为"AlphaTrend 仅做多策略",短标题改为ATSt-Long,便于区分
  4. 参数中文本地化:将输入参数的英文标签改为中文,提升可读性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 10:40:37