数学建模社区-数学中国
标题: 网格资金管理策略(附源码) [打印本页]
作者: sdfg123 时间: 2017-2-28 16:18
标题: 网格资金管理策略(附源码)
策略原理:
/ s7 m9 Z' M5 o' r9 }+ a# M- ?' I 将资金分为N份,采取随机抛点的形式入场,止损为10%,止盈为11%; r! R4 u& b. D" c r8 {
如果该份资金获利超过11%,则上移止盈止损线,且启动下一份资金抛点入场。
! C) x. ^0 [1 A* m 只有多头入场/ `$ M! m: x: \, G& T6 c3 }
* F& R: w( f7 P& `- G. s- \! u7 Y# A5 l
策略代码:7 U- x! C3 t3 @ K& H+ T
function Strategy1(default_unit,default_exitway,freq)%
+ v2 p8 |7 O4 D/ }+ X2 x! n( XtargetList = traderGetTargetList();
%获取目标资产信息
HandleList = traderGetHandleList();
%获取账户句柄
global entrybar;
global record;
for k=1:length(targetList);
( L$ s. J. Q6 t6 [2 g; V$ X% L) A
%--------------------仓位、K线、当前bar的提取-----------------------------%
%获取当前仓位
[marketposition,~,~]=traderGetAccountPosition(HandleList(1),targetList(k).Market,targetList(k).Code);
%策略中每次取数据的长度
lags=90;
dlags=20;
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,turnover,openinterest] = traderGetKData(targetList(k).Market,targetList(k).Code,'min',freq, 0-lags, 0,false,'FWard');
if length(close)<lags
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);
% barsinceentry=barnum-remain.entrybar(i);
% [~,entryopen,entryhigh,entrylow,entryclose,~,~,~] = traderGetKData(targetList(k).Market,targetList(k).Code,'min',freq, 0-barsinceentry, 0,false,'FWard');
% enterprice=entryclose(1);
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;
con2=randi([1 10],1,1)==1;
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
( b5 t" e( o* x3 O! M7 F
1 o8 h9 x9 A% b
) R V5 H) V' U
3 m) l* }- Z* J# y3 g0 p; ]3 \
8 ?' g& ]% @/ W$ W3 C8 p
作者: sdfg123 时间: 2017-3-1 12:56
策略源码下载:ww w.atrader.com.cn/stra.php?mod=model&pid=150, x4 p8 L2 h2 `7 l4 `+ @
| 欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) |
Powered by Discuz! X2.5 |