基于市场资金流向分析的商品期货量化交易策略摘要资金流向是国际上一个成熟的技术指标,它可以透过价格涨跌的迷雾看到其他投资者的投资行为。
资金流向规律对商品期货流动有很大相关性,因此本文旨在研究资金流向规律,并且分析其对商品期货量化交易的影响,建立基础商品期货量化交易数学模型,优化获益问题。
本队伍做A题的过程,第一步先运用auto-trader及matlab对数据进行提取,然后分析数据组成与类型等,再运用excel制作分钟级K线数据,接着分析各数据量(时间、开盘价、收盘价、最高价、最低价、成交量、持仓量、成交金额)之间的相关性并且从中找出资金流向的规律,初步运用海龟模型建立资金流向模型。
第二步,基于初步模型的建立及数据的分析,我们发现建立的资金流向模型对未来商品期货价格的影响,并改动我们的模型,再进行进一步的分析,观察资金流向是否具有持续性。
第三步,分析各个板块的资金流向是否具有共通性,分析单个标的的资金流向与整个市场板块的资金流向的关系,因此,再次改进我们的资金流向模型。
关键词:资金流向量化投资商品期货改动的海龟模型K线理论目录一、问题重述 (3)1.1资金流向的初步分析 (3)1.2 资金流的深入分析 (5)1.2.1 K线数据的运用 (5)1.2.2分析K线数据 (6)二、模型建立 (8)2.1说明 (8)2.1.1 择时 (8)2.1.2 止损和止盈 (9)2.1.3资金的配置问题 (9)2.2建模步骤 (9)2.3海龟交易 (10)2.3.1 择时入场:唐奇安通道 (10)2.3.2 平均真实波幅ATR (10)2.4建仓及加仓 (11)2.4.1 建仓 (11)2.4.2 加仓和在止损 (11)2.5代码 (11)三、资金流向模型的适用性 (14)3.1资金流向 (14)3.2资金流向对未来商品期货价格的影响 (14)3.3资金流向是否具有持续性 (15)3.4资金流向的相似性和轮动效应 (15)四、参考文献 (16)一、问题重述1.1资金流向的初步分析首先,对所有的标的,都统计过去价格的变化,用变化率来衡量,然后看成交量的变化、持仓量的变化,寻找之间的规律,根据这个规律来构建资金流向模型。
图1图200.51 1.52 2.53 3.5x 10523456789105图3图1为成交量与时间的关系,横坐标为成交量,纵坐标为成交量,两者之间的关系为:2011年至2013年大部分时间成交量持比较平稳状态,唯独2011年01月04日至2011年02月14日期间、2011年03月05日至2011年05月24日期间及2012年04月18日至2012年05月28日出现成交量的高峰状态。
图2 为持仓量与时间的关系,横坐标为持仓量,纵坐标为时间,两者之间的关系为:2011年至2013年持仓量成一跌一升的趋势发展,大体上呈周期性变化。
图3为成交量与持仓量的关系,横坐标为成交量,纵坐标为持仓量。
在这里,首先明确资金流入与资金流出的意思:主动性买盘视为资金流入,主动性卖盘视为资金流出。
据图1与图2的规律及结合图3的数据变化趋势可以得出,成交量与持仓量成以下关系的变化:成交量上升,持仓量下降,此时是行情中断时期,多杀多,空杀空的情况出现;成交量下降,持仓量上升,大行情来临,此时处于平衡状态。
这两种情况下,期货市场的资金流入远远多于资金流出。
成交量上升,持仓量上升,此时是单边行情的开始时期,价位比较动荡;成交量下降,持仓量下降,行情逐步结束,多空双方或者是一方资金退场。
这两种情况下,资金流出远远多于资金流入。
也就是说,资金流向具有不连续性,在一个期货大行情来临前,必有行情萧条状况的出现,资金流以这种状态呈现周期性的变化。
1.2 资金流的深入分析1.2.1 K线数据的运用利用K线理论来研究开盘价、收盘价、最高价、最低价之间的关系。
首先找到一天的最高和最低价,垂直连成一条直线;然后找出当天的开市和收市价,把这两个价位连接成一条狭长的长方柱体。
假如当天的收市价较高于开市价(即低开高收),便以红色表示,或是在柱体留白,该柱体称为“阳线”。
若钢铁的收市价较开市价低(即高开低收),我们则以蓝色表示或在柱体上涂上黑色,即成“阴线”。
图4为提取的2011年01月01日-2013年12月31日的相关数据,制成的分组K数据线如下,截取其中一部分进行细致分析,如图5.图4图5 1.2.2分析K线数据图6图7 图8图9图6至图9分别是开盘价、收盘价、最高价、最低价与时间的关系,结合四个图形来看,可以看到,2013年与2011年及2012年相比,开盘价、收盘价、最高价、最低价都比较低,而前面分析到成交量、持仓量在在2013年这个时间段也是比较平稳的,较2011年及2012年要高一些,再结合K线图,提出疑时候,作为买家,该什么时候买进,又是该在什么时候卖出?二、模型建立2.1说明由我们交易的时间框架,该策略一般可分为日内(即当日开仓且要求当日平仓,并且仓位不能过夜)和日间两种策略,然后在实现策略的方法上分为趋势的跟踪、震荡的交易、套利的交易,还有机器的学习等。
一个优秀的策略应当从止损止盈、择时或者资金管理等角度来进行分析。
2.1.1 择时其中一种较为常用的方案就是价格突破,例如时间和价格突破,亦或是指标突破、均线突破和波动性突破等。
2.1.2 止损和止盈止损和止盈对于防止假信号和后市信号市反转中起着至关重要的作用。
而通常我们会采用固定点位的方法来达到止损止盈的目的,或者采用动态调整的方法譬如SAR抛物线止盈模式或者一段时间之后如果尚未达到止损或止盈就采用清仓的方式。
2.1.3资金的配置问题为使收益能够稳步提升,我们必须合理的配置资金。
假设胜率为99%,但是一旦输了一次就输掉了所有,即使是再好的策略也无法得到盈利目的。
如海龟策略中的单量控制,还有“金字塔式加码”、“复合头寸”等策略。
2.2建模步骤海龟模型的建立分为4步,分别是:调取并分析数据、发现规律、建立模型、模型的检测(回测报告)。
模型的建立步骤如下:2.3海龟交易海龟交易的优点:其一在于参数较少,其二是资金风险控制。
2.3.1 择时入场:唐奇安通道为了能够择时入场,海龟交易又设计了一个名叫唐奇安的通道,而当价格突破上轨时就是多头信号,相反,突破下轨就是空头信号。
资金管理和止损止盈其中,平均真实波幅ATR是止损止盈和资金管理的参考参数。
2.3.2 平均真实波幅ATR真实波幅即为下面三个值中的最大值1、当日交易中最高价和最低价的波幅2、前一交易日的收盘价与当日交易最高价的波幅3、前一交易日的收盘价与当日交易最低价的波幅用公式写就是:TrueRange=Max(High−Low,abs(High−PreClose),abs(PreClose−Low))ATR 就是TrueRange在一定周期内的平均值。
同时我们也可以采用指数平均(N值)。
2.4建仓及加仓2.4.1 建仓海龟交易中不反对加仓,但是加仓次数不能超过四次。
建仓的数量是(单位:手) Unit = 1% * Cash / ATR / coefCash是当下现金,而coef则是合约乘数,如当螺纹钢合约coef=15时,这表示一手螺纹钢合约就是15个单位的合约。
并且,其中的High是一种单位合约,然而并不是一手合约的价格。
为什么要这样建仓,目的是Unit的合约,在一天内的价格振荡中,资产变化小于或等于1%。
2.4.2 加仓和在止损如果价格达到上次建仓价盈利的r*ATR,这时候可以考虑加仓。
就是说当持仓方向为多时,价格就比上次建仓价高出r*ATR;相反,当持仓方向为空时,价格就比上次建仓价低r*ATR), 这时候就可以考虑继续加仓。
一般r取.5..一般加仓的次数也是有限制的。
最后,如过加仓相对最后一次时的买入价的亏损达到r2*ATR,这时候及要注意清空头寸了;不过在信号反转时,通常也可以采用清空原有仓位,比如在持多时,价格突破下轨。
一般r2取2.2.5代码function Turtle(len1,len2,len3,N)targetList = traderGetTargetList();HandleList = traderGetHandleList();global s;lens=60;Plimit=4;ShareNum=1;n=length(targetList);for j=1:n[time,open,high,low,close,volume,turnover,openinterest] = traderGetKData(targetList(j).Market,targetList(j).Code,'day',1, 0-lens,0,false,'FWard');%---------------------策略计算与基本逻辑---------------%if length(close)<lens+1 || volume(end)==0continue;endvalue1 = high(end-lens+1:end) - low(end-lens+1:end);% 当日最高价减去当日最低价value2 = abs(high(end-lens+1:end)-close(end-lens:end-1));% 当日最高价减去前日收盘价的绝对值value3 = abs(low(end-lens+1:end)-close(end-lens:end-1));% 当日最低价减去前日收盘价的绝对值TRlist=max(value1,max(value2,value3));ATR_len3=mean(TRlist(end-len3+1:end));% 四条轨道High_len1=max(high(end-len1:end-1));Low_len1=min(low(end-len1:end-1));High_len2=max(high(end-len2:end-1));Low_len2=min(low(end-len2:end-1));mp=traderGetAccountPosition(HandleList,targetList(j).Market,targetList(j).Code );con1=close(end)>High_len1;con2=close(end)<Low_len1;con3=close(end)>High_len2;con4=close(end)<Low_len2;% 进场if mp==0s(j).ShareList=[];if con1OrderID=traderDirectBuy(HandleList(1),targetList(j).Market,targetList(j).Co de,ShareNum,0,'market','buy');if OrderID~=0s(j).openprice=traderOrderFilledPrice(HandleList(1),OrderID);s(j).ShareList(end+1)=ShareNum;endelseif con2OrderID=traderDirectSell(HandleList(1),targetList(j).Market,targetList(j).C ode,ShareNum,0,'market','buy');if OrderID~=0s(j).openprice=traderOrderFilledPrice(HandleList(1),OrderID);s(j).ShareList(end+1)=ShareNum;endendend% 加仓if mp>0 && Plimit>length(s(j).ShareList) &&close(end)>=( s(j).openprice+N*ATR_len3)OrderID=traderDirectBuy(HandleList(1),targetList(j).Market,targetList(j).Co de,Sh三、资金流向模型的适用性3.1资金流向资金流向是股市中的资金主动选择的方向。