程序库: 控制_交易_会话

 

控制_交易_会话:

交易时段控制库。启动时,它会计算一周 7 天(周六和周日可以进行加密货币交易)的交易时段时间,每天最多 10 个时段。然后可以在 OnTick() 中进行检查,如果在交易时段外出现一个 tick,则可以退出对其的进一步处理。

控制_交易_会话

Author: Aleksei Kuznetsov

 

这全是胡说八道。如果经纪商在交易工具规格表中填写的数据与实际报价不符,那么你的库就会像经纪商一样公然撒谎。

可以在Finam上运行这个示例。

 
Alexey Viktorov #:

这全是胡说八道。如果经纪商在交易工具的规格表中填写的内容与实际报价不符,那么你的库也会像经纪商一样公然撒谎。

该示例可在Finam上运行。

责任归属已经查清了。那该怎么办?

我可以添加通过sinput按天导入交易会话的选项。
 
这真是个很棒的库,谢谢!最大的亮点就是速度。对于优化人员来说,这正是我需要的。
 
Forester #:
已经查明了责任方。那该怎么办?

我可以添加一个通过sinput按天导入会话的选项。

已添加此选项。请参阅说明和代码。

 
进一步优化了代码的运行速度。 以前在非交易时段的 每个时钟周期内,都会进行时间计算并将其与交易时段数组进行比较,
现在在切换交易时段时,除了计算当前时段的结束时间外,还会计算下一个时段的开始时间。结果,同样也只需进行1次检查:
if(time < this.NextTradeStart ) { return false; }
 
Forester 交易时段的 每个 tick 都会进行时间计算,并将其与交易时段数组进行比较,
现在在切换交易 时段时,除了计算当前时段的结束时间外,还会计算下一个时段的开始时间。结果同样只需进行一次检查:

这是计算是否落在任意时间区间内的最正确方法。例如,如果交易时间应为12点至15点,则应采用类似的NextTime方法。

在第三方代码中,只有您的代码中看到了这种实现方式。

 
 
我没有仔细研读,但看来当前的实现假设会话必须严格限制在一天之内,而当时区 存在显著差异时,情况并非如此,也就是说, 例如,当通过亚洲经纪商交易欧洲时段,或者反之的情况。也就是说,如果从 datetime 中剔除日期部分,有时会出现 To 时间小于 From 时间的情况。
 
Stanislav Korotky #:
在自定义符号上,可以设置任何涉及交易会话的棘手情况,并验证库的正确性。值得庆幸的是,修改交易会话无需重新写入报价数据。
 
Stanislav Korotky #:
我没有仔细研读,但看来当前的实现方式假定会话必须严格限制在一天之内,而当时区 存在显著差异时,情况并非如此,也就是说, 例如,当通过亚洲经纪商交易欧洲交易时段,或者反之的情况。也就是说,如果从 datetime 中去除日期部分,有时“To”时间会小于“From”时间。
只是按时间进行比较。
if(!TradeSession.isSessionTrade(TimeCurrent())){Print("Market closed. OnTick return");return;}
代替
TimeCurrent()
顺便说一句,您可以任意设置。

交易时段的时间来自经纪商,也可以手动设置。