设为首页收藏本站

 找回密码
 注册
楼主: wide
打印 上一主题 下一主题

关于控制开仓手数的问题(A_SendOrder) [复制链接]

Rank: 3Rank: 3

精华
0
UID
20900
积分
122
帖子
21
主题
3
阅读权限
40
注册时间
2010-12-4
最后登录
2011-12-27
21#
发表于 2011-1-12 22:48:03 |只看该作者
哪位高手,再来指点一下啊?!

使用道具 举报

Rank: 5Rank: 5

精华
0
UID
4647
积分
1403
帖子
432
主题
31
阅读权限
60
注册时间
2009-6-16
最后登录
2019-10-27
22#
发表于 2011-1-16 11:34:00 |只看该作者
楼主你好,我也是刚刚解决了这个类似的问题。
那就是在多(空)开仓和平仓之间没有进行持仓检查。这将导致开仓后极短时间内如果再次满足开平仓条件时出现混乱。
以开多举例:1.满足开仓条件,开仓——此时全局变量已经转为持有多仓信号,但成交确认还未返回,一般要在1-3秒不等。
2.行情变化很快又满足平多仓条件,于是发出平多仓指令——此时全局变量已经转为空仓信号,但在多单的成交确认还未返回前,平多仓指令却不会发出或发出无效。但请注意此时全局变量已经归零,如果价位条件满足则又可开多仓了。这也许是你所说的二次开多仓的原因所在。
3.解决办法,其实管理员的修改程序中已经给出了,那就是通过增加“A_buyposition>0”的条件判断来避免上述的无效平多指令,以防止全局变量此时归零。

使用道具 举报

Rank: 5Rank: 5

精华
0
UID
15246
积分
704
帖子
167
主题
74
阅读权限
60
注册时间
2010-8-17
最后登录
2021-9-5
23#
发表于 2011-1-18 19:59:35 |只看该作者
If (BarStatus==0)   
                SetGlobalVar(8,0);

把这一句改下面一句看看呢
if  (GetGlobalVar(8)==InvalidNumeric)SetGlobalVar(8,0);

BLONG = Low[1]-Low[2]>0 And low[2]-low[3]>0;                                                                           
        BSHORT = High[1]-High[2]<0 And High[2]-High[3]<0;   
        
        If(BLONG==True  And GetGlobalVar(8)==0 And QuoteDataExist==True)  //全局变量==0   
        {
                SetGlobalVar(8,1);

使用道具 举报

Rank: 5Rank: 5

精华
0
UID
19702
积分
893
帖子
14
主题
3
阅读权限
60
注册时间
2010-11-15
最后登录
2011-11-1
24#
发表于 2011-2-23 16:34:31 |只看该作者
回复 22# liq77


你的回答十分精辟,困扰了我很长时间之后,同样得到了和你同样的结论
不过我的解决方法是将“开仓时间+微小延迟”写进全局变量,然后当实际时间大于这个全局变量的时候,才能进行止损止盈平仓的操作,同样解决问题了

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

bottom

静态版|手机版|联系我们|交易开拓者 ( 粤ICP备07044698   

GMT+8, 2024-5-10 14:54

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部