策略原理:

通过布林带以及突破后的高低点的形成产生交易信号

采取跟踪止损出场

回测曲线:

2017-2-27 10:09:43 上传

下载附件 (65.41 KB)

策略代码:

function  Strategy1(default_unit,default_exitway,freq)%

targetList  =  traderGetTargetList();

%获取目标资产信息

HandleList  =  traderGetHandleList();

%获取账户句柄

global  entry;

global  record;

global  stopprice;

global  boll;

for  k=1:length(targetList);

%--------------------仓位、K线、当前bar的提取-----------------------------%

%获取当前仓位

[marketposition,~,~]=traderGetAccountPosition(HandleList(1),targetList(k).Market,targetList(k).Code);

%策略中每次取数据的长度

dlags=10;

lags=60;

barnum=traderGetCurrentBar(targetList(k).Market,targetList(k).Code);

%数据长度限制

if(barnum

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,Dturnover,Dopeninterest]  =  traderGetKData(targetList(k).Market,targetList(k).Code,'day',1,0-dlags,  0,false,'FWard');

if  length(close)

continue;

end;

%-------------------------交易逻辑-------------------------------%

%----------入场信号--------------------%

len=30;

p=2.5;

p2=0;

percent=0.1;

percent2=0.5;

ma0=ma(close,len);

std0=stdev(close,len);

upline=ma0+p*std0;

dnline=ma0-p*std0;

upline2=ma0+p2*std0;

dnline2=ma0-p2*std0;

s(1).buycon=0;

s(1).sellshortcon=0;

if  boll.switch==0;

if  close(end)>upline(end)

boll.num=boll.num+1;

boll.value(boll.num)=close(end);

boll.switch=1;

elseif  close(end)

boll.num=boll.num+1;

boll.value(boll.num)=close(end);

boll.switch=-1;

end;

elseif  boll.switch==1;

if  close(end)>upline(end)  &&  close(end)>boll.value(boll.num)

boll.value(boll.num)=close(end);

elseif  close(end)

boll.num=boll.num+1;

boll.value(boll.num)=close(end);

boll.switch=-1;

end;

elseif  boll.switch==-1;

if  close(end)

boll.value(boll.num)=close(end);

elseif  close(end)>upline(end)

boll.num=boll.num+1;

boll.value(boll.num)=close(end);

boll.switch=1;

end;

end;

if  length(boll.value)>=2;

if  record==1

con1=boll.value(end)

con2=close(end)>(boll.value(end-1)-boll.value(end))*percent+boll.value(end);

s(1).buycon=con1  &&  con2;

end;

if  record==-1

con3=boll.value(end)>boll.value(end-1);

con4=close(end)

s(1).sellshortcon=con3  &&  con4;

end;

end;

%------------被动出场操作------------------%

%找到未平仓的订单

remain=remainorder(entry,k);

%对未平仓的订单进行平仓判断及操作

for  i=1:length(remain.entrybar);

%  进仓以来的bar个数

longstopcon=0;

shortstopcon=0;

barsinceentry=barnum-remain.entrybar(i);

backlen=50;        %  回溯的长度(进仓bar之前)

%  回溯的信息提取

[backtime,backopen,backhigh,backlow,backclose,~,~,~]  =  traderGetKData(targetList(k).Market,targetList(k).Code,'min',freq,  0-barsinceentry-backlen,  0,false,'FWard');

%  根据出场方式计算出场条件

if  remain.entryexitway(i)==1;

AFinitial=0;

AFparam=0.02;

AFmax=0.2;

Firstbarmultp=1;    %影响第一根bar的止损价,调高表示可忍受的回撤越多

[longstopcon,shortstopcon,exitline]=exit1(backopen,backhigh,backlow,backclose,remain.entrydirection(i),backlen,AFinitial,AFparam,AFmax,Firstbarmultp);

elseif  remain.entryexitway(i)==2;

