HansStrategy 策略源码
策略思路:在开盘30分钟后准备入场;
上轨=开盘后30分钟高点;
下轨=开盘后30分钟低点;
多头进场条件:收盘价大于上轨,最高价连续三根涨
空头进场条件:收盘价小于下轨,最低价连续三根跌
多头出场条件:收盘价小于下轨
空头出场条件:收盘价大于上轨
策略代码:
function HansStrategy(Freq,shareNum) %上面2个为输入参数
% ------------ HansStrategy-------------------
% Freq 为输入时间频率
% shareNum 为操作的手数
global hh; % 全局变量,记录9点至9点半之间最大值
global ll; % 全局变量,记录9点至9点半之间最小值
if isempty(hh) % 全局变量hh赋初值
hh=0;
end
if isempty(ll) % 全局变量ll赋初值
ll=0;
end
%---------------------策略初始化与是否日内平仓---------------%
traderDailyCloseTime(145000); % 每天14:50分平仓 如果没有日内平仓,去掉这句话就可以了。
targetList = traderGetTargetList(); %获取交易标的句柄
HandleList = traderGetHandleList(); %获取账户句柄
=traderGetAccountPosition(HandleList(1),targetList(1).Market,targetList(1).Code); %获取当前仓位状况
lags=300;
barnum=traderGetCurrentBar(targetList(1).Market,targetList(1).Code); %当前Bar的编号
if(barnum<=lags) %当编号不超过所取的数据长度时,返回
return;
end
%---------------------策略提取数据---------------%
= traderGetKData(targetList(1).Market,targetList(1).Code,'min',Freq, 0-lags, 0,false,'FWard'); %提取数据,从当前开始往前取lags个数据
%---------------------策略计算与基本逻辑---------------%
t0=datevec(time(end));
if (floor(time(end))~=floor(time(end-1))) % 判断当前BAR是否为当天,只对当天BAR计算
hh=high(end);
ll=low(end);
nhNum=0;
nlNum=0;
newh=0;
newl=0;
end
kaicang=0; %记录当天开仓次数
if time(end)>=datenum() && time(end)<=datenum() % 如果当天在9:15和9:30之间
if high(end)>hh
hh=high(end);
end
if low(end)<ll
ll=low(end);
end
end
if kaicang<1 % 每天只开仓一次
if time(end)>datenum() %交易时间从当天9:45开始
T=datevec(time(end)-datenum());
len=ceil(T(5)/Freq);
hh1=min(close(end-len+1:end-3)<hh*ones(len-3,1)); %超过9:15至9:30之间的最大值的第一根BAR之后,继续连续三根BAR上涨
ll1=min(close(end-len+1:end-3)>ll*ones(len-3,1)); %低于9:15至9:30之间的最小值的第一根BAR之后,继续连续三根BAR下跌
%----------------------策略主体-------------------------------%
if marketposition(1)==0
if close(end-2)>hh
if high(end-1)>high(end-2)
if high(end)>high(end-1)
if hh1
orderID1=traderBuy(HandleList(1),targetList(1).Market,targetList(1).Code,shareNum,0,'market','buy0');%开多单
end
end
end
end
end
if marketposition(1)==0
if close(end-2)<ll
if low(end-1)<low(end-2)
if low(end)<low(end-1)
if ll1
orderID2=traderSellShort(HandleList(1),targetList(1).Market,targetList(1).Code,shareNum,0,'market','sellshort1');%开空单
end
end
end
end
end
if marketposition(1)>0
if close(end)<ll %止损
traderSell(HandleList(1),targetList(1).Market,targetList(1).Code,shareNum,0,'market','sell0');
kaicang=1;
end
end
if marketposition(1)<0
if close(end)>hh %止损
traderBuyToCover(HandleList(1),targetList(1).Market,targetList(1).Code,shareNum,0,'market','buytocover1');
kaicang=1;
end
end
end
end
end
更多免费策略源码下载请登录atrader社区-策略服务下载,http://www.atrader.com.cn/stra.php
HansStrategy源码下载:http://www.atrader.com.cn/stra.php?mod=model&pid=56
页:
[1]