8.1 趋势模型编写实例
前面讲解的一般模型、复杂模型和基本面模型,都属于趋势模型。下面通过具体实例进一步提高趋势模型的编写技巧。
8.1.1. 日内清仓编写实例
做期货交易,很多投资者喜欢做曰内交易,下面来看一下日内清仓编写实例代码。

8.1.2 加仓减仓编写实例
在期货交易中,投资者常常反复的加仓减仓,下面来看一下加仓减仓编写实例代码。


8.1.3 海龟交易编写实例
著名的商品投机家理查德· 丹尼斯想弄清楚伟大的交易员是天生造就的还是后天培养的。为此,在1983 年他招募了13 个人,教授给他们期货交易的基本概念,以及他自己的交易方法和原则。"学员们被称为‘海龟'。之所以命名海龟是基于两点:
第一,海龟天生具有奔向海洋的本能。
第二,海龟的绝大多数会中途夭折,只有极少数可以长大并颐养天年。这跟金融交易市场的二八法则近似。正如丹尼斯先生所说的J我们正在成长为交易员,就象他们正在成长为海龟一样'。"
海龟成为交易史上最著名的实验,因为在随后的四年中海龟们取得了年均复刺80% 的收益。
海龟交易系统有三个特点:
其一,是一个完整的交易系统,其法则覆盖了交易的各个方面。对于交易中所涉及的每项决策,系统都会给出答案。
其二,是一个机械化的交易系统。正是由于其交易系统的完整, 所以, 系统不给交易员留下一点主观想象决策的余地。
其三,是一个被检测可以赚钱的交易系统。正是由于此,不管交易员在赚钱还是亏钱时都容易接受信号。
海龟的核心交易原则:
第一,当价格突破20 个交易周期最高点的时候入场。
第二,当价格跌破10 个交易周期最低点时离场。
下面来看一下海龟交易编写实例代码。

8.1.4 控制曰内交易次数编写实例
在期货交易中, 很多投资者都会控制自己每天的交易次数,因为交易次数越多,失误越多。下面来看一下控制日内交易次数编写实例代码。

8.1.5 下单委托价格编写实例
下单委托价格使用的函数是SETSIGPRICETYPE ( ) ,下面来看一下该函数的使用方法与注意事项。
用法: SETSIGPRICETYPE(SIG ,PRICEl ,IsCancel) ,设置SIG 指令的委托方式, PRICE 为委托价格, IsCancel 为是否启用终止下单。
注意事项具体如下:
(1) SIG 位置为交易指令,包括BK\SK\BP\SP\BPK\SPK\CLOSEOUT\STOP\STOPl 所有指令。
(2) PRICE 位置为委托价格,包括以下八种:
NEW_ORDER 最新价
注意: 委托方式为NEW_ORDER 肘支持回测, 计算信号价格为信号发出时的最新价。例如,收盘价模型,当前k 线出信号,价格取下一根k 线开盘价。
PASSIVE_ ORDER 排队价
ACTIVE_ORDER 对价
TRACING_ORDER 自动连续追
注意,首次下单委托价格参数设置一>程序化参数一>追价设置的价格方式执行。
CMPETITV _ORDER 超价
注意,下单基准按参数设置_>程序化参数_>超价设置的价格方式执行。
LIMIT_ORDER 市价
SIGPRICE_ORDER 触发价
捐定价,可以为具体的数值, 也可以为表达式,即支持如下的写法:
A:HHV(H , 3);// 定义A 为3 个周期内的最高价
SETSIGPRICETYPE(BK, A); / /BK 信号按照3 个周期的最高价委托。
(3) 参数IsCancel 写入CANCEL_ORDER 表示启用终止下单程序,即: 根据PRICE 委托后, N 秒不成交自动撤单并终止下单。
参数IsCancel 位置不写或写入真他内容, 贝IJ代表不启用终止下单。
参数N ,在参数设置一>程序化参数中进行设置。
终止下单不考虑小节休息。
BP、SP、BPK 、SPK 、CLOSEOUT、STOP、STOP1 信号不支持CANCEL_ORDER 设置。
(4) 模型编写中未使用该函数设置指令委托价格方式,默认按照交易参数中设置的程序化默认下单方式进行委托。
(5) SETALLSIGPRICETYPE 不能和SETSIGPRICETYPE 同时使用。
(6) 该函数只在模组中或者信号预警盒子勾选直接下单不需要手动确认时才生效。
下面来看一下下单委托价格编写实例代码。

8.1.6 信号执行方式编写实例
信号执行方式使用的函数是CHECKSIG ( ) ,下面来看一下该函数的使用方法与注意事项。
用法: CHECKSIG(SIG, MODE1 ,TIME1 ,MODE2 ,TIME2, INTERVAL);
(1) 当INTERVAL 不为0 肘.INTERVAL 数据时间间隔,每隔INTERVAL 秒计算一次信号. SIO 为信号, MODE1 为信号确认方式,TIME1 信号确认时间乘数, MODE2 信号复核方式. TIME2 信号复核肘间乘数。
例: INTERVAL 为10 , 豆粕合约开盘第一根K 线21: 00: 09 为第一次计算模型,21: 00: 19 为第二次计算模型……
(2) 当INTERVAL 为0 肘,每笔TICK 计算一次信号, SIG 为信号,MODEL为信号确认方式, TIMEl 信号确认时间, MODE2 信号复核方式,TIME2 信号复核时间。
(3) 通过调整INTERVAL 参数,模型可设置不同数据快照频率进行回测。
注意事项具体如下:
(1) 写了这个函数以后,模型会按照指令价方式运行。
(2) SIG 位置为交易指令,包括BK\SK\BP\SP\BPK\SPK \CLOSEOUT所有指令。
(3) MODEl 位置为信号确认方式,有A 和B 两种:
A: MODEl 为"A" 时
1) 当INTERVAL 不为0 肘,出信号后第TIMEl 个数据时间间隔确认信号下单。
2) 当INTERVAL 为0 肘,出信号TIMEl 秒后确认信号下单。
B: MODEl 为"B" 时
1) 当INTERVAL 不为0时, K 线走完前TIME1个时间间隔确认信号下单。
2) 当INTERVAL 为0时, K 线走完前TIMEl 秒确认信号下单。
3) TIME1=O 为K 线走完确认信号下单。
(4) MODE2 位置为信号复核方式,有C , D , E 和F 四种:
C: MODE2 为'IC" 时
1) 当INTERVAL 不为0时,出信号后第T IME2 个数据时间间隔进行信号复核。
2) 当INTERVAL 为0时,出信号TIME2 秒后进行信号复核,
TIME2=O 为不复核。
D: MODE2 为"D" 时
1) 当INTERVAL 不为0时, K 线走完前TIME2 个时间间隔进行信号复核。
2) 当INTERVAL 为0时, K 线走完前TIME2 秒进行信号复核。
3) TIME2= 0 为K 线走完复核。
E : 每一个小节(包括:商品合约10:15-10:30 休盘、11:30-13:30 休市;股指合约11:30-13:00 休市)最后一根K 线提前复核,其他非小节最后一根K 线是K 线走完复核。
1) 当INTERVAL 不为0 时,提前TIME2 个时间间隔进行信号复核。
2) 当INTERVAL 为0 时,提前TIME2 秒进行信号复核。
3)TIME2=0 为K 线走完复核。
F": 每天收盘前最后一根K 线提前复核,其他非收盘前最后一根K 线是K 线走完复核。
1) 当INTERVAL 不为0时,提前TIME2 个时间间隔进行信号复核。
2) 当INTERVAL 为0时,提前TIME2 秒进行信号复核。
3) TIME2=0 为K 线走完复核。
(5) INTERVAL 代表数据时间间隔
1) 支持0 、3 、5 、10 四个值,不支持变量。
2) 3 、5 、10 分别代表用每隔3 秒、5 秒、10 秒,计算一次模型。
3) 参数为3 , 5 , 10 ,回测速度可提升3-10 倍,回测精度稍差。
4) 参数为0 的时为每笔TICK 计算一次模型。
5) 一个模型中只能写入一个INTERVAL 值。
(6)模型中写入该函数,一根K 线只能有一个信号。
(7) CHECKSIG、MULTSIG 、MULTSIG MIN 、CHECKSIG MIN 函数不能同时出现在一个模型中
(8)该函数只允许在模组中使用,不支持加载到盒子。
(9) 未使用该函数的指令,默认的信号执行方式为K 线走完确认信号下单。
(10) TIME1 , TIME2 非O 肘,该函数不支持加载到量能周期和曰线以上的周期中使用。
例如: 量能周期出信号TIME1 个数据时间问隔下单, K 线走完前TIME2 个数据时间间隔复核之类的都不支持。
(11) 如果用该函数设置了信号复核, 复核日才产生了信号消失,会进行信号消失处理。信号消失的处理方式:
还没有成交时的信号消失处理-撤单
BK、SK 信号消失处理-平仓
BPK 、SPK 信号消失处理-平仓+恢复建仓
BP、SP 信号消失处理-恢复建仓
下面来看一下信号执行方式编写实例代码。

8.1.7 全程追踪止损编写实例
下面来看一下全程追踪止损编写实例代码。

需要注意,这里有两个参数变量,分别是SL 和S ,其中SL 最小值为0 ,最大值为100 ,默认值为5; 而S 最小值为0 ,最大值为100 ,默认值为3 ,如图8.1 所示。

8.1.8 限价止损+追踪止赢编写实例
下面来看一下限价止损+追踪止赢编写实例代码。

需要注意,这里有两个参数变里,分别是SL 、TP 和DTP,其中SL 最小值为0 ,最大值为100 ,默认值为5; TP 最小值为0 ,最大值为100 ,默认值为20; DTP 最小值为0 ,最大值为100 ,默认值为3 ,如图8.2 所示。

8.1.9 限价止损+限价止赢编写实例
下面来看一下限价止损+限价止赢编写实例代码。

需要注意,这里有两个参数变量,分别是SL 和TP,其中SL 最小值为0 ,最大值为100 ,默认值为10; 而TP 最小值为0 ,最大值为100 ,默认值为20 ,如图8.3 所示。

8.1.10 分组指令编写实例
分组指令通俗来讲是指一个模型里,支持指定条件平仓,通过组的形式对相同组的条件进行平仓。
下面来看一下分组指令编写实例代码。
