常见问题解决

1、过滤模型、非过滤模型的运行规则是什么?

2、什么是指令价模型和收盘价模型?

3、模型和模组的区别?

4、如何导入模型?

5、如何进行多品种的量化交易?

6、软件能加载多少个期货运行模组、股票运行模组和页面盒子?

7、运行量化的电脑需要什么样的配置?

8、模组运行状态列表中的“复核”是什么意思?

9、量化运行过程中能否暂停?

10、如何取消主窗口k线图的信号连线显示?

11、量化开的仓,手动平掉可以吗,量化再出平仓信号,会有什么反应?

12、模型可以取到本合约其他周期的指标值吗?

13、模型可以取到其他合约相同周期的指标值吗?

14、模型可以同时引用多个合约、多个周期的数据吗?

15、如何在模型中插入声音提示?

16、如何增加提示音类型?

17、模组中的浮动盈亏为什么与下单界面中的实际的盈亏不一样?

18、模组中“重置子账户持仓”如何使用?

19、量化运行日志中的信号出现价和信号执行价、滑点是什么意思?

20、主力合约换月之后量化加载的合约能否自动换月?

21、如何将模型加载到主窗口k线图上?

22、如何避免指标返回值过大或是过小导致的K线被压缩?

23、如何设置模型的属性?

24、模型源码中有很多开仓和平仓条件,如果希望某个条件开的仓用特定的条件平,该如何操作?

25、编写好的模型可以加密输出给指定使用者或设置使用时限么?

26、“量化默认下单方式”指的是什么?

27、如何让日内模型只计算当日数据?

28、模型回测时能否每月自动对资金重新初始化?

29、如何启用/关闭/修改软件的信号声音提示?

30、如何操作画线程序化?

31、不同交易指令同时满足条件时怎样处理?

32、如何设置运行模式,实现远程监控?

1、过滤模型、非过滤模型的运行规则是什么?

答:过滤模型运行规则:http://www.wenhua.com.cn/popwin/guolvmx.htm
非过滤模型运行规则:http://www.wenhua.com.cn/popwin/feiguolvmx.htm

2、什么是指令价模型和收盘价模型?

答:k线走完前,由于行情的变化可能会出现信号产生和信号消失交替的情况,为了避免这样的情况出现,很多用户选择在k线走完、信号稳定的情况下再执行信号,这样的模型就是收盘价模型,即k线走完后再执行信号的模型。当然,有的用户认为这样会损失掉信号出现到k线走完这段的利润,还是希望信号出现时立即执行,如果信号消失(不满足条件)则立即更正,让账户恢复到信号出现之前的状态,这样的模型为指令价模型。
应该使用哪种模型?
使用指令价模型还是收盘价模型,应该根据交易合约的活跃程度、k线周期的大小综合考虑。活跃程度高,价格变化快,指令价模型信号消失的概率大,信号消失的成本高;k线周期大的收盘价模型,收盘价格可能会和信号出现时的价格相差较大,k线走完执行信号可能错失大部分利润。两种模型在赢智wh8软件中都可以进行精准的历史数据回测,您也可以根据回测效果,决定实盘中的应用。
模型编写:
指令价模型编写:模型源码中加入CHECKSIG/MULTSIG/CHECKSIG_MIN/MULTSIG_MIN函数的模型为指令价模型。
收盘价模型编写:不含有上述函数的模型,为收盘价模型。
注:
1、考虑到指令价模型如果出信号立即执行,信号消失立即恢复,信号消失的成本会比较大,所以指令价模型函数加入了变量参数,可以等信号出并持续存在一定时间后再执行,信号在一定时间后消失再恢复,详见软件中CHECKSIG的函数说明。
2、指令价模型进行历史数据回测时,采用逐笔tick数据回测,和实盘执行效果一致,但由于计算量大,测试时间较长。

3、模型和模组的区别?

答:模型是指在编辑平台上使用麦语言编写的包含变量、交易条件、交易指令等的公式。
模组是把公式加载到k线图上,分配一定量的资金进行自动交易的运行单元。

