AROON指标分为两个具体指标,分别为AROONUP及AROONDOWN。其具体的计算方式为:
Aroon(上升)=[(计算期天数-最高价后的天数)/计算期天数]*100
Aroon(下降)=[(计算期天数-最低价后的天数)/计算期天数]*100
AROON上穿50,买入.
AROON下穿-50,平仓
策略源码:
- function Aroon2(n) % Aroon.
- % 其中,len为在多少日内全部完成突破
- targetList = traderGetTargetList(); % 在RunBackTest中选择好的标的.
- %获取目标资产信息
- HandleList = traderGetHandleList(); %
- %获取账户信息
- %=================================================================
- % RunBackTest的参数设置
- % n=15;
- %=================================================================
- global s; % 定义cc为全局变量
- if isempty(s) % 判断cc是否为空值
- for i=1:length(targetList)
- s(i).time=0;
- s(i).BarNLong=0;
- s(i).openprice=0;
- s(i).stopprice=0;
- s(i).highprice=0;
- end
- end
- for i = 1:length(targetList) % 每个股票过一遍
- [marketposition,~,~]=traderGetAccountPosition(HandleList(1),targetList(i).Market,targetList(i).Code);
- %获取当前仓位
-
- lags=n+2; % lags为策略需要往前获取多少天
- %策略中每次取数据的长度
-
- barnum=traderGetCurrentBar(targetList(i).Market,targetList(i).Code); % K线的序号,后面会增加,前面的值对应的日期固定.
- if(barnum<lags)
- continue;
- end
- % 数据长度限制,排除了前lags根k线
-
- %------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
- % 策略开始部分
- [time,open,high,low,close,volume,turnover,openinterest] = traderGetKData(targetList(i).Market,targetList(i).Code,'day',1, 0-lags, 0,false,'FWard');
-
- if length(close)<n+2
- continue;
- end
-
- k1=0;
- for j=1:n
- if high(end-j+1)==max(high(end-14:end)) && k1==0
- n_high=j-1;
- k1=1;
- end
- end
-
- k2=0;
- for j=1:n
- if low(end-j+1)==min(low(end-14:end)) && k2==0
- n_low=j-1;
- k2=1;
- end
- end
-
- Aroon_up=(n-n_high)/n*100;
- Aroon_dn=(n-n_low)/n*100;
- Aroon=Aroon_up-Aroon_dn;
- %--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
- % 计算前一天的
- k1=0;
- for j=1:n
- if high(end-j)==max(high(end-15:end-1)) && k1==0
- n_high_1=j-1;
- k1=1;
- end
- end
-
- k2=0;
- for j=1:n
- if low(end-j)==min(low(end-15:end-1)) && k2==0
- n_low_1=j-1;
- k2=1;
- end
- end
-
- Aroon_up_1=(n-n_high_1)/n*100;
- Aroon_dn_1=(n-n_low_1)/n*100;
- Aroon_1=Aroon_up_1-Aroon_dn_1;
- %--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
- EntryLong1=Aroon_1<50 && Aroon>50; % AROON上穿50,买入.
- % ===============================================================================================================
- ExitLong1=Aroon_1>-50 && Aroon<-50; % AROON下穿-50,卖空
- % ===============================================================================================================
- shareNum=floor(100000000/300/close(end)/100)*100;
-
- if marketposition ==0 && EntryLong1
- orderID1=traderBuy(HandleList(1),targetList(i).Market,targetList(i).Code,shareNum,0,'market','buy1'); % 开多单
- end
-
- if marketposition > 0 && ExitLong1 && floor(time(end))~=s(i).time; % 平仓情况1
- traderPositionTo(HandleList(1),targetList(i).Market,targetList(i).Code,0,0,'market','sell1');
- end
- end
更多免费策略源码下载请登录DigQuant社区-策略资源下载~


雷达卡


京公网安备 11010802022788号







