将资金分为N份,采取突破高点的形式入场,止损为10%,止盈为11%
如果该份资金获利超过11%,则上移止盈止损线,且启动下一份资金抛点入场。
仅多头入场
回测曲线(由Auto-trader软件提供回测报告):
策略源码:
function Strategy1(freq)%
targetList = traderGetTargetList();
%获取目标资产信息
HandleList = traderGetHandleList();
%获取账户句柄
global record;
for k=1:length(targetList);
%--------------------仓位、K线、当前bar的提取-----------------------------%
%获取当前仓位
[marketposition,~,~]=traderGetAccountPosition(HandleList(1),targetList(k).Market,targetList(k).Code);
%策略中每次取数据的长度
lags=90;
dlags=31;
barnum=traderGetCurrentBar(targetList(k).Market,targetList(k).Code);
%数据长度限制
if(barnum<lags)
continue;
end
if(barnum<dlags)
continue;
end
%获取K线数据
[time,open,high,low,close,volume,~,~] = traderGetKData(targetList(k).Market,targetList(k).Code,'min',freq, 0-lags, 0,false,'FWard');
[Dtime,Dopen,Dhigh,Dlow,Dclose,Dvolume,~,~] = traderGetKData(targetList(k).Market,targetList(k).Code,'day',1, 0-lags, 0,false,'FWard');
if length(close)<lags || length(Dclose)<dlags
continue;
end;
%-------------------------交易逻辑-------------------------------%
%----------入场信号--------------------%
stoplossratio=0.01;
stopearnratio=0.011;
remain_num=find(record.isopen==1);
remain.isopen=record.isopen(remain_num);
remain.isearn=record.isearn(remain_num);
remain.pivotprice=record.pivotprice(remain_num);
remain.entrybar=record.entrybar(remain_num);
remain.unit=record.unit(remain_num);
[ValidCash,MarketCap,OrderFrozen,MarginFrozen,PositionProfit] = traderGetAccountInfo(HandleList(1));
[~,~,Multiple,~,~,~,~,~,~] = traderGetFutureInfo(targetList(k).Market,targetList(k).Code);
remain_share=10-length(remain_num);
con1=0;
if remain_share~=0;
con1=1;
buyunit=fix(ValidCash/remain_share/close(end)/Multiple);
end;
for i=1:length(remain_num)
index=remain_num(i);
if close(end)<remain.pivotprice(i)-stoplossratio*remain.pivotprice(i) % 触发止损线
orderID2=traderDirectSell(HandleList(1),targetList(k).Market,targetList(k).Code,remain.unit(i),0,'market','sell');
if orderID2==0
continue;
end;
record.isopen(index)=0;
elseif close(end)>remain.pivotprice(i)+stopearnratio*remain.pivotprice(i) % 触发止盈线
record.pivotprice(index)=close(end);
record.isearn(index)=2;
end;
end;
% 入场条件
ma2=ma(Dclose,30);
con2=high(end)>max(high(end-60:end-20)) && close(end)>ma2(end);
con3=isempty(find(remain.isearn==1,1));
buycon=con1 && con2 && con3;
%---------------------------入场操作--------------------------------%
if buycon
orderID1=traderDirectBuy(HandleList(1),targetList(k).Market,targetList(k).Code,buyunit,0,'market','buy');
if orderID1==0
continue;
end;
record.pivotprice=[record.pivotprice,close(end)];
record.isearn=[record.isearn,1];
record.isopen=[record.isopen,1];
record.unit=[record.unit,buyunit];
record.entrybar=[record.entrybar,barnum];
end;
end
end
策略来源:atrader社区-策略服务
目测有上百个策略可以免费下载~


雷达卡





京公网安备 11010802022788号