4、如何导入模型?

答:以不同方式备份的模型,导入方式也不同;

(1)模型是以具体名字命名的压缩文件

如果您需要导入的模型是如下图所示的压缩文件,需要在麦语言模型开发平台里导入:

导入方法:

(2)模型是纯源码形式的

如果您需要导入的模型是纯源码形式的(如下图所示),可以直接将模型复制粘贴到麦语言开发平台的编辑器里再保存:

导入方法:

点击链接,查看导入纯源码形式模型的方法:http://www.wenhua.com.cn/guide/wh8-v8.2/view9_1.html

5、如何进行多品种的量化交易?

答:如下图,点运行模组左上方的模组—>新建,可以在运行模组中多次建立新模组。

6、软件能加载多少个期货运行模组、股票运行模组和页面盒子?

答:期货运行模组—128个
股票运行模组—256个
期货合约页面盒子—128个
股票合约页面盒子—256个

7、运行量化的电脑需要什么样的配置?

答:运行赢智(wh8)需要4G以上内存,64位操作系统,电脑CPU要达到四核及以上配置,对电脑的其他硬件没有要求。在软件运行时,点击下方的“网络状况指示按钮”在弹出的性能查看器中观察cpu和内存,不超过建议值即可。如果经常超过建议值,建议提高电脑硬件性能或减少模组加载的数量。

8、模组运行状态列表中的“复核”是什么意思?

答:复核是指模型信号是否是固定的,如下图所示,如果“复核”位置显示为“是”,那么信号就是固定的。为“否”信号不固定,可能会信号消失。

9、量化运行过程中能否暂停?

答:点击下图红框位置的“切断账号”按钮,切断与交易账号的连接,策略继续出信号,但不委托。希望量化信号能发出委托时点击绿框的“连接账号”按钮即可。

10、如何取消主窗口k线图的信号连线显示?

答:在主窗口k线图上单击鼠标右键,不勾选显示信号连线。

11、量化策略开的仓,手动平掉可以吗,量化策略再出平仓信号,会有什么反应?

答:无论以什么形式开的仓,都可以在交易界面平掉,注意,是交易界面,不是量化里的“主观干预”。
在交易界面进行平仓:如果平掉的是之前手动开的仓,对模组没有影响。如果平掉的是量化策略的开仓,那么当量化策略再出现平仓信号时,会先核实实际持仓,这时候核实的结果应该是实际持仓少于量化策略默认委托手数,那么,实际有几手平几手,没有持仓,不委托。当量化策略再出现开仓信号时,正常开仓。

12、模型可以取到本合约其他周期的指标值吗?如模型加载在if1410合约的1分钟周期上但需要取该合约3分钟周期的指标数值。

答:可以通过#IMPORT跨周期函数来实现,如下图所示,在模型开发平台中点击【插入】—>插入函数,在“历史数据引用”里找到#IMPORT函数,具体使用方法请参考“插入函数”里的函数说明。

如下面案例所示,是如何建立跨周期模型:

案例:在1分钟周期上引用30分钟周期的MA5和MA10指标

建立好的跨周期模型加载到1分钟周期上,AA指标不需要加载,只加载跨周期模型即可。

13、模型可以取到其他合约相同周期的指标值吗?如模型加载在if1410合约的1分钟周期上但需要取if指数在1分钟周期的指标数值?

答:可以通过#CALL跨合约函数来实现,如下图所示,在模型开发平台中点击【插入】—>插入函数,在“历史数据引用”里找到#CALL函数,具体使用方法请参考“插入函数”里的函数说明。

如下面案例所示,是如何建立跨合约模型:

案例:在IF1410合约1分钟周期上引用IF指数合约1分钟的MA5和MA10指标

建立好的跨合约模型加载到1分钟周期上,AA指标不需要加载,只加载跨合约模型即可。

14、模型可以同时引用多个合约、多个周期的数据吗?

