这是我的策略标题脚本:
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”)“)。
谢谢
发布于 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。如果它已经存在,那么就不要打开新的交易。
例如:
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)发布于 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指定为参数,以便为订单使用确切的现金或确切的固定数量的股票/合同。
https://stackoverflow.com/questions/69781540
复制相似问题