contact@digquant.com.cn
400-1860-552
官方群:463071731

AT 策略构建

1. 策略操作逻辑

Auto-Trader的策略操作主要由两部分构成:
(1)策略主函数的Function脚本,内容包括策略的主函数,输入参数,计算逻辑和对句柄和数据的设置等;
(2)操作执行函数的Script脚本,分为回测、回放、交易和参数优化四种,每一种都对应一个对策略主函数的操作调用,操作函数在使用时都需要单独进行设置,包括对策略主函数中内置参数的提前赋值,以及操作函数自身的参数设置。



例如,创建了一个Function脚本,在其上进行策略AmaTrade的编写,完成后将该Function脚本改名为AmaTrade,若需要对策略AmaTrade进行回测操作,只需另行创建一个Script脚本,配置AmaTrade内的参数,调用traderRunBacktest函数,在traderRunBacktest函数中输入策略AmaTrade的信息与相关参数后,运行该脚本,即进入对AmaTrade的回测中,回测报告将展示在Auto-Trader终端中。同理回放与交易函数亦如此操作。



Auto-Trader开始进入回测状态。





2. 新建策略

以下为策略主函数的输入参数示范模板,实际应用中不需要严格参照本模板。更多策略示例,可参照Auto-Trader安装目录下的example策略模板。



Function StrategyName(输入参数)

%----------策略初始化与是否日内平仓设置----------%

traderDailyCloseTime(145000);   %每天14:50平仓,若不需要日内平仓可不设置

targetList = traderGetTargetList(); 

%获取交易标的信息(可在回测文件中设置),存入targetList,包括所在市场(market)以及代码(code)

HandleList = traderGetHandleList();  %获得账户句柄信息

marketposition=traderGetAccountPosition(HandleList(1),targetList(1).Market,targetList(1).Code); 

%根据targetList,HandleList中的信息获得该账户持仓情况

[BarNumber,BarTime,BarOpen,BarHigh,BarLow,BarClose,BarVolume,BarTurnOver,BarOpenInterest]=traderGetCurrentBar(targetList(1).Market,targetList(1).Code);  

%获取当前Bar的信息,可根据当前Bar的情况设置是否开仓

[name,lastTD,Multiple,MinMove,TradingFeeOpen,TradingFeeClose,TradingFeeCloseToday,LongMargin,ShortMargin] = traderGetFutureInfo(targetList(1).Market,targetList(1).Code);  %获取期货的基本信息

 

%----------提取策略所需数据----------%

[time,open,high,low,close,volume,turnover,openinterest]=traderGetKData(Market,Code,KFrequency,KFreNum,BeginDate,EndDate,FilledUp,FQ);  %根据策略逻辑需要,在策略读取所需的Bar数据,从而进行后续的计算

[time,price,volume,volumetick,openinterest,bidprice1,bidvolume1,askprice1,askvolume1]=traderGetTickData(Market,Code,Date);   %根据策略逻辑需要,在策略读取所需的Tick数据,从而进行后续的计算

 

%----------策略内部计算与基本逻辑----------%

%策略内部的参数计算或条件判断

 

%----------策略主体,交易逻辑判断----------%

traderBuy(Handle,Market,Code,Contracts,Price,PriceType,OrderTag);

%买入下单,若初始有空头持仓,则先平仓,再买入

traderSell(Handle,Market,Code,Contracts,Price,PriceType,OrderTag);

%卖出平仓下单

traderSellShort(Handle,Market,Code,Contracts,Price,PriceType,OrderTag);

%卖出下单,若初始有多头持仓,则先平仓,再卖出

traderBuyToCover(Handle,Market,Code,Contracts,Price,PriceType,OrderTag);

%买入平仓下单

traderDirectBuy(Handle,Market,Code,Contracts,Price,PriceType,OrderTag);

%买入下单,影响初始持仓

traderDirectSell(Handle,Market,Code,Contracts,Price,PriceType,OrderTag);

%卖出下单,影响初始持仓

traderPositionTo(Handle,Market,Code,Position,Price,PriceType,OrderTag);

%以仓位为目标,直接调整至某仓位,可双方向调整


以双均线策略为例: