龙听期货论坛's Archiver

龙听 发表于 2019-1-3 08:38

关于MC能否实现文华的CHECKSIG函数功能 [MC]

[list][*][b]MC用户求助:[/b]
老师,请问MC能否实现文华的CHECKSIG功能,主要有两个关键点:一、出信号下单;二、K线收盘时复核。请问MC如何实现?以下是CHESKSIG的介绍:
CHECKSIG 设置信号确认与复核的指令价方式(TICK逐笔回测,可设置回测精度)

用法:
CHECKSIG(SIG,MODE1,TIME1,MODE2,TIME2,INTERVAL);
1、当INTERVAL不为0时,INTERVAL数据时间间隔,每隔INTERVAL秒计算一次信号,SIG为信号,MODE1为信号确认方式,TIME1信号确认时间乘数,MODE2信号复核方式,TIME2信号复核时间乘数。
(例:INTERVAL为10,豆粕合约开盘第一根K线21:00:09为第一次计算模型,21:00:19为第二次计算模型...)
2、当INTERVAL为0时,每笔TICK计算一次信号,SIG为信号,MODE1为信号确认方式,TIME1信号确认时间,MODE2信号复核方式,TIME2信号复核时间。
3、通过调整INTERVAL参数,模型可设置不同数据快照频率进行回测。

注:
1、写了这个函数以后,模型会按照指令价方式运行。
2、SIG位置为交易指令,包括BK\SK\BP\SP\BPK\SPK\CLOSEOUT所有指令。
3、MODE1位置为信号确认方式,有A和B两种:
A:MODE1为'A'时
  1)当INTERVAL不为0时,出信号后第TIME1个数据时间间隔确认信号下单
  2)当INTERVAL为0时,出信号TIME1秒后确认信号下单
B:MODE1为'B'时
  1)当INTERVAL不为0时,K线走完前TIME1个时间间隔确认信号下单
  2)当INTERVAL为0时,K线走完前TIME1秒确认信号下单
  3)TIME1=0为K线走完确认信号下单
4、MODE2位置为信号复核方式,有C,D,E和F四种:
C:MODE2为'C'时
  1)当INTERVAL不为0时,出信号后第TIME2个数据时间间隔进行信号复核
  2)当INTERVAL为0时,出信号TIME2秒后进行信号复核,TIME2=0为不复核
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休市、21:00-23:00(或23:30或1:00或2: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非0时,该函数不支持加载到日线以上的周期中使用。
例如:量能周期出信号TIME1个数据时间间隔下单, K线走完前TIME2个数据时间间隔复核之类的都不支持
11、该函数不支持加载到量能周期使用。
12、如果用该函数设置了信号复核,复核时产生了信号消失,会进行信号消失处理。信号消失的处理方式:
还没有成交时的信号消失处理-撤单
BK、SK信号消失处理-平仓
BPK、SPK信号消失处理-平仓+恢复建仓
BP、SP信号消失处理-恢复建仓

例:
C>O,BK;
C<O,SP;
CHECKSIG(BK,'A',5,'D',0,3);//设置BK信号,出信号后第5个数据时间间隔确认下单(例如21:00:02满足条件,出现信号后第5次计算信号,即21:00:17时确认信号下单),K线走完复核。每隔3秒计算一次信号。
CHECKSIG(SP,'A',0,'C',10,3);//设置SP信号,根据数据时间间隔计算出信号后立即下单(例如21:00:02满足条件,出现信号后立即下单),下单后第10个数据时间间隔复核(例如21:00:17时确认信号下单,则确认下单后第10次计算模型,即21:00:47进行信号复核)。每隔3秒计算一次信号。
AUTOFILTER;
(来自旧论坛客户,xdzgmc)
[*][b]MC回复讨论一:[/b]
文华的功能比较模块化,缺乏灵活性,不易更改;而MC更具灵活性,您说的这个函数的功能,下面我会一一对应到MC上去:
第一、开启bar内模式可以每笔tick进行信号计算;bar内的时间可以通过q_time_s(用于实时交易中,不能用于回测中)和time_s(用于回测中,需要策略属性中设置一下允许访问bar内时间)。

第二、开启bar内模式下,每笔tick都进行信号计算,可以使用”buy next bar at market;“进行bar内实时下单,条件满足就下单,当然也可以通过变量控制进行延迟下单;在bar内模式下,若想在当根bar收盘时下单可以使用”buy this bar at close;“,这里对于this bar 和next bar的区别请需要看一下帖子[url]http://forums.icetech.com.cn/for[/url] ... &extra=page%3D2

第三、开启bar内模式下,可以通过精细回测,关于精细回测您需要在策略属性中设置一下回测精度(精度可以逐笔,也可以逐秒等等);您可以看一下这个帖子[url]http://forums.icetech.com.cn/for[/url] ... &extra=page%3D1

第四、关于K线复核;在开启bar内模式下,在每笔tick进行信号确认,信号确认的时候同时也会信号复核(对于条件单,如果未成交的条件单当前条件不再满足就会自动撤单),当然您也可以通过MC内置的关键字对图表的的部位、手数、方向等信息进行实时的确认,确认的时间点也可以自行确定。


以上涉及的太多了,一次没有办法说的太清楚,您需要一步步进行深入的学习和研究。[/list]

页: [1]