设为首页收藏本站

 找回密码
 注册
查看: 2189|回复: 1
打印 上一主题 下一主题

紧急!请管理员帮我看看这个代码有无问题? [复制链接]

Rank: 4

精华
0
UID
7887
积分
527
帖子
65
主题
23
阅读权限
50
注册时间
2010-3-28
最后登录
2019-11-8
跳转到指定楼层
1#
发表于 2010-4-12 19:06:22 |只看该作者 |倒序浏览
请管理员帮我看看,这个代码是否有问题,主要是想在平仓后,需要等待若干时间,直至单子完全成交后,才开新仓,因为开仓是根据资金的比例来实现的,但如果没有完全成交,这个资金就不正确,所以需要用全局变量和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指令
        }

Rank: 10Rank: 10Rank: 10

精华
2
UID
4130
积分
20906
帖子
6519
主题
17
阅读权限
200
注册时间
2009-4-15
最后登录
2019-4-12
2#
发表于 2010-4-13 12:11:08 |只看该作者
判断状态是否成交
A_OrderStatus

nCount = A_GetOrderCount();
For i = 1 To nCount
{
nStatus = A_OrderStatus(i);
If(nStatus == Enum_Filled)
...
}

使用道具 举报

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

bottom

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

GMT+8, 2024-5-19 20:57

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部