增加新功能,用户可自己调节api下单速度。
下载地址
- %% 注意,请不要运行整个stock_api_demo,请逐行看懂了运行,防止用实盘测试时,下单错误,
- %% 使用本api程序自动交易发生错误造成损失自行承担,实盘前请反复模拟测试,防止代码bug造成损失。
- %% matlab股票自动交易api 2016-11-03
- % 基本功能
- % 1.登录,买入,卖出,查询资金,查询持仓,查询成交,查询委托,撤单
- % 2.增加扩展功能,一键客户端持仓股票全部卖出功能,批量买入功能-按固定数量,批量买入功能-按固定金额,批量卖出功能-卖出指定股票列表的全部可卖持仓
- % 3.买入和卖出增加参数timerN,可自动调节自动交易速度。可测试出符合自己需求的速度的系统
- %% 独立登录同花顺客户端
- % 1 同花顺官方下载免费版同花顺 下载地址 http://activity.ths123.com/html/free/150323/
- % 2 登录免费版同花顺客户端---点击右上角【委托】---点击【同花顺交易统一版】---点击【添加】---选择券商名称,可选择模拟或者实盘券商,选中,点击【添加】
- % 3 输入账号和交易密码进行登录,然后关掉股票客户端和同花顺软件。
- % 4 找到同花顺的安装目录,找到xiadan.exe点击弹出登录客户端界面,然后登录添加的券商账号即可,独立登录客户端成功
- % 5 需要添加更多的券商账号同上即可。
- % 6 独立客户端自动下单设置:点击【系统】---点击【快速交易】---将相关自动弹出的设置为否即可。
- %% 交流qq群:Matlab量化-交流 155600983
- %% 清除
- clc
- clear
- clear class
- clear global
- addpath(genpath(pwd));
- %% 新浪获取行情函数
- % 新浪获取行情介绍地址:http://blog.csdn.net/simon803/article/details/7784682
- % 1:”27.55″,今日开盘价;
- % 2:”27.25″,昨日收盘价;
- % 3:”26.91″,当前价格;
- % 4:”27.55″,今日最高价;
- % 5:”26.20″,今日最低价;
- % 6:”26.91″,竞买价,即“买一”报价;
- % 7:”26.92″,竞卖价,即“卖一”报价;
- % 8:”22114263″,成交的股票数,由于股票交易以一百股为基本单位,所以在使用时,通常把该值除以一百;
- % 9:”589824680″,成交金额,单位为“元”,为了一目了然,通常以“万元”为成交金额的单位,所以通常把该值除以一万;
- % 10:”4695″,“买一”申请4695股,即47手;
- % 11:”26.91″,“买一”报价;
- % 12:”57590″,“买二”
- % 13:”26.90″,“买二”
- % 14:”14700″,“买三”
- % 15:”26.89″,“买三”
- % 16:”14300″,“买四”
- % 17:”26.88″,“买四”
- % 18:”15100″,“买五”
- % 19:”26.87″,“买五”
- % 20:”3100″,“卖一”申报3100股,即31手;
- % 21:”26.92″,“卖一”报价
- % (22, 23), (24, 25), (26,27), (28, 29)分别为“卖二”至“卖四的情况”
- % 30(1为st的股票 2表示非st股票)
- % 31为涨停价格 32 为跌停价格
- load stocklist.mat; % 加载本地股票列表,也可以自己指定股票列表,处理成类似的格式即可
- data0=get_sina_market({'sh601918';'sz300256'});% 获取指定股票列表的盘口数据
- data1=get_sina_market(stocklist(:,4));% 获取本地全部股票列表的数据
- data2=get_sina_market('sh601918');% 获取单个股票的盘口数据
- data3=get_sina_market({'s_sh000001';'s_sh000002'});%获取多个指数列表的数据
- data4=get_sina_market('s_sh000001');% 获取单个指数的数据
- % 指数盘口数据含义分别为:1 当前点数,2 当前价格,3 涨跌率,4 成交量(手);
- %% 股票外挂api
- %% 注册类
- zyc=zyc_stock_trade();
- %% 登录
- zyc.zyc_stock_login();
- %% 查询客户端资金
- zyc.zyc_stock_capital();
- capital=zyc.capital;%获取资金字段
- %% 获取客户端持仓
- zyc.zyc_stock_position() % 获取持仓
- position=zyc.position;% 获取持仓字段
- %% 获取客户端成交
- zyc.zyc_stock_orderfill() % 获取成交
- orderfill=zyc.orderfill;
- %% 获取客户端委托
- zyc.zyc_stock_orderstatus() % 获取委托
- orderstatus=zyc.orderstatus;
- %% 交易股票 买入和卖出
- tic
- data=get_sina_market('sh600548');% 获取单个股票的盘口行情
- toc
- tic
- % 涨停价格买入股票 最后一个参数可以自己修改,调节测试,控制买卖下单速度
- succ=zyc.zyc_stock_buy('600548','8.75','100',5);
- toc
- tic
- % 跌停价格卖出股票,必须保证账户有该股票持仓,可卖 最后一个参数可以自己修改,调节测试,控制买卖下单速度
- succ=zyc.zyc_stock_sell('600548','8.75','100',5);
- toc
- % 参数 股票代码 股票下单价格 股票下单数量
- %% 撤单功能
- zyc.zyc_stock_cancel(0) % 撤单 输入参数:0表示全部撤单 1表示全部撤买 2表示全部撤卖
- %% 扩展功能代码示例
- %% 一键卖出
- zyc.zyc_stock_allsell(5) % 全部卖出
- %% 一键客户端持仓股票全部卖出功能
- if size(zyc.position,1)>1 % 表示有持仓
- posData=zyc.position(2:end,:);
- for i=1:size(posData,1)
- StockID=posData{i,1};
- if strcmp(StockID(1),'6')
- StockIDsina=['sh',StockID];
- else
- StockIDsina=['sz',StockID];
- end
- Num=posData{i,4};% 可用余额
- data=get_sina_market(StockIDsina);% 获取单个股票的盘口行情
- LL=data(32);% 跌停价格卖或者以最新价格偏离一定幅度,下单价格可自行计算指定价格
- succ=zyc.zyc_stock_sell(StockID,num2str(LL),Num,5);
- end
- end
- %% 批量买入功能-按固定数量
- stocklist_buy={'600000','1000';'601899','2000'};% 股票代码 股票下单数量
- for i=1:size(stocklist_buy,1)
- StockID=stocklist_buy{i,1};
- buy_num=stocklist_buy{i,2};
- if strcmp(StockID(1),'6')
- StockIDsina=['sh',StockID];
- else
- StockIDsina=['sz',StockID];
- end
- data=get_sina_market(StockIDsina);% 获取单个股票的盘口行情
- HH=data(31);
- succ=zyc.zyc_stock_buy(StockID,num2str(HH),buy_num,5);
- end
- %% 批量买入功能-按固定金额
- stocklist_buy={'600000',10000;'601899',10000};% 股票代码 股票下单数量
- for i=1:size(stocklist_buy,1)
- StockID=stocklist_buy{i,1};
- buy_asset=stocklist_buy{i,2};
- if strcmp(StockID(1),'6')
- StockIDsina=['sh',StockID];
- else
- StockIDsina=['sz',StockID];
- end
- data=get_sina_market(StockIDsina);% 获取单个股票的盘口行情
- buy_num=num2str(ceil(buy_asset/data(3)/100)*100);
- HH=data(31);
- succ=zyc.zyc_stock_buy(StockID,num2str(HH),buy_num,5);
- end
- %% 批量卖出功能-卖出指定股票列表的全部可卖持仓
- stocklist_sell={'000534';'002745'};% 股票代码 股票下单数量
- zyc.zyc_stock_position() % 获取持仓
- position=zyc.position;% 获取持仓字段
- for i=1:size(stocklist_sell,1)
- StockID=stocklist_sell{i,1};
- % 查找客户端持仓
- ind=find(strcmp(position(:,1),StockID));
- if size(ind,1)==0
- disp([StockID,',该股票无持仓'])
- else
- sell_num=position{ind,5};
- if str2num(sell_num)>0
- if strcmp(StockID(1),'6')
- StockIDsina=['sh',StockID];
- else
- StockIDsina=['sz',StockID];
- end
- data=get_sina_market(StockIDsina);% 获取单个股票的盘口行情
- LL=data(32);
- succ=zyc.zyc_stock_sell(StockID,num2str(LL),sell_num,5);
- end
- end
- end