1. MATLAB 如何導入股票數據,並畫出K線
需要幾個關鍵步驟 (函數應用需要自己多用help 學習)
1自己先下載原始數據格式 時間 開 高 低 收
1 讀取數據 xlsread 函數
[num,txt,raw]=xlsread(filename); % 『000001.xls'
Date=datenum(txt(5:length(txt),1)); %時間
OpenPrice=num(:,1); %開盤
HighPrice=num(:,2); %收盤
LowPrice=num(:,3);
ClosePrice=num(:,4);
Vol=num(:,5); %成交量
save Data Date OpenPrice HighPrice LowPrice ClosePrice Vol; %存儲mat文件 方便下次使用
candle(HighPrice,LowPrice,ClosePrice,OpenPrice,'r',Date,12)%高 低 收 開 紅色 時間 時間格式
2. 用matlab怎麼算股票價格的收益率,怎麼得出收益率的圖~
1、用matlab算股票價格的收益率的方法,比如(以聯想V14十代酷睿筆記本電腦,Windows10為例):
在matlab裡面通常指令是:log(Xt/Xt-1)。
其中Xt是某股票或某指數第t天的價格;
其中Xt-1是某股票或某指數第t-1天的價格.
2、製作收益率曲線圖的步驟如下,比如(以聯想V14十代酷睿筆記本電腦,Windows10為例):
1.在A1中輸入公式=(行(A1)-1) * 0.25-3。
2.在B1中輸入公式=NORMDIST(A1,0,1,0)。
3.下拉並分別將以上兩個公式復制到A25和B25。
4.插入「XY _⒌閫",A列為X軸,B列為Y軸,選擇散點圖類型為帶平滑線的散點圖。
(2)matlab提取股票歷史數據擴展閱讀:
一、如果用matlab驗證股票的收盤價符合對數正態分布:
比如(以聯想V14十代酷睿筆記本電腦,Windows10為例)先導入數據,然後取收盤價的對數值即y=ln(y)
clc;clear
y=ln(y)
Std=std(y) %標准差
[F,XI]=ksdensity(y)
figure(1)
plot(XI,F,'o-')
x =randn(300000,1);
figure(2)
[f,xi] = ksdensity(x);
plot(xi,f);
畫出概率分布圖
ksdensity -------------------- Kernel smoothing density estimation.
表示核平滑密度估計。
二、股票收益率是反映股票收益水平的指標
1、是反映投資者以現行價格購買股票的預期收益水平。它是年現金股利與現行市價之比率。
本期股利收益率=(年現金股利/本期股票價格)*100%
2、股票投資者持有股票的時間有長有短,股票在持有期間獲得的收益率為持有期收益率。
持有期收益率=[(出售價格-購買價格)/持有年限+現金股利]/購買價格*100%
3、公司進行拆股必然導致股份增加和股價下降,正是由於拆股後股票價格要進行調整,因而拆股後的持有期收益率也隨之發生變化。
拆股後持有期收益率=(調整後的資本所得/持有期限+調整後的現金股利)/調整後的購買價格*100% 對於長期投資形式的股票投資,其投資收益的確認有兩種方法:
一種是成本法,即按被投資企業發放的股利確定為投資企業的投資收益。
另一種方法是權益法,指投資企業所投股份在被投資企業中佔到一定比例,可以對它具有控制、共同控制或重大影響時,應採用權益法進行核算。
3. matlab可以直接獲取國內股票或者期貨的歷史數據嗎
matlab可以直接獲取國內股票或者期貨的歷史數據嗎
:有個wdz程序,可免費輸出txt、csv格式的滬深等市場的全部歷史日線、10多年的5分鍾數據。你可先用你這個程序,免費輸出txt格式的對應數據,然後在matlab中讀取即可。
4. matlab怎樣抓取Yahoo/Sina的股票數據
給你一個常式,用於抓取新浪股票2017年1月份的股票數據。程序如下:
clc;
clear;
year=2017;
season = 1 ;
fprintf('抓取%d年%d季度的數據中...\n', year, season)
[sourcefile, status] = urlread(sprintf('http://vip.stock.finance.sina.com.cn/corp/go.php/vMS_MarketHistory/stockid/000001/type/S.phtml?year=%d&season=%d', year));
expr2 = '<div align="center">(\d*\.?\d*)</div>';
[datafile, data_tokens] = regexp(sourcefile, expr2, 'match', 'tokens'); %從源文件中獲取目標數據
data = zeros(size(data_tokens));%產生和數據相同長度的0
for idx = 1:length(data_tokens)
data(idx) = str2double(data_tokens{idx}{1}); %轉變數據類型後存入data中
end
%%占坑打個廣告,代寫matlab程序(畢業設計,課程任務等)
%%信號處理,小波變換,PCA降維,ICA分析,分類器,濾波器等。QQ:1577232787
5. matlab 如何從wind中獲取股票數據 收盤 開盤 最高 最低 交易量
所有的股市及時數據信息都在交易所或證監會,他們不開放數據給自己,自己是無法獲取的。
收市價又稱收盤價,通常指某種證券在證券交易所每個交易日里的最後一筆買賣成交價格。如果某種證券當日沒有成交,則採用Recently一成交價作為收盤價。初次上市的證券,以其上市前公開銷售的平均價格作為收盤價。如果證券交易所每日開前、後兩市,則會出現前市收盤價和後市收盤價,一般來說,證券交易所後市收盤價為當日收盤價。在我國深圳證券交易所和上海證券交易所,股票收市價的確定有所不同,深圳證券交易所股票收市價是以每個交易日最後一分鍾內的所有成交加權平均計算得出的,而上海證券交易所則以最後一筆成交價格作為收盤價。
開盤價又稱開市價,是指某種證券在證券交易所每個交易日開市後的第一筆每股買賣成交價格。世界上大多數證券交易所都採用成交額最大原則來確定開盤價。
如果開市後一段時間內(通常為半小時)某種證券沒有買賣或沒有成交,則取前一日的收盤價作為當日證券的開盤價。如果某證券連續數日未成交,則由證券交易所的場內中介經紀人根據客戶對該證券買賣委託的價格走勢提出指導價,促使成交後作為該證券的開盤價。在無形化交易市場中,如果某種證券連續數日未成交,以前一日的收盤價作為它的開盤價。
股市成交量為股票買賣雙方達成交易的數量,是單邊的,例如,某隻股票成交量為十萬股,這是表示以買賣雙方意願達成的,在計算時成交量是十萬股,即:買方買進了十萬股,同時賣方賣出十萬股。而計算交易量則雙邊計算,例如買方十萬股加賣方十萬股,計為二十萬股。股市成交量反映成交的數量多少。一般可用成交股數和成交金額兩項指標來衡量。目前深滬股市兩項指標均能顯示出來。
6. 怎麼用matlab將股票歷史行情的txt轉換成金融時間序列數據
運用ascii2fts。
比如下面這個txt文檔:
我想把它轉化成金融時間序列的數據:
用fts=ascii2fts('文檔名稱.txt',作為標題的是txt中的第幾行,作為金融時間序列的抬頭的是txt中的第幾行,忽略的行);
7. 如何編程從免費股票軟體中提取實時數據
自己寫程序的話,一種方法是從已提供的信息源,例如webservice獲取數據。還有種辦法就是去連接提供即時信息的網頁硬解析。
代碼舉例如下:
Created on Thu Jul 23 09:17:27 2015
@author: jet
"""
DAY_PRICE_COLS = ['date', 'open', 'high', 'close', 'low', 'volume',
'chg', '%chg', 'ma5', 'ma10', 'ma20',
'vma5', 'vma10', 'vma20', 'turnover']
DAY_PRICE_URL = '%sapi.finance.%s/%s/?code=%s&type=last'
INDEX_KEY = ['SH', 'SZ', 'HS300', 'SZ50', 'GEB', 'SMEB']
INDEX_LIST = {'SH': 'sh000001', 'SZ': 'sz399001', 'HS300': 'sz399300',
'SZ50': 'sh000016', 'GEB': 'sz399006', 'SMEB': 'sz399005'}
INDEX_DAY_PRICE_COLS= ['date', 'open', 'high', 'close', 'low', 'volume',
'chg', '%chg', 'ma5', 'ma10', 'ma20',
'vma5', 'vma10', 'vma20']
K_TYPE_KEY = ['D', 'W', 'M']
K_TYPE_MIN_KEY = ['5', '15', '30', '60']
K_TYPE = {'D': 'akdaily', 'W': 'akweekly', 'M': 'akmonthly'}
MIN_PRICE_URL = '%sapi.finance.%s/akmin?scode=%s&type=%s'
PAGE_TYPE = {'http': 'http://', 'ftp': 'ftp://'}
PAGE_DOMAIN = {'sina': 'sina.com.cn', 'ifeng': 'ifeng.com'}
URL_ERROR_MSG = '獲取失敗,請檢查網路狀態,或者API埠URL已經不匹配!'
get_hist_data.py
# -*- coding: utf-8 -*-
"""
Created on Thu Jul 23 09:15:40 2015
@author: jet
"""
import const as ct
import pandas as pd
import json
from urllib2 import urlopen,Request
def get_hist_data(code = None, start = None, end = None, ktype = 'D'):
"""
功能:
獲取個股歷史交易數據
--------
輸入:
--------
code:string
股票代碼 比如:601989
start:string
開始日期 格式:YYYY-MM-DD 為空時取到API所提供的最早日期數據
end:string
結束日期 格式:YYYY-MM-DD 為空時取到最近一個交易日數據
ktype:string(default=D, 函數內部自動統一為大寫)
數據類型 D=日K線,W=周K線,M=月K線,5=5分鍾,15=15分鍾
30=30分鍾,60=60分鍾
輸出:
--------
DataFrame
date 日期
open 開盤價
high 最高價
close 收盤價
low 最低價
chg 漲跌額
p_chg 漲跌幅
ma5 5日均價
ma10 10日均價
ma20 20日均價
vma5 5日均量
vma10 10日均量
vma20 20日均量
turnover換手率(指數無此項)
"""
code = code_to_APIcode(code.upper())
ktype = ktype.upper()
url = ''
url = get_url(ktype, code)
print(url)
js = json.loads(ping_API(url))
cols = []
if len(js['record'][0]) == 14:
cols = ct.INDEX_DAY_PRICE_COLS
else:
cols = ct.DAY_PRICE_COLS
df = pd.DataFrame(js['record'], columns=cols)
if ktype in ct.K_TYPE_KEY:
df = df.applymap(lambda x:x.replace(u',', u''))
for col in cols[1:]:
df[col]=df[col].astype(float)
if start is not None:
df = df [df.date >= start]
if end is not None:
df = df[df.date <= end]
df = df.set_index('date')
return df
def code_to_APIcode(code):
"""
功能:
驗證輸入的股票代碼是否正確,若正確則返回API對應使用的股票代碼
"""
print(code)
if code in ct.INDEX_KEY:
return ct.INDEX_LIST[code]
else:
if len(code) != 6:
raise IOError('code input error!')
else:
return 'sh%s'%code if code[:1] in ['5', '6'] else 'sz%s'%code
def get_url(ktype, code):
"""
功能:
驗證輸入的K線類型是否正確,若正確則返回url
"""
if ktype in ct.K_TYPE_KEY:
url = ct.DAY_PRICE_URL % (ct.PAGE_TYPE['http'], ct.PAGE_DOMAIN['ifeng'],
ct.K_TYPE[ktype], code)
return url
elif ktype in ct.K_TYPE_MIN_KEY:
url = ct.MIN_PRICE_URL % (ct.PAGE_TYPE['http'], ct.PAGE_DOMAIN['ifeng'],
code, ktype)
return url
else:
raise IOError('ktype input error!')
def ping_API(url):
"""
功能:
向API發送數據請求,若鏈接正常返回數據
"""
text = ''
try:
req = Request(url)
text = urlopen(req,timeout=10).read()
if len(text) < 15:
raise IOError('no data!')
except Exception as e:
print(e)
else:
return text
#測試入口
print(get_hist_data('601989','2015-07-11','2015-07-22'))
8. 怎麼用matlab編程把股票交易的分筆數據處理成1分鍾數據
P=[];『輸入,開盤價,最高價,最低價,收盤價成交量依次5天的數據』
T=[];』輸出,即第二日的收盤』
net=newff(minmax(P),[7,1],,'traingdx');
net.trainParam.epochs=1000; 『最大訓練次數,根據需要可自行調節』
net.trainParam.goal=0.01; 『誤差』
net.trainParam.lr=0.01; 『學習率』
net=train(net,P,T); 『訓練網路』
test=[];『待預測數據輸入』
out=sim(net,test); 『模擬預測』
我的這個程序沒有進行初始化,你還需要先將數據進行初始化後才能算。