WT8麦语言量化交易软件使用说明书

您所在的位置:网站首页 加仓是指什么 WT8麦语言量化交易软件使用说明书

WT8麦语言量化交易软件使用说明书

2024-05-30 23:43| 来源: 网络整理| 查看: 265

趋势跟踪模型是基于K线图表计算的,可加载到K线图上查看具体的信号。趋势跟踪模型按照信号的执行顺序可以分为一开一平过滤模型和加减仓模型;从下单执行的时间间隔和信号计算精度上又可以分为收盘价模型和指令价模型两种。

一、策略模型和指标有什么区别

模型加载到k线图后,展现出你从什么时间开始,投了多少钱做交易,交易盈亏曲线是什么样的,模型还包含交易的时间和资金的内容。

形象点说,技术指标是一根价格趋势的曲线,策略模型是一根资金权益的曲线。

模型,是给你管理一笔资金的"交易员",你只需要把资金交给它,其他的就不用管了,买卖信号、委托管理、持仓管理、止损、风控这些,模型都能自己完成。

怎样把指标转化为策略模型呢?

第一步:公式中加入交易指令

写法范例:COND,SIG,//满足COND条件时,立即发出Sig信号 Sig:BK、SP、SK、BP、BPK、SPK、STOP、CLOESOUT 其中,如果交易过程中,并不是一直持仓,那么用BK、SP、SK、BP;如果交易过程中一直保持有持仓,非多即空,那么用BPK、SPK。 STOP、ClOSEOUT用于编写止损和风控。 例如: STOP(0,-10);//多单,亏损10个最小变动价位止损 MONEYTOT

第二步:设置信号计算起始时间

调用方法:在主k线图界面,右键-》设置信号计算起止时间。

信号计算起始时间,和k线图数据起始时间,不是一回事的。

以沪铜2201合约为例,该合约的数据起始时间就是合约的挂牌时间是2021年1月18日,在挂牌初期交易不活跃,交易量很少,缺少流动性,你并不会去交易这个合约。随着时间的推移,到2021年11月份以后,距离交割日时间越来越短了,沪铜2101合约交易活跃起来,成交量逐渐增大,2021年11月1日你决定开始交易这个合约,那么信号计算起始时间就应该设置为2021年11月1日。模型自11月1日以后开始计算信号,此后如果满足信号条件,就会发出交易信号。

第三步:设置模型的资金参数

调用方法:在主k线图界面,右键->设置模型资金参数。

按照你的实际情况,设置初始资金、保证金比率、手续费比率等参数。

二、一开一平过滤重复交易模型

对于绝大多数交易者来说,量化交易都无需加减仓的,软件中提供了AUTOFILTER函数,只需加到模型最后一行,即可启用一开一平的信号过滤机制,无需在模型中写入其他判断语句,系统会自动过滤掉同方向的交易指令,简单方便。

案例:利用过滤模型实现一开一平交易

如下图所示,多头排列启动上涨行情之后,多头状态一直存在,如果每个多头信号位置都买入,便会加大持仓成本,削减利润。

如下图,通过一开一平信号过滤模型,可以将中间重复的多头信号过滤掉,只在首次出现多头排列的上涨起始点入场,在价格下破均线开始回落时再出场,有效避免了反复交易,节约交易成本,把握住一波完整的趋势行情。

案例2:一开一平过滤模型的下单手数

场景A:按固定手数下单

回测:一开一平过滤模型编写不指定具体的下单手数,回测时按照设置回测参数里的开仓手数计算,如下图。

运行:模组运行单元在交易参数里设置固定下单手数,如下图。

场景B:按资金使用率计算下单手数

一开一平过滤模型也可以实现资金管理,在模型中写入SETDEALPERCENT函数,可持资金使用率计算每次下单手数,合理控制开仓头寸。

例如:

SETDEALPERCENT(20); //每次按理论资金比例的20%下单

关键字:SETDEALPERCENT(fPercent)

每次按模组当前单元理论资金的fPercent比例下单。

计算公式:fPercent比例可下单手数=(前期可用资金+平仓释放的保证金+平仓盈亏)*fPercent/(最新价*保证金比例*交易单位)。

注:

1、SETDEALPERCENT只作用于开仓指令,不作用于平仓指令。含有该函数的一开一平信号过滤模型,平仓信号默认全平。

