如何在 TradingView pine 中编写退出策略以单独退出金字塔交易?

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

我正在尝试编写代码,在 first 柱收盘时关闭每笔未平仓交易,其中该平仓将为该特定交易产生盈利结果。不允许在与发起交易的柱相同的柱上平仓,但这应该是不可能的,因为入场是在柱的收盘处。我正在启用金字塔交易,因此它需要将每一手判断为自己的交易,以便退出,而不是将它们混在一起并关闭整个头寸。 如果这个退出系统按其应有的方式运作,那么任何已平仓的交易都不可能出现亏损。 只有胜利才能结束。 如果尚未盈利,交易应保持开放状态直至盈利。

我不擅长编码,所以如果你回答,请像我是个白痴一样跟我说话,因为就编码而言,我就是。 感谢任何人可以提供的帮助!

pine-script tradingview-api trading
1个回答
0
投票

为了使其发挥作用,您需要为您的交易提供唯一的 ID。

strategy.entry(id, direction, qty, limit, stop, oca_name, oca_type, comment, alert_message, disable_alert) → void

id(系列字符串)订单的标识符,对应 订单成交后策略交易中的入场 ID。如果 策略在填写订单后开新仓,订单 ID 成为strategy.position_entry_name值。策略命令可以 引用订单ID取消或修改挂单并生成 特定未平仓交易的退出订单。策略测试器和 图表显示订单 ID,除非命令指定注释 值。

做到这一点的一种方法是使用计数器系统。例如,

L-1, L-2, L-3
...用于多头交易。

然后,当您下平仓订单时,您将参考该条目 ID。

strategy.close(id, comment, qty, qty_percent, alert_message, immediately, disable_alert) → void

id(系列字符串) 要平仓的未平仓交易的入场标识符。

这是基本思想。实施由你决定。不知何故,您需要知道交易 ID 和利润。

您可以使用内置变量循环未平仓交易,获取利润和交易 ID。然后,如果该特定交易盈利,您可以致电

strategy.close()

一个重要的注意事项是,您需要设置

close_entries_rule="ANY"
。否则,最早的退出订单必须关闭最早的入场订单。

这里有一个例子:

//@version=6
strategy("My strategy", overlay=true, pyramiding=10, process_orders_on_close=true, close_entries_rule="ANY")

var long_cnt = 1

long_entry_cond = (bar_index % 3) == 0                      // Enter a new trade every third bar

if (long_entry_cond)
    long_id = "L-" + str.tostring(long_cnt)                 // Create the entry id
    strategy.entry(long_id, strategy.long)

if (strategy.position_size > strategy.position_size[1])     // New trade
    long_cnt := long_cnt + 1

for i = 0 to strategy.opentrades - 1
    trade_id = strategy.opentrades.entry_id(i)
    profit = strategy.opentrades.profit(i)

    if (profit > 0)                                      // In profit
        strategy.close(trade_id, comment="C-" + trade_id)
        s = "Trade: " + trade_id + "\nProfit: " + str.tostring(profit, format.price)
        label.new(bar_index, high, s)

enter image description here

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.