休眠功能
对于 cBot 来说,能够待机到特定时间是至关重要的,特别是对于那些应该被安排或在某些事件发生时激活的 cBot(例如,公开公告)。 cTrader 中的 Sleep() 方法允许算法暂停,直到指定的时间过去或接近。
注意
休眠功能仅适用于 cBot 和指标。
本 API 指南将向您介绍 Sleep() 方法及其正确使用方法。
一分钟了解 Sleep() 方法!
Sleep()方法使开发人员能够暂停算法执行,并设置灵活的时间参数。- 如果您知道特定事件的日期和时间,您的 cBot 应该用定制策略做出反应,请使用休眠功能来交易新闻并对计划事件做出反应。
- 为休眠功能设置一个时间段,从毫秒到任何时间跨度。
Sleep()方法仅适用于 .NET 6 算法,并在回测中按预期工作。
sleep() 方法的工作原理
休眠功能仅适用于 .NET 6 算法。 当 cBot 处于休眠模式时,代码中的所有其他事件将被忽略。
示例
如果在休眠模式期间 BarOpened 事件发生了五次,cBot 唤醒后,所有错过的 OnBar() 处理程序都不会被调用。 在这种情况下,只会引发新的即将到来的事件。
尽管如此,cBot 在休眠模式下仍会处理所有数据消息(例如,如果调用了 RefreshData())。
注意
指定休眠时间时,您设置的是算法暂停的最小间隔。 实际休眠时间将始终等于或大于请求的暂停时间。
要应用 Sleep() 方法,算法开发人员应根据其目的使用以下签名之一。
要暂停算法直到指定的时间跨度过去:
void Sleep(Timespan timespan)
要暂停算法直到指定的毫秒数过去:
void Sleep(int milliseconds)
要暂停算法直到指定的时间和日期接近:
void Sleep(DateTime dateTime)
示例
我们假设现任美联储主席杰罗姆·鲍威尔的下一次讲话定于 2023 年 12 月 11 日 11:00 进行。 您预期会有一些影响欧元/美元趋势的公告,并开发了一个 cBot,在演讲开始时就会执行相关策略。 在这种情况下,您可以按如下方式应用 Sleep() 方法。
DateTime doomsday = new DateTime(2023, 12, 11, 11, 0, 0);
Sleep(doomsday)
警告
如果 DateTime 参数不是算法时区的,将抛出 ArgumentException。
Sleep() 方法在回测中按预期工作。 如果您想从用户界面停止休眠中的 cBot,您不必等到它醒来。 点击 停止 按钮,它将立即停止运行,无需等待超时。
创建示例 cBot
以下示例 cBot 在启动后休眠 30 秒,并在日志中打印相应的消息。 之后,它为美元/日元下达一个买入市价单。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | |

总结
休眠功能允许算法开发人员在 cBot 启动后暂停其他方法的执行。 应用 Sleep() 方法及其灵活的时间参数,您将始终能够及时用定制策略对计划事件做出反应。