本篇帖子我们讲一下算法下单、图标交易的相关内容
<font color=red>先给大家展示下效果:</font>

我们以下面这个策略为例:

第一步:配置我们的算法
1.点击右下角的接入,选择便捷交易:

2.点击左上角的增加按钮

3.将策略名称改成我们代码里面的名称“追单”,交易类型选择股票,账号选择我们的资金账号(要与代码里的账号保持一致)。操作完关闭对话框即可。

注:最右边有一些参数变量我们可以自己定义。在文档最下面可以看到每个参数的解释。
第二步:打开行情,选到自己想要交易的种类,下面咱们以贵州茅台(600519)为例:

第三步:点到左上角的模型按钮,双击刚才我们的策略,运行刚才我们的示例策略:

第四步:打开图标交易:
1.点击策略的编辑按钮:

2.选中图标交易,点击运行按钮:

3.我们就会看到图中出现了这个三角形的按钮

第五步:点击三角形的按钮,然后我们就能在模型交易里面的策略信号里看到我们正在进行的交易了:

最后,我们再讲一下如何通过vba指标来完成这个算法下单:
我们以下面的代码为例
DIFF:=EMA(CLOSE,12)-EMA(CLOSE,26);
DIFF9:=EMA(DIFF,9);
MACD_buySignal:=iff(diff>diff9,1,0);
MACD_sellSignal:=iff(diff<diff9,1,0);
MA_buySignal:=iff(MA(close,5)>MA(close,10),1,0);
MA_sellSignal:=iff(MA(close,5)<MA(close,10),1,0);
buySignal:iff(MACD_buySignal and MA_buySignal,1,0);
sellSignal:iff(MACD_sellSignal or MA_sellSignal,1,0);
orderType:1101;
accountID:'2013774';
accountType_:'STOCK';
orderCode:STOCKCODE();
prType:14;
modelprice:-1;
volume:100;
strategyName:'算法测试';
quickTrade:2;
userOrderId:'';
algoName:'追单';
if buySignal=1 then begin
algo_passorder(
23{操作号},orderType{组合类型},accountID{资金账号ID},accountType_{资金账号类型}
,orderCode{下单标的代码},prType{报价类型},modelprice{价格},volume{数量}
,strategyName{策略名称},quickTrade{快速下单},userOrderId{投资备注}
,algoName{算法参数组名}
);
end
if sellSignal=1 then begin
algo_passorder(
24{操作号},orderType{组合类型},accountID{资金账号ID},accountType_{资金账号类型}
,orderCode{下单标的代码},prType{报价类型},modelprice{价格},volume{数量}
,strategyName{策略名称},quickTrade{快速下单},userOrderId{投资备注}
,algoName{算法参数组名}
);
end
我们是通过algo_passorder这个函数去完成算法下单的。我们来讲一下其中每个参数的含义:
1.opType:23;代表股票买入,或沪港通、深港通股票买入。24代表股票卖出。
2.orderType:1101;代表单股、单账号、普通、股/手方式下单(ETF申赎只能用此参数)。
3.accountID:'2013774';代表资金账号ID。
4.accountType_:'STOCK';代表资金账号类型 'STOCK'-股票账号。
5.orderCode:STOCKCODE();代表下单标的代码 格式为:'{品种代码}.{市场代码}'
6.prType:14;代表报价类型 14为对手价
7.modelprice:-1;代表价格
单股:prType是模型价时price有效;其它情况无效
组合:是组合套利时,price作套利比例有效;其它情况无效
8.volume:100;
根据orderType值最后一位确定volume的单位:
(单股时)1股/手,2金额(元),3比例(%)
(组合时)1按组合股票数量(份),2按组合股票权重(元),3按账号可用(%)
volume(下单数量(股/手/元/%))
9.strategyName:'算法测试';
用于在同一策略实例中将策略信号分组
在同一个bar的多次tick触发中,同一组策略信号会互相覆盖保留最后一次的信号
10.quickTrade:2;代表快速下单 2-立即执行,实时和历史数据驱动下都生效(只用于python的定时器模式或盘后调试场景,vba中不需要使用,如果调试使用请注意在历史数据驱动下大量下单的风险)
11.userOrderId:'';代表投资备注用于标记每笔委托,会随着委托和成交记录在相应字段中
12.algoName:'追单';算法参数组名,在界面上设置好一组函数交易的算法参数,用该参数组名称传参
PS:算法交易参数说明:
算法交易通过大单拆分方式减少对市场的冲击,并且根据行情波动及时调整报价已保证快速成交。
1、报价方式:统称“基准价”
卖⑤价-卖①价,买①价-买⑤价:盘口对应的买卖委托价格;
涨跌停价:买入的时候用涨停价,卖出的时候用跌停价;
最新价:盘口最新的委托价格;
挂单价:买入的时候就是买①价,卖出的时候就是卖①价;
对手价:买入的时候就是卖①价,卖出的时候就是买①价;
昨收价:昨日的收盘价;
指定价:在基准价的位置手动填写委托价格;
2、单笔超价:单笔超价是以基准价为基础,对委托价格做调整。支持“元”,“%”两种模式。
正值加速成交,注重成交速度:买入时委托价格=基准价(1+x%),卖出时委托价格=基准价(1-x%)
负值优化成交,注重节约成本:买入时委托价格=基准价(1-%),卖出时委托价格=基准价(1+x%)
3、单笔基准量:单笔委托数量以此为基准。
卖①+②...量,买①+②...量:对手盘口的委托量;
目标量:下单的交易总量;
目标剩余量:目标量-已报委托量=目标剩余量;
持仓数量:卖出时可将现有的持仓量作为单笔基准量;
4、基准量比例:基准量比例×单笔基准量=单笔委托数量。单笔委托数量小于单笔最小量,按单笔最小量报单;单笔委托数量大于单笔最大量,按单笔最大量报单。
5、尾单最小量当单笔基准量选择“目标剩余量”时,可设置尾单最小量。当按照基准量比例和单笔基准量计算出的单笔委托数量小于或等于尾单最小量(尾单最小量比例目标量)时,单笔委托按照尾单最小量(尾单最小量比例*目标量)下单。单笔最大量和单笔最小量设置的优先级高于尾单最小量,即计算出的尾单最小量超出了单笔最大量和单笔最小量的范围时,单笔委托数量会限制在单笔最大量和单笔最小量的范围范围内。
6、下撤单间隔:算法交易任务开始执行后,会按照下单间隔设置,定时报送委托; 每隔xx秒,根据当前行情判断,撒单重报是否更有利于成交(买入报单后,价格上张,原买入价格无法成交,需要以更高的价格重新报单才能成交。或卖出报单后,价格下跌,原卖出价格无法成交需要以更低的价格重新报单才能成交),当有利于成交时才会执行撤单,否则继续挂单。
7、超价启用笔数:从第N笔开始,委托价格根据单笔超价调整。
8、双向波动区间:算法交易报单的时机由波动区间决定:当股票价格超出设置的波动区间时,系统将暂停报单。
波动区间支持单向、双向两种模式,单向即买入时仅限制上限,卖出时仅限制下限;双向即买入、卖出均限制上下限。
9、单笔最小量、单笔最大量:组成单笔委托量范围,单笔委托数量必须在单笔范围内,当算法任务未报委托量小于单笔最小量,会按未报委托量报单。
10、有效时间:按照算法指令的开始时间计算,超出有效时间,算法任务终止同时向柜台发起撤销委托。
11、最大委托次数:即算法任务最大可委托的次数,含未成委托再次报单。当委托次数达到最大委托次数后再次到达下单时点,算法任务终止同时向柜台发起撤销委托。
12、未成委托处理:撤单的部分属于未成委托。如果选择了未成委托的处理方式,撤回的部分按照未成委托处理所选的方式委托下单,该次委托不受下单间隔影响,依然会根据撒单间隔判断是否撤单。如果未成委托选择不处理,撤回的部分会计算到任务未报单里,将在之后的任务执行过程中正常报单。
13、触价设置:启用触价后,可设置条件单的触发价格和触价方向。当标的最新价满足触价条件时,算法任务开始执行,否则任务维持等待状态。触价方向分为“≥”和“≤”,当设置“最新价》触发价格”时,标的最新价大于触发价格时,任务启动;当设置“最新价≤触发价格"时,标的最新价小于触发价格时,任务启动。
14、投资备注:用于填写该笔算法交易任务备注信息。
