我在使用这种在 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")
您应该为退出订单提供唯一 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")