以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://www.weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://www.weistock.com/bbs/list.asp?boardid=4)
----  请教开仓语句  (http://www.weistock.com/bbs/dispbbs.asp?boardid=4&id=188496)

--  作者:kevinsss
--  发布时间:2021/5/27 10:41:09
--  请教开仓语句
开盘那两分钟不确定性太大,想避开开仓,是否有个“不等于"的函数,用来避开一定的时间
在期货上怎么写时间呢,用金字塔时间还是北京时间,因为有日盘夜盘。

--  作者:FireScript
--  发布时间:2021/5/27 10:47:42
--  
 你设置的是金字塔时间还是北京时间,默认应该是金字塔时间。还有就是这个代码用到了time函数,所以需要知道你交易周期是什么周期。


--  作者:kevinsss
--  发布时间:2021/5/27 11:03:41
--  
金字塔时间。
周期的话,之后应该会有很多不同的吧,包括tick在内。不能指定一个时间不开仓吗,比如090000-090300不开仓
--  作者:FireScript
--  发布时间:2021/5/27 11:16:35
--  
能做时间判断。但是time函数返回的是K线时间。所以和周期挂钩。
比如 1分钟周期下,判断是否在白盘开盘2分钟后。
tcd:time>130200;

如果是五分钟周期,则是无法精确判断是否在开盘2分钟之后了,因为你五分钟一个K就是五分钟。time返回的又是K线结束时间。所以最多能判断是否开盘5分钟,10分钟,15分钟。其他周期以此类推。

所以使用time函数可以判断时间范围,但是这个和周期选择是关联的。

--  作者:kevinsss
--  发布时间:2021/5/27 13:25:12
--  
应该没问题啊,比如5分钟,今天收盘最后一根k有信号,根据逐k机制,会在明早一开盘下单,明早的k线肯定在090300之内啊,所以可以禁止开仓不对吗,换成15,30一样的,即便tick应该也行啊,准备开仓k的时间在090300之内就不开


--  作者:FireScript
--  发布时间:2021/5/27 13:48:47
--  
先纠正下这里:“明早的k线肯定在090300” 五分钟周期下K线时间没有和9点03分对应的K的。没有的。你判断不了,你只能判断当前K时间在9点05分之前,是否在9点03之前,根本不知道。   图表上进行时间判断都是依赖于K线时间,而K线时间又是和周期挂钩的

另外就是你这个信号是在前一个收盘K上,这个信号已经出来了,你在次根K上信号执行的时候,你再也无法用代码逻辑限制它了。

所以你这个需求,我还是建议你用后台程序化做比较好。 用后台程序化,直接用北京时间判断,不用管其他的。


--  作者:FireScript
--  发布时间:2021/5/27 14:09:24
--  
“应该没问题啊,比如5分钟,今天收盘最后一根k有信号,根据逐k机制,会在明早一开盘下单,明早的k线肯定在090300之内啊,所以可以禁止开仓不对吗,换成15,30一样的,即便tick应该也行啊,准备开仓k的时间在090300之内就不开”

你说的是走完K的机制和逐K模式没关系的。

你这个需求呢,用固定轮训模式,是可以尝试下的。方法就是原本走完K下单模式先改成固定轮训模式。

原先是当前K满足条件A则下单,现在改成判断上一个K是否满足条件A。

tcd:(CURRENTTIME>=090300 and ISLASTBAR) or (not(ISLASTBAR));//时间判断。最新K和历史K 区分处理。

if tcd and ref(a,1) then buy(holding=0,1,market);

但是也有不好的地方,回测和之前不太一样了,因为信号位置偏移了。纯指标的开平仓几乎没区别,一旦有涉及止盈止损之类的,就不行了,信号可能会有些偏移。