定量分型速率交易策略

Author: homily, Created: 2020-02-05 13:23:07, Updated: 2023-10-17 21:19:29

img

关于我们

此交易系统由泊宇量化设计,我是很早就致力于研究量化策略的团队, 去年Tokeninsight量化大赛取得了优异的成绩。

也非常感谢FMZ社区提供这样一个平台。 为更好支持量化社区建设,现在在此公开发表此策略的设计理念和设计思路。 希望大家可以从中学习到量化交易的设计以及运用。

定量分型速率交易策略的由来

定量分型速率系统的灵感主要来源于物理学 物理学对速度的定义是:单位时间内移动的距离。 如果把价格看做是距离,那么在金融市场里,速度的定义——单位时间内价格变化的大小。 如果单位时间里价格变化很大,通常这样的行情被称之为急速行情;如果单位时间里价格变化的很小,这样的行情被称之为缓速行情。所以,速度是把时间和价格综合在一起的自然法则,通过对速度的深入了解,能帮助我们在更大程度上认知这个市场。 如果速率上升,代表能量正在增强,能有效的预知行情上升趋势。 如果速率下降,代表能量衰竭,能感知到市场行情平缓或下跌的风险。 每次交易使用一定的手数进行成交,所以叫做定量分型速率交易系统。

需要准备的知识

最高价(HHV):特定周期内达到的最高价。 最低价(LLV):特定周期内达到的最低价。 移动平均线(MA) :特定周期收盘价平均值的连线。 回归斜率(SLOPE):特定周期线性回归的斜率。(也就是我们说的速率)

线性方程OLS斜率公式如下: img 数学公式是非常复杂的,但在FMZ平台已经为我们写好了麦语言语法公式(SLOPE) 我们查看麦语言语法手册可见算法如下:

img 过程是复杂了一点,但大家完全不用去考虑这么多。直接调用公式就行了。

指标设计:

1. 先计算出一定时间周期内的最高价和最低价 2. 取这2个价格的平均值 3. 对平均值计算一个移动平均线 4. 求均线的回归斜率

img

通过对指标的设计,我们运行一下回测可以看到在主图中,我们得到了35个周期的最高点(黄线)、 最低点(绿线),他们的平均值(红线)、以及对红线计算的平滑价格均线(粗条紫线) img

接着我们可以在附图中计算回归斜率ss,它代表了均线的上升和下降速率。 img

交易策略设计:

由上图可以看出,绿色箭头分别表示了斜率最低处的拐点,橙色箭头分别标注了斜率高处的拐点, 顺图反应在k线上,也能明显感受到上涨的减弱和下跌的减弱位置。 如果在拐点处操作买入卖出,能提早对行情进行有效操作,而不是在高位或者低处追涨杀跌。

设计思路是: 斜率不断上升,意味行情动能增加,可能产生止跌或者上升。 斜率不断下降,意味行情动能衰弱,可能产生停涨或者下跌。

使用麦语言设计表达如下: img

回测与总结

这样我们就完成了这套算法的设计,接下去我们使用系统回测一下一年的情况,

标的物是okex季度合约btc; 回测周期是2019年1月1日至今,时间周期1小时; 初始账户3个btc,手续费万5; 设定每次交易手数固定200张。

img 通过回测可以看出,这个收益是比较平滑稳健的, 在这一个回测当中全年交易1261笔; 预估收益4.68个币; 年化收益约140%; 最大回撤14%; 夏普比率0.117.

源码分享:

点击前往复制策略 https://www.fmz.com/strategy/183416 以上分享是我设计的一些思路和内容,下面是麦语言全部代码, 给大家参考学习研究。如需转载,请注明出处谢谢。

(*backtest
start: 2019-01-01 00:00:00
end: 2020-02-03 00:00:00
period: 1h
exchanges: [{"eid":"Futures_OKCoin","currency":"BTC_USD"}]
args: [["TradeAmount",200,126961],["ContractType","quarter",126961]]
*)

len:=35;//设计周期数

hh^^HHV(H,len);//取一定周期内的最高价
ll^^LLV(L,len);//取一定周期内的最低价
hl2^^(hh+ll)/2;//最高价、最低价的平均值
avg^^MA(hl2,5);//对平均值计算平滑移动均线

ss:SLOPE(avg,len);// 对均线计算回归斜率

ss<REF(ss,1),SPK;//当斜率变小说明行情动能减弱,有下跌趋势,平多做空
ss>REF(ss,1),BPK;//当斜率变大说明行情动能不断增加,有上升趋势,平空做多
AUTOFILTER;

Related

More

dsaidasi 一年交易一千多次,算上手续费直接爆炸了。

韬奋量化 好厉害,这么简洁漂亮的代码。有个疑问,为什么同样的代码和回测条件,在不同交易所的回测结果差距会比较大?比如OKEX期货和huobiDM,前者和后者的预估收益分别是4.68和1.99个币。

groot 并且这个回测,都是固定200张,做空的话相当于减仓接近套保了,做多是加杠杆了,总的来说还是偏多头啊。

groot 请教下,如果是速率的化,不应该是最大值减最小值吗,为啥取最大值加最小值的平均值呢

homily 季度和永续的价格会本来就会有偏差,另外可能是手续费张数计算的不同吧。

homily 这是唐奇安通道中轨,最大减最小只是差值。

homily 横看成岭侧成峰。