QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 6060|回复: 2
打印 上一主题 下一主题

均线系统策略(附源码)

[复制链接]
字体大小: 正常 放大
sdfg123        

3

主题

13

听众

6

积分

升级  1.05%

该用户从未签到

自我介绍
跳转到指定楼层
1#
发表于 2017-3-2 14:11 |只看该作者 |正序浏览
|招呼Ta 关注Ta
策略原理:4 j3 p  q. B$ m
         多头入场:5日均线上穿65日均线且当前价格大于200日均线
( P3 n6 \! l& `1 b% K; J$ G         空头入场:5日均线下穿65日均线且当前价格小于200日均线
, D- s# c" o4 n4 o0 [         出场:动态跟踪止损出场% S+ s: b0 D' w+ h! q+ O6 q

2 B' ?; L# d# |- m0 X: T, X策略代码:
6 E4 m3 T5 u/ ?" j2 W; w$ d
function  Strategy1(default_unit,default_exitway,freq)%
9 T9 I2 P, D! x  V! a6 L7 O- Y
targetList  =  traderGetTargetList();  
%获取目标资产信息
HandleList  =  traderGetHandleList();
%获取账户句柄
global  entrybar;
for  k=1:length(targetList);

4 `- ]4 i( v) U0 E, k  E; F4 T2 p
        %--------------------仓位、K线、当前bar的提取-----------------------------%
        %获取当前仓位
        [marketposition,~,~]=traderGetAccountPosition(HandleList(1),targetList(k).Market,targetList(k).Code);
        %策略中每次取数据的长度
        lags=200;
        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');
        [Dtime,Dopen,Dhigh,Dlow,Dclose,Dvolume,~,~]  =  traderGetKData(targetList(k).Market,targetList(k).Code,'day',1,  0-dlags,  0,false,'FWard');
        if  legth(close)<lags  ||  length(Dclose)<dlags
                continue;
        end;        
        %-------------------------交易逻辑-------------------------------%
        %----------入场信号--------------------%
        TRvalue=TR(Dclose,Dhigh,Dlow);
        ATR=ma(TRvalue,10);
        ma2=ma(close,200);
        ma0=ma(close,5);
        ma1=ma(close,65);
        buycon=ma0(end)>ma1(end)  &&  ma0(end-1)<ma1(end-1)  &&  close(end)>ma2(end);
        sellshortcon=ma0(end)<ma1(end)  &&  ma0(end-1)>ma1(end-1)  &&  close(end)<ma2(end);
        if  default_exitway==1
                sellcon=ma0(end)<ma1(end)  &&  ma0(end-1)>ma1(end-1);
                buytocovercon=ma0(end)>ma1(end)  &&  ma0(end-1)<ma1(end-1);
        elseif  default_exitway==2
                TRvalue=TR(close,high,low);
                ATR=ma(TRvalue,4);
                barsinceentry=barnum-entrybar(k);
                [~,entryopen,entryhigh,entrylow,entryclose,~,~,~]  =  traderGetKData(targetList(k).Market,targetList(k).Code,'min',freq,  0-barsinceentry,  0,false,'FWard');
                range=4*ATR(end-1);
                [sellcon,buytocovercon]=exitway1(entryopen,entryclose,entryhigh,entrylow,marketposition,range);
        elseif  default_exitway==3
                barsinceentry=barnum-entrybar(k);
                [~,entryopen,entryhigh,entrylow,entryclose,~,~,~]  =  traderGetKData(targetList(k).Market,targetList(k).Code,'min',freq,  0-barsinceentry,  0,false,'FWard');
                enterprice=entryclose(1);
                percent=0.5;
                ATRparam=1;
                sellcon=0;
                buytocovercon=0;
                if  marketposition>0
                        stoplossprice=enterprice-ATRparam*ATR(end);
                        stopearnprice=enterprice+ATRparam*ATR(end);
                        [sellcon,buytocovercon]=exitway3(entryopen,entryclose,entryhigh,entrylow,marketposition,stoplossprice,stopearnprice,percent);
                elseif  marketposition<0
                        stoplossprice=enterprice+ATRparam*ATR(end);
                        stopearnprice=enterprice-ATRparam*ATR(end);
                        [sellcon,buytocovercon]=exitway3(entryopen,entryclose,entryhigh,entrylow,marketposition,stoplossprice,stopearnprice,percent);
                end;
        end;
        %---------------------------入场操作--------------------------------%
        if  sellcon  &&  marketposition>0
                orderID1=traderPositionTo(HandleList(1),targetList(k).Market,targetList(k).Code,0,0,'market','sell');
                if  orderID1==0
                        continue;
                end;
        end;
        if  buytocovercon  &&  marketposition<0
                orderID2=traderPositionTo(HandleList(1),targetList(k).Market,targetList(k).Code,0,0,'market','sell');
                if  orderID2==0
                        continue;
                end;
        end;
        if  buycon  &&  marketposition<=0
                buyunit=default_unit;
                orderID3=traderBuy(HandleList(1),targetList(k).Market,targetList(k).Code,buyunit,0,'market','buy');
                if  orderID3==0
                        continue;
                end;
                entrybar(k)=barnum;
        end;
        if  sellshortcon  &&  marketposition>=0
                sellshortunit=default_unit;
                orderID4=traderSellShort(HandleList(1),targetList(k).Market,targetList(k).Code,sellshortunit,0,'market','sell');
                if  orderID4==0
                        continue;
                end;
                entrybar(k)=barnum;
        end;  
end
end

" s0 W+ p* x% S& S$ l
/ X6 m. X6 ?" i, [2 D
zan
转播转播0 分享淘帖0 分享分享0 收藏收藏1 支持支持0 反对反对0 微信微信
sdfg123        

3

主题

13

听众

6

积分

升级  1.05%

该用户从未签到

自我介绍
回复

使用道具 举报

sdfg123        

3

主题

13

听众

6

积分

升级  1.05%

该用户从未签到

自我介绍
回复

使用道具 举报

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

qq
收缩
  • 电话咨询

  • 04714969085
fastpost

关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

手机版|Archiver| |繁體中文 手机客户端  

蒙公网安备 15010502000194号

Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

GMT+8, 2025-8-1 01:13 , Processed in 0.534955 second(s), 59 queries .

回顶部