突破唐奇安上轨,做多
突破唐奇安下轨,最空
外加atr跟踪止损
回测曲线(由Auto-trader提供回测报告)
策略源码:
- function Donchian(Freq,tlen1,tlen2,ShareNum)
- % ------------ Retrace Strategy-------------------%
- % Freq 为输入时间频率
- % tlen1 管道突破入场周期
- % tlen2 管道突破出场周期
- %---------------------策略初始化与是否日内平仓---------------%
- % traderDailyCloseTime(145000);
- targetList = traderGetTargetList();
- HandleList = traderGetHandleList();
- %---------------------策略提取数据---------------%
- global s;
- n = length(targetList);
- for j = 1:n
- [marketposition,~,~]=traderGetAccountPosition(HandleList(1),targetList(j).Market,targetList(j).Code);
- len = 100;
- [time,open,high,low,close,volume,turnover,openinterest] = traderGetKData(targetList(j).Market,targetList(j).Code,'min',Freq, 0-len, 0,false,'FWard');
- if length(close)<len+1
- return
- end
- dlen = 10;
- [Dtime,Dopen,Dhigh,Dlow,Dclose,Dvolume,Dturnover,Dopeninterest] = traderGetKData(targetList(j).Market,targetList(j).Code,'day',1, 0-dlen, 0,false,'FWard');
- if length(Dclose)<dlen+1
- return
- end
- [atr,~] = traderATR(10,targetList(j).Market,targetList(j).Code,'day',1,0-dlen,0,false,'FWard'); % 日ATR
-
- %---------------------策略计算与基本逻辑---------------%
- s(j).condition = 0;
- if close(end)>max(high(end-tlen1:end-1)) && s(j).condition<=0
- s(j).condition = 1;
- elseif close(end)<min(low(end-tlen1:end-1)) && s(j).condition>=0
- s(j).condition = -1;
- end
-
-
- %----------------------策略主体-------------------------------%
-
- % 入场
- if marketposition==0
- if s(j).condition == 1
- OrderID=traderDirectBuy(HandleList(1),targetList(j).Market,targetList(j).Code,ShareNum,0,'market','buy');
- if OrderID~=0
- s(j).openprice=traderOrderFilledPrice(HandleList(1),OrderID);
- s(j).peak=0;
- end
- elseif s(j).condition == -1
- OrderID=traderDirectSell(HandleList(1),targetList(j).Market,targetList(j).Code,ShareNum,0,'market','buy');
- if OrderID~=0
- s(j).openprice=traderOrderFilledPrice(HandleList(1),OrderID);
- s(j).peak=0;
- end
- end
- end
-
-
- % 出场
- if marketposition>0
- if close(end)<min(low(end-tlen2:end-1)) || close(end)<s(j).openprice-2*atr(end) || open(end)-low(end)>1*atr(end)
- traderPositionTo(HandleList(1),targetList(j).Market,targetList(j).Code,0,0,'market','close');
- end
- if s(j).peak==0 && (close(end)-s(j).openprice)>3*atr(end) % 上移止损线
- s(j).peak=high(end);
- end
- if s(j).peak>0
- s(j).peak=max(s(j).peak,high(end));
- if close(end)<s(j).peak-1.4*atr(end)
- traderPositionTo(HandleList(1),targetList(j).Market,targetList(j).Code,0,0,'market','close');
- end
- end
- end
- if marketposition<0
- if close(end)>max(high(end-tlen2:end-1)) || close(end)>s(j).openprice+2*atr(end) || high(end)-open(end)>1*atr(end)
- traderPositionTo(HandleList(1),targetList(j).Market,targetList(j).Code,0,0,'market','close');
- end
- if s(j).peak==0 && (s(j).openprice-close(end))>3*atr(end) % 上移止损线
- s(j).peak=low(end);
- end
- if s(j).peak>0
- s(j).peak=min(s(j).peak,low(end));
- if close(end)>s(j).peak+1.4*atr(end)
- traderPositionTo(HandleList(1),targetList(j).Market,targetList(j).Code,0,0,'market','close');
- end
- end
- end
- end
- %----------------------自定义函数-------------------------------%
更多免费策略源码下载请登录DigQuant社区-策略资源下载~


雷达卡




京公网安备 11010802022788号







