繁体   English   中英

PineScript - Strategy.entry 订单金额

[英]PineScript - Strategy.entry order amount

这是我的策略标题脚本:

strategy(title="NEWSTRAT",shorttitle="NS" , initial_capital=1000, currency=currency.USD, pyramiding = 5, overlay=true)

我创建了大约 5 个不同的“strategy.entry”和“strategy.close”。 根据标题我想花费 1000 美元,但我希望每个条目使用相同的金额(在本例中为 200 美元)。

我的问题:

1-我是否必须在“strategy.entry”中将其指定为参数,还是应该将其添加到策略标题中? (为了从“initial_capital”金额“strategy.entry”s 中平等分配订单金额)

2- 我将金字塔设置为 5。有时我看到该策略从同一个“strategy.entry”中需要很长时间,如果初始“strategy.entry”仍未关闭,是否有办法阻止新条目。(例如:“ strategy.entry("LongA")" 检测到一个多头条目。由于波动性,另一个策略将另一个类似条目识别为 "strategy.entry("LongA")" 并进入多头,即使最初的 "strategy.entry("LongA" ")" 仍然打开。所以基本上我希望它不要输入一个 "strategy.entry("LongA")" long (相同的条目),如果有另一个打开的 "strategy.entry("LongA")"。)

谢谢

现在可能为时已晚,但希望这可以帮助他们像我一样遇到这篇文章的人。

@vaibhav maathur 是正确的,您应该使用 default_qty_type = strategy.cash 然后使用 default_qty_value =(初始资本除以金字塔数量)在您的交易中平均分配您的资本。

关于您问题的第二部分“如何停止重复条目”,有几种方法可以做到这一点。

1. 使用 strategy.opentrades.entry_id 函数(trade_num)

此 function 返回未平仓交易的 id。 如果您的策略是进行大量交易,那么您可能不知道您的订单的 trade_num。 因此,我们可以简单地遍历所有未平仓交易以检查是否有任何未平仓交易具有匹配的 id。 如果它已经存在,则不要打开新交易。

例如

for x=0 to strategy.opentrades -1 by 1
    if strategy.opentrades.entry_id(x) == "Long A"
        buyCondition := false

if buyCondition
    strategy.entry("Long A",strategy.long)

这种方法的问题是它只会找到未平仓交易,而不会找到任何已下达但尚未成交的限价/止损订单。 如果有一个id相同的挂单,那么新的订单会修改它。

2. 创建您自己的数组来跟踪您的订单

每次下订单时,只需将该订单的 id 添加到数组中。 每次您关闭该交易时,将其从数组中删除。 然后,您可以使用相同的方法循环遍历您的数组来检查具有该 ID 的订单是否已经存在。

此方法将捕获尚未执行的挂单。

例如

var array_OpenOrders = array.new_string(na)

if buyCondition
    for x=0 to array.size(array_OpenOrders) -1 by 1
        if array.get(array_OpenOrders, x) == "Long A"
            buyCondition := false

if buyCondition
    strategy.entry("Long A", strategy.long)
    array.push(array_OpenOrders, "Long A")

if sellCondition
    strategy.exit("Sell Long A", "Long A", Limit = close)
    for x=0 to array.size(array_OpenOrders)
        if array.get(array_OpenOrder,x) == "Long A"
            array.remove(array_OpenOrders,x)

我认为您可能希望在策略的声明语句中使用 strategy.cash 作为 default_qty_type: strategy("strategy.cash", overlay = true, default_qty_value = 1000, default_qty_type = strategy.cash, initial_capital = 1000000)

您可以在 Pine Script 语言参考手册中搜索 strategy.cash 以找到更多详细信息。

同样,strategy.fixed 可以帮助在每次入场时购买完全相同数量的股票或合约。

问题是 Strategy.entry 或 Strategy.order 语句不得将数量指定为参数,以便为订单使用确切的现金或确切的固定数量的股票/合约。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM