- 精华
- 0
- 在线时间
- 37 小时
- UID
- 247176
- 积分
- 162
- 帖子
- 72
- 阅读权限
- 0
- 注册时间
- 2017-2-14
- 最后登录
- 2017-5-18
- 精华
- 0
- UID
- 247176
- 积分
- 162
- 帖子
- 72
- 主题
- 68
- 阅读权限
- 0
- 注册时间
- 2017-2-14
- 最后登录
- 2017-5-18
|
改写的“从希尔伯特变化到波浪理论择时”,通过希尔伯特变换得到瞬时周期T,将今日收盘价于T日之前收盘价做对比,若上涨则做多,若下跌则做空。若T过大则舍弃。
策略代码:
function Hilbert(Freq,shareNum,M,d)
% ------------ Hilbert Strategy-------------------%
% Freq 为输入时间频率
% shareNum 为操作的手数
% M 计算希尔伯特变化的截断参数
% d 过滤短周期波动的参数
%---------------------策略初始化与是否日内平仓---------------%
% traderDailyCloseTime(145000);
targetList = traderGetTargetList();
HandleList = traderGetHandleList();
[marketposition,~,~]=traderGetAccountPosition(HandleList(1),targetList(1).Market,targetList(1).Code);
%---------------------策略提取数据---------------%
len = 100;
[time,open,high,low,close,volume,turnover,openinterest] = traderGetKData(targetList(1).Market,targetList(1).Code,'min',Freq, 0-len, 0,false,'FWard');
if length(close)<len+1
return
end
%---------------------策略计算与基本逻辑---------------%
a = 2/(1+d);
HPFv=zeros(1,length(close)); % H浪
HPFv(1:2)=[0 0];
for i=3:length(close)
HPFv(i)=(1-a/2)^2*(close(i)-2*close(i-1)+close(i-2))+2*(1-a)*HPFv(i-1)-(1-a)^2*HPFv(i-2);
end
N = 27;
hil = zeros(1,N);
for j = 1:N
for r = 1:2*M+1 % 离散希尔伯特变换
hil(j) = hil(j) + HPFv(end-N-1+j-2*M+r)*mu(r,M);
end
end
tempT = zeros(1,N-1);
for i = 1:N-1
tempT(i) = 2*pi/ acos( (hil(i)*hil(i+1)+HPFv(end-M-N+i)*HPFv(end-M-N+i+1)) / sqrt( (hil(i)^2+HPFv(end-M-N+i)^2) * (hil(i+1)^2+HPFv(end-M-N+i+1)^2) ) ); % 相角差为瞬时周期
end
% tempT
T = 0;
alpha = 2/N;
for i = 1:N-1
T = alpha*tempT(i) + (1-alpha)*T;
end
T = round(T); % 瞬时周期的EMA平均
if (T>=length(close))
return
end
delta = close(end) - close(end-T);
if delta>=0
if marketposition<=0
orderID = traderBuy(HandleList(1),targetList(1).Market,targetList(1).Code,shareNum,0,'market','开多'); % 开多单
end
end
if delta<0
if marketposition>=0
orderID = traderSellShort(HandleList(1),targetList(1).Market,targetList(1).Code,shareNum,0,'market','开空'); % 开空单
end
end
end
function muv=mu(r,M)
if r==M+1
muv = 0;
else
muv = (1-(-1)^(r-M-1))/(pi*(r-M-r));
end
end
更多免费策略源码下载请登录DigQuant社区-策略资源下载,http://www.digquant.com.cn/stra.php
Hilbert模型源码下载:http://www.digquant.com.cn/stra.php?mod=model&pid=85 |
|