【问题标题】:Pine script - Trying to add stop loss with value based on calculationPine 脚本 - 尝试根据计算添加止损值
【发布时间】:2021-12-08 12:55:23
【问题描述】:

我正在尝试为计算值添加止损。止损值应该是“向上”计算值。如果我使用下面的代码,我的止损高于我的多头入场,我也不确定它是否是正确的值。

Periods = input(title="ATR Period", type=input.integer, defval=10)

src = input(hl2, title="Source")

Multiplier = input(title="ATR Multiplier", type=input.float, step=0.1, defval=3.0)

changeATR= input(title="Change ATR Calculation Method ?", type=input.bool, defval=true)

showsignals = input(title="Show Buy/Sell Signals ?", type=input.bool, defval=true)

highlighting = input(title="Highlighter On/Off ?", type=input.bool, defval=true)

//////

atr2 = sma(tr, Periods)

atr= changeATR ? atr(Periods) : atr2

up=src-(Multiplier*atr)

up1 = nz(up[1],up)

up := close[1] > up1 ? max(up,up1) : up

trend = 1

trend := nz(trend[1], trend)

trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend

upPlot = plot(trend == 1 ? up : na, title="Up Trend", style=plot.style_linebr, linewidth=2, color=color.green)

buySignal = trend == 1 and trend[1] == -1

//// Stop loss calculation

Stoplosspercent = if buySignal
    (strategy.position_avg_price - up)/strategy.position_avg_price

/// Exit long

strategy.exit("long exit", "long", profit = strategy.position_avg_price*5/100/syminfo.mintick, loss = strategy.position_avg_price*Stoplosspercent/100/syminfo.mintick)

【问题讨论】:

    标签: pine-script


    【解决方案1】:

    这太糟糕了,很多用户不看the official pine reference

    • loss (series int/float) 一个可选参数。止损(以刻度指定)。
    • stop (series int/float) 可选参数。止损(需要具体价格)。
    • profit (series int/float) 一个可选参数。利润目标(以报价单位指定)。
    • limit (series int/float) 一个可选参数。利润目标(需要具体价格)。

    在您的情况下,您需要分别设置limitstop 参数而不是profitloss

    【讨论】:

    • 感谢您的帮助,我很感激。请多多包涵,因为我昨天才开始编码。我已经做出了您推荐的更改,它解决了一半的问题。谢谢。
    • 剩下的问题是,因为每个柱都有一个恒定的计算,如果我将退出更改为 stop = up,那么每个蜡烛的止损都会向上移动,它应该保持不变。我该如何解决这个问题?
    • 请添加您最后的实际脚本源并将其格式化为code(标签不会被“吃掉”)。简而言之:您需要制作var float Stoplosspercent并在您需要的某些条件下对其进行修改:if positionOpenedOrSomethingElse \n\tStoplosspercent :- ...
    • 谢谢,我设法将其钉牢:value = close if buySignal and close > ema2 value := up else if sellSignal and close ema2 Profitbuy := ((close - value) * 2) + close else Profitbuy := nz(profitbuy[1]) Profitell = 关闭如果 sellSignal 并且关闭
    猜你喜欢
    • 2020-02-10
    • 1970-01-01
    • 2021-12-14
    • 2022-07-21
    • 2022-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-23
    相关资源
    最近更新 更多