initialATRparam=3;

AF=0.1;

minATRparam=1;

[longstopcon,shortstopcon,exitline]=exit2(backopen,backhigh,backlow,backclose,remain.entrydirection(i),backlen,initialATRparam,AF,minATRparam);

elseif  remain.entryexitway(i)==3;

[longstopcon,shortstopcon,exitline]=exit3(backopen,backhigh,backlow,backclose,remain.entrydirection(i),backlen);

elseif  remain.entryexitway(i)==4

startpoint=10;

percent=0.3;

TRmutlp=1;

[longstopcon,shortstopcon,exitline]=exit4(backopen,backhigh,backlow,backclose,remain.entrydirection(i),backlen,startpoint,percent,TRmutlp);

elseif  remain.entryexitway(i)==5;

stdlen=20;

initialstdparam=3;

minstdparam=1;

AF=0.25;

[longstopcon,shortstopcon,exitline]=exit5(backopen,backhigh,backlow,backclose,remain.entrydirection(i),backlen,stdlen,initialstdparam,minstdparam,AF);

elseif  remain.entryexitway(i)==6;

longstopcon=0;

shortstopcon=0;

sellcon=0;

buytocovercon=0;

if  remain.entrydirection(i)==1;

sellcon=high(end)>upline2(end);

longstopcon=close(end)

elseif  remain.entrydirection(i)==-1

buytocovercon=low(end)

shortstopcon=close(end)>stopprice;

end;

longstopcon=longstopcon  ||  sellcon;

shortstopcon=shortstopcon  ||  buytocovercon;

elseif  remain.entryexitway(i)==7;

ATRparam=1.5;

[longstopcon,shortstopcon,exitline]=exit7(backopen,backhigh,backlow,backclose,remain.entrydirection(i),backlen,len,stopprice,p2,ATRparam);

elseif  remain.entryexitway(i)==8;

ATRparam=1.5;

[longstopcon,shortstopcon,exitline]=exit8(backopen,backhigh,backlow,backclose,remain.entrydirection(i),backlen,len,stopprice,p2,ATRparam);

%                          sellcon=0;

%                          buytocovercon=0;

%                          if  remain.entrydirection(i)==1;

%                                  sellcon=high(end)>upline(end);

%                                  longstopcon=close(end)

%                          elseif  remain.entrydirection(i)==-1

%                                  buytocovercon=low(end)

%                                  shortstopcon=close(end)>stopprice.loss;

%                          end;

%                          longstopcon=longstopcon  ||  sellcon;

%                          shortstopcon=shortstopcon  ||  buytocovercon;

end;

更多免费策略二院吗下载请登录atrader社区-策略服务下载,http://www.atrader.com.cn/stra.php

下载Auto-trader软件助您成为策略开发高手,现在下载还送3年免费分时数据~

下载地址:http://www.atrader.com.cn/software.php

