趋势策略类型的模型,是基于K线图、技术分析指标构建的模型,适用于根据K线图表数据计算出信号的策略思路。
趋势策略的结构:根据K线数据/技术指标数据计算条件 -> 发出信号。
一、模型计算机制
模型根据从上至下,从左至右的顺序计算;同时满足条件时,以先计算出来的信号优先
模型默认信号执行方式为指令价(出信号立即下单,不复核),也支持编写多样的信号执行方式
每根K线只能出一个信号
模型默认为一次建仓模型,也支持编写连续建仓模型,从首次建仓到持仓为0视为一个完整的交易过程
模型支持编写T+0策略和T+1策略,通过写入对应的指令实现
趋势策略只负责出信号,实际交易时由算法下单组件接管信号执行委托操作
二、模型指令
编写T+0策略,模型可使用BK\SK\BP\SP\BPK\SPK指令
编写T+1策略,模型可使用Buy\Sell指令
所有指令后面必须写入下单手数;
以上指令在趋势模型中只用于出信号,不能实际下单,如果想将策略的思路转化为实际交易委托,必须在运行时通过算法下单组件接管策略部分的信号。
三、信号回测和执行方式
信号回测和执行方式默认为出信号立即下单,不复核。小周期用tick逐笔数据,模型加载到15分钟以及更大周期自动用min数据计算。
支持通过 Review_Data函数控制模型的回测数据类型,是指令价还是收盘价;
支持通过 NoCheck函数设置指令价模型是否K线走完复核信号。
1、Review_Data设置信号计算数据类型(自动、逐笔、逐分、收盘价)
回测、模组运行均根据函数设置的数据类型计算信号。
如果设置Review_Data:Auto,根据模型加载的K线周期自动匹配回测数据,小周期用Tick逐笔数据计算信号,15分钟及以上周期逐分钟计算信号;
如果设置Review_Data:Tick,使用Tick逐笔数据计算信号,盘中运行为出信号立即下单;
如果设置Review_Data:Min,使用逐分钟数据计算信号,1分钟计算一次,盘中运行为出信号立即下单;
如果设置Review_Data:Null,不另外申请回测数据,使用当前的k线图数据计算信号,执行收盘价模型机制,盘中运行时K线走完确认信号下单;
其他情况:
如果代码没有写Review_Data这个参数,系统默认Review_Data:Auto;来处理。下列情况用收盘价:
A.主连链回测15分钟以下周期,除非写明"Review_Data:Tick",将在主图执行月份合约逐笔回测;
B.加权合约15分钟以下周期
C.加载到股票、套利、期权合约
D.加载到页面盒子运行
E.模型含#Call/#Call_Plus/Trade_Other且加到15分钟以下周期
2、NoCheck控制指令价模型是否复核
如果设置NoCheck:True; 则模型信号执行方式为,出信号立即下单不复核;即盘中满足条件时直接确认信号下单,K线走完即使信号条件不再满足信号也不会消失。
如果设置NoCheck:False; 则模型信号执行方式为,出信号立即下单,K线走完复核;K线走完的时候满足条件才会保留信号。
其他情况:
如果代码没有写NoCheck这个参数,系统默认NoCheck:True;来处理。
编写举例:
(1)出信号立即下单,不复核的写法: Setting Review_Data:Auto; NoCheck:True; //此处语句可省略,模型不写Review_Data和NoCheck函数,默认出信号立即下单不复核 (2)出信号立即下单,K线走完复核的写法: Setting NoCheck:False; //此处Review_Data函数省略不写,将按照Review_Data:Auto执行,默认出信号立即下单 (3)K线走完确认信号下单的写法: Setting Review_Data:Null; //Review_Data参数设置为Null时,无论NoCheck参数如何设置,都默认收盘价回测、K线走完下单
趋势策略类型的模型,是基于K线图、技术分析指标构建的模型,适用于根据K线图表数据计算出信号的策略思路。
趋势策略的结构:根据K线数据/技术指标数据计算条件 -> 发出信号。
一、模型计算机制
1、根据模型公式里的语句顺序,从上至下,从左至右的顺序计算;同时满足条件时,以先计算出来的信号优先
2、信号计算机制为立即下单,不复核
3、信号计算的数据类型支持逐笔Tick、逐分钟计算信号,也支持k线走完计算信号
4、模型默认为一次建仓模型,也支持编写连续建仓模型,从首次建仓到持仓为0视为一个完整的交易过程
5、模型编写支持T+0策略和T+1策略,通过写入对应的指令实现
6、模型只负责出信号,实际交易时由算法下单组件接管信号执行委托操作
二、模型指令
编写T+0策略,模型可使用BK\SK\BP\SP\BPK\SPK指令
编写T+1策略,模型可使用Buy\Sell指令
1、所有指令后面必须写入下单手数;
2、以上指令在趋势模型中只用于出信号,不能实际下单,如果想将策略的思路转化为实际交易委托,必须在运行时通过算法下单组件接管策略部分的信号。
三、信号回测和执行方式
信号计算默认k线走完计算信号,可通过 Review_Data函数控制模型的k线没有走完就计算信号。
Review_Data设置信号计算数据类型(逐笔、逐分钟、K线走完)
1、Review_Data:Tick,使用Tick逐笔数据计算信号,出信号立即确认信号下单;
2、Review_Data:Min,使用逐分钟数据计算信号,1分钟计算一次,出信号立即确认信号下单;
3、Review_Data:Null,一根K线计算一次信号,K线走完确认信号下单;
如果代码没有写Review_Data,系统默认按Review_Data:Null;来处理。
参数为Tick/Min时不限制一根K线的信号个数。
四、模型类型
默认为一次建仓模型,不允许连续出开仓信号,可以连续出平仓信号;
通过写入AddTimes:N;可以控制一次交易过程中的最大建仓次数,一次交易中开仓指令最多可以出N个;从开仓到持仓为0视为一次完整交易;
编写举例:
Setting
AddTimes:3;
Vars
NumericSeries Ma5,Ma10,Ma20,Ma60;
Begin
Ma5= Ma(Close,5);
Ma10= Ma(Close,10);
Ma20=Ma(Close,20);
Ma60= Ma(Close,60);
If(CrossUp( Ma5,Ma10))
{
BK(1);//5周期均线上穿10周期均线,开多仓1手
}
If(CrossUp( Ma5,Ma20))
{
BK(2);//5周期均线上穿20周期均线,开多仓2手
}
If(CrossUp( Ma5,Ma60))
{
BK(3);//5周期均线上穿60周期均线,开多仓3手
}
If(CrossDown(Close,Ma10)||CrossDown(Close,Ma20)||CrossDown( Close,Ma60) )
{
SP(BKVol);//信号平仓,价格下穿均线平全部持仓
}
If(Close<BKPrice-20*MinPrice)
{
SP(BKVol);//止损平仓,回撤20个点平全部持仓
}
End
参数解读:
如果设置AddTimes:1;
则表示一次交易过程中只允许建仓一次;先满足哪个开仓条件则执行哪个开仓信号,一次交易过程中只出一个建仓信号,范例的三个建仓指令行,只有某一个会有效执行,可能开仓1手或者2手或者3手
如果设置AddTimes:3;
则表示一次交易过程中最多可以建仓3次;即如果先后分别上穿了3条均线,则可以分别开仓1手、2手和3手,共开仓6手
其他情况:
(1)如果模型只写一个开仓语句,AddTimes参数设置为3,那么这个指令行有执行3次的可能。
(2)有三个开仓语句,AddTimes参数设置为3,不代表每一个指令行都得到执行。系统执行最先满足的3次,不一定是哪一个指令行发出的。