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

如何修改加密货币策略代码,实现基于入场市值的X%涨跌平仓?

修改Pine Script:添加基于开仓价的止盈止损平仓逻辑

原代码实现了加密货币市值单日下跌指定百分比时开多仓的功能,现在我们添加相对于开仓价的止盈(上涨X%)和止损(下跌X%)平仓逻辑,具体修改如下:

修改后的完整代码

//@version=5
strategy("市值触发多仓+止盈止损", overlay=true, default_qty_type=strategy.cash, default_qty_value=10000, initial_capital=100000)

// 输入参数:开仓触发阈值、止盈百分比、止损百分比
entry_change = input.float(3, title="市值单日下跌触发百分比", tooltip="单日市值下跌超过该值时开多仓")/100.0
take_profit_pct = input.float(5, title="止盈百分比", tooltip="相对于开仓价上涨该比例时平仓")/100.0
stop_loss_pct = input.float(2, title="止损百分比", tooltip="相对于开仓价下跌该比例时平仓")/100.0

// 计算市值单日涨跌幅
rr(s, bb) => (s - s[bb])/s
signal(s, bb) =>
    rr_val = rr(s, bb)
    long = rr_val <= -entry_change  // 单日下跌超过阈值触发多仓
    [long]

// 获取每日市值信号(使用对应币种的市值指数)
[long_signal] = request.security("CRYPTOCAP:" + syminfo.basecurrency, "D", signal(close, 1))

// 开仓条件:触发信号(原代码的timePeriod需确保已定义,若无需可移除)
if (long_signal)
    strategy.entry("Long", strategy.long)

// 止盈止损逻辑:持仓时检查价格是否达到止盈或止损线
if (strategy.position_size > 0)
    entry_price = strategy.position_avg_price
    take_profit_price = entry_price * (1 + take_profit_pct)
    stop_loss_price = entry_price * (1 - stop_loss_pct)
    
    // 触发止盈时平仓
    if (close >= take_profit_price)
        strategy.close("Long", comment="止盈平仓")
    // 触发止损时平仓
    if (close <= stop_loss_price)
        strategy.close("Long", comment="止损平仓")

关键改动说明

  • 新增输入参数:添加take_profit_pct和stop_loss_pct,分别设置止盈、止损的百分比,支持灵活调整。
  • 开仓价获取:用strategy.position_avg_price获取持仓平均开仓价,确保涨跌比例计算基于开仓时的市值。
  • 平仓触发逻辑:持仓状态下实时计算止盈/止损价,当收盘价触及对应价格时触发平仓,添加注释区分平仓原因。
  • 代码完整性优化:补全策略基础配置(资金、仓位规则),优化变量命名提升可读性。

注意事项

  • 原代码的timePeriod变量需确保已定义,无需时间过滤可直接移除该判断条件。
  • 依赖TradingView的CRYPTOCAP:开头的币种市值指数,需确保所选币种有对应数据。
  • 若需盘中实时触发止盈止损,可将close替换为high/low,但需注意信号闪烁问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 00:25:28