答:可以通过#CALL_PLUS函数实现。
案例:在铁矿石1501合约,1分钟周期上引用“焦煤1501合约,5分钟周期MA5”的数据。如下图

建立好的跨合约跨周期模型加载到铁矿石15011分钟上,AA指标不需要加载,只加载跨合约跨周期模型即可。

15、如何在模型中插入声音提示?

答:在模型源码中加入声音函数PLAYSOUND(条件满足时,播放指定声音)即可。如下图所示方法,可找到声音函数及其用法。

16、如何增加提示音类型?

答:(1)用软件录制声音。
①调出录音软件
如下图所示,点击电脑左下角的开始->程序->附件->娱乐->录音机,调出录音机。

②开始录音
下图为调出的录音机,点击图中红框按钮开始和暂停录音。

③保存录音
完成录音后,按下图所示方法将录制的声音保存。下图将文件保存在桌面,名字为123。

(2)在软件中调用录制的声音文件
回到赢智软件的“模型开发平台”,打开“设置声音文件”,按下图所示方法调用桌面的“123”声音文件, 再使用声音函数时即可播放自己的声音文件了。

17、模组中的浮动盈亏为什么与下单界面中的实际的盈亏不一样?

答:模组中的浮动盈亏是软件根据前面信号的指令价作为开仓均价计算浮动盈亏。而下单界面中的逐笔浮盈和盯市浮盈是与开仓均价(当老仓是盯市浮盈与昨结算)比较盈亏。由于计算盈亏时比较的基准价的取值不同,所以我们看到的模组浮动盈亏和下单窗口不一样。

18、模组中“重置子账户持仓”如何使用?

答:“重置子账户持仓”是将您真实账户持仓带入模型,让模型替您打理持仓的功能,如下图,在模型加载后,历史k线图最近一个信号是BPK信号,我们在加载模型时错过了这个信号,如果此时真实账户中也有该合约同向持仓,则可以通过此功能,将该持仓带入模型,当模型出现SPK信号,会将多头持仓平掉并反向开仓。

19、量化运行日志中的信号出现价和信号执行价、滑点是什么意思?

答:如上图红框所示,
信号触发价:信号委托时的最新价
信号执行价:信号真实委托价格
滑点:成交价与信号触发价之间的差值
买入滑点=成交均价-信号触发价
卖出滑点=信号触发价-成交均价

20、主力合约换月之后交易的合约能否自动换月?

答:模型源码中加入TRADE_OTHER('AUTO')时,可以加载到指数、主连实现自动换月移仓。

21、如何将模型加载到主窗口k线图上?

答:如下图所示,双击软件右侧的模型,模型直接加载到主图上。

22、如何避免指标返回值过大或是过小导致的K线被压缩?

答:利用定义变量函数“:=”。
例:布林通道+均线指标,优于TMP2值过小,导致指标图形被压缩,如下图
  MID:MA(CLOSE,26);
  TMP2:STD(CLOSE,26);
  TOP:MID+2*TMP2;
  BOTTOM:MID-2*TMP2;
  MA1:MA(CLOSE,5),LINETHICK1;
  MA2:MA(CLOSE,20),LINETHICK1;

修改指标后,可以正常显示,如下图:
  MID:MA(CLOSE,26);
  TMP2:=STD(CLOSE,26);
  TOP:MID+2*TMP2;
  BOTTOM:MID-2*TMP2;
  MA1:MA(CLOSE,5),LINETHICK1;
  MA2:MA(CLOSE,20),LINETHICK1;

23、如何设置模型的属性?

答:如下图所示:



副图指标:默认加载到副图,可通过叠加指标的方式加载到主图,坐标方式为独立坐标,多指标叠加,指标值不影响图形显示。典型指标:KDJ,MACD。

K线附属指标:默认加载到主图,坐标方式为附属K线,多指标叠加,指标值差异可能导致图形压缩。典型指标:MA组合,BOLL布林通道线。

