开拓者期货期权程序化系统交易论坛

标题: 再请教Nopain版主 [打印本页]

作者: feiniao_2008    时间: 2008-3-28 11:23:46     标题: 再请教Nopain版主

if(平仓条件满足)
{平仓指令}
ExitFlag=A_OpenOrderEntryOrExit(0)
if(ExitFlag==Enum_Exit)and(A_OrderFilledLot==平仓手数)
{开新仓指令}
版主,我想用上面的想法实现监控平仓指令成交后再发送新的开仓指令的动作,现在有如下几个问题不明白,想请教一下版主:
1.对ExitFlag申明变量时初值设为多少才不会和Enum_Exit所表示的平仓标志值相重复.
2.想用A_OpenOrderEntryOrExit函数获取刚提交委托单的平仓或开仓或平今仓标志,但对括号中的参数不会用,麻烦举例讲解.帮助上讲的不太清楚.
3.我用这种想法能否实现最终的目的.
谢谢版主!
作者: nopain    时间: 2008-3-28 12:34:19

回复1:
Enum_Entry         0
Enum_Exit           1
Enum_ExitToday   2
您将ExitFlag设置为 -1 吧。
回复2:
您要用A_OpenOrderEntryOrExit,需要您完全自动交易,并且当前商品只有这个系统在使用,否则就可能导致取到的数据不是您想要的。
满足上面的条件下,您用A_OpenOrderEntryOrExit(0),表示取最后的未成交委托单的状态,如果这个状态==Enum_Exit,表示还有平仓单没有成交。不能进行开仓操作。
回复3:
您想实现的逻辑相对来说比较复杂,单独用来做日内交易,理论上是可以实现的(全部用A函数来写,不用Buy,Sell等函数)。
但是如果和模拟测试搅在一起,会有很多未知的问题(比如:除了最后
Bar之外是取不到A函数的,所以历史上的信号未必反映您真实的仓位)。所以我觉得还是不要这么使用。

您的目的就是想等平仓单成交之后再反手开新仓。这种逻辑,可以通过一些变通的方式来实现
比如平仓之后再走+1点,在开仓。
作者: feiniao_2008    时间: 2008-3-28 16:54:28

版主,平仓之后再走+1点,再开仓?甚末意思?我的这种思想主要是想避免用buy或sellshort指令平仓反手需要2倍的资金,而自己资金又不足2倍的问题而产生的.版主有好的解决这个问题的建议吗?
是否可以这样:
if(平仓条件满足)
{平仓指令}
if(MarketPosition==0)and(满足新开仓条件)
{新开仓指令}
用这样一种方式(用仓位来监控是否平仓单已成交)来实现目的?
谢谢版主的解答!

[ 本帖最后由 feiniao_2008 于 2008-3-28 17:06 编辑 ]
作者: nopain    时间: 2008-3-28 18:32:34

平仓之后价位沿原来的方向再走1点,可以确保您的平仓单已经成交,这个时候再下开仓单,资金就已经回来了
作者: feiniao_2008    时间: 2008-3-31 16:57:59

版主,这种方法好象不行,价格变动1点很快,而平仓单+交易助手发出委托到成交要大于这个时间.
我想用这个办法你看可行吗?
if(平仓条件满足AND开新仓条件满足)
   {平仓指令}
while(MarketPosition!=0)
{i=i+1
  if(MarketPosition==0)
  break
  }
{新开仓指令and重置 i=0}
定义i为NumericSeries初值为0.
作者: nopain    时间: 2008-3-31 17:22:43

不行的。您用的MarketPosition是取图上的状态,按照您的想法,也应该用A函数判断是否还有持仓。
作者: feiniao_2008    时间: 2008-4-1 08:59:58

感谢NOPAIN版主的解答!
我还有以下几个问题不太明白:
1.如果用A函数A_TotalPosition判断是否有持仓时,再用开仓指令或平仓指令时是用普通的buy或sellshort指令还是要用A函数的A_SendOrder来自己写发送指令.
2.如果程序中用了自己用A函数判断持仓,是否还能再加用交易助手辅助成交.
谢谢版主!
作者: nopain    时间: 2008-4-1 09:29:49

1、您用While循环在程序中等待,会造成程序象死了一样,不会刷新,这个方法我觉得不可行。
2、可以使用交易助手的。
作者: feiniao_2008    时间: 2008-4-1 09:42:55

版主,关于你说的while循环等待不会刷新,我想先在平仓指令发出后设置一个全局变量开关,并置为开状态,然后用A函数是否持仓来判断等待还是跳出循环,只有这两个条件都满足才等待,如果持仓为空(也就是平仓单已经成交了)就跳出循环并开新仓并且置全局变量开关为关状态,这种办法能解决吗?

[ 本帖最后由 feiniao_2008 于 2008-4-1 09:52 编辑 ]
作者: nopain    时间: 2008-4-1 09:49:13

理论上是可以实现的,但是太复杂了,我觉得您应该把研究的重心放在其他地方,相对于其他开平仓条件来说,直接反手并不是一个好的Idea。
作者: feiniao_2008    时间: 2008-4-1 09:56:19

版主的意思,我明白.这样就要修改交易的思想了.用战略思想来避开这种小的战术弊端.

[ 本帖最后由 feiniao_2008 于 2008-4-1 09:59 编辑 ]
作者: cyycjt    时间: 2009-11-27 19:16:17

原帖由 nopain 于 2008-3-28 18:32 发表
平仓之后价位沿原来的方向再走1点,可以确保您的平仓单已经成交,这个时候再下开仓单,资金就已经回来了


今天反手出现资金不足,急需实现这一方法的代码.
作者: 女儿是期神    时间: 2009-12-1 08:41:40

给你个建议,记录平仓前的可用资金。若可用资金变大了1000则反手,否则等下一个tick.




欢迎光临 开拓者期货期权程序化系统交易论坛 (http://bbs.tb18.net/) Powered by Discuz! X2