① 股票不支持反手指令执行
② 信号不支持锁仓
答:加减仓模型,允许连续出开仓信号或者连续出平仓信号,可实现加仓、减仓。如下图。
答:A、加仓模型中,加仓语句需要判断是否是第一次开仓
方法:可利用判断当前是否有持仓或判断上一个信号是否是相同信号的方法确定是否是第一次开仓。如,加仓条件中增加判断MarketPosition == 1;
B、减仓模型中,减仓语句需要判断当前是否有可平持仓
方法:可利用MarketPosition这样的函数来判断持仓情况。如,平仓条件中增加判断MarketPosition !=0;
答:模型中写有AddTimes函数,才可以实现加仓。
例:
Setting
AddTimes:3;
Begin
If(IsUp)
{
BK(3,0);
}
If(IsDown)
{
SP(0);
}
End
答:双击函数名称后,在选中的函数名称上单击鼠标右键,即可查看该函数的说明,如下图。
答:系统函数(含关键字),
蓝色字体
自定义函数或数字,
红色字体
操作符,
紫色字体
变量或参数,黑色字体
答:一个模型中#ImPort、#Call、#Call_Plus、#Call_Other总的语句个数不能超过6个;
一个Wh9软件同时使用的模型中#ImPort、#Call、#Call_Plus、#Call_Other总的数量不能超过120个。
答:库安算法交易软件所采用的信号机制为出信号立即下单,K线走完复核的方式。要实现K线走完发委托的运行方式,可以通过Ref(条件,1);的形式来实现,即上一根K线满足条件,当根K线生成后立即发委托。
例:
Begin
if(Ref(isup,1))
BPK;
if(Ref(isdown,1))
SPK;
end?
答:编写只有一个开仓指令的模型,加载到运行模组中,运行方式选择忽略回测运行,即可变相实现开仓指令只发出一次,后续不再发出信号的运行方式。
例:
Vars
Numeric?Ma5;
Numeric?Ma10;
Begin
Ma5=Ma(Close,5);//5周期均线
Ma10=Ma(Close,10);//10周期均线
If(CrossUp(Ma5,Ma10))//5周期上穿10周期均线,做多
{
BK;
}
End?
WH8的模型可以实现自动换月移仓,wh9的模型中也是使用TRADE_OTHER函数来实现
需要写在Setting字段下,具体参考函数说明。
格式:
Setting
Trade_Other:Auto;
例如:LL:LLV(LOW,N),DOT;
wh9中的写法:
Params
Numeric N(20);
Vars
Numeric LL;
Begin
LL = LLV(Low,N);
PlotLine("LL",LL,Red,Dot);
End
例如:LL:LLV(L,N),RGB(99,138,173),NOTEXT;
wh9中的写法:
Params
Numeric N(20);
Vars
Numeric LL;
Begin
LL = LLV(Low,N);
PlotLine("LL",LL,RGB(99,138,173),NoDraw);
End
16.NumericSeries和NumericArray两种类型有什么区别
答:NumericSeries是数值型序列变量,每一根K线都有对应一个数据存储,例如收盘价,每根K线都存储一个收盘价。
NumericArray是数值型数组,例如一个大小为10的数组,就是将10个数字存储到这个数组的10个位置。
一般思路使用 NumericSeries即可,NumericArray主要用于网格等思路存储网格开仓标识。
答:将参数写为整数,在模型中对参数除以相应倍数即可。
例如:
Params
Numeric N(5);
Begin
N/100*Close;
End
18.布尔型的参数、函数、变量类型数据如何改写到wh9软件中
答:其他软件上的布尔型数据,在wh9上可以用数值型数据替代,TRUE是1,FALSE是0。
19.wh9中REF(CLOSE,1)是否完全等同于CLOSE[1]
答:是的,两种写法主要是为了兼容不同软件的写法,表达的含义是一样的。
|
:设定信号计算起止时间。 |
|
:设置回测参数,如初始资金,开仓手数,保证金,手续费等。 |
|
:装入到模组后台运行,将k线图上回测的合约和模型加载到模组中运行。 |
|
:查看回测报告 |
|
:查看信号明细 |
答:模型中写入MultSig函数时,支持逐笔回测。
答:滑点是指委托价格与成交价格之间的差值。
回测参数中设置滑点,目的是为了让回测效果最大限度拟合实盘的成交情况,具体设置多大的滑点要根据交易的合约和委托方式调整。
例如,以对价方式发委托,可以设置1-2个滑点,使回测结果尽可能的贴合品种行情特征,更接近实盘效果。
4.为什么已经补充了数据,但是选择信号计算起始时间不能选择到补充的时间
答:回测之前需要将
数据合约和
交易合约的数据都补充一致再回测。
例如,模型中含有Trade_Other:Auto; 函数指定了交易合约再加载到加权合约上测试时,数据合约是加权合约,交易合约是主连,补充了加权合约数据之后,还需要同步补充主连合约的数据再进行回测,如下图操作。
5.为什么无法补充全部的数据,在补充数据中只能看到最近几个月
答:这种情况是因为回测合约选择的是具体月份合约,所以只能补充到自合约上市以来的数据。如果需要使用连续的历史数据进行回测,建议使用加权合约。
如:沪铜1805是2017年5月上市交易,所以只能申请到2017年5月上市以来的数据,而沪铜加权合约则支持1996年品种上市以来全部数据。
答:利用组合回测->回测一篮子合约可实现该想法。
先将要回测的合约加入到自选篮子中。如下图,在组合回测界面点击右下角【添加】按钮选择【一篮子合约】,在弹出的窗口中选择要加载的自选篮子,选好回测的模型、周期等参数,点击【确定】按钮,即可用同一模型对不同合约进行测试。
7.如何实现快速将同一合约同一周期加载不同模型进行测试
答:利用组合回测->回测一篮子模型功能可实现该想法。
如下图,在组合测试界面点击右下角【添加】按钮,选择【一篮子模型】,在弹出的窗口中批量选入要加载的模型。在弹出窗口中设置一些选项,点击【确定】,可实现快速对同一合约同一周期加载不同模型进行测试。
答:含有参数项的模型才可以进行参数优化(如下图左),如果在模型中指定了交易参数,则不能优化(如下图右)。
答:(1)内存配置需≥8G;
(2)CPU要达到四线程及以上配置;
(3)操作系统win10、win2008的64位版本;
(4)建议使用电信、联通宽带,其它宽带会有卡顿问题。
4.如果我不在电脑前,但想知道模型的运行情况怎么办
答:可以使用【日志邮件】功能,该功能可以帮助您接收到模型运行动态的邮件,人不在电脑前一样可以监控自己的程序。在软件右上方【系统工具】->【个性化设置】中按下图的操作步骤勾选启用后,盒子和模组的交易动态会直接发送至绑定的邮箱中。
答:模组的运行单元数量上限与CPU线程数挂钩,每一个线程允许32个运行单元,总数不超过256。
6.模型修改后,让模组按照新模型源码执行,如何操作
模型编写平台上点击【更新】->【立即更新模组的公式】,即可按照新的源码执行模组。
注:
①模型修改并更新后,运行单元会清空历史信号,并按照新的公式来执行。但是会保留原有的理论资金和实际资金。
②模型更新后,运行单元第一个有效信号必须是开仓信号
答:可将期权定价策略、期权市场波动套利策略等复杂的期权交易思路编写成算法交易模型,加载到算法交易运行池中后台运行下单。
答:如下图所示,点击右上角【量化】菜单->【股票持仓T+0增强交易】,填入交易池名称、资金、证券、模型和底仓限额等信息建立股票T+0交易池。
加载后,同一个交易池中的证券共用一份资金运行,一个运行单元调仓时释放的资金可用于其他运行单元买回证券底仓操作,如下图所示。