- 精华
- 0
- 在线时间
- 37 小时
- UID
- 247176
- 积分
- 162
- 帖子
- 72
- 阅读权限
- 0
- 注册时间
- 2017-2-14
- 最后登录
- 2017-5-18
- 精华
- 0
- UID
- 247176
- 积分
- 162
- 帖子
- 72
- 主题
- 68
- 阅读权限
- 0
- 注册时间
- 2017-2-14
- 最后登录
- 2017-5-18
|
策略说明:
多头进场条件:收盘价大于根据前一根bar的开高低收构造的通道的上轨
空头进场条件:收盘价小于根据前一根bar的开高低收构造的通道的下轨
多头出场条件:止损0.5%,盈利超过1%启动跟踪止盈,回撤盈利的20%出场
空头出场条件:止损0.5%,盈利超过1%启动跟踪止盈,回撤盈利的20%出场
策略代码:
function DualThrust(Freq,shareNum,N,k1,k2,stopTar,profitTar,pct) %上面8个为输入参数
% ---------------------Dual Thrust Strategy-------------------------
% Freq 为输入时间频率
% shareNum 为操作的手数
% len 为计算使用的长度
% k1 为价格上轨乘数,当k1<k2时,多头相对容易被触发,当k1>k2时,空头相对容易被触发
% k2 为价格下轨乘数
% stopTar 为止损参数
% profitTar 为跟踪止盈参数
% pct 为跟踪止盈回撤参数
%----------------------策略初始化与是否日内平仓------------------------%
traderDailyCloseTime(145000);% 每天14:50分平仓 如果没有日内平仓,去掉这句话就可以了。
targetList = traderGetTargetList(); %获取交易标的句柄
HandleList = traderGetHandleList(); %获取账户句柄
[marketposition,~,~]=traderGetAccountPosition(HandleList(1),targetList(1).Market,targetList(1).Code); %获取当前仓位状况
lags=25;
%----------------------策略提取数据------------------------%
[time,open,high,low,close] = traderGetKData(targetList(1).Market,targetList(1).Code,'day',Freq, -lags, 0,false,'FWard'); %提取数据,从当前开始往前取lags个数据
%---------------------策略计算与基本逻辑-------------------%
if length(close)<lags
return;
end
HH=max(high(end-N:end-1));% 前 len 根 BAR 的 high 的最高价
HC=max(close(end-N:end-1));% 前 len 根 BAR 的 close 的最高价
LC=min(close(end-N:end-1));% 前 len 根 BAR 的 close 的最低价
LL=min(low(end-N:end-1));% 前 len 根 BAR 的 low 的最低价
range=max(HH-LC,HC-LL); % 浮动区间
upper=open(end)+k1*range; % 价格上轨
lower=open(end)-k2*range; % 价格下轨
%----------------------策略主体----------------------------%
if marketposition==0
if close(end)>upper % 突破价格上轨,做多
orderID1=traderBuy(HandleList(1),targetList(1).Market,targetList(1).Code,shareNum,0,'market','buyopen');
traderStopLossByOrder(HandleList(1),orderID1,stopTar,'Percent','market','stoplossS');
traderStopTrailingByOrder(HandleList(1),orderID1,profitTar,'Percent',pct,'Percent','market','trailingS');
end
if close(end)<lower % 突破价格下轨,做空
orderID2=traderSellShort(HandleList(1),targetList(1).Market,targetList(1).Code,shareNum,0,'market','sellopen');
traderStopLossByOrder(HandleList(1),orderID2,stopTar,'Percent','market','stoplossB');
traderStopTrailingByOrder(HandleList(1),orderID2,profitTar,'Percent',pct,'Percent','market','trailingB');
end
end
end
更多免费策略源码下载请登录atrader社区-策略服务,http://www.atrader.com.cn/stra.php
DualThrust策略源码下载:http://www.atrader.com.cn/stra.php?mod=model&pid=72 |
|