如何绘制 Trail_price 和 Trail_offset?

问题描述 投票:0回答:2

在我的策略中,我有这样的退出条件:

strategy.exit("Long", trail_price = close, trail_offset = 50)

我想绘制追踪价格。我该怎么做?

pine-script pine-script-v5
2个回答
0
投票

您需要定义追踪止损价格,例如

float trailStopLoss =  strategy.position_avg_price
 + <trail_offset> * (strategy.position_size > 0 ? -1 : 1)

trailStopLoss       := if strategy.position_size > 0
 math.max(trailStopLoss - strategy.opentrades.entry_price(0)
 + high, trailStopLoss[1])
else                   if strategy.position_size < 0
 math.min(trailStopLoss - strategy.opentrades.entry_price(0)
 + low,  trailStopLoss[1])

0
投票

就这样

var float activation_long = na
var float offset_long = na
var float activation_short = na
var float offset_short = na

trailingCalc() => 
    _activation = atr * trail_stop
    _offset = atr * trail_offset
    [_activation, _offset]

[activation, offset] = trailingCalc()

activation_long := activation
offset_long := offset
activation_short := activation
offset_short := offset

strategy.exit("TPL (Tech)", from_entry="long-tech", trail_points=activation_long, trail_offset=offset_long, comment = "Trailing (Long) Tech")
strategy.exit("TPS (Tech)", from_entry="short-tech", trail_points=activation_short, trail_offset=offset_short, comment = "Trailing (Short) Tech")

//// Plotting

var float longTrailStop = na
var float shortTrailStop = na
var float longTrailOffset = na
var float shortTrailOffset = na

if posi > 0 and strategy.position_avg_price > 0
    longTrailStop := na(activation_long) ? na : close - activation_long
    longTrailOffset := na(offset_long) ? na : longTrailStop + offset_long
else
    longTrailStop := na
    longTrailOffset := na

if posi < 0 and strategy.position_avg_price > 0
    shortTrailStop := na(activation_short) ? na : close + activation_short
    shortTrailOffset := na(offset_short) ? na : shortTrailStop - offset_short
else
    shortTrailStop := na
    shortTrailOffset := na

plotLongTrailStop = plot(longTrailStop, title="Long Trailing Stop", style=plot.style_linebr, linewidth=1, color=color.green)
plotLongTrailOffset = plot(longTrailOffset, title="Long Trailing Offset", style=plot.style_linebr, linewidth=2, color=color.red)
plotShortTrailStop = plot(shortTrailStop, title="Short Trailing Stop", style=plot.style_linebr, linewidth=1, color=color.orange)
plotShortTrailOffset = plot(shortTrailOffset, title="Short Trailing Offset", style=plot.style_linebr, linewidth=2, color=color.purple)
plotClose = plot(close, title="Close Price", style=plot.style_line, color=color.blue)

fill(plotLongTrailStop, plotClose, title="Long Trail Fill", color=longTrailStop < close ? color.new(color.blue, 80) : color.new(color.red, 80))
fill(plotShortTrailStop, plotClose, title="Short Trail Fill", color=shortTrailStop > close ? color.new(color.orange, 80) : color.new(color.purple, 80))

fill(plotLongTrailStop, plotLongTrailOffset, title="Long Trail Offset Fill", color=color.new(color.red, 90))
fill(plotShortTrailStop, plotShortTrailOffset, title="Short Trail Offset Fill", color=color.new(color.purple, 90))
© www.soinside.com 2019 - 2024. All rights reserved.