2、加减仓模型中如果写了该函数,则开仓按照该函数设置的资金比例下单,默认下单手数及信号后写入的手数均无效;平仓信号按照信号后写入的手数进行下单

3、模组中用保证金参数中设置的初始资金、保证金计算下单手数

4、历史回测用回测参数中设置的初始资金、保证金计算下单手数

一开一平信号过滤模型编写规则

(1)模型中需要写入AUTOFILTER函数;

(2)支持的指令:BK、BP、BPK、SK、SP、SPK、CLOSEOUT、STOP;支持指令分组,指令后不需要写手数。如下图所示:

(3)连续的同方向指令只有第一个有效,其他的将被过滤,如下图;

(4)交易指令必须先开仓后平仓,一开一平配对出现: 出现BK指令,下一个指令只允许出现SP\SPK\CLOSEOUT\STOP指令; 出现SK指令,下一个指令只允许出现BP\BPK\CLOSEOUT\STOP指令; 出现SP/BP/CLOSEOUT/STOP等平仓指令,下一个可以是BK/SK/SPK/BPK指令任一个; 反手指令SPK和BPK交叉出现。

三、加减仓模型实现加仓、资金管理

一开一平信号过滤模型是开平对应的,开仓后下一个动作只能是平仓操作,当需要进行加减仓的时候,软件也是支持的,需要删掉AUTOFILTER函数,并使用诸如ISLASTBK(判断上一个信号是否是BK)、BKVOL(多头信号手数)等信号记录函数,自定义过滤机制,即可实现加减仓。

案例1:利用加减仓模型实现波段突破加仓策略

下图是基于长短周期波段突破思想编写的策略模型,在行情有效突破周期指定价格时开仓入场,入场后继续判断行情,若行情继续向有利方向做有效突破,策略执行加仓动作,若行情向不利方向发展并满足出场条件,清仓出场。

如上图,是该波段突破加仓模型的信号效果,图中的指标线形是我们的突破判断标准,当行情有效突破时,软件便会自动开仓和加仓。

案例2:加减仓模型的下单手数

加减仓模型可以通过控制仓位比例实现灵活的资金管理思路,控制交易的风险。

场景A:加减仓模型实现金字塔式加仓 例如: BKVOL=0 && HIGH>HV(HIGH,3),BK(8);//首次开仓8手 BKVOL>0 && CLOSE>BKPRICE+20*MINPRICE,BK(6);//上涨20点加仓6手 BKVOL>0 && CLOSE>BKPRICE+10*MINPRICE,BK(4);//再上涨10点加仓4手 MONEYTOT

场景B:按资金的百分比加仓,控制仓位 例如: T30:MONEYTOT*0.3/(CLOSE*MARGIN*UNIT);//按理论资金的30%计算手数 T5:MONEYTOT*0.05/(CLOSE*MARGIN*UNIT);//按理论资金的5%计算手数 BKVOL+T5HV(HIGH,3),BK(T5);//按理论资金的5%开仓,仓位控制在30%以内 MONEYTOT TRADE_AGAIN(100);

其中,TRADE_AGAIN(N) 同一指令行可以连续出N个信号,配合BKVOL+T50 && CLOSE

方法C:用权益的回撤来控制止损

用CLOSEOUT指令,CLOSEOUT运算的基础数据为1分钟数据,满足条件的1分钟内就发出信号,不需要等k线走完,回测和运行是完全一致的;

例如:

MA1:=MA(CLOSE,10);//10周期均线

MA2:=MA(CLOSE,20);//20周期均线

MONEYTOT

COUNTSIG(CLOSEOUT,BARPOS)=0 && CROSSUP(MA1,MA2),BPK;//未出现止损,均线金叉做多

COUNTSIG(CLOSEOUT,BARPOS)=0 && CROSSDOWN(MA1,MA2),SPK;//未出现止损,均线死叉做空

AUTOFILTER;

收盘价模型编写规则

(1)模型中不含有CHECKSIG、CHECKSIG_MIN、MULTSIG、MULTSIG_MIN、PANZHONG_MIN等指定信号计算频率类函数的都是收盘价模型。

(2)收盘价模型和一开一平信号过滤模型、加减仓模型没有必然联系。支持一开一平的收盘价模型也支持加减仓的收盘价模型。

