在我的策略中,我有这样的退出条件:
strategy.exit("Long", trail_price = close, trail_offset = 50)
我想绘制追踪价格。我该怎么做?
您需要定义追踪止损价格,例如
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])
就这样
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))