日内转向加仓交易系统
回测曲线(由Auto-Trader提供回测报告):
策略源码:
- function ReverseAdd(Freq,shareNum,FirstGrid,AddGrid,TotalGrids,TrailingGrid)
- % ------------ ReverseAdd Strategy-------------------%
- % Freq 为输入时间频率
- % shareNum 为操作的手数
- % FirstGrid 第一笔交易间距
- % AddGrid 加仓间距
- % TotalGrids 每日最大交易次数
- % TrailingGrid 移动止损间距
- %---------------------策略主体---------------%
- traderDailyCloseTime(145800);
- % 每天14:58分平仓
- targetList = traderGetTargetList();
- % 获取交易标的句柄
- HandleList = traderGetHandleList();
- n = length(targetList);
- for j = 1:n
- % 获取账户句柄
- [marketposition,~,~]=traderGetAccountPosition(HandleList(1),targetList(j).Market,targetList(j).Code);
- % 获取当前仓位状况
- lags = Freq*30;
- barnum=traderGetCurrentBar(targetList(j).Market,targetList(j).Code);
- % 当前Bar的编号
- if(barnum<=lags)
- return;
- end
- % 当编号不超过所取的数据长度时,返回
- global HH;
- global LL;
- global MyRealMp;
- if isempty(MyRealMp)
-
- MyRealMp = 0;
-
- end
- [time,open,high,low,close] = traderGetKData(targetList(j).Market,targetList(j).Code,'min',Freq, 0-lags, 0,false,'FWard');
- if length(close)<lags
-
- return;
-
- end
- if isempty(HH)
-
- HH = high(end);
-
- end
- if isempty(LL)
-
- LL = low(end);
-
- end
- [~,~,~,MinMove,~,~,~,~,~] = traderGetFutureInfo(targetList(j).Market,targetList(j).Code);
- MinPoint = MinMove;
- if length(time)<2
-
- return
-
- end
- if(floor(time(end-1))~=floor(time(end)))
-
- HH = high(end);
-
- LL = low(end);
-
- MyRealMp = 0;
-
- end
- if (floor(time(end-1))==floor(time(end)))
-
- HH = max(HH,high(end));
-
- LL = min(LL,low(end));
-
- end
- if (MyRealMp>0 && HH-low(end)>=TrailingGrid*MinPoint && (high(end)-low(end)<TrailingGrid*MinPoint || (high(end)-low(end)>=TrailingGrid*MinPoint && close(end)<open(end))))
-
- traderSell(HandleList(1),targetList(j).Market,targetList(j).Code,'all',0,'market','平仓');
-
- MyRealMp = 0;
-
- LL = low(end);
- elseif (MyRealMp<0 && (high(end)-LL)>=TrailingGrid*MinPoint && (high(end)-low(end)<TrailingGrid*MinPoint && (high(end)-low(end)>=TrailingGrid*MinPoint && close(end)>open(end))))
-
- traderBuyToCover(HandleList(1),targetList(j).Market,targetList(j).Code,'all',0,'平仓');
-
- MyRealMp = 0;
-
- HH = 0;
-
- end
-
- if (MyRealMp==0 && (high(end)-LL)>=(FirstGrid*MinPoint)) % 第一笔多单开仓
-
- traderBuy(HandleList(1),targetList(j).Market,targetList(j).Code,shareNum,0,'market','开多仓');
-
- MyRealMp = 1;
-
- HH = high(end);
- elseif (MyRealMp>0 && MyRealMp<TotalGrids && (high(end)-LL)>=(FirstGrid+MyRealMp*AddGrid)*MinPoint) % 多单加仓
-
- traderBuy(HandleList(1),targetList(j).Market,targetList(j).Code,shareNum,0,'market','开多仓');
-
- MyRealMp = MyRealMp + 1;
-
- end
- if (MyRealMp==0 && (HH-low(end))>=FirstGrid*MinPoint) % 第一笔空单开仓
-
- traderSellShort(HandleList(1),targetList(j).Market,targetList(j).Code,shareNum,0,'market','开多仓');
-
- MyRealMp = -1;
-
- LL = low(end);
-
- elseif (MyRealMp<0 && -1*MyRealMp<TotalGrids && (HH-low(end))>=(FirstGrid+abs(MyRealMp*AddGrid))*MinPoint) % 空单加仓
-
- traderSellShort(HandleList(1),targetList(j).Market,targetList(j).Code,shareNum,0,'market','开多仓');
-
- MyRealMp = MyRealMp - 1;
-
- end
- end
更多策略源码下载请登录DigQuant社区-策略资源下载~