PinesCript v5 问题,退出订单仅达到第一个目标,其余被策略忽略

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

我在使用这种在 pinescript v5 中放置入场和止损订单的“似乎结构很好”的方式时遇到了麻烦,但我无法理解正常填充 tps 的点。让我分享一下我的方法,如果你也想要你的策略,你可以使用它(固定 xD 时)

意想不到的行为就是这样。价格远离 tp1 avobe tp3,tp4 达到并且该策略不会将它们描绘为 TP1 及其评论(另一个重要点)

stopLossValue = 0.0
trailValue = 0.0

if strategy.position_size > 0
    stopLossValue := strategy.position_avg_price * (1 - max_risk_percentage)
    // trailValue := localHigh * (1 - max_risk_percentage)
else if strategy.position_size < 0
    stopLossValue := strategy.position_avg_price * (1 + max_risk_percentage)
    // trailValue := localLow * (1 + max_risk_percentage)

// strategy.position_size > 0 ? math.max(stopLossValue, trailValue) : strategy.position_size < 0 ? math.min(stopLossValue, trailValue) : na

takeProfitTarget1 = strategy.position_size > 0 ? strategy.position_avg_price * (1 + takeProfit1) : strategy.position_size < 0 ? strategy.position_avg_price * (1 - takeProfit1) : na
takeProfitTarget2 = strategy.position_size > 0 ? strategy.position_avg_price * (1 + takeProfit2) : strategy.position_size < 0 ? strategy.position_avg_price * (1 - takeProfit2) : na
takeProfitTarget3 = strategy.position_size > 0 ? strategy.position_avg_price * (1 + takeProfit3) : strategy.position_size < 0 ? strategy.position_avg_price * (1 - takeProfit3) : na
takeProfitTarget4 = strategy.position_size > 0 ? strategy.position_avg_price * (1 + takeProfit4) : strategy.position_size < 0 ? strategy.position_avg_price * (1 - takeProfit4) : na
takeProfitTarget5 = strategy.position_size > 0 ? strategy.position_avg_price * (1 + takeProfit5) : strategy.position_size < 0 ? strategy.position_avg_price * (1 - takeProfit5) : na

trail_price = 0.0
if startTrailingAtTP == 1
    trail_price := takeProfitTarget1
else if startTrailingAtTP == 2
    trail_price := takeProfitTarget2
else if startTrailingAtTP == 3
    trail_price := takeProfitTarget3
else if startTrailingAtTP == 4
    trail_price := takeProfitTarget4
else if startTrailingAtTP == 5
    trail_price := takeProfitTarget5

direction = ""
fromEntry = ""

if strategy.position_size > 0
    direction := "Long"
    fromEntry := "Long"
else if strategy.position_size < 0
    direction := "Short"
    fromEntry := "Short"
    
if strategy.position_size != 0
    strategy.exit(direction, from_entry = fromEntry, qty_percent = takeProfitPercent5, limit = takeProfitTarget5, stop = stopLossValue, trail_price = trail_price, comment_profit = "TP5", trail_points = trailingPips, trail_offset = trailingOffset, comment_trailing = "Trailing Stop", comment_loss = "Stop Loss")
    strategy.exit(direction, from_entry = fromEntry, qty_percent = takeProfitPercent4, limit = takeProfitTarget4, stop = stopLossValue, trail_price = trail_price, comment_profit = "TP4", trail_points = trailingPips, trail_offset = trailingOffset, comment_trailing = "Trailing Stop", comment_loss = "Stop Loss")
    strategy.exit(direction, from_entry = fromEntry, qty_percent = takeProfitPercent3, limit = takeProfitTarget3, stop = stopLossValue, trail_price = trail_price, comment_profit = "TP3", trail_points = trailingPips, trail_offset = trailingOffset, comment_trailing = "Trailing Stop", comment_loss = "Stop Loss")
    strategy.exit(direction, from_entry = fromEntry, qty_percent = takeProfitPercent2, limit = takeProfitTarget2, stop = stopLossValue, trail_price = trail_price, comment_profit = "TP2", trail_points = trailingPips, trail_offset = trailingOffset, comment_trailing = "Trailing Stop", comment_loss = "Stop Loss")
    strategy.exit(direction, from_entry = fromEntry, qty_percent = takeProfitPercent1, limit = takeProfitTarget1, stop = stopLossValue, trail_price = trail_price, comment_profit = "TP1", trail_points = trailingPips, trail_offset = trailingOffset, comment_trailing = "Trailing Stop", comment_loss = "Stop Loss")
   
pine-script trading
1个回答
0
投票

您应该为退出订单提供唯一 ID,否则您将修改现有订单。

您正在使用

direction
作为
id
这对于所有这 5 个出口都是相同的。

下面应该做的事情(将

id
更改为
Exit-n
):

if strategy.position_size != 0
    strategy.exit("Exit-5", from_entry = fromEntry, qty_percent = takeProfitPercent5, limit = takeProfitTarget5, stop = stopLossValue, trail_price = trail_price, comment_profit = "TP5", trail_points = trailingPips, trail_offset = trailingOffset, comment_trailing = "Trailing Stop", comment_loss = "Stop Loss")
    strategy.exit("Exit-4", from_entry = fromEntry, qty_percent = takeProfitPercent4, limit = takeProfitTarget4, stop = stopLossValue, trail_price = trail_price, comment_profit = "TP4", trail_points = trailingPips, trail_offset = trailingOffset, comment_trailing = "Trailing Stop", comment_loss = "Stop Loss")
    strategy.exit("Exit-3", from_entry = fromEntry, qty_percent = takeProfitPercent3, limit = takeProfitTarget3, stop = stopLossValue, trail_price = trail_price, comment_profit = "TP3", trail_points = trailingPips, trail_offset = trailingOffset, comment_trailing = "Trailing Stop", comment_loss = "Stop Loss")
    strategy.exit("Exit-2", from_entry = fromEntry, qty_percent = takeProfitPercent2, limit = takeProfitTarget2, stop = stopLossValue, trail_price = trail_price, comment_profit = "TP2", trail_points = trailingPips, trail_offset = trailingOffset, comment_trailing = "Trailing Stop", comment_loss = "Stop Loss")
    strategy.exit("Exit-1", from_entry = fromEntry, qty_percent = takeProfitPercent1, limit = takeProfitTarget1, stop = stopLossValue, trail_price = trail_price, comment_profit = "TP1", trail_points = trailingPips, trail_offset = trailingOffset, comment_trailing = "Trailing Stop", comment_loss = "Stop Loss")
© www.soinside.com 2019 - 2024. All rights reserved.