您现在的位置:程序化交易>> 期货公式>> 文华财经>> 文华财经知识>>正文内容

[求助]下单组件如何编写?智能分批+滑点控制 [赢顺期货]

  • 咨询内容:

    wh3中有一些下单组件的范例,正在学习中,想完成以下内容,不知道怎么写,特来求助:

    1、根据买一买一智能分批;

    2、如果下单数大于10手才激活智能分批;

    3、滑点希望能控制在3个以内;

     

    谢谢~

     

  • 赢顺技术人员:

    您可以尝试编写一下,我们来给您作修改

     

  • 赢顺客服:

    我是想写,但是不知道下单组件中如何获取信号的委托下单数量

     

  • 网友回复: F_SigVol()取当前信号的手数。
    用法:
    F_SigVol() 取当前的信号的手数, 如果当前信号是BPK(5), 则返回5.
    例:
     IF(F_SigVol() == VarOpi) //如果信号的仓位等于变量VarOpi

     

  • 网友回复:
    以下内容为程序代码:

    1 //主要策略:设定分批总手数,开平仓时,自动根据买卖盘动态分批。
    2 VAR N;//定义总手数。
    3 VAR KYN;//定义目前已有手数。
    4 VAR PYN;//定义目前已有手数。
    5 VAR YYN;//定义目前已有手数。
    6 VAR KPN;//卖1量
    7 VAR PPN;//买1量
    8 VAR Status;//定义交易所状态修正变量,开仓总手数
    9 VAR level;//定义开始分仓的数量
    10 VOID MAIN()//主函数。
    11 {
    12     N=F_SigVol();//开始分仓的总手数
    13     level=10;
    14     KPN=Offers(F_DealCode(),"askvol1");//取得当前合约卖1量。
    15     PPN=Offers(F_DealCode(),"bidvol1");//取得当前合约买1量。
    16 Status=T_IsExchangeOpen(F_DealCode());//判断当前合约所属交易所的状态。
    17     IF(F_FreshSig()==1)
    18     {
    19         KYN=F_BuyPosition();//取得交易系统合约的多头持仓
    20         PYN=F_SellPosition();//取得交易系统合约的空头持仓
    21         IF(F_Sig()==BK&&T_IsExchangeOpen(F_DealCode())==1)//当前信号为开多仓信号并且交易所处于开盘状态的时候。
    22         {
    23             BKDeal();//运行开多仓分批函数。
    24         }
    25         ELSE IF(F_Sig()==SK&&T_IsExchangeOpen(F_DealCode())==1)//当前信号为开空仓信号并且交易所处于开盘状态的时候。
    26         {
    27             SKDeal();//运行开空仓分批函数。
    28         }
    29         ELSE IF(F_Sig()==BP&&T_IsExchangeOpen(F_DealCode())==1) //当前信号为平空仓信号并且交易所处于开盘状态的时候。
    30         {
    31             BPDeal();//运行平空仓分批函数。
    32         }
    33         ELSE IF(F_Sig()==SP&&T_IsExchangeOpen(F_DealCode())==1) //当前信号为平多仓信号并且交易所处于开盘状态的时候。
    34         {
    35             SPDeal();//运行平多仓分批函数。
    36         }
    37     }
    38     ELSE IF(F_FreshSig()==0)
    39     {
    40         YYN=ReadGlobal("C");//读取注册表中上一次记录的已有手数。
    41         KYN=ReadGlobal("A");//读取注册表中上一次记录的已有手数。
    42         PYN=ReadGlobal("B");//读取注册表中上一次记录的已有手数。
    43         IF(F_Sig()==BK&&T_IsExchangeOpen(F_DealCode())==1)//当前信号为开多仓信号并且交易所处于开盘状态的时候。
    44         {
    45             BKDeal();//运行开多仓分批函数。
    46         }
    47         ELSE IF(F_Sig()==SK&&T_IsExchangeOpen(F_DealCode())==1)//当前信号为开空仓信号并且交易所处于开盘状态的时候。
    48         {
    49             SKDeal();//运行开空仓分批函数。
    50         }
    51         ELSE IF(F_Sig()==BP&&T_IsExchangeOpen(F_DealCode())==1) //当前信号为平空仓信号并且交易所处于开盘状态的时候。
    52         {
    53             BPDeal();//运行平空仓分批函数。
    54         }
    55         ELSE IF(F_Sig()==SP&&T_IsExchangeOpen(F_DealCode())==1) //当前信号为平多仓信号并且交易所处于开盘状态的时候。
    56         {
    57             SPDeal();//运行平多仓分批函数。
    58         }
    59     }
    60     WriteGlobal("A",KYN);//将本次运行过后的以开仓手数记录到注册表中。
    61     WriteGlobal("B",PYN);//将本次运行过后的以开仓手数记录到注册表中。
    62     WriteGlobal("C",YYN);//将本次运行过后的以开仓手数记录到注册表中。
    63 }
    64 VOID BKDeal()//定义开仓分批函数
    65 {
    66     IF(N<level)
    67     {
    68         T_Deal(F_DealCode(),0,0,N,Offers(F_DealCode(),"ask1"));//做多指定手数。
    69     }
    70     ELSE IF(N>level)
    71     {
    72         IF(YYN+PPN<=N)//如果已开仓手数小于需要开仓手数。
    73         {
    74             IF(F_Sig()==BK&&T_IsNoOrder()==1&&Status==1)//如果当前信号为BK并且无挂单。
    75             {
    76                 IF(F_SigVol()<=N)
    77                 {
    78                     KPN = F_Sig
    79
    80                 T_Deal(F_DealCode(),0,0,KPN,Offers(F_DealCode(),"ask1"));//做多指定手数。
    81                 YYN=YYN+KPN;//已开仓手数增加KPN
    82             }
    83             ELSE MessageOut("等待成交");//其他情况显示"等待成交"。
    84         }
    85         ELSE IF(YYN+KPN>N && YYN<N)//如果已开仓手数大于需要开仓手数。
    86         {
    87             IF(F_Sig()==BK&&T_IsNoOrder()==1&&Status==1)//如果当前信号为BK并且无挂单。
    88             {
    89             T_Deal(F_DealCode(),0,0,N-YYN,Offers(F_DealCode(),"ask1"));//做多指定手数。
    90             MessageOut("good");
    91             }
    92             ELSE
    93             MessageOut("等待成交");//其他情况显示"等待成交"。
    94         }
    95         ELSE
    96         {
    97             MessageOut("开多仓分批已成交");//新的已开仓手数等于需要开仓手数。
    98         }
    99     }
    100 }

 

有思路,想编写各种指标公式,程序化交易模型,选股公式,预警公式的朋友

可联系技术人员 QQ: 262069696  点击在线交流进行 有偿 编写!不贵!点击查看价格!

 


【字体: 】【打印文章】【查看评论

相关文章

    指定的模型还没有相关内容!