以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  金字塔软件问题提交  (http://weistock.com/bbs/list.asp?boardid=2)
----  [讨论]和金字塔的客服讨论一下  (http://weistock.com/bbs/dispbbs.asp?boardid=2&id=11739)

--  作者:zg611029
--  发布时间:2012/5/18 11:17:00
--  [讨论]和金字塔的客服讨论一下

标准版图表交易

交易系统一直挺稳定的,可前一段时间,我的交易系统非常不稳定,总出现有信号而不下单的问题,我发过帖子,问题也没有解决,而这一个月,又非常稳定,至今没有出现过一次问题。可是今天我朋友那里又出现了这个问题(是用我的程序),有信号但不下单。首先不会事网络的问题(他们是公司有很多人在做期货),估计也不会是我的程序问题,我这边是正常的。请帮助分析一下产生这个问题的可能原因。


--  作者:jinzhe
--  发布时间:2012/5/18 11:18:13
--  

http://www.weistock.com/bbs/dispbbs.asp?boardid=4&Id=332问题13

13、为什么我的交易系统有信号了但是没有委托或者成交,我们以图表交易为重点介绍,对于初学用户,总结原因一般有如下几点:

1、用户需确认在出现交易信号之后金字塔是否有发出委托指令,用户可以在交易记录中查询到,如果有委托但未成交主要有两点,对于模拟交易,如果使用综合交易平台系统,由于目前并不完善,会经常造成即便市价下单也无法及时成交的情况。对于实盘交易,用户需要在报单策略上多仔细考虑尽量的发出对价单来保证其成交。

2、如果有信号没有委托发出,请确认是否是下列几点造成

  1)金字塔会在打开一个品种的图表后自动补充历史数据,确认是否是因为自动补数据造成的在交易时没有信号出现,但是补数据后历史上出现交易信号,但是用户通过查询历史成交记录觉得对不上了。

  2)如果用户使用模拟交易,目前模拟交易得稳定性没有实盘交易好,所以如果盘中中断,那么会导致出现后错过时机。

  3)使用固定轮循模式执行指标交易,由于最后一个K线没有最终形成,信号出现后下单,但是信号又消失,造成历史信号与持仓不吻合,这时建议大家使用K线走完模式,保证信号稳定。

  4) 对于BUY,TBUY等高级的策略交易系统,切记要先平后开的下单原则。

  5)对于无法发出平仓指令的情况,一般情况是因为开仓指令的委托单,没有及时成交,由于平仓信号发出时没有仓位,金字塔无法仓可平,等信号错过后,开仓单才成交,造成了看起来漏掉了一个平仓信号。

  6)因为平仓反手不对称造成,最常见的是发出平仓信号后没有及时成交,但是反手单却提前成交了,造成了锁仓,导致金字塔判断仓位方向不确定会导致平仓单信号漏掉,对于反手情况,初学用户请尽量使用市价委托,并使用ORDERQUEUE指定顺序成交,否则就建议初学者尽量使用对价报单,尽量避免不成交的几率出现,否则初学用户就应该初期只使用单向交易,等日后能够熟练应用金字塔的追单功能后再使用挂单性质的反手交易手法。

  7)如果使用固定时间间隔,间隔时间设置过大,造成信号在周期的末尾时出现,但正好在扫描的时间间隔之内,造成了出现信号金字塔没有及时的得知,对于此情况建议用户将间隔时间设为1秒

  8)如果用秒线或者分笔周期,请务必选择“高频”选项,避免行情快速变化时由于固定轮循最小1秒间隔带来的信号漏单。

  9) 如果使用了ORDERQUEUE顺序下单指令,那么应该尽量的让其一次性成交,必要时请使用市价委托,因为一旦队列下单不成交撤单后,再次委托会将委托追单排到最后,导致后面的比如反手指令无法正确得到执行,造成信号漏单。

  10)后台自动交易不要将THOLDING写在交易语句里比如TBUY(bk and THOLDING=0,1,MKT),详细解释请看问题15

  11) 图表交易里使用了后台自动交易的函数THOLDING2或者THOLDING或者使用了DYNAINFO等常数函数,由于图表交易不会在产生信号时立即发单,等再次检测时由于之前的发单成交THOLDING已经发生变化导致刚才出现的信号因为THOLDING的信号消失,所以产生了信号漏掉。

  12) 推荐用户仔细看看金字塔的调试技巧文章

http://www.weistock.com/bbs/dispbbs.asp?boardid=4&id=1246&page=1&star=1

    尤其是需要打开下单日志,这样便于在出现问题时,及时的查到问题的原因。

  13)用户要确认自己的策略中没有使用跨周期数据引用或者BACKSET,REFX等未来函数,有些这些未来数据,或造成信号的反复消失及过往的K线突然出现信号,导致用户看起来错过的那跟K线没有下单

 

====================================================


--  作者:zg611029
--  发布时间:2012/5/18 11:31:06
--  

这些我已仔细研究了,好像不是这些原因。还有没有其他可能性。今天出现的问题程序非常简单。

p1:=dynainfo(207);

if p1>091555 and p1<=091600 and holding=0 then

begin

buy(c>open,1,mkt);

buyshort(c<=open,1,mkt);

end

使用固定轮询高频扫描。if00

 

[此贴子已经被作者于2012-5-18 11:36:32编辑过]

--  作者:admin
--  发布时间:2012/5/18 11:49:49
--  

看看日志上怎么写的,如果日志上没有信号触发记录,说明你的策略上出现了信号漂移


--  作者:zg611029
--  发布时间:2012/5/18 12:01:34
--  

谢谢二位,由于程序运行很稳定,没有记录交易日志,就上面的一段程序不会产生信号漂移吧,而程序的其他部分只有time>092500之后才运行。比较奇怪的我的情况是只有上过月不正常,其他时间都很正常。如果也想不出其他的原因就算了,我在程序中加保护就行了。


--  作者:阿火
--  发布时间:2012/5/18 12:30:02
--  
以下是引用zg611029在2012-5-18 11:31:06的发言:

这些我已仔细研究了,好像不是这些原因。还有没有其他可能性。今天出现的问题程序非常简单。

p1:=dynainfo(207);

if p1>091555 and p1<=091600 and holding=0 then

begin

buy(c>open,1,mkt);

buyshort(c<=open,1,mkt);

end

使用固定轮询高频扫描。if00

 

[此贴子已经被作者于2012-5-18 11:36:32编辑过]

单看这代码

1,buy(c>open,1,mkt); ? 代码错误,mkt是后台用的。

2,在1分钟K线图开盘第一根K线的最后5秒内下单,可能在这5秒内tick没进来,程序没执行

虽然5秒后tick继续进来,但是已经过了信号所在的K线,自然就不下单了

反正把日志开起来吧。有日志才能知道问题所在

 

还有,这样写有可能即开多又开空吧,开单后信号也可能消失。

[此贴子已经被作者于2012-5-18 12:41:33编辑过]

--  作者:zg611029
--  发布时间:2012/5/18 13:04:47
--  

谢谢阿火:实际使用的是market;

              不会即开多又开空,在一次扫描中两个条件c>o 和c<=o是互斥的,只能一个条件成立。下次扫描是holding就不等于0了,所以begin----end中的语句就不运行了。信号不会消失,但可能开仓方向反了,在我的策略中这没有没有关系,到092600就自动根据这10分钟运行的情况进行修改。

交易日志开了一段时间,文件太大,怕影响速度,加上挺稳定的就关掉了。你说的数据延迟的问题我在想一想。

[此贴子已经被作者于2012-5-18 13:08:44编辑过]