当前位置:首页 > 手机资讯 > 正文

量化策略编写思路简述(欢迎交流)

量化策略编写思路简述(欢迎交流)

第一部分 策略的研发

   量化模型= (技术指标) + (下单条件等交易内容)+(头寸管理内容,包括止损、加减仓、给模型分配资金、根据权益变化做风控等)

   一、技术指标和量化模型的区别

       量化模型= (技术指标) + (下单条件等交易内容)+(头寸管理内容,包括止损、加减仓、给模型分配资金、根据权益变化做风控等)

           技术指标在 k 线图上是一根价格趋势的曲线,策略模型在 k 线图上是一根收益、资金权益变化的曲线

       1、如何把指标转化为模型?

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

               写法范例:COND,SIG; //满足 COND 条件时,立即发出 SIG 信号

               交易指令

                   如果交易过程中,并不是一直持仓,那么用 BK、SP、SK、BP;如果交易过程中一直保持有持仓,非多即空,那么用 BPK、SPK

           第二步:加入头寸管理

               指标是盯着价格,模型是盯着持仓盈亏,二者的核心区别在于头寸管理部分

               例如:价格回撤进行止损

               CLOSE<=BKPRICE-N*MINPRICE,SP; //亏损 N 跳止损平多

               CLOSE>=SKPRICE+N*MINPRICE,BP; //亏损 N 跳止损平空

               例如:权益回撤进行持仓风控

               MONEYTOT<=INITMONEY*(1-10/100),SP; //权益回撤 10%,多头

               MONEYTOT<=INITMONEY*(1-10/100),BP; //权益回撤 10%,空头

   二、量化模型编写

       (一)模型的基本框架

           1. 开仓语句(条件,BK/SK/BPK/SPK)和平仓语句(条件,SP/BP)是模型必须要有的部分

           2.信号优先级高于指令:

               信号包括:BK/SK/BP/SP/BPK/SPK;

               指令包括:ADD_LONG/LOWER_LONG/ADD_SHORT/LOWER_SHORT;

           3. 从开仓信号到平仓信号视为一个完整的交易过程,减仓指令不视为交易结束,必须出现平仓信号才算交易结束;

           4. 开仓信号、平仓信号一个交易过程中只能出现一对,期间可以出现 0~N 次的加减仓指令

           5. 加仓不能作为一次交易的开始,需要 BK/SK/BPK/SPK 开仓之后,才能出加仓指令;

           6. 加仓不能作为一次交易的开始,需要 BK/SK/BPK/SPK 开仓之后,才能出加仓指令;

           7. 加减仓指令只有在持仓不为 0 时才生效;

           8. 默认以 K 线最后一笔价格来确定信号下单,即 K 线走完出信号,于下一根 K 线开始时下单;

       (二)优化编写:止损止盈

           1、常见的止损思路

               思路 1:固定点差或固定比例止损

                   固定点差止损

                       CLOSE<=BKPRICE-N*MINPRICE,SP;//亏损 N 跳平多

                       CLOSE>=SKPRICE+N*MINPRICE,BP;//亏损 N 跳平空

 

                   固定百分比止损

                       CLOSE<=BKPRICE*(1-N/100),SP;//下跌百分之 N 止损平多

                       CLOSE>=SKPRICE*(1+N/100),BP;//上涨百分之 N 止损平空

 

               思路 2:动态追踪止损

                   CLOSE<=BKHIGH-N*MINPRICE,SP;//从开多后最高点下跌回撤 N 跳平多

                   CLOSE>=SKLOW+N*MINPRICE,BP;//从开空后最低点上涨回撤 N 跳平空

 

           2、常见的止盈思路

               思路 1:固定点差或固定比例止盈

                   固定点差止盈

                       CLOSE>=BKPRICE+M*MINPRICE,SP;//盈利 M 跳平多

                       CLOSE<=SKPRICE-M*MINPRICE,BP;//盈利 M 跳平空

 

                   固定百分比止盈

                       CLOSE>=BKPRICE*(1+M/100),SP;//上涨百分之 M 止盈平多

                       CLOSE<=SKPRICE*(1-M/100),BP;//下跌百分之 M 止盈平空

 

               思路 2:保本止盈

                   BKHIGH>BKPRICE+NMINPRICE&&CLOSE<=BKPRICE+MMINPRICE,SP;//开多后最高上涨超过N跳后回到开仓价加 M 跳价位保本平多

                   SKLOW<SKPRICE-N*MINPRICE&&CLOSE>=SKPRICE-M*MINPRICE,BP;//开空后最低下跌超过 N 跳后回到开仓价减 M 跳价位保本平空

                   可以用C来表示,这样C高时止盈点高

 

       (三)优化编写 2 - 头寸管理

           思路 1:权益回撤控制

               权益回撤比,超过一定比例,停止模型运行

                   HM:=HHV(MONEYTOT,BARPOS);

                   QY:(HM-MONEYTOT)/HM;//权益回撤比

                   QY>0.2,SP;//权益回撤超过 20%,多头止损

                   QY>0.2,BP;//权益回撤超过 20%,空头止损

 

           思路 2:开仓仓位管理

               按资金使用率计算下单手数

               SETDEALPERCENT(fPercent,N):按理论资金比例下单,每次按当前理论资金的 fPercent比例下单,且最大为 N 手。

 

           思路 3:根据上一次交易的盈亏,动态调整开仓手数

 

       (四)优化编写 3 - 运行优化

           对模型运行进行优化,在 k 线还没有走完但是买入开仓条件已经满足的情况下发出交易指令,不需要等这根 k 线走完

           思路 1:优化进出场点

           思路 2:盘中立即止损

 

       (五)优化编写 4 - 分批进出场

           如果开仓后盈利了再加大仓位分批进场。离场也是一样,根据持仓盈亏的情况动态调整,亏损则灵活减仓,降低持仓风险

           思路:分批进场,盈利加仓,亏损减仓

 

       (六)跨周期跨合约引用数据

           1、跨周期引用数据

               将跨周期模型加载到分钟周期上,在小周期引用大周期的数据综合判断趋势走向,既可以过 滤掉逆向信号和“假趋势”,也可以在更小级别上精准入场,降低策略的滞后性

 

           2、跨合约引用数据

               根据板块指数分析市场大趋势,再结合交易合约行情寻找入场机会,宏观和微观层面相结合,增强策略的稳定性

 

   三、策略的调试

       (一)历史信号调试

           场景 1:核对信号,检验模型编写的准确性

           场景 2:自主选择交易开始的时间调试策略

           场景 3:切换合约对比策略表现

           选择什么 k 线周期交易?

               越小的周期,交易机会越多,但是随之而来的是更多的手续成本和滑点损失;越大的周期,趋势越明显,单笔盈利空间越大,但是相应的需要承担的回撤风险也越大

 

       (二)实时信号调试

           场景:多周期、多合约、多模型监测信号

               1、页面盒子信号监测的适用范围

                   以下列表中为不支持在页面盒子做信号监测的函数

 

   四、策略的回测

       (一)主连链回测

           场景:针对多个年度主力月份合约连续交易效果回测

               主连链回测对主力换月的处理方式

                   主力换月时,旧主力,新主力根据月份合约 K 线数据重新计算开仓信号,以此规避换月时新旧合约趋势相反导致移仓方向做反而产生的风险,同时又能保证策略连续性

 

               操作方法

                   模型不要写入 TRADE_OTHER('AUTO')语句,把模型直接加载到品种主连上

                   在研究模型时,先在某一个 具体的月份合约上做回测研究,模型在月份合约上有良好的表现后,再进行主连链回测

 

       (二)360 度检验策略有效性

           在实盘运用前需要解决:过度拟合、幸存者偏差

           场景 1:多指标、多维度分析模型实盘可行性

               策略是否具备获利能力

                   收益、收益率、扣除最大亏损后收益率

 

               策略风险情况(是否有爆仓风险)

                   权益最大回撤、损益最大回撤、最大持续亏损次数、平均每次亏损、最大每手亏损、单次最大亏损

 

               策略是否稳定

                   胜率、盈亏比率、R 方、夏普比率、索提诺比率

 

               策略可行性,实盘中能否坚持执行

                   信号个数、空仓周期数、最长连续空仓周期数、最大持续亏损次数、单次最大亏损

 

               策略成本是否偏高,资金使用率高不高

                   平均资金使用率、最大资金使用率、手续费、滑点损耗

 

           场景 2:动态分析策略执行的可行性

               分析在实盘中面临这样的回撤或亏损压力

 

           场景 3:总结策略阶段性表现

               时段统计图表可从收益、胜率、盈亏比、回撤全方位评估策略的表现,对策略不同时间段内的表现情况进行统计总结

 

           典型问题解答

               是否支持逐笔回测?

                   模型中写入 SIGCHECK 函数时,支持逐笔回测

 

               胜率和盈亏比哪个更重要?

                   理论上盈亏比和胜率的乘积大于 0.6 的模型就是可以盈利的,乘积越大代表模型越好

                   对于长线趋势策略而言

                       一个品种一年中出现明显趋势的次数并不多,模型能否成功的关键是抓住大的趋势波动,所以胜率是很难达到很高的水平的,这时想办法提高盈亏比,让利润充分奔跑,更容易获得较高的收益

 

               什么是杠杆倍数?

                   杠杆倍数 = 最大资金使用率 / 保证金率

                   一个模型的收益率,必须是在一个合理的杠杆倍数下才有参考意义

 

               权益和损益有什么区别?

                   权益计算的是账户可用资金和持仓保证金,是包含了浮动盈亏的

                   损益计算的是每次持仓为 0 时,账户的可用资金,是不包括浮动盈亏的

                   一般损益回撤更能体现本金真实的回撤情况

 

            夏普比率是什么意思?

                   夏普比率代表了每承受一个单位的风险,会产生多少的超额收益。夏普比率大于 1,代表收益高于风险

                   收益相同的两个模型,一般会选择夏普比率更高的模型,因为这个模型相对风险较低

 

       五、模型定参

           参数越多越好吗

               参数设置的越多,就越会有过度拟合的风险

 

           (一)枚举

               (1)设置参数关系减少参数优化时间

               (2)根据参考标准占比综合筛选参数组

 

           (二)遗传

               场景 1:优选更高适应性的参数

最新文章