- 精华
- 0
- 在线时间
- 432 小时
- UID
- 7887
- 积分
- 527
- 帖子
- 65
- 阅读权限
- 50
- 注册时间
- 2010-3-28
- 最后登录
- 2019-11-8
- 精华
- 0
- UID
- 7887
- 积分
- 527
- 帖子
- 65
- 主题
- 23
- 阅读权限
- 50
- 注册时间
- 2010-3-28
- 最后登录
- 2019-11-8
|
请管理员帮我看看,这个代码是否有问题,主要是想在平仓后,需要等待若干时间,直至单子完全成交后,才开新仓,因为开仓是根据资金的比例来实现的,但如果没有完全成交,这个资金就不正确,所以需要用全局变量和A函数来控制,谢谢。
if( BarStatus == 2 )
{
ta_position = GetGlobalVar(0);
if( ta_position == InvalidNumeric )
{
ta_position = A_BuyPosition();
tmp_num = A_TotalPosition();
if( tmp_num == 0 and ta_position !=0 ) //处于锁仓状态,则自动解锁仓位.
{
A_SendOrder(Enum_Sell,Enum_Exit,A_BuyPosition(),Q_BidPrice-MinMove*tp_offset); //多头全平
A_SendOrder(Enum_Buy,Enum_Exit,A_sellPosition(),Q_AskPrice+MinMove*tp_offset); //空头全平
tmp_num = 0;
}
SetGlobalVar(0,tmp_num);
ta_position = tmp_num;
}
If( ta_position >0 ) //多方头寸时
{
if( 空头成立 )
{
A_SendOrder(Enum_Sell,Enum_Exit,ta_position,Q_BidPrice-MinMove*tp_offset); //多头全平
SetGlobalVar(0,0);//设置全局变量为无仓位状态。
}
}
Else if( ta_position<0 ) //空方头寸时
{
if( 多头成立 )
{
A_SendOrder(Enum_Buy,Enum_Exit,0-ta_position,Q_AskPrice+MinMove*tp_offset); //空头全平
SetGlobalVar(0,0);//设置全局变量为无仓位状态。
}
}
Else //无仓位时
{
if( A_GetOpenOrderCount() != 0) //获取未成交的委托单的数量,有单未成交则不操作。
{
Return;
}
tmp_num = IntPart(A_FreeMargin/Q_BidPrice*ContractUnit*MarginRatio*kc_ratio); //按照开仓比例建仓
if( 空头成立 )
{
A_SendOrder(Enum_Sell,Enum_Entry,tmp_num,Q_BidPrice-MinMove*tp_offset); //建立空头仓
SetGlobalVar(0,0-tmp_num);
}else if( 多头成立 )
{
A_SendOrder(Enum_Buy,Enum_Entry,tmp_num,Q_AskPrice+MinMove*tp_offset); //建立多头仓
SetGlobalVar(0,tmp_num);
}
}
}Else
{
//下面是回逆历史数据时执行
//buy sell指令
} |
|