首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PineScript - Strategy.entry订单量

PineScript - Strategy.entry订单量
EN

Stack Overflow用户
提问于 2021-10-30 19:37:14
回答 2查看 235关注 0票数 0

这是我的策略标题脚本:

代码语言:javascript
复制
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")“,则不要输入”strategy.entry(“LongA”)“)。

谢谢

EN

回答 2

Stack Overflow用户

发布于 2022-07-02 00:52:47

这可能已经太迟了,但希望这能帮助像我一样遇到这个帖子的人。

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

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

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

此函数返回公开交易的id。如果你的策略是做很多交易,那么你可能不知道你的订单的trade_num。因此,我们可以简单地循环所有开放的交易,以检查任何开放的交易是否有一个匹配的id。如果它已经存在,那么就不要打开新的交易。

例如:

代码语言:javascript
复制
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的订单。

此方法将捕获尚未填写的待定订单。

例如:

代码语言:javascript
复制
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)
票数 1
EN

Stack Overflow用户

发布于 2022-06-11 07:06:45

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

您可以在松树脚本语言参考手册中搜索strategy.cash以查找更多细节。

类似地,strategy.fixed可以帮助在每个条目上购买完全相同数量的股票或合同。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69781540

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档