主图K线形态:默认加载到主图,每个主图只能加载一种K形态,系统默认的K线形态是“K线(蜡烛图)”。典型指标:竹线,宝塔线。

属性为“K线附属指标”的KDJ加载到主图后,K线压缩。

属性为“副图指标”的KDJ加载到主图后,K线和KDJ指标各自坐标独立,均能正常显示。

如何在主图叠加属性是“副图指标”的指标。如下图,通过在主图点右键设置技术指标的方式。

24、模型源码中有很多开仓和平仓条件,如果希望某个条件开的仓用特定的条件平,该如何操作?

答:可以在编写模型的交易指令时使用分组指令,分组指令可以对开平条件分成n个组,某个组的条件开的仓位只有某个组对应的平仓条件条件才能平,其他组的平仓条件满足不会出信号,也就不会委托。
一开一平过滤模型:不同的开仓条件如果想以不同的平仓策略进行平仓,可以利用指令分组来进行控制。如下图 :

加减仓模型:入场策略和加仓策略可能有所不同,相应的止损及出场策略的使用亦不相同,这时可以采用指令分组的方式实现。如下图:

分组指令编写、运行机制:
一开一平过滤模型:
如果上一根K线信号是组A发出的开仓信号(bk sk bpk spk) 当前K线只能是组A的平仓信号
如果上一根K线信号是组A发出的平仓信号(bp sp) 当前K线可以是任意组的开仓信号(以信号出现的顺序取第一个开仓信号)。
注:不分组的平仓条件只能平不分组的开仓条件
加减仓模型:
如果上一个信号为组A发出的开仓信号,则下一信号必须为组A的加仓信号或平仓信号
如果上一个信号为组A的平仓信号并且组A持仓为0,下一信号可以为任意组的开仓信号;
如果A组持仓大于0,则必须为A组的开仓信号或平仓信号
注:不分组的平仓条件只能平不分组的开仓条件

更多分组指令的编写方法,可以参见模型开发平台中“插入指令”中的说明,如下图所示。

注:分组指令对组的命名规则为,只能用 A——I 这九个字母中的其中几个命名。最多支持分成十组。

25、编写好的模型可以加密输出给指定使用者或设置使用时限么?

答:可以。在模型源码中使用加密函数即可对模型进行加密,加密强度很高,破解难度很大。

1、SETEXPIREDATE('yyyymmdd'); 设置模型加密输出的到期日期为yyyymmdd。
例:
C>REF(H,1),BK;//价格大于上一根k线最高价,开多仓
C<BKPRICE-3*MINPRICE,SP;//亏损3点止损
SETEXPIREDATE('20141001');//该模型加密输出的到期日期为2014年10月1日
AUTOFILTER;
注:需要通过“文件”菜单下的“模型加密输出”导出后加密才能生效。

2、SETQUOTACCOUNT('ACCOUNT1'); 设置该模型加密输出给文华行情账号为ACCOUNT1的使用者。
例:
C>REF(H,1),BK;//价格大于上一根k线最高价,开多仓
C<BKPRICE-3*MINPRICE,SP;//亏损3点止损
SETQUOTACCOUNT('ACCOUNT1');//将该模型加密输出给文华行情账号为ACCOUNT1的使用者。
AUTOFILTER;
注:
(1)该函数只能写入一次,即只能设置一个加密输出的行情账号,连续写入多个,只有第一个是有效的。
(2)模型中支持同时写入SETTRADEACCOUNT和SETQUOTACCOUNT函数,即支持同时设置授权的行情账号和资金账号。

3、SETTRADEACCOUNT('ACCOUNT1'); 设置该模型加密输出给文华资金账号为ACCOUNT1的使用者。
例:
C>REF(H,1),BK;//价格大于上一根k线最高价,开多仓
C<BKPRICE-3*MINPRICE,SP;//亏损3点止损
SETTRADEACCOUNT('ACCOUNT1');//将该模型加密输出给文华资金账号为ACCOUNT1的使用者。
AUTOFILTER;
注:
(1)该函数只能写入一次,即只能设置一个加密输出的资金账号,连续写入多个,只有第一个是有效的。
(2)模型中支持同时写入SETTRADEACCOUNT和SETQUOTACCOUNT函数,即支持同时设置授权的行情账号和资金账号。

