【功能介绍】:MQ 全自动跟单功能介绍 (文华财经)

投资者咨询:【功能介绍】:MQ 全自动跟单功能介绍 (文华财经)
来源:文华财经  日期:2018-1-5 15:10


目前国内很多大型交易机构都有管理多个交易账户的需求

为了让多账户下程序化交易更智能,MQ版本中支持用程序化跟单的方式,可接入多个国内期货公司实盘账号,实现跟单策略

MQ版本在文华官网下载:http://www.wenhua.com.cn/


实现跟单的基础条件:

1.需要在MQ全自动软件上实现

2.需要有完善的跟单思路,并编写成MQ的跟单模型

3.需要有多账户功能使用权限
                 
技术人员回复
日期:2018-1-5 15:12

具体操作步骤:


假设,目前管理A  D 共4个账户


A为主账户正在运行策略,  B  C  D 为需要跟单的账户,实现和A同方向下单


则可以在模型中取主账号的成交回报进行跟单



步骤1:在MQ中,空格键调出登陆页面,首先要登陆ABCD  4个账号



按此在新窗口浏览图片
文件名:图像 15.jpg




步骤2:右上方 编写》编写公式,编写个性化的跟单模型


           注意:右侧模型类型为“独立的算法交易模型”



按此在新窗口浏览图片
文件名:图像 16.jpg



步骤3:右上方菜单 算法交易》算法交易运行池,选择上述跟单模型,执行


           注意:执行时绑定的账号,与模型中编写的不是一个账号,这里绑定的是要跟随主账号下单的账号



按此在新窗口浏览图片
文件名:图像 17.png


按此在新窗口浏览图片
文件名:图像 18.jpg



步骤4:主账号下单,上面的算法交易模型会自动跟随下单。


           主账号下单形式不限制:主账号可以加载模组自动下单,也可以手动下单。

 




————————————————————————————



注意事项:


1.上述例子MQ软件需要登陆4个账户


  主账号A和跟单账号BCD都必须同时在MQ软件登录,才能实现跟单。 


2.主账号也可以在其他软件中登录,如果账号A在其他软件平台中下单,


  只要MQ软件中也登录了A账号,就可以取到A账户下单版的持仓信息,在其他平台下单,下单的状态会返回到文华软件,从而实现对BCD进行跟单。


  A账户如果想在两个软件中登录,需要和期货公司申请多点登录权限。

 

 



                   
技术人员回复
日期:2018-1-5 15:28
跟单模型要如何编写:


 在做跟单之前,大家需要明确自己的跟单思路

 可以说跟单方式有很多种:正向跟单、反向跟单 、按倍数跟单相同手数跟单...


 所以,这里没有统一的模型的,需要每个人根据自己个性化的跟单策略来实际编写模型来实现




跟单所需要的函数,见下图:


 
按此在新窗口浏览图片
文件名:图像 21.jpg

 





跟单案例:



为了便于大家了解和测试功能,我们提供一个初级的跟单策略,大家可以用于参考和研究


即:实现的是普通跟单——取主账号的成交回报数据,每一笔成交回报都进行跟单,相同手数正向跟单


注意:下面案例仅供参考,作用仅限于学习和测试,不能用于实盘




 



Vars

 

   String AccountID;//跟单主账号

 

   String GetRspContract;//合约名称

 

   Numeric GetRspNum;//成交回报个数

 

   Numeric GetRspVol;//成交手数

 

   Numeric GetRspPrice;//成交价格

 

   Numeric GetBuyOrSell;//买卖方向

 

   Numeric GetEntryOrExit;//开平方向

 

Begin

 

   AccountID="1105009046"; //需要自己指定的主账户

 

   GetRspNum=T_MatchRspNum(AccountID);

 

   GetRspContract=T_GetFrontMatchRspContract(AccountID);

 

   GetRspVol=T_GetFrontMatchRspVol(AccountID);

 

   GetRspPrice=T_GetFrontMatchRspPrice(AccountID);

 

   GetBuyOrSell=T_GetFrontMatchBuyOrSell(AccountID);

 

   GetEntryOrExit=T_GetFrontMatchEntryOrExit(AccountID);

 

   If(GetRspNum>0)//如果成交回报个数大于0

 

   {

 

      GetRspContract.A_SendOrder(GetBuyOrSell,GetEntryOrExit,GetRspVol,GetRspPrice);//跟单操作

 

      T_PopMatchRsp(AccountID);//删除最早的一个成交回报

 

   }

 

End

 
         
投资者咨询:【功能介绍】:MQ 全自动跟单功能介绍 (文华财经)
来源:文华财经  日期:2018-1-5 15:10
 如果是反向,用    GetEntryOrExit=T_GetFrontMatchEntryOrExit(AccountID); 这个函数?怎么设置?
技术人员回复
日期:2018-1-11 11:01
反向跟单也有不同的思路的

例如:反向 是主账号买开,其他账号进行卖平跟单,还是进行卖开跟单呢,都需要自己定义的 

这里给你写个简单的反向的例子供参考:

——主账号买开,其他账号反向卖开
 


   If(GetRspNum>0)//如果成交回报个数大于0 
   { 
      GetRspContract.A_SendOrder(IIF(GetBuyOrSell==Enum_Buy,Enum_Sell,Enum_Buy),GetEntryOrExit,GetRspVol,GetRspPrice);//跟单操作  
      T_PopMatchRsp(AccountID);//删除最早的一个成交回报 
   } 
End

只修改红色部分就可以了,其他的内容都不变

如果还有其他问题,请重新发帖提问。
     
技术人员回复
日期:2018-1-11 14:06
 请不要在此跟帖!

技术人员回复
日期:2018-1-12 15:23
大家在跟单的时候以主账号成交价委托,可能价格没有优势形成挂单

那么跟单的价格是可以进行修改的,如下编写请参考:

Vars
 
   String AccountID;//跟单主账号
   String GetRspContract;//合约名称
   Numeric GetRspNum;//成交回报个数
   Numeric GetRspVol;//成交手数
   Numeric GetRspPrice;//成交价格
   Numeric GetRspPrice_G;//跟单成交价格
   Numeric GetBuyOrSell;//买卖方向
   Numeric GetBuyOrSell_G;//跟单买卖方向
   Numeric GetEntryOrExit;//开平方向
 
Begin
 
   AccountID="1149900448"; //需要自己指定的主账户
   GetRspNum=T_MatchRspNum(AccountID);
   GetRspContract=T_GetFrontMatchRspContract(AccountID);
   GetRspVol=T_GetFrontMatchRspVol(AccountID);
   GetRspPrice=T_GetFrontMatchRspPrice(AccountID);
   GetBuyOrSell=T_GetFrontMatchBuyOrSell(AccountID);
   GetEntryOrExit=T_GetFrontMatchEntryOrExit(AccountID);

   If(GetRspNum>0)//如果成交回报个数大于0 
   { 
        If(GetBuyOrSell==Enum_Buy)//买卖方向
        {
           GetBuyOrSell_G=Enum_Buy;//主账号买,跟单买
           GetRspPrice_G =GetRspContract.Price("RiseLimit");//买入,以涨停价委托
        }
        Else
       {
           GetBuyOrSell_G=Enum_Sell;//主账号卖,跟单卖
           GetRspPrice_G =GetRspContract.Price("FallLimit");//卖出,以跌停价委托
       }
      Commentary("委托价格:"+ Text(GetRspPrice_G));//标记输出一下委托价格
      GetRspContract.A_SendOrder(GetBuyOrSell_G,GetEntryOrExit,GetRspVol,GetRspPrice_G);//跟单操作  
      T_PopMatchRsp(AccountID);//删除最早的一个成交回报 
  }
End