以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://www.weistock.com/bbs/index.asp) -- 金字塔软件问题提交 (http://www.weistock.com/bbs/list.asp?boardid=2) ---- [注意][求助] 可能的一个bug (http://www.weistock.com/bbs/dispbbs.asp?boardid=2&id=8479) |
|
-- 作者:rogerhylt -- 发布时间:2011/10/18 18:04:20 -- [注意][求助] 可能的一个bug 发现这可能是一个bug 那位斑竹过来看看 利用 leevolvo版主的语句 if (buycond and not(islastbar)) or (buycond and islastbar and dynainfo(207)>ref(time,1)+58) then buy(1,1,limitr,c); 代替if buycond then buy(1,1,limitr,c); 带入策略运行
60分钟线 假设现在是早上9点50测试 或实盘运行 那么利用if buycond then buy(1,1,limitr,c); 这样的语句的 策略发出的 在以前收盘价时的信号 在用有if (buycond and not(islastbar)) or (buycond and islastbar and dynainfo(207)>ref(time,1)+58) then buy(1,1,limitr,c);的策略中测试时 应该是没有的 。因为 这时的 对于dynainfo(207)<ref(time,1)+58 (095000<150058) 但是我测试时发现这个信号并没丢失。图表上依然能够看到。难道金字塔运行测试时不是一根k线接着一根k线运行的吗? |
|
-- 作者:阿火 -- 发布时间:2011/10/18 21:16:54 -- buycond and not(islastbar) 这个是显示历史信号
buycond and islastbar and dynainfo(207)>ref(time,1)+58 这个是实时信号
不会消失
另:此实例只是一个示例,示例本身不够完整。对于提前下单,实盘中有许多细节需要处理。慎用 [此贴子已经被作者于2011-10-18 21:17:54编辑过]
|
|
-- 作者:rogerhylt -- 发布时间:2011/10/18 21:45:16 -- 请教一下 我以前的理解是这样的 :buycond and not(islastbar) 是指不是在最后收盘价成交的信号 而buycond and islastbar and dynainfo(207)>ref(time,1)+58 是指在 最后收盘价成交的信号 看了你的解释后 我把buycond and not(islastbar) 改为 buycond and islastbar 结果什么信号也没了。 然后我把buycond and islastbar and dynainfo(207)>ref(time,1)+58 这个条件删除 结果真如你所说 所有信号依然显示 。那意思就是说设置为固定时间间隔 所有信号还是按照开盘条件成立就成交 并不能达到在收盘前提前下单的结果。不知我的理解对否? 还有一个问题 如何理解not(islastbar)?
[此贴子已经被作者于2011-10-18 22:01:18编辑过]
|
|
-- 作者:王锋 -- 发布时间:2011/10/18 22:07:45 -- 对于提前下单,使用图表来控制需要相当高的使用技巧,还请楼主慎用 |
|
-- 作者:rogerhylt -- 发布时间:2011/10/18 22:33:16 -- 我知道会有风险,但希望能找到比较完善的解决之道。最近好长一段时间搜索翻看咱论坛里的帖子,发现有此要求的挺多,以前也有对此提出之道的。比如 http://www.weistock.com/bbs/dispbbs.asp?boardid=4&Id=162&page=2 还有http://www.weistock.com/bbs/dispbbs.asp?boardid=4&id=2380 然后 http://www.weistock.com/bbs/dispbbs.asp?boardid=2&id=6654 但好像都有问题 。 当时我觉得最好的办法是leevolvo斑竹提到的 “ 比如 条件成立,临近收盘下单,1分钟K线图 就可以这样写: if (buycond and not(islastbar)) or (buycond and islastbar and dynainfo(207)>ref(time,1)+58) then buy(1,1,limitr,c);
当然,也可以用currenttime ,只是,currenttime经常不准,可能是服务器问题,也可能是电脑主板问题。每天都会走慢 还有一种情况,是在行情卡的时候,currenttime不停的走,而tick数据还没过来,这个时候currenttime也不能准确描述“临近收盘”这一层意思 而且tick上的时间才能准确描述 “临近收盘”这个意思” 但使起来发现并不是如想象的那样 故此有此一帖 。欢迎大家讨论。 我实际把 buycond and islastbar and dynainfo(207)>ref(time,1)+58改为buycond and islastbar and dynainfo(207)>time-2 ;这样不会有跨天的问题。
|
|
-- 作者:rogerhylt -- 发布时间:2011/10/18 22:36:28 -- 还有z7c9斑竹的一帖 http://www.weistock.com/bbs/dispbbs.asp?boardid=4&id=7578 “原创]历史测试和实时交易收盘平仓 ![]() |
|
-- 作者:rogerhylt -- 发布时间:2011/10/18 22:46:34 -- 哦 我突然似乎明白了 所谓islastbar是指 在图中最后一根k线 而不是每日盘中最后一根k线 ,不知我的理解对否? |
|
-- 作者:volersky -- 发布时间:2011/10/18 23:16:32 -- 是的,islastbar就是指K线图中的最后一根K线,即最右边这根 |
|
-- 作者:rogerhylt -- 发布时间:2011/10/19 10:23:16 -- leevolvo 版主 能否给个比较完善的实例啊 我这是黔驴技穷了 , 今天再次测试 用 buycond and islastbar and dynainfo(207)>time-10 ;带入策略 ,发现图上有信号,但并不真的下单。
--------------发现dynainfo(207)虽然是时间常数 但是并不是60进制,知道错误的原因了 [此贴子已经被作者于2011-10-19 10:35:27编辑过]
|
|
-- 作者:rogerhylt -- 发布时间:2011/10/19 10:53:10 -- 好了 我自己解决了这个问题 用timetoto 这个函数转换了一下 谢谢各位 |