- 精华
- 0
- 在线时间
- 378 小时
- UID
- 234307
- 积分
- 153
- 帖子
- 103
- 阅读权限
- 40
- 注册时间
- 2016-5-12
- 最后登录
- 2023-7-26
- 精华
- 0
- UID
- 234307
- 积分
- 153
- 帖子
- 103
- 主题
- 29
- 阅读权限
- 40
- 注册时间
- 2016-5-12
- 最后登录
- 2023-7-26
|
本帖最后由 laofu602 于 2016-5-31 20:52 编辑
在使用A_SendOrder指令时,为了避免重复发单,我考虑设置一个变量做开平仓标志,例如
Vars
Numeric HasSendbuy(0);
Numeric HasSendsell(0);
。。。
if (A_BuyPosition==0&&HasSendbuy==0&&H>H[1])
{
A_SendOrder(Enum_Buy,Enum_Entry,1,H[1]);
HasSendbuy = 1;//开仓后,禁止重复发单
HasSendsell = 0;//开仓后,允许平仓
}
if (A_BuyPosition>0&&HasSendsell==0&&L<L[1])
{
A_SendOrder(Enum_Sell,Enum_Exit,bidPosition,L[1]);
HasSendsell = 1;//平仓后,禁止重复发单
HasSendbuy = 0;//平仓后允许开多仓
}
。。。
那么这个开平仓标志应该使用普通变量还是使用全局变量?
如果使用普通变量,在实时bar中,每个Tick是不是都会初始化成0,也就是允许开平仓了,这就还可能出现重复发单。
如果使用全局变量,那么又会把标志带到下一Bar中,这也不对头。
应该如何解决这个问题?
|
|