python量化金融系列-K線分析、及形態捕捉




最近股市行情很好,新聞聯播用一分鐘來邀請散戶入股市。
對於普通人來講,如何進行投資才能收益最高?
白酒做爲股票市場的重要組成,經過繪製貴州茅臺[600519]的K線,而且經過尋找特定的K線特徵來選擇買入和賣出的時機。

簡單的金融知識

什麼是K線?

簡單來講,就是把股票的開盤價、最高價、最低價、收盤價這四個重要的因素表達在一張圖上。來源於日本記錄米市的行情波動,「罫」(日本音讀kei),故叫K線。html

同時,K線的形狀比較像蠟燭,蠟燭有黑白之分,於是也叫陰陽線圖表。紅色表示陽線,綠色表示陰線。web

簡言之,K線=罫線=陰陽線,這三個都是表述一支股票的漲跌狀況。算法

多種多樣K線的形態

K線的形態有很是多,這裏分析典型的具備投資意義的形態。編程

  • 陰線
    • 光頭光腳陰線
  • 光腳陰線

這二者說明空方力量充沛,若是兩種線型中的任何一種出如今高價位區時, 說明上檔拋壓嚴重,行情疲軟,股價有反轉下跌的可能;若是出如今中價 位區的上升途中,則代表後市仍有上升空間。微信

  • 陽線
    • 光頭光腳陽線
  • 光頭陽線
  • 光腳陽線

