2016年你最想对自己说啥( 二 )

补全了交易测试的代码接下来就是批量的模拟各种P值的情况和追涨杀跌的情况。找到追涨杀跌策略在一个等价K线中,相应P值对应的模拟结果。(模拟中还没有考虑交易成本)--------------------------------------------------------------------------------------------------------------------------------------------2016/1/6如果只看到投资是赌博是不够的,还必须看到投资又不完全是赌博等价K需要面对的等比问题是存在的。%从最简单的只考虑收盘价来生成等价K,是基于1分钟K线的,而非TICK数据,因此,当1分钟K线上出现长的影线时,对生成等价K是有影响的%继续简单下,当一根K跳动超过多个等价差时,一次变动一个等价差%保存导出的螺纹钢1分钟收盘价为closeclear all;load rbclose.mat;diffprice = 20; %定义等价的价差j = 1; %等价K的下标sdclose(j) = close(1); %初始化等价K的价格for i = 1:length(close) %导出的螺纹K线的数量 if close(i) \u0026gt;= (sdclose(j) + diffprice) || close(i) \u0026lt;= (sdclose(j) - diffprice) j = j + 1; if close(i) \u0026gt;= (sdclose(j-1) + diffprice) sdclose(j) = sdclose(j-1) + diffprice; end if close(i) \u0026lt;= (sdclose(j-1) - diffprice) sdclose(j) = sdclose(j-1) - diffprice; end endendsdclose = sdclose\u0026#39;;%下面要计算各等价K的P值bxpd = zeros(length(sdclose),1); %“变向判断”的列for k = 2:length(sdclose) if sdclose(k,1) \u0026gt; sdclose(k-1,1) bxpd(k,1) = 1; else bxpd(k,1) = -1; endendPtimes = zeros(length(sdclose),1); %“变向出现次数”的列for l = 2:length(sdclose) if bxpd(l,1) ~= bxpd(l-1,1) Ptimes(l,1) = 1; endendP = 1 - (length(find(Ptimes == 1)) - 1) / length(sdclose); %等价K的转向概率 plot(sdclose); 这个是简化版的MATLAB生成等价K代码。接下来,可以计算各等价切分情况下的不同P值。也可以对比几个不同品种的不同P值,显然,对比螺纹钢和玉米是非常有意思的。等价K暂时先放放,下面处理下用训练的方式生成交易策略训练策略的事情明天推进,先小结下,对比后发现,螺纹在大部分价差下,P都能大于0.5。而玉米在价差大于15的时候,P值已经小于0.5了。所以,在知道P值的情况下,可以判断一个商品在该价差水平下的趋势性。当然,在P小于0.5的时候,就可以用“高抛低吸”策略啦!从模拟价格的角度来考虑策略开发的事情,还是蛮有意思的。--------------------------------------------------------------------------------------------------------------------------------------------2016/1/7几点需要测试1.P是动态的话?2.含过滤效果的追涨杀跌策略如何?3.不同的训练数据导致怎样不同的训练效果?4.加入交易成本后呢?可以“偷懒”的生成模拟价格数据用TB处理,但要多次模拟的话,还是得用MATLAB2016年你最想对自己说啥

券商又提前下班了。先针对问题2和4,生成模拟行情在TB处理。在P=0.55,手续费为0,0.1,0.2三种情况下的,用下面的TB策略资金曲线是差异巨大的。0是45度向上,而0.1是则更贴近正常情况,有起有落,而0.2择时45度向下。因此,考虑含过滤效果的追涨杀跌策略在0.1手续费下和原策略的区别。//暂时称该策略为001号追涨杀跌策略ParamsVars BoolSeries condbuy; // 做多条件 BoolSeries condsellshort; //做空条件Begin condbuy = close \u0026gt; close; //从不含过滤条件,只要转向,就立刻追涨杀跌 condsellshort = close \u0026lt; close;\t if (condbuy)\t{\t Buy(1,close);\t} if (condsellshort)\t{\t SellShort(1,close);\t}End


推荐阅读