以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://weistock.com/bbs/index.asp) -- 公式模型编写问题提交 (http://weistock.com/bbs/list.asp?boardid=4) ---- 如何实现固定时间隔小于K线周期时盘中开仓后至K线走完之间不再出现任何操作? (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=10332) |
-- 作者:MMM -- 发布时间:2012/2/28 10:36:49 -- 如何实现固定时间隔小于K线周期时盘中开仓后至K线走完之间不再出现任何操作? 想在K线走完之前的盘中实现判断和操作所以采用了固定时间间隔,间隔时间小于K线周期,希望盘中第一次达到条件时操作之后至K线走完之前忽略任何信号,在K线走完时再次进行一次判断,如何实现请大侠帮忙! [此贴子已经被作者于2012-2-28 10:37:21编辑过]
|
-- 作者:董小球 -- 发布时间:2012/2/28 10:39:44 -- 你说的这个要用全局变量来进行记录和处理 你可以参考这个帖子
|
-- 作者:MMM -- 发布时间:2012/3/5 19:29:19 -- 折腾了几天还是不能完全解决,是否在runmode=0和走完K线交易条件下无法在K线周期中进行开平仓?如果遇到长阳或长阴希望在K线没有走完提前止损又如何实现呢? |
-- 作者:阿火 -- 发布时间:2012/3/5 22:26:50 -- 就是K线走完前提前下单,走完后信号如果消失再补回持仓? |
-- 作者:MMM -- 发布时间:2012/3/6 18:49:17 -- 是这个意思,只是在K线中第一次出现操作信号时下单(比如平空开多),之后一直到K线走完之前不再处理反复出现和消失的信号(消失时如果多仓则平多开空),最后在K线走完时判断一次,根据最后这次的判断决定是否再补回持仓。 |
-- 作者:admin -- 发布时间:2012/3/6 20:23:08 -- 这个不用后台在图表上是无法做到的,即便后台实现也非常复杂,建议你购买专业版,使用专业版的提前N秒下单,然后下个周期恢复持仓功能 |
-- 作者:MMM -- 发布时间:2012/3/6 22:17:45 -- 谢谢管理员,不过提前多少秒下单是不固定的,需要在K线中由条件(与close有关)决定。
为了解决这个问题,我在数据库全局变量中设置了INKBUY, ENDKSELL, KTIME三个全局变量,确保在关机后重新加载程序也不会被初始化。程序设计的逻辑是: 1.为了实现在K线中间的操作,在图表交易中设定了60秒的固定时间间隔,希望K线周期中每60秒时应该执行一遍程序; 2.当买多条件达到时发出平空开多指令并设置数据库中的全局变量\'INKBUY’为1,之后至K线结束不再执行任何交易指令,但判断需要恢复持仓时将数据库全局变量\'ENDKSELL\'置为1,提供给下一个K线的第一个60秒执行时进行持仓的恢复操作; 3.为判断是新K线的第一个60秒,设置了KTIME变量,从数据库全局变量取出的值与time进行比较,不相等的情况应该在新K线的第一个60秒时就可以发现,这时执行恢复持仓的操作并将KTIME置为当前time,在之后的60秒轮询中将不会再被执行。
对应的代码如下: gbtime:EXTGBDATA(\'KTIME\'),linethick0; //在新K线的第一个60秒没有走完时读取的应该是上一个K线的时间。
请火哥或管理员帮助看看上面的实现有问题吗?另外帮助分析一下下面出现问题的原因。
按照上面代码实现后,出现如下问题: 1. 在图表显示的gbtime总是上一个K线的time,但打开工具->数据->全局变量看却是当前K线的time????难道gbtime并不是根据定义的轮询时间被执行??? 2. 在有两个主图K线的框架中,gbtime在图表上的显示飘忽不定,似乎是在前面的K线中随机取的,打开工具->数据->全局变量看却始终是当前K线的时间。但这种情况在只有一个主图K线的框架中不会发生,就是总出现问题1,使得程序不能按所需逻辑运行。 [此贴子已经被作者于2012-3-6 22:28:37编辑过]
|
-- 作者:阿火 -- 发布时间:2012/3/6 22:32:34 -- 图表实现 用enterlong entershort 指令,用buy sell 麻烦 后台用tsell tbuy
提前N秒,跟C有关? 你根据你的思路举个例子得了。帮你实现 请详细一点(在什么样的周期,提前几秒是如何计算的等) [此贴子已经被作者于2012-3-6 22:33:48编辑过]
|
-- 作者:admin -- 发布时间:2012/3/6 22:32:45 -- 似乎你忽略一个重要问题,就是你要在ISLASTBAR条件上来控制只在最后一个周期来控制全局变量,否则都是每次都第一个BAR开始初始化 |
-- 作者:阿火 -- 发布时间:2012/3/6 22:36:19 -- sell sellshort 要执行,必须前面有信号。 信号消失后,你的holding可能是大于0的,但是实际仓位是 空单,这是要买入平仓。而holding>0 是无法用sellshort的。 如果非要用 新交易系统指令,需要做特别处理 [此贴子已经被作者于2012-3-6 22:37:04编辑过]
|