matlab布林算法代码,MATLAB量化交易策略源码分享之 布林通道+高低点相关推荐

  1. matlab量化策略代码,【策略分享】Matlab量化交易策略源码分享

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 策略名称:横盘突破策略 策略思路: 日内交易策略,收盘平仓: 横盘突破在过去30根K线的高低点围绕中轴上下0.5%的范围内波动时: 上轨=过去30根K线的 ...

  2. matlab均线程序化交易,【策略分享】Matlab量化交易策略源码分享

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 策略名称:横盘突破策略 策略思路: 日内交易策略,收盘平仓: 横盘突破在过去30根K线的高低点围绕中轴上下0.5%的范围内波动时: 上轨=过去30根K线的 ...

  3. matlab 量化 策略,【策略分享】Matlab量化交易策略源码分享

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 策略名称:横盘突破策略 策略思路: 日内交易策略,收盘平仓: 横盘突破在过去30根K线的高低点围绕中轴上下0.5%的范围内波动时: 上轨=过去30根K线的 ...

  4. 量化交易策略matlab交易方案,【策略分享】Matlab量化交易策略源码分享

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 策略名称:横盘突破策略 策略思路: 日内交易策略,收盘平仓: 横盘突破在过去30根K线的高低点围绕中轴上下0.5%的范围内波动时: 上轨=过去30根K线的 ...

  5. Matlab期货量化交易特征选取,【策略分享】Matlab量化交易策略源码分享

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 策略名称:横盘突破策略 策略思路: 日内交易策略,收盘平仓: 横盘突破在过去30根K线的高低点围绕中轴上下0.5%的范围内波动时: 上轨=过去30根K线的 ...

  6. 股票量化交易策略源码 tushare

    import os import pandas as pd import tushare as ts import numpy as np from pathlib import Path impor ...

  7. 常见的量化交易策略和源码编写过程分享

    今天给大家分享的内容是基于Python编程,实现股票交易接口相关功能开发,如果读者对股票或金融衍生物交易不太了解,又比较感兴趣的话可自行查询相关资料. 接下来笔者会给大家介绍股票交易中的常见几种量化交 ...

  8. python量化选股策略 源码_常见的十大量化投资策略(附源码)

    量化投资策略是利用量化的方法,进行金融市场的分析.判断和交易的策略.算法的总称.著名的量化投资策略有以下10种(注:策略源码模板不能直接用于实盘交易,仅供探讨交流) 01.海龟交易策略 海龟交易策略是 ...

  9. python量化选股策略 源码及论文_常见的十大量化投资策略(附源码)

    量化投资策略是利用量化的方法,进行金融市场的分析.判断和交易的策略.算法的总称.著名的量化投资策略有以下10种(注:策略源码模板不能直接用于实盘交易,仅供探讨交流) 01.海龟交易策略 海龟交易策略是 ...

最新文章

  1. 最小邮票数(01背包)
  2. python asyncio文件操作_Python asyncio文档阅读摘要
  3. 辞旧迎新,总结2010,展望2011
  4. 0x00000000指令引用的内存不能为written_「深入Java虚拟机」Java内存区域与内存溢出...
  5. WCF和ASP.NET Web API在应用上的选择
  6. flask简单登录注册
  7. 【java】java 新一代垃圾回收器ZGC的探索与实践
  8. php数组拆分的函数是,php基础之数组的合并、拆分、区别取值函数集
  9. uclibc 中的 dlopen 不是线程安全的
  10. hadoop入门学习--WordCount
  11. JDK 和 JRE 有什么区别
  12. 思岚激光雷达A1使用
  13. iSlide系列教程视频简介——PPT的简化神器
  14. 从中序与后序遍历序列构造二叉树
  15. Excel中的透视表和vlookup的用法简单讲解
  16. 【css】i标签icon图标旋转样式
  17. mysql的check出错_如何利用myisamchk和mysqlcheck快速修复损坏的MySQL数据库
  18. 1108. String复读机(20分)
  19. 建筑物(含地库)激光SLAM点云可视化
  20. python程序化选股_GitHub - cat-steel/stock_pick: 这时一个通过设定选股条件来帮我们筛选股票的python程序...

热门文章

  1. SVG实战:实现港珠澳大桥logo
  2. 【Java面试题】《尚硅谷Java大厂面试题第2季,面试必刷,跳槽大厂神器》学习笔记
  3. Unity UMP插件的使用
  4. 基于澳大利亚气象数据集可视化分析及降雨预测
  5. MySQL 锁表后快速解决方法 及 锁表原因
  6. 4D卓越团队-两天培训总结
  7. Adam算法_Tensorflow实现——论文解析:ADAM: A METHOD FOR STOCHASTIC OPTIMIZATION
  8. tomcat资源请求慢_Tomcat网页加载速度过慢的解决方法
  9. oracle 修改字段类型流程
  10. elasticsearch修改字段类型