设为首页收藏本站

 找回密码
 注册
查看: 2504|回复: 1
打印 上一主题 下一主题

AMA策略附源码 [复制链接]

精华
0
UID
247176
积分
162
帖子
72
主题
68
阅读权限
0
注册时间
2017-2-14
最后登录
2017-5-18
跳转到指定楼层
1#
发表于 2017-3-23 19:46:06 |只看该作者 |倒序浏览
入场:
ama突破以ama定义的布林带
出场:
2*atr止损,涨幅达到3*atr后把止损线调为跟踪止损


策略源码:

function AMA(Freq,len1,ShareNum,threshold)

% ------------ Retrace Strategy-------------------%

% Freq 为输入时间频率

%---------------------策略初始化与是否日内平仓---------------%

% 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 = 40;
    [time,open,high,low,close,volume,turnover,openinterest] = traderGetKData(targetList(j).Market,targetList(j).Code,'day',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
   
%---------------------策略计算与基本逻辑---------------%
   
    direction = close(end)-close(end-len1+1);
    volatility = sum(abs(diff(close(end-len1:end))));
    ER = direction/volatility;
    c = (ER*(2/5-2/31)+2/31)^2;
    if isempty(s(j).Ama)
        s(j).Ama = close(end);
    else
        s(j).Ama = [s(j).Ama, s(j).Ama(end)+c*(close(end)-s(j).Ama(end))];
    end
    s(j).condition = 0;
    if length(s(j).Ama)>len1
    th = threshold*std(s(j).Ama(end-len1+1:end));
    if s(j).Ama(end)-min(s(j).Ama(end-len1+1:end))>th
        s(j).condition = 1;
    elseif s(j).Ama(end)-max(s(j).Ama(end-len1+1:end))<-th
        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)<s(j).openprice-2*atr(end)
            traderPositionTo(HandleList(1),targetList(j).Market,targetList(j).Code,0,0,'market','close');
        end
        if s(j).condition==-1
            traderPositionTo(HandleList(1),targetList(j).Market,targetList(j).Code,-ShareNum,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.6*atr(end)
                traderPositionTo(HandleList(1),targetList(j).Market,targetList(j).Code,0,0,'market','close');
            end
        end
    end
    if marketposition<0
        if close(end)>s(j).openprice+2*atr(end)
            traderPositionTo(HandleList(1),targetList(j).Market,targetList(j).Code,0,0,'market','close');
        end
        if s(j).condition==1
            traderPositionTo(HandleList(1),targetList(j).Market,targetList(j).Code,ShareNum,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.6*atr(end)
                traderPositionTo(HandleList(1),targetList(j).Market,targetList(j).Code,0,0,'market','close');
            end
        end
    end
    end
end

更多免费策略源码下载请登录DigQuant社区-策略资源下载~http://www.digquant.com.cn/stra.php

AMA策略源码下载:http://www.digquant.com.cn/stra.php?mod=model&pid=82

Rank: 1

精华
0
UID
7109
积分
14
帖子
1
主题
0
阅读权限
10
注册时间
2010-3-3
最后登录
2019-3-30
2#
发表于 2017-4-29 09:05:53 来自手机 |只看该作者
这不是tb的吧

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

bottom

静态版|手机版|联系我们|交易开拓者 ( 粤ICP备07044698   

GMT+8, 2024-5-4 21:12

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部