五、指令价模型 -- 出信号即时下单

指令价模型是指写了CHECKSIG、MULTSIG等运行优化函数,在k线还没有走完的情况下就发出信号的模型,抓住更好的入场机会,应用于短线交易。

案例1:运行优化函数的典型应用场景

运行优化函数,在胜率高并且盈亏比低的策略中,对模型的优化效果更显著。

场景A:CHECKSIG(SIG,'A',N,'D',0,0);//出信号N秒确认信号下单,K线走完复核,每笔tick计算一次信号

k线走完的时候,如果条件仍然满足,多赚了“指令价-这根k线收盘价”这个价差;如果k线走完条件不再满足,牺牲了这个价差以及手续费成本。

关键字:CHECKSIG(SIG,MODE1,TIME1,MODE2,TIME2,INTERVAL);

设置信号确认与复核的指令价方式(TICK逐笔回测,可设置回测精度)

用法:

1、当INTERVAL不为0时,INTERVAL数据时间间隔,每隔INTERVAL秒计算一次信号,SIG为信号,MODE1为信号确认方式,TIME1信号确认时间乘数,MODE2信号复核方式,TIME2信号复核时间乘数。

2、当INTERVAL为0时,每笔TICK计算一次信号,SIG为信号,MODE1为信号确认方式,TIME1信号确认时间,MODE2信号复核方式,TIME2信号复核时间。

3、通过调整INTERVAL参数,模型可设置不同数据快照频率进行回测。

(例:INTERVAL为10,豆粕合约开盘第一根K线21:00:09为第一次计算模型,21:00:19为第二次计算模型...)

典型思路编写:

CHECKSIG(SIG,'A',0,'C',0,0);//出信号立即下单,不复核 CHECKSIG(SIG,'A',0,'D',0,0);//出信号立即下单,K线走完复核 CHECKSIG(SIG,'A',N,'D',0,0);//出信号N秒确认信号下单,K线走完复核,每笔tick计算一次信号 CHECKSIG(SIG,'A',N,'D',0,3);//出信号第3*N秒确认信号下单,K线走完复核,每3秒计算一次信号 CHECKSIG(SIG,'A',N,'C',0,0);//出信号N秒确认信号下单,不进行复核 CHECKSIG(SIG,'B',N,'D',0,0);//K线走完前N秒确认信号下单,K线走完复核 CHECKSIG(SIG,'B',N,'C',0,0);//K线走完前N秒确认信号下单,不复核 CHECKSIG(SIG,'B',0,'C',N,0);//K线走完确认信号下单,不进行复核 CHECKSIG(SIG,'B',0,'D',N,0);//K线走完确认信号下单,不进行复核 CHECKSIG(SIG,'B',0,'E',N,0);//K线走完确认信号下单,小节休息前N秒复核 CHECKSIG(SIG,'A',0,'F',10,0);//出信号立即下单,收盘前最后一根K线提前10秒进行复核

场景B:MULTSIG(0,0,2,0);//出信号立即下单不复核,一根K线最多2个信号,每笔tick计算一次信号

在行情走势出现急转弯的情况下,这一根k线还没有走完,就可以“平仓 +反向开新仓”,或者平掉刚刚开的方向不对的仓,不需要等下一根k线。

关键字:MULTSIG(Sec1,Sec2,N,INTERVAL);

设置一根k线多信号的指令价方式

1、当INTERVAL不为0时,INTERVAL为数据时间间隔,每隔INTERVAL秒计算一次信号,开仓信号在出信号后的第Sec1个数据时间间隔时下单不复核,平仓信号在出信号后的第Sec2个数据时间间隔下单不复核,一根K线上最大的信号个数为N。

例:INTERVAL为10,豆粕合约开盘第一根K线21:00:09为第一次计算模型,21:00:19为第二次计算模型...

2、当INTERVAL为0时,每笔TICK计算一次信号,开仓信号Sec1秒后下单不复核,平仓信号Sec2秒后下单不复核,一根K线上最大的信号个数为N。

例:Sec1为0,则为开仓信号出信号立即下单,不复核;如果Sec1为1,则为开仓信号出信号1秒后下单,不复核

3、通过调整INTERVAL参数,模型可设置不同数据快照频率进行回测。

典型思路编写:

MULTSIG(0,0,2,0);//出信号立即下单不复核,一根K线最多2个信号,每笔TICK计算一次信号 MULTSIG(0,0,2,3);//出信号立即下单不复核,一根K线最多2个信号,每隔3秒计算一次信号 MULTSIG(3,5,2,0);//开仓出信号3秒后下单,平仓出信号5秒下单不复核,一根K线最多2个信号

指令价模型怎么回测?

指令价模型只支持加载到月份合约回测的。

如果要用长期数据验证模型的有效性,可以使用主连链回测功能。首先把模型主图加载的品种主连的k线图上,点右键->模型回测报告,自动调出该功能,就可以对主连链里的多年的主力月份合约进行回测了,还可以合并回测报告。

指令价模型编写规则

1.模型中需要写入CHECKSIG、CHECKSIG_MIN、MULTSIG、MULTSIG_MIN、PANZHONG_MIN函数来指定信号执行方式。

2.CHECKSIG、MULTSIG、MULTSIG_MIN、CHECKSIG_MIN、PANZHONG_MIN函数不能同时出现在一个模型中。

3.指令价模型和一开一平过滤模型、加减仓模型没有必然联系,支持一开一平的指令价模型,也支持加减仓的指令价模型。

提醒:运行优化函数本质上不属于策略本身的内容,如果模型研究过程中,严重依赖运行优化函数,可能干扰策略的研究。虽然运行优化函数对短线模型是必须的,但是对长线模型来说意义不大的。

相关常见问题解答

1、一开一平信号过滤模型在量化运行过程中的规则请参照下方链接

答:http://www.wenhua.com.cn/popwin/guolvmx2.htm

2、加减仓模型在量化运行过程中的规则请参照下方链接

答:http://www.wenhua.com.cn/popwin/feiguolvmx2.htm

3、交易指令如何选择?用单一指令(BK、SP、SK、BP)还是反手指令(BPK、SPK)?

答:在将指标改写成量化交易模型过程中,具体使用哪种交易指令,取决于你的交易思路。如果交易过程中,并不是一直持仓,那么适合选择单一指令;如果交易过程中一直保持有持仓,非多即空,那么可以使用反手指令。 例如:在一波上涨趋势中,空头盈利空间要远小于多头盈利空间,做空甚至有可能不断亏损,这时使用反手指令是不适合的,使用一些判断趋势方向的条件,配合单一方向的指令,规避逆势交易,往往能够获得更高的收益。

4、运行优化函数是什么?

答:运行优化函数是对模型执行过程的微调和运行优化,支持在K线还没有走完的情况下发出交易指令,力求以更好的价格建仓和平仓,从而降低交易成本,提高模型收益。 例如:基本的模型是K线走完发出交易指令的,可以使用CHECKSIG函数,在K线还没有走完但是买入开仓条件已经满足的情况下发出交易指令,不需要这根K线走完。这样操作,后续行情继续上涨的前提下,买入价格就比K线走完再买入的价格更好,成本更低。

5、一开一平信号过滤模型指令后面不能写手数,那么开平仓手数如何设置?

答:开仓信号:下单手数按照参数设置中的默认开仓手数执行(如下图所示)。

6、加减仓模型编写时需要注意的问题有哪些?

答:A、加仓模型中,加仓语句需要判断是否是第一次开仓 方法:可利用判断当前是否有持仓或判断上一个信号是否是相同信号的方法确定是否是第一次开仓。如,加仓条件&&BKVOL>0,BK(N);或者加仓条件&&ISLASTBK=1,BK(N); B、减仓模型中,减仓语句需要判断当前是否有可平持仓 方法:可利用BKVOL/SKVOL这类函数来判断持仓情况。如,平仓条件BKVOL>0,SP(BKVOL);

7、为什么加减仓模型编写时指令后面一定要有手数?

答:由于加减仓模型中可进行加仓,或者减仓,每笔交易的手数可能会不一样,所以需要具体指定。

8、为什么我的加减仓模型不加仓?

答:在加减仓模型运行时“一个指令行,在一次“开仓->平仓”交易过程中只发一次信号。 如果想让加减仓模型的开仓或平仓指令重复执行可在模型中加入TRADE_AGAIN函数。 例:CLOSE>OPEN,BK(1); CLOSE



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3