前二者都是說明多方力量充沛,後續繼續上漲可能性大,俗稱追漲,第三個則 說明多方力量上升勢頭很強,但在高價位處多空雙方有分歧,購買時應謹慎。app

  • 特殊線
    • 十字星
  • 吊頂線(錘子
  • 倒錘線

第一種線型常稱爲變盤十字星,不管出如今高價位區或低價位區,均可視爲 頂部或底部信號,預示大勢即將改變原來的走向。後二者若是屢次出如今低位則表明已經接近底部,開始出現反彈趨勢。echarts

早晨之星、烏雲蓋頂

早晨之星

早晨之星又稱「黎明之星」,它是一種行情看漲的形態。==是一個很是好的買入時機。==編輯器

第一天,股價繼續下跌,而且因爲恐慌性的拋盤而出現一根巨大的陰線,大勢不妙。工具

次日,跳空下行,但跌幅不大,實體部分較短,造成星的主體部分。構成星的部分,既能夠是陰線,也能夠是陽線。字體

第三天,一根長陽線拔地而起,價格收復第一天的大部分失地,市場發出明顯看漲信號。

烏雲蓋頂

烏雲蓋頂,常常發生在一段上升行情的頂部,==是一個看跌信號==。可能意味着不少新買家終於下定決心入市,踏上牛市的「船」,卻聯聯看跌。==全民炒股,必定要注意這種烏雲蓋頂的形態。==

第一天是一根堅挺的陽線實體,次日則爲一根長陰線。

次日的開市價超過第一天的最高價(這就是說超過了第一天的上影線的頂端),市場卻收市在接近當日的最低價的水平,而且收市價明顯地向下扎入到第一根陽線實體的內部。

捕捉K線形態

常見K線繪製

獲取股票數據

或者股票數據的方式有不少種,推薦幾種簡單的方式:

  • 八爪魚軟件,經過模板能夠獲取同花順軟件的股票數據。
  • 網易財經,下載股票數據

這兩種方式不須要編程,獲取數據很是簡單快捷。同時也能夠高階版,經過爬蟲實時爬取股票數據、或者經過八爪魚自定義模板來觸發爬取任務。本文經過代碼爬取股票數據,若是想經過八爪魚可視化工具來觸發爬取任務能夠移步做者的前幾篇文章。

import requests
from lxml import etree
headers = {
    'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.101 Safari/537.36'
}
def parse_url(url):
    response = requests.get(url,headers=headers)
    if response.status_code == 200:
        return etree.HTML(response.content)
    return False
def get_date(response):
    # 獲得股票代碼,開始和結束的日期
    start_date = ''.join(response.xpath('//input[@name="date_start_type"]/@value')[0].split('-'))
    end_date = ''.join(response.xpath('//input[@name="date_end_type"]/@value')[0].split('-'))
    code = response.xpath('//h1[@class="name"]/span/a/text()')[0]
    return code,start_date,end_date
def download(code,start_date, end_date):
    ###其中code的參數值爲該股票所屬滬市(0)或深市(1)的代碼+股票代碼,start參數爲要下載的日期期間的開始值(默認爲上市日),end參數爲要下載的日期期間的截至值(默認爲下載當天,即今日)。
    download_url = "http://quotes.money.163.com/service/chddata.html?code=0"+code+"&start="+start_date+"&end="+end_date+\
    "&fields=TCLOSE;HIGH;LOW;TOPEN;LCLOSE;CHG;PCHG;TURNOVER;VOTURNOVER;VATURNOVER;TCAP;MCAP"
    print(download_url) 
    data = requests.get(download_url,headers=headers)
    f = open(code + '.csv''wb')
    for chunk in data.iter_content(chunk_size=10000):
        if chunk:
            f.write(chunk)
    print('股票---',code,'歷史數據正在下載')

url = 'http://quotes.money.163.com/trade/lsjysj_600519.html'
response = parse_url(url)
code,start_date,end_date = get_date(response)
download(code,start_date, end_date)

數據格式以下:

繪製K線
import pandas as pd
from matplotlib.dates import DateFormatter, WeekdayLocator,\
    DayLocator, MONDAY,date2num
from datetime import datetime
gzmt  = pd.read_csv('E:/share/600519.csv',usecols=[0,1,2,3,4,5,6,11],encoding='gbk')
#選取30天的數據
gzmt = gzmt.iloc[:30,:]
gzmt=gzmt[["日期","開盤價","最高價","最低價","收盤價","成交量"]]
#將日期轉化爲datetime的格式
gzmt.日期=[date2num(datetime.strptime(date,"%Y-%m-%d"))\
               for date in gzmt.日期]
               
###正式開始畫圖######
plt.figure(figsize=(14,6))  #設定畫布大小
ax= plt.subplot()        
mondays = WeekdayLocator(MONDAY)  
weekFormatter = DateFormatter('%y %b %d')
ax.xaxis.set_major_locator(mondays)
ax.xaxis.set_minor_locator(DayLocator() )
ax.xaxis.set_major_formatter(weekFormatter)  #設定工做日做爲時間軸
plt.rcParams['font.sans-serif'] = ['SimHei']  #設定字體 顯示中文
plt.rcParams['axes.unicode_minus'] = False
ax.set_title("貴州茅臺近1個月K線圖")
candlestick_ohlc(ax, gzmtlist, width=0.7,colorup='r', colordown='g')  #繪製蠟燭圖
plt.setp(plt.gca().get_xticklabels(),rotation=50, horizontalalignment='center'
plt.show()
                  


K線如圖:

捕獲早晨之星

形態解析

第一天,股價繼續下跌,而且因爲恐慌性的拋盤而出現一根巨大的綠色蠟燭,大勢不妙。

次日,跳空下行,但跌幅不大,實體部分較短,造成星的主體部分。構成星的部分,既能夠是陰線,也能夠是陽線。通常爲十字線,或者長度很小的紅色蠟燭。

第三天,一根紅色蠟燭線拔地而起,價格收復第一天的大部分失地,市場發出明顯看漲信號。具體算法以下:

  • 條件1. 第一天的收盤價低於開盤價,即蠟燭綠色陰線,次日的收盤價和開盤價大體相等,第三天蠟燭實體的紅色收盤價高於開盤價,二者的差價要大於第一天差價的一半以上。
  • 條件2. 關於次日的十字星,要求開盤價和收盤價同時小於第一天的收盤價和第三天的開盤價。
  • 條件3. 前期爲下跌趨勢
代碼實現

進行數據處理,而且計算收盤與開票價差

準備條件1準備條件2 準備條件3

經過條件,找到2019-03-11 00:00:00爲早晨之星的形態

策略驗證 經過pyecharts畫出3月的K線,能夠看到早晨之星後股票爲漲勢,是較好的買入點。

捕獲烏雲蓋頂

形態解析

第一天,出現一根堅挺的紅色蠟燭,承接前期上漲行情,顯示多方徹底掌握着主動權。

次日,高開低走,收在當日最低價附近,出現一個綠色蠟燭。

具體算法以下:

  • 條件1 第一個紅色蠟燭實體收盤價高於開盤價 , 第二個綠色蠟燭 收盤價低於開盤價
  • 條件2 次日開盤價高於第一天的收盤價,次日收盤價位於第一天實體的下半部分(次日收盤價低於第一天開盤和收盤價之和的一半)而且大於第一天的開盤價。
  • 條件3 前期爲上升趨勢
代碼實現

進行數據處理,而且計算收盤與開票價差

準備條件

經過條件,找到2019-01-1七、2019-01-2八、2019-04-11爲烏雲之星的形態經過條件,找到2019-01-1七、2019-01-2八、2019-04-11爲烏雲之星的形態

策略驗證

經過pyecharts畫出4月的K線,能夠看到烏雲蓋頂後股票爲大跌趨勢,須要避開這個買入點。可是因爲白酒大環境比較好,可看到4月後期仍有上漲。因此股市有風險,投資需謹慎。

寫在最後的安利,其實有很是好的量化平臺,相似聚寬。能夠自定義一些策略來驗證收益,很是適合代碼比較薄弱的同窗~~


本文分享自微信公衆號 - 凹凸數據(alltodata)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索