从文档中,我认为我应该使用类型为 order 的 rule 来实现这一点,但我似乎无法找到使用此类规则及其工作原理的任何文档或示例 .
1 回答
3
"From the documentation, I think I should be using a rule of type order to achieve this, but I can't seem to find any documentation or examples of using this type of rule and how it works."
1 回答
"From the documentation, I think I should be using a rule of type order to achieve this, but I can't seem to find any documentation or examples of using this type of rule and how it works."
规则类型"order"用于处理未结订单,如果您使用开箱即用的quantstrat函数
ruleOrderProc
来处理未结订单(这是在quantstrat中处理未结订单的默认函数,但您也可以插入自己的"order"处理函数替换ruleOrderProc
) . 例如,ruleOrderProc
不提供移动限价订单的能力,例如它对止损订单的处理方式 .要回答您的问题,您可以创建一个更新限制订单的自定义规则函数 . 以下是使用简单策略的工作原理 .
该工具为GBPUSD,数据来自quantstrat .
当MACD信号从下方穿过0时,策略进入多头头寸 .
添加了获利订单,设置为高于交易进入价格的0.25% .
还包括一个止损订单,使示例更加真实(对于纯粹的定向交易),设置为低于交易进入价格的0.5% .
如果发生了另一个从下方穿过0以上的MACD信号并且多头头寸已经开启,并且自上次更新该止赎以来已经过去至少60分钟,那么限价订单将移动到当前价格的0.5%的新水平 . (你没有合理地猜测你想怎么做) .
请注意,ruletype设置为"risk"以更新限价订单,因此在使用
ruletype == "order"
处理订单之前评估此自定义规则(如果不清楚,请参阅quantstrat中applyRules
的来源) . 这意味着如果在当前柱上触发更新限价单的信号,并且如果价格也触及现有的止盈限价单,那么该仓位将不会退出并获利,而是更新为新的利润水平 . (因为在我们检查更新限价订单的信号是否已经触发之后,处理是否触发了获利限额订单) .希望这个例子有助于了解制作自定义规则如何让生活变得更轻松 .