26、“程序化默认下单方式”指的是什么?

答:是指在下单参数设置—>程序化参数中默认下单价格,如下图所示,当模型中没有描述信号委托方式的语句时,按照该处设置的下单方式进行委托。

注:
1、该处可设置的程序化默认下单方式为排队价,对价,超价,市价,最新价。
2、全自动运行模组中,使用SETSIGPRICETYPE/SETALLSIGPRICETYPE设置信号下单方式的按照SETSIGPRICETYPE/SETALLSIGPRICETYPE的设置执行,否则按照该处设置的默认下单方式执行。
如:若设置SETALLSIGPRICETYPE(CANCEL_ORDER),则只有BK、SK按CANCEL_ORDER处理,其他信号按没设置过,取交易参数“程序化默认下单方式”
3、此处设置实时保存,正在运行过程中的运行模组,在此处修改后,再次发出信号也会按照最新设置的方式进行下单。

27、如何让日内模型只计算当日数据?

答:使用DAYTRADE1函数,当我们做日内周期,只想以当日数据来运行模型,并且希望昨日的信号和今天的信号间相互独立,这时就需要用到该函数。模型中写入该函数,分钟周期上,只用日内数据进行计算,以避免行情跳空导致指标数据失真。
注:
1、该函数适用日线以下周期。
2、不同函数对当天数据的引用不同,使用时需注意函数用法,如:
  MA(X,N)函数N的取值:当天如果k线小于N根,则返回空值。如果k线为大于等于N根,则取N。
  HHV(X,N)函数N的取值:当天如果k线小于N根,则返回实际根数,如果k线为大于等于N根,则取N。
例:MA5^^MA(C,5);
  MA10^^MA(C,10);
  CROSSUP(MA5,MA10),BK;//5周期均线上穿10周期均线,买开仓
  CROSSDOWN(MA5,MA10),SK;//5周期均线下穿10周期均线,卖开仓
  C<BKPRICE-10*MINPRICE,SP;//亏损10点平多
  C>SKPRICE+10*MINPRICE,BP;//亏损10点平空
  CLOSEMINUTE<=1,CLOSEOUT;//收盘前一分钟,清仓。
  AUTOFILTER;//一开一平信号过滤模型
  DAYTRADE;//只用日内数据进行计算

28、模型回测时能否每月自动对资金重新初始化?

答:可以,例如,每月进行一次总结,盈利则将利润拿出使账户资金恢复到月初首次入金状态;亏损则对账户资金进行补充同样使之恢复到月初状态,对这种策略进行回测时,软件中提供了一类函数可以对这种段落交易的方式进行回测,更具有实盘参考价值。
例:初始资金100000,以月为周期进行交易,每月第一个交易日资金和信号重新初始化在模型中加入MONTHTRADE函数来实现想法。
  HH:=HHV(HIGH,N);
  LL:=LLV(LOW,N);
  HH1:=BARSLAST((HH > REF(HH,1)));
  LL1:=BARSLAST((LL < REF(LL,1)));
  HH1>LL1,SPK;
  HH1<LL1,BPK;
  CLOSEMINUTE<=1,CLOSEOUT;
  AUTOFILTER;
  MONTHTRADE;//使用每月数据计算

我们可以将上面编写好的源码加载到合约上进行回测,回测过程中软件会自动将每个交易阶段区分开来,在每月第一个交易日时重新初始化资金和信号,如下图所示,是回测报告的成交明细,通过该明细我们可以看出,每当新一月的交易日开始,权益都会变为我们所设定的100000。这样一来,及时是这种段落式交易的想法也可以实现历史数据回测了。

相应的,在回测报告中,我们也可以通过查看调整后的权益,来了解模型在历史回测中的变现。

如下图所示:

