北师大珠海校区?|?金融数学?|?本科
点宽量化俱乐部第一期会员
本节概要
提及趋势跟踪, 我们不得不涉及在该规模有至高职位的海龟生意业务法例。与原版的海龟生意业务法例差异, 这里更重视的是动态风险的打点。与其忖测市场将来的颠簸性程度,不如援引动态参数。
配景
提及趋势跟踪, 我们不得不涉及在该规模有至高职位的海龟生意业务法例, 在趋势跟踪规模, 它的职位大概不亚于《圣经》之于耶稣教。1971年,海龟生意业务法例首创人理查德·丹尼斯以600美金入市, 至1987年在剔除浩瀚的该基金捐赠之后, 本金仍升逾2亿美金。简朴地说, 海龟生意业务法例就是上涨打破20周期或55周期的最高价后做多, 下跌打破20周期或55周期的最低价做空。然后, 以2/N为单元举办三次加仓(N是该品种的平均周期颠簸性程度)。
曾经在美国期货市场上大获乐成的海龟生意业务法例是否同样合用于中国期货市场呢?带着这样的疑问, 2007年, 将海龟生意业务法例略做修改后, 将其定名为NEWS生意业务系统模子, 而且以完全凭据系统信号的机器化生意业务模式报名介入了第七届中期杯实盘生意业务大赛。在不到半年(2007年5~10月)的参赛时间内里,取得了百分之105的收益率回报。
中国版海龟思维
在常态市场的应用中, 贯串进程中的 “ 停、 走 ” 观念, 可以有效地回避该系统大概带来的巨幅资金回撤, 换句话说, 该系统并非一连在市, 虽然,假如将 “ 停、 走” 引申为一种头寸调解的要领, 也可以让它一连在市。何时赢利告终间断系统的运行?何时增、 减仓?与原版的海龟生意业务法例差异, 我更重视的是动态风险的打点。所谓动态风险, 就是当前生意业务信号的反向位置大概带来的最大损失(没有思量到隔夜直接以反向涨、 跌停板跳空的景象)。
每一笔生意业务,最多愿意遭受多大的损失?所有的生意业务,如果集团失败,最多面对多大的损失合计?这就是动态风险打点的基本。值得提醒的是,这种考量在日线级别下, 是基于天天的收盘价, 而非该笔生意业务的初始建仓本钱。以NEWS系统为例, 我们不难获得反向生意业务系统信号的位置, 以及对应头寸可 能带来的吃亏金额, 与我们预设的风险程度查对, 我们就不难形成头寸增减的生意业务决定。这样操纵的意义在于每一笔生意业务、 每一天的生意业务,我们始终遭受着同样程度的风险。
传统的概念认为, 假如市场始终维持一个足够高程度的颠簸性, 那么,趋势系统永远都不会失效。对付这个概念,, 我有一点增补:趋势系统的参数必需与市场的颠簸性程度相吻合。不然, 仍然有大概无法盈利。1987年, 海龟生意业务法例的惨败:1991年, 理查德·丹尼斯改用调大参数后的海龟生意业务法例 重出江湖, 都印证着这个原理。
“惧怕滩前说惧怕, 零丁洋里叹零丁“,与其忖测市场将来的颠簸性程度, 不如援引动态参数, 按照市场实际颠簸性的程度, 自动调解趋势系统的参数。
插手了动态调解系统参数的NEWS系统生意业务模子思路
EF=(HHV(C,N1)-LLV(C,N1))/SUM(ABS(C-REF(C,N1)),N1);EF10=EMA(EF, N2);CLOSE?> REF (HHV (HIGH, INTPART (10-(EF10-0.5)×10)), 1), BPK;CLOSE < REF (LLV (LOW, INTPART (10-(EF10-0.5)×10)), 1), SPK;
计策代码分享
4.1计策文件(滑动屏幕查察完整代码)
function ?chinatt(Int,Begin,cellPar)%UNTITLED2 此处显示有关此函数的摘要global idexKglobal Tlenglobal TimeDTglobal TimeKTN1=cellPar{1};N2=cellPar{2};if?Int? ?traderSetParalMode(false);? ?idexK=traderRegKData('day',1);? ?Tlen=length(idexK(:,1));? ?TimeDT=zeros(Tlen,1);? ?TimeKT=zeros(Tlen,1);else? ?%提取数据? ?[mp,~,~] = traderGetAccountPositionV2(1,(1:Tlen));? ?[~,HandListCap,~,~,~]=traderGetAccountInfoV2(1);? ?iddexK = traderGetRegKData(idexK,?100,?false);? ?[Multiple, ~, ~, ~, ~, ~, ~] = traderGetFutureInfoV2(1:Tlen);? ?for?i=1:Tlen? ? ? ?idddexK=iddexK(1+8*(i-1):8*i,:);? ? ? ?time=idddexK(1,:);? ? ? ?high=idddexK(3,:);? ? ? ?low=idddexK(4,:);? ? ? ?close=idddexK(5,:);? ? ? ?sharenum=floor(HandListCap*0.8/close(end)/Multiple(i)/Tlen);? ? ? ?%指标计较? ? ? ?diff=close(N1+1:end)-close(1:end-N1);? ? ? ?EF=(max(close(end-N1+1:end))-min(close(end-N2+1:end)))/sum(abs(diff(end-N1+1:end)));? ? ? ?EF10=EMA(EF,N2);? ? ? ?t=floor(10-(EF10-0.5)*10);? ? ? ?if?isnan(t)? ? ? ? ? ?continue;? ? ? ?end? ? ? ?conbuy=close(end)>max(high(end-t:end-1));? ? ? ?consell=close(end)<min(low(end-t:end-1));? ? ? ?%开平仓行动? ? ? ?if?mp(i)==0? ? ? ? ? ?if?conbuy? ? ? ? ? ? ? ?traderBuyV2(1,i,sharenum,0,'market','buy');? ? ? ? ? ?elseif ?consell? ? ? ? ? ? ? ?traderSellShortV2(1,i,sharenum,0,'market','sell');? ? ? ? ? ?end? ? ? ?elseif mp(i)>0? ? ? ? ? ?if?consell? ? ? ? ? ? ? ?traderPositionToV2(1,i,0,0,'market','stop');? ? ? ? ? ?end? ? ? ?elseif ?mp(i)<0? ? ? ? ? ?if?conbuy? ? ? ? ? ? ? ?traderPositionToV2(1,i,0,0,'market','stop');? ? ? ? ? ?end? ? ? ?end? ?endendendfunction EMAValue=EMA(Price,Length)EMAValue=zeros(length(Price),1);K=2/(Length+1);for?i=1:length(Price)? ?if?i==1? ? ? ?EMAValue(i)=Price(i);? ?else? ? ? ?EMAValue(i)=Price(i)*K+EMAValue(i-1)*(1-K);? ?endendend
4.2执行文件(滑动屏幕查察完整代码)
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。