A. 如何用python計算kdj指標
import numpy as np
def KDJ(date,N=9,M1=3,M2=3):
datelen=len(date)
array=np.array(date)
kdjarr=[]
for i in range(datelen):
if i-N<0:
b=0
else:
b=i-N+1
rsvarr=array[b:i+1,0:5]
rsv=(float(rsvarr[-1,-1])-float(min(rsvarr[:,3])))/(float(max(rsvarr[:,2]))-float(min(rsvarr[:,3])))*100
if i==0:
k=rsv
d=rsv
else:
k=1/float(M1)*rsv+(float(M1)-1)/M1*float(kdjarr[-1][2])
d=1/float(M2)*k+(float(M2)-1)/M2*float(kdjarr[-1][3])
j=3*k-2*d
kdjarr.append(list((rsvarr[-1,0],rsv,k,d,j)))
return kdjarr
B. 如何用python代碼判斷一段范圍內股票最高點
Copyright © 1999-2020, CSDN.NET, All Rights Reserved
登錄
python+聚寬 統計A股市場個股在某時間段的最高價、最低價及其時間 原創
2019-10-12 09:20:50
開拖拉機的大寶
碼齡4年
關注
使用工具pycharm + 聚寬數據源,統計A股市場個股在某時間段的最高價、最低價及其時間,並列印excel表格輸出
from jqdatasdk import *
import pandas as pd
import logging
import sys
logger = logging.getLogger("logger")
logger.setLevel(logging.INFO)
# 聚寬數據賬戶名和密碼設置
auth('username','password')
#獲取A股列表,包括代號,名稱,上市退市時間等。
security = get_all_securities(types=[], date=None)
pd2 = get_all_securities(['stock'])
# 獲取股票代號
stocks = list(get_all_securities(['stock']).index)
# 獲取股票名稱
stocknames = pd2['display_name']
start_date = -01-01'
end_date = -12-31'
def get_stocks_high_low(start_date,end_date):
# 新建表,表頭列
# 為:"idx","stockcode","stockname","maxvalue","maxtime","lowvalue","lowtime"
result = pd.DataFrame(columns=["idx", "stockcode", "stockname", "maxvalue", "maxtime", "lowvalue", "lowtime"])
for i in range(0,stocks.__len__()-1):
pd01 = get_price(stocks[i], start_date, end_date, frequency='daily',
fields=None, skip_paused=False,fq='pre', count=None)
result=result.append(pd.DataFrame({'idx':[i],'stockcode':[stocks[i]],'stockname':
[stocknames[i]],'maxvalue':[pd01['high'].max()],'maxtime':
[pd01['high'].idxmax()],'lowvalue': [pd01['low'].min()], 'lowtime':
[pd01['low'].idxmin()]}),ignore_index=True)
result.to_csv("stock_max_min.csv",encoding = 'utf-8', index = True)
logger.warning("執行完畢!
C. 如何用python計算某支股票持有90天的收益率
首先你要先獲得這支股票90天的數據,可以存在一個arry中。
然後計算收益率 r = (arry[89]-arry[0])/arry[0],如果要計算任意連續90天的話只要循環就可以了。
許多人更喜歡去做短線,因為短線刺激,無法承受長線持股待漲的煎熬,可是假如不會做短線,則可能會導致虧得更快。做T的秘籍大家一定很想知道,今天就給大家講講。
我准備了好處給大家,機構精選的牛股大盤點!希望大家不要錯過--速領!今日機構牛股名單新鮮出爐!
一、股票做T是什麼意思
現在市場上,A股的交易市場模式是T+1,意思就是今天買的股票,只有明天才能賣出。
而股票做T,當天買入的股票在當天賣出,這就是股票進行T+0的交易操作,投資人在可交易的一天通過股票的漲幅和跌停有了股票差價,在股票大幅下跌時趕緊買入,漲得差不多之後再將買入的部分賣出,就是用這種方法賺錢的。
假如說,在昨天我手裡還有1000股的xx股票,市價10元/股。今天一大早發現該股居然跌到了9.5元/股,然後趁機買入了1000股。結果到了下午時,這只股票的價格就突然間大幅上漲到一股10.5元,我就急忙地以10.5/股的價格售出1000股,然後獲取(10.5-9.5)×1000=1000元的差價,這就是做T。
但是,不是每種股票做T都合適!正常來說,那些日內振幅空間較大的股票,它們是適合去做T的,比如說,每日能有5%的振幅空間。想知道某隻股票適不適合的,點開這里去看一下吧,專業的人員會為你估計挑選出最適合你的T股票!【免費】測一測你的股票到底好不好?
二、股票做T怎麼操作
怎麼才能夠把股票做到T?正常情況下分為兩種方式,分別為正T和倒T。
正T即先買後賣,投資手裡,手裡面賺有這款股票,在當天股票開盤的時候下跌到了最低點時,投資者買入1000股,等到股票變高的時候在高點,將這1000股徹底賣出,持有的總股票數還是跟以前一樣,T+0的效果這樣就能夠達到了,又能夠享有中間賺取的差價。
而倒T即先賣後買。投資者通過嚴密計算得出,股票存在下降風險,因此在高位點先賣出手中的一部分股票,接著等股價回落後再去買進,總量仍舊有辦法保持不變,然而,收益是會產生的。
比方投資者,他佔有該股2000股,而10元/股是當天早上的市場價,覺得持有的股票在短時間內就會有所調整,,於是賣出手中的1500股,等股票跌到一股只需要9.5元時,這只股票差不多就已經能讓他們感到滿意了,再買入1500股,這就賺取了(10-9.5)×1500=750元的差價。
這時有人就問了,那要如何知道買入的時候正好是低點,賣出的時候正好是高點?
其實有一款買賣點捕捉神器,它能夠判斷股票的變化趨勢,絕對能讓你每次都抓住重點,點開鏈接就能立刻領取到了:【智能AI助攻】一鍵獲取買賣機會
應答時間:2021-09-23,最新業務變化以文中鏈接內展示的數據為准,請點擊查看
D. Python量化教程:不得不學的K線圖「代碼復制可用」
不管是對量化分析師還是普通的投資者來說,K線圖(蠟燭圖)都是一種很經典、很重要的工具。在K線圖中,它會繪制每天的最高價、最低價、開盤價和收盤價,這對於我們理解股票的趨勢以及每天的多空對比很有幫助。
一般來說,我們會從各大券商平台獲取K線圖,但是這種情況下獲得的K線圖往往不能靈活調整,也不能適應復雜多變的生產需求。因此我們有必要學習一下如何使用Python繪制K線圖。
需要說明的是,這里mpl_finance是原來的matplotlib.finance,但是現在獨立出來了(而且好像沒什麼人維護更新了),我們將會使用它提供的方法來繪制K線圖;tushare是用來在線獲取股票數據的庫;matplotlib.ticker中有個FuncFormatter()方法可以幫助我們調整坐標軸;matplotlib.pylab.date2num可以幫助我們將日期數據進行必要的轉化。
我們以上證綜指18年9月份以來的行情為例。
我們先使用mpl_finance繪制一下,看看是否一切正常。
可以看到,所有的節假日包括周末,在這里都會顯示為空白,這對於我們圖形的連續性非常不友好,因此我們要解決掉他們。
可以看到,空白問題完美解決,這里我們解釋一下。由於matplotlib會將日期數據理解為 連續數據 ,而連續數據之間的間距是有意義的,所以非交易日即使沒有數據,在坐標軸上還是會體現出來。連續多少個非交易日,在坐標軸上就對應了多少個小格子,但這些小格子上方並沒有相應的蠟燭圖。
明白了它的原理,我們就可以對症下葯了。我們可以給橫坐標(日期)傳入連續的、固定間距的數據,先保證K線圖的繪制是連續的;然後生成一個保存有正確日期數據的列表,接下來,我們根據坐標軸上的數據去取對應的正確的日期,並替換為坐標軸上的標簽即可。
上邊format_date函數就是這個作用。由於前邊我們給dates列生成了從0開始的序列連續數據,因此我們可以直接把它當作索引,從真正的日期列表裡去取對應的數據。在這里我們要使用matplotlib.ticker.FuncFormattter()方法,它允許我們指定一個格式化坐標軸標簽的函數,在這個函數里,我們需要接受坐標軸的值以及位置,並返回自定義的標簽。
你學會了嗎?
當然,一個完整的K線圖到這里並沒有結束,後邊我們會考慮加入均線、成交量等元素,感興趣的同學歡迎關注哦!
E. 怎樣用python處理股票
用Python處理股票需要獲取股票數據,以國內股票數據為例,可以安裝Python的第三方庫:tushare;一個國內股票數據獲取包。可以在網路中搜索「Python tushare」來查詢相關資料,或者在tushare的官網上查詢說明文檔。
F. 如何使用python做統計分析
Shape Parameters
形態參數
While a general continuous random variable can be shifted and scaled
with the loc and scale parameters, some distributions require additional
shape parameters. For instance, the gamma distribution, with density
γ(x,a)=λ(λx)a−1Γ(a)e−λx,
requires the shape parameter a. Observe that setting λ can be obtained by setting the scale keyword to 1/λ.
雖然一個一般的連續隨機變數可以被位移和伸縮通過loc和scale參數,但一些分布還需要額外的形態參數。作為例子,看到這個伽馬分布,這是它的密度函數
γ(x,a)=λ(λx)a−1Γ(a)e−λx,
要求一個形態參數a。注意到λ的設置可以通過設置scale關鍵字為1/λ進行。
Let』s check the number and name of the shape parameters of the gamma
distribution. (We know from the above that this should be 1.)
讓我們檢查伽馬分布的形態參數的名字的數量。(我們知道從上面知道其應該為1)
>>>
>>> from scipy.stats import gamma
>>> gamma.numargs
1
>>> gamma.shapes
'a'
Now we set the value of the shape variable to 1 to obtain the
exponential distribution, so that we compare easily whether we get the
results we expect.
現在我們設置形態變數的值為1以變成指數分布。所以我們可以容易的比較是否得到了我們所期望的結果。
>>>
>>> gamma(1, scale=2.).stats(moments="mv")
(array(2.0), array(4.0))
Notice that we can also specify shape parameters as keywords:
注意我們也可以以關鍵字的方式指定形態參數:
>>>
>>> gamma(a=1, scale=2.).stats(moments="mv")
(array(2.0), array(4.0))
Freezing a Distribution
凍結分布
Passing the loc and scale keywords time and again can become quite
bothersome. The concept of freezing a RV is used to solve such problems.
不斷地傳遞loc與scale關鍵字最終會讓人厭煩。而凍結RV的概念被用來解決這個問題。
>>>
>>> rv = gamma(1, scale=2.)
By using rv we no longer have to include the scale or the shape
parameters anymore. Thus, distributions can be used in one of two ways,
either by passing all distribution parameters to each method call (such
as we did earlier) or by freezing the parameters for the instance of the
distribution. Let us check this:
通過使用rv我們不用再更多的包含scale與形態參數在任何情況下。顯然,分布可以被多種方式使用,我們可以通過傳遞所有分布參數給對方法的每次調用(像我們之前做的那樣)或者可以對一個分布對象凍結參數。讓我們看看是怎麼回事:
>>>
>>> rv.mean(), rv.std()
(2.0, 2.0)
This is indeed what we should get.
這正是我們應該得到的。
Broadcasting
廣播
The basic methods pdf and so on satisfy the usual numpy broadcasting
rules. For example, we can calculate the critical values for the upper
tail of the t distribution for different probabilites and degrees of
freedom.
像pdf這樣的簡單方法滿足numpy的廣播規則。作為例子,我們可以計算t分布的右尾分布的臨界值對於不同的概率值以及自由度。
>>>
>>> stats.t.isf([0.1, 0.05, 0.01], [[10], [11]])
array([[ 1.37218364, 1.81246112, 2.76376946],
[ 1.36343032, 1.79588482, 2.71807918]])
Here, the first row are the critical values for 10 degrees of freedom
and the second row for 11 degrees of freedom (d.o.f.). Thus, the
broadcasting rules give the same result of calling isf twice:
這里,第一行是以10自由度的臨界值,而第二行是以11為自由度的臨界值。所以,廣播規則與下面調用了兩次isf產生的結果相同。
>>>
>>> stats.t.isf([0.1, 0.05, 0.01], 10)
array([ 1.37218364, 1.81246112, 2.76376946])
>>> stats.t.isf([0.1, 0.05, 0.01], 11)
array([ 1.36343032, 1.79588482, 2.71807918])
If the array with probabilities, i.e, [0.1, 0.05, 0.01] and the array of
degrees of freedom i.e., [10, 11, 12], have the same array shape, then
element wise matching is used. As an example, we can obtain the 10% tail
for 10 d.o.f., the 5% tail for 11 d.o.f. and the 1% tail for 12 d.o.f.
by calling
但是如果概率數組,如[0.1,0.05,0.01]與自由度數組,如[10,11,12]具有相同的數組形態,則元素對應捕捉被作用,我們可以分別得到10%,5%,1%尾的臨界值對於10,11,12的自由度。
>>>
>>> stats.t.isf([0.1, 0.05, 0.01], [10, 11, 12])
array([ 1.37218364, 1.79588482, 2.68099799])
Specific Points for Discrete Distributions
離散分布的特殊之處
Discrete distribution have mostly the same basic methods as the
continuous distributions. However pdf is replaced the probability mass
function pmf, no estimation methods, such as fit, are available, and
scale is not a valid keyword parameter. The location parameter, keyword
loc can still be used to shift the distribution.
離散分布的簡單方法大多數與連續分布很類似。當然像pdf被更換為密度函數pmf,沒有估計方法,像fit是可用的。而scale不是一個合法的關鍵字參數。Location參數,關鍵字loc則仍然可以使用用於位移。
The computation of the cdf requires some extra attention. In the case of
continuous distribution the cumulative distribution function is in most
standard cases strictly monotonic increasing in the bounds (a,b) and
has therefore a unique inverse. The cdf of a discrete distribution,
however, is a step function, hence the inverse cdf, i.e., the percent
point function, requires a different definition:
ppf(q) = min{x : cdf(x) >= q, x integer}
Cdf的計算要求一些額外的關注。在連續分布的情況下,累積分布函數在大多數標准情況下是嚴格遞增的,所以有唯一的逆。而cdf在離散分布,無論如何,是階躍函數,所以cdf的逆,分位點函數,要求一個不同的定義:
ppf(q) = min{x : cdf(x) >= q, x integer}
For further info, see the docs here.
為了更多信息可以看這里。
We can look at the hypergeometric distribution as an example
>>>
>>> from scipy.stats import hypergeom
>>> [M, n, N] = [20, 7, 12]
我們可以看這個超幾何分布的例子
>>>
>>> from scipy.stats import hypergeom
>>> [M, n, N] = [20, 7, 12]
If we use the cdf at some integer points and then evaluate the ppf at
those cdf values, we get the initial integers back, for example
如果我們使用在一些整數點使用cdf,它們的cdf值再作用ppf會回到開始的值。
>>>
>>> x = np.arange(4)*2
>>> x
array([0, 2, 4, 6])
>>> prb = hypergeom.cdf(x, M, n, N)
>>> prb
array([ 0.0001031991744066, 0.0521155830753351, 0.6083591331269301,
0.9897832817337386])
>>> hypergeom.ppf(prb, M, n, N)
array([ 0., 2., 4., 6.])
If we use values that are not at the kinks of the cdf step function, we get the next higher integer back:
如果我們使用的值不是cdf的函數值,則我們得到一個更高的值。
>>>
>>> hypergeom.ppf(prb + 1e-8, M, n, N)
array([ 1., 3., 5., 7.])
>>> hypergeom.ppf(prb - 1e-8, M, n, N)
array([ 0., 2., 4., 6.])
G. 自學3年Python的我成了數據分析師,總結成一張思維導圖
大家好,我是一名普通畢業生,現就職於某互聯網公司。之前很多同學問我「 為什麼自學3年Python,最後卻成為了數據分析師 ?」
首先肯定是數據分析師的前景和薪資條件,打動了我
下面是我的學習之路,附帶一些必備學習的資料,可以 免費領取 ,相信感興趣的你看完也可以找到自己的方向。
眾所周知:Python是當今最火的編程語言之一,各大招聘網站上都會要求求職者會這門語言,並且它很容易上手,業務面寬泛,像Web網頁工程師、網路爬蟲工程師、自動化運維、自動化測試、 游戲 開發、數據分析、AI等等。
我們首先明確一個大的方向,知道自己以後要做什麼。因為我是統計學專業,所以我會選擇從事數據分析行業,那麼 用Python做數據分析成了一個最佳選擇 。
要想使用Python做數據分析,首先就應該知道「 數據分析的流程是怎樣的? 」
我這次特地總結了一張 思維導圖 給大家,點擊放大看更清楚哦。
(點擊查看高清大圖)
基於此,我這里將我以前學習過程中用過的電子書(技能類、統計類、業務類),還有相關視頻免費分享給大家,省去了你們挑選視頻的時間,也希望能夠對你們的學習有所幫助。
PS:我總結的資料有點多哦,差不多有4G,大家一定要給你的網路雲盤空出位置來哦!
如果遇到一些環境配置,還有一些錯誤異常等bug,資料就顯得不太夠用,這時就需要找到老師,給我們特別講解。
或者是想 快速學習 數據分析領域知識,不妨先找一找 直播課 看看, 了解當下最貼合實際的學習思路,確定自己的方向。
Day1 20:00&量化交易入門:
用Python做股票指標分析和買賣時機選擇
場景工具:Python工具分解RSI指標流程處理: 業務場景分析建模和可視化學習成果:使用RSI指標模型做買賣點搜索、交易回溯實戰案例:分析A股數據模型,制定投資策略
Day2 20:00&職場晉升必備:
製作酷炫報表,4步帶你學習數據可視化
場景工具:用Tableau學習如何管理數據流程處理: 利用業務拆解找到數據指標、進行數據可視化學習成果:高效的對數據驅動型業務作出精準決策實戰案例:利用可視化工具構建 旅遊 客流量趨勢地圖
Day3 20:00&量化交易進階:
0基礎用Python搭建量化分析平台
場景工具:利用pandas工具分解KDJ指標構成流程處理: 交易數據爬取,業務場景分析建模和可視化分析結果:用KDJ指標模型對比特幣行情買賣點搜索&交易回溯實戰項目:掌握根據數據指數和分析工具尋找虛擬貨幣買賣原理
他們 每周都會定期分享 一些 干貨 供大家學習參考,對學習很有幫助。
(深度學習DeepLearning.ai實驗室認證)
(微軟/甲骨文/Cloudera等公司頒發的數據分析證書)
4步學會數據可視化,辦公效率提高三倍
(更多精彩內容 等你解鎖)
H. 如何用python獲取股票數據
在Python的QSTK中,是通過s_datapath變數,定義相應股票數據所在的文件夾。一般可以通過QSDATA這個環境變數來設置對應的數據文件夾。具體的股票數據來源,例如滬深、港股等市場,你可以使用免費的WDZ程序輸出相應日線、5分鍾數據到s_datapath變數所指定的文件夾中。然後可使用Python的QSTK中,qstkutil.DataAccess進行數據訪問。
I. 怎麼用python計算股票
作為一個python新手,在學習中遇到很多問題,要善於運用各種方法。今天,在學習中,碰到了如何通過收盤價計算股票的漲跌幅。
第一種:
讀取數據並建立函數:
import numpy as np
import matplotlib.pyplot as plt
from scipy.interpolate import spline
from pylab import *
import pandas as pd
from pandas import Series
a=pd.read_csv('d:///1.csv',sep=',')#文件位置
t=a['close']
def f(t):
s=[]
for i in range(1,len(t)):
if i==1:
continue
else:
s.append((t[i]-t[i-1])/t[i]*100)
print s
plot(s)
plt.show()
f(t)
第二種:
利用pandas裡面的方法:
import pandas as pd
a=pd.read_csv('d:///1.csv')
rets = a['close'].pct_change() * 100
print rets
第三種:
close=a['close']
rets=close/close.shift(1)-1
print rets
總結:python是一種非常好的編程語言,一般而言,我們可以運用構建相關函數來實現自己的思想,但是,眾所周知,python中裡面的有很多科學計算包,裡面有很多方法可以快速解決計算的需要,如上面提到的pandas中的pct_change()。因此在平時的使用中應當學會尋找更好的方法,提高運算速度。