最终权益=最终权益 = 初始资金 + 入金 - 出金 + 净利润。也就是初始资金+最后阶段的盈亏
(例如:使用DAYTRAD函数,是初始资金+最后一天的盈亏值)之后的指标均由“调整后的权益”计算得来的。
调整后的权益=初始资金+净利润(即交易明细中各平仓盈亏之和)
出金=当上一阶段交易结束,且获利时,开始下一阶段交易前所出金额总和
入金=当上一阶段交易结束,且亏损时,开始下一阶段交易前所入金额总和
其他同类函数:
DAYTRADE:使用每日数据计算。
WEEKTRADE:使用每周数据计算。
MONTHTRADE:使用每月数据计算。
QUARTERTRADE:使用每季度数据计算。
YEARTRADE:使用每年数据计算。

29、如何启用/关闭/修改软件的信号声音提示?

答:如下图所示,对软件的信号声音提示进行修改

启用和关闭页面盒子信号声音

启用和关闭模组信号声音

设置信号的提示音

30、如何操作画线程序化?

答:页面盒子中右键【画线程序化】,在弹出的小窗口调整下单参数,点击【去画线】,在盒子K线窗口直接画趋势线即设置完成。

31、不同交易指令同时满足条件时怎样处理?

答:交易指令指bk(买开)、sk(卖开)、bp(买平)、sp(卖平)、bpk(买平开)、spk(卖平开)、closeout(全平),在同时满足条件时的执行顺序如下:
过滤模型:①bk指令和sk指令同时满足时,bk指令优先于sk指令
     ②反手指令和平仓指令同时满足时,反手指令优先于平仓指令
     ③closeout指令和平仓指令同时满足时,closeout指令优先于平仓指令
非过滤模型:按照模型中指令编写顺序从上往下执行
分组模型:无组别的指令优先执行,然后按照分组ABCD——I的指令顺序执行,组间执行顺序按照上面提到的顺序执行。

32、如何设置运行模式,实现远程监控?

答:当我们需要对程序进行远程监控或者一个团队间需要通过远程来互通信号有无时,就可以利用远程监控的功能来实现。
远程监控设置:
假设要把A电脑上的模组运行状态同步到B电脑上监控。
第一步:将A电脑设置为服务器端
点击菜单栏的【运行】—>【运行模式设置】,在弹出的设置框中按照下图的标号顺序设置服务器密码、最大连接数及权限,设置完成后点击确定。

注:
(1)打开软件后,需要先设置运行模式,再打开运行模组。运行模组根据设置的模式运行,运行之后模式不可修改!
(2)【仅可查看】权限下只能在监控K线图界面操作鼠标右键菜单中的全部功能,【所有权限】在【仅可查看】的基础上增加了操作模组分区右键菜单中的全部功能。

第二步:B电脑设置为客户端 点击菜单栏的【运行】—>【运行模式设置】,在弹出的设置框中输入A电脑的IP地址及在A电脑上设置的密码,设置完成后点击确定。

第三步:A电脑打开运行模组,这时当B电脑也打开运行模组时,就能在B电脑上看到A电脑上的运行情况了。

注:
(1)三种模式的区别
普通模式:最常用的一种模式,自己做量化交易,不需要和其他人做远程信号沟通时,使用这种模式。
客户端:相对于服务器端而言的运行模式,客户端可以接收到服务器端模型发来的信号指令。在客户端设置好IP地址后就可以连接到相应服务器上,实现远程监控。
服务器:服务器是发出指令的一方,客户端可以实时接受到服务器端模型出现的指令,服务器端需要设置的是查看密码,这个密码是客户端连接到该服务器端的唯一口令。
(2)客户端模式下,仅显示服务器端的运行情况,当服务器端出信号后,客户端仅显示服务器端的相关信息,并不会对客户端开仓。
(3)设置运行模式时需注意:
①两个软件版本需保持一致
②客户端连接之前,需确保服务器端先打开并且网络没有问题
③确认输入的IP地址和密码没有问题