以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  [求助]Tick周期的高频交易使用not(tisremain(0))能否解决重复发单问题?  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=2755)

--  作者:z7c9
--  发布时间:2010/9/8 10:10:10
--  [求助]Tick周期的高频交易使用not(tisremain(0))能否解决重复发单问题?

在做一个Tick周期的高频交易系统,采用高频扫描方式,此时无法使用holding或tholding状态来判断是否已经发单,
后来使用Variable变量做发单控制,发现一些问题,现在想改用not(tisremain(0))来做状态判断,不知是否能解决重复发单问题?
具体格式如下:

if not(tisremain(0)) and tholding=0 then begin
end;

if not(tisremain(0)) and tholding>0 then begin
end;

if not(tisremain(0)) and tholding<0 then begin
end;

 

 

另外还有一个问题,在同一个tick上sellvol和buyvol均大于0的现象,和函数描述不符,请问怎么理解?

取得主动性卖单量。
用法:
SELLVOL()
当本笔成交为主动性卖盘时,其数值等于成交量,否则为0
(本函数仅个股在分笔成交分析周期有效)
所属函数组:行情函数

[此贴子已经被作者于2010-9-8 10:15:24编辑过]

--  作者:admin
--  发布时间:2010/9/8 10:19:15
--  

你可以把部分公式贴过来我们帮你看看,不过从使用经验角度来说,后台自动交易不能tisremain来控制重复发单,一般可以使用TTYPE来控制


--  作者:z7c9
--  发布时间:2010/9/8 10:26:41
--  
以下是引用admin在2010-9-8 10:19:15的发言:

你可以把部分公式贴过来我们帮你看看,不过从使用经验角度来说,后台自动交易不能tisremain来控制重复发单,一般可以使用TTYPE来控制

代码结构如下:

 

if tholding=0 then begin
 tbuy(enterlongcond,1,lmt,bidprice);
 tbuyshort(entershortcond,1,lmt,askprice);
end;

if tholding>0 then begin
 tsell(exitlongcond,tholding,lmt,askprice);
end;

if tholding<0 then begin
 tsellshort(exitshortcond,tholding,lmt,bidprice);
end;


--  作者:admin
--  发布时间:2010/9/8 11:05:34
--  

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

参考问题15


--  作者:z7c9
--  发布时间:2010/9/8 11:13:59
--  
以下是引用admin在2010-9-8 11:05:34的发言:

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

参考问题15

问题15没有解决重复发单的问题呀,在Tick周期上,完全可能下个tick也满足开平仓条件,但是因为tholding还没有与交易所柜台同步,导致开仓条件和tholding同时成立,继续重复开仓。

[此贴子已经被作者于2010-9-8 11:14:26编辑过]

--  作者:z7c9
--  发布时间:2010/9/8 11:17:37
--  

原打算用全局变量variable,发现全局变量在tick周期运算有问题,不知在tick周期上采用何种方法能彻底解决重复发单问题?


--  作者:admin
--  发布时间:2010/9/8 11:21:06
--  

variable只是在执行一次刷新的同时是全局变量,下次刷新会被重新初始化。你需要可以记忆的全局变量,请参考EXTGBDATA(S)函数,论坛已经多次讨论

此外重复发单的问题,可以用TTYPE解决,为什么你不去用

[此贴子已经被作者于2010-9-8 11:22:03编辑过]

--  作者:z7c9
--  发布时间:2010/9/8 11:43:04
--  
以下是引用admin在2010-9-8 11:21:06的发言:

variable只是在执行一次刷新的同时是全局变量,下次刷新会被重新初始化。你需要可以记忆的全局变量,请参考EXTGBDATA(S)函数,论坛已经多次讨论

此外重复发单的问题,可以用TTYPE解决,为什么你不去用

[此贴子已经被作者于2010-9-8 11:22:03编辑过]
一次刷新是什么意思?
--  作者:msedu
--  发布时间:2010/9/8 12:05:40
--  

用:Tisremain()函数,和TTYPE()函数的一些差别,我的经验是:(不一定是对的,还请Admin确认一下啊!)

 

用,Not(Tisremain(0)) ,也能控制,但是,在后台程式化交易设置中,预警间隔至少设置为“3”秒,才有效,否则,可能还是会出现连续发出同一方向的委托单的情况,这是因为,交易系统还没来得及获得真实的“未成交委托单的状态”的情况下,又发出了新的委托。。。

 

用TTYPE,的话,TTYPE,是完全跟着交易系统的信号走的,只要发出信号,不管有没有成交,都可以不再发出同一个方向的委托,但是,这样也可能造成,把一次交易信号忽略掉的可能,就是,发出信号,未成交即撤单,可系统也不会再次发出同一方向的委托单了,所以,在“程式化交易”的设置里,要合理的设置“未成交单撤单的时间间隔”、“追单的时间间隔和追单的变动价位范围”,也就是说,你要确保,发出去这一单,一定要能成交才行。。。。

 

另外,我发觉,如果使用“金字塔VBA”来开发交易系统的话,可以精确的控制,每一次的发单,可以根据“同一个K线上的每个TICK”的变化进行精确的开平仓操作,比如说:你在PEL上,可能你要以上一根K线和最后一根K线比较,来决定开平仓动作,可是在“金字塔VBA”中,你可以那最后一个TICK上上一个TICK进行比较来决定开平仓,所以,大家可以试试看,然后,我们一起交流下经验啊。。。

 

也不知道,我说的对不对,还在学习和观察之中,大家一起交流提高啊。。。

 

QQ群:121087743