四、算法交易实现高频策略及个性化下单
     

这部分是在原算法交易模型功能扩展而来的。

很多成功的程序化交易投资者每年算一笔账,在滑点上的损失比交的手续费还要多。随着投资者对程序化交易的认识不断提高,投资者之间将逐渐从交易策略的较量转变为下单精细化控制的博弈上来。算法交易模型可对程序化委托的每个环节进行精细化控制,达到降低交易成本的目的,如何减小滑点成本,减小交易的摩擦成本是他们的着力点。

 
(一)案例1:追价算法交易模型确保成交
模型满足开仓条件发出委托信号后,因行情变动快,加之下单手数多等原因,可能无法快速成交。通过绑定自己编写的追价算法交易模型,可及时将没有成交的部分进行自动撤单,然后自动按照编写的价格方式重新发出委托,如果出现价差过大或长时间无法成交等则放弃本次交易。下图为算法交易模型策略部分源码。



  算法交易模型执行效果如下图所示,在第一次委托没有成交时,算法交易模型对委托进行了撤单,撤单后重新追价,确保了委托的成交。  
   
     
(二)案例2:分批下单,实现大单拆分
     
  大客户由于资金量大,满足模型条件时如果一次下单手数过多很可能无法成交或直接将价格打穿。通过绑定自己编写的分批算法交易模型,可在下单时由系统自动拆分成合适的小单分批委托,也可由算法交易模型监测价差过大时是否放弃后续委托。下图为算法交易模型策略部分源码。

 
 

  算法交易模型执行效果如下图所示,利用算法交易模型,将20手委托拆分成4批委托,每批5手。  
   
     
(三) 案例3:实现自己的止盈止损策略
     
 

软件中会提供几种默认止赢止损策略,但有时还是无法完全满足用户的多样性需要,算法交易模型的函数可取到盘口价格和持仓合约的信息(持仓价格、数量、和盈亏等),通过编写算法交易模型可定制属于您自己的止损止盈策略。

跟踪止盈是软件默认提供的策略,但如果希望在盈利达到一定值时在启动跟踪止盈策略,就无法实现了,下图为按照此需求编写的独立运行的算法交易模型的部分源码(盈利达到3个点后启动跟踪止损策略)。那么在开仓后,独立运行的算法交易模型就会开始取盘口价格和持仓价格实时监测,满足了条件会自动发平仓委托。


   
 

 

 
(四)算法交易模型的建立和运行
     
 

1、建立算法交易模型:
如下图所示是如何建立算法交易模型:

 
 

 
  2、运行算法交易模型:
如下图所示,是如何运行算法交易模型。

 
 

(五)相关常见问题解答
     
  1、算法交易模型的编写语法在哪里可以找到?
答:如下图所示,点击软件上方菜单的【编写】—>编写算法交易模型,在弹出的窗口中点击【帮助】—>基本语法,即可弹出算法交易模型编写语法的网页。

2、算法交易模型可以使用趋势模型的函数么?
答:趋势模型和算法交易模型的函数库是相互独立的,不能互相引用。

3、手动开仓的单子可用算法交易模型平仓么?如何平仓?
答:手动开仓的单子可使用独立运行的算法交易模型平仓。在算法交易模型中可利用发出委托函数(T_Deal)指定平仓的合约。

4、算法交易模型能否取到模组信号?
答:算法交易模型可以取到模组信号,并通过这种方式实现对指定模组的下单精细控制。
方法:
VAR Modname;
Modname="模型名";
算法交易模型中,指令状态函数与Modname关联即可,例如Modname.F_Sig()==BK
注:想要使用算法交易模型取到模型信号,模型需要在编写时加入SETMODRUNTYPE函数。

5、算法交易模型能否识别具体模组的具体信号?
答:可根据行数来判断,使用F_SigPos()函数判断当前信号在模型中是第几个有指令的语句。

6、算法交易模型可以进行效果测试么?
答:可以,如下图所示,是如何进行算法交易模型模型回测

7、程序化自动下单一定要使用算法交易模型么?
答:普通的趋势交易策略使用趋势模型编写,加载到程序化平台运行实现自动交易;与趋势无关的盘口高频交易模型,需要用算法模型编写。