机器学习在量化交易上的运用(一)

首先阐述下背景。

也需要一个自己去做总结提高的地方,所以在此开个博。

废话少说,开始干活(后面也请谅解想到哪写到哪的风格,因为这里很多东西是用分享的方式在自己总结)

今天的第一个任务是在TB上实现均线特征的线性回归交易。

之前这个东西我做过,但是却被某些机器学习方面的大牛批评:过多的业务框架限制了机器能学到的东西。现在对这个批评理解的都不够透彻。

其实,很多想入门做数分或机器学习的人会发现,数据源是个头疼事。我的建议是,不妨从股市或期货市场的交易数据入手,因为够好获取。

http://www.tb18.net   这个是TB的网站,这个是一个国内比较好的第三方程序化交易软件,它上面可以导出数据。除了可以导出常规的价格数据外,还可以用导出所有plot的自定义数据(可以自己定义一些标签,可以直接plot出来后导出哦)

当然,还有很多获取数据的方式,但这个比较直观,而且训练的模型可以直接在上面实盘操作(感觉自己在安利TB,不过现在很多人都根据CTP接口自己写程序交易软件喽)

在TB上实现一个线性模型。

Y = wX+b

这里的X可以自己定义,我们采用了均线来定义(我不知道这是不是在各类挖掘或机器学习中叫的特征的概念)。

Params

Numeric n(10);

Vars

NumericSeries ma8;
NumericSeries ma13;
NumericSeries diffc;
NumericSeries diffma8;
NumericSeries diffma13;
NumericSeries df;
BoolSeries condbuy;
BoolSeries condsellshort;

Begin

ma8 = Average(close, 8);
ma13 = Average(close, 13);
diffc = (close[-1] - close)/close * 10000;
diffma8 = (close - ma8)/close * 10000;
diffma13 = (close - ma13)/close * 10000;
df = (-0.037803471919434*diffma8 + 0.033816490363161*diffma13)*100;
condbuy = df > n;
condsellshort = df < n*-1;

//PlotNumeric("ma8",ma8);
//PlotNumeric("ma13",ma13);
PlotNumeric("diffma8",diffma8);
PlotNumeric("diffma13",diffma13);
PlotNumeric("diffc",diffc);
PlotNumeric("df",df);

if (condbuy)
{
	Buy(1,close);
}

if (condsellshort)
{
	SellShort(1,close);
}
	



End

代码不注释的。哈哈。是段TB代码,可以直接复制到TB里测试。

diffma8 和 diffma13是特征,下一根K线的涨跌幅是需要去预测的量。通过w=(x'*x)^-1*x'*y的公式可以求w参数。然后带回到TB里。

大的框架就是这样的。现在问题是,好的X和Y有哪些?自己定义的框架是不是像批评者说的,限制了机器的learn。怎么突破?

如何用python实现批量的回测?

今天暂且先到这,这个框架以前搭过,需要持续研究的优化。

有兴趣一同探讨的朋友可以联系我。

PS:好久没撸matlab的代码和TB的代码了。今天为了写博先开了个头,后面会不断更新。




你可能感兴趣的:(量化交易)