1. 程式人生 > >股票漲跌預測方法之二:股票技術指標計算

股票漲跌預測方法之二:股票技術指標計算

        前一陣子在同學的鼓動下,花了一個多月研究了股票行情的預測方法,熟悉了常見的炒股術語及技術指標,現總結如下,純屬興趣,如果想依照本文的方法來短線操作獲利,請繞道。

         研究的第二步就是了解常用的股票技術指標,如macd、rsi、ar等,由於前面已經下載了所有的股票資料。那麼使用下面程式碼就可以獲得指定股票的所有歷史行情:

import pandas as pd
import sqlite3 as db

cxn = db.connect('all_tushare_data.db')
m= pd.read_sql("select * from gp_record where code ='%s' % id,  cxn) #id是股票程式碼


然後就可以計算各個指標,指標的含義及計算公式可自行百度,下面實現過程僅作參考:

     if 1:
        #OBV線,稱為成交量多空比率淨額法
        obv = m.volume*((m.close-m.low)-(m.high-m.close))/(m.high-m.low)
        obv = obv.fillna(0.0)
        obv.apply(np.cumsum)
        print 'obv', len(obv)
        
    if 1:
        #MACD指標
        #ema12 = m.adjust_price.copy()               #以後復權價為基礎
        ema12 = m.close.copy()               
        ema26 = ema12.copy()              
        for k in range(1,len(m)): ema12[k] = (ema12[k-1]*11 + ema12[k]*2)/13.0
        for k in range(1,len(m)): ema26[k] = (ema26[k-1]*25 + ema26[k]*2)/27.0
        dif = ema12-ema26
        dea = dif.copy()
        for k in range(1,len(dea)): dea[k] = (dea[k-1]*8 + dea[k]*2)/10.0
        macd = dif-dea
        print 'macd', len(ema12), len(ema26), len(macd)
        
    if 1:#rsi指標,統計近段時間收盤漲數和跌數來判斷買賣意向
        n=6
        rsi = m.change.copy()
        rsi.apply(np.sign)
        rsi = rsi.rolling(center=False,window=n).mean()
        print 'rsi', len(rsi)
        
    if 1:#AR BR CR 指標          #第一天的計算資料沒有,少一個
        refVa = m.open[1:].values           #Ar
        refVb = m.close[:-1].values          #BR
        refVc = (2*m.close[:-1] + m.high[:-1] +m.low[:-1]).values /4     #CR
        ref = np.median([refVa, refVb, refVc])
        a = m.high[1:] - ref
        b = ref - m.low[1:]
        
        c = pd.rolling_sum(a, 26)
        d = pd.rolling_sum(b, 26)
        cr = c/d
        print 'ar br cr', len(cr)
        
    if 1:
        #kdj 指標
        n = 5
        Ln =  pd.rolling_min(m.low, n)
        Hn =  pd.rolling_max(m.high, n)
        rsv = (m.close-Ln)/(Hn-Ln)                      #跟wr指標類似
        para1 = para2 = 1.0/3
        
        K = rsv.copy()               #以後復權價為基礎
        K = K.fillna(0.0)
        for k in range(1,len(K)): K[k] = K[k-1]*(1-para1) + K[k]*para1
        D = K.copy()
        for k in range(1,len(D)): D[k] = D[k-1]*(1-para2) + D[k]*para2
        print 'KDJ', len(rsv), len(K), len(D)
        
    if 1:
        #cci 順勢指標
        n= 10
        ma = pd.rolling_mean(m.close, n)
        md = pd.rolling_mean((ma-m.close).abs(), n)     #絕對偏差的平均值
        cci = ((m.close+m.high+m.low)/3 -ma)/md/0.015
        print 'cci',  len(cci)
    if 1:
        #DMI指標                               #第一天的計算資料沒有,少一個
        n=12
        dm1 = pd.rolling_apply(m.high, 2, lambda d:max(d[1]-d[0],0.0))[1:]
        dm2 = pd.rolling_apply(m.low , 2, lambda d:max(d[0]-d[1],0.0))[1:]
        
        dm1[dm1<dm2] = 0
        dm2[dm2<dm1] = 0
        
        tr = (m.high-m.low).abs().values[1:], m.high[1:]-m.close[:-1].abs().values, m.low[1:]-m.close[:-1].abs().values
        tr = np.minimum(np.minimum(tr[0], tr[1]) ,tr[2])
        
        dm1 = pd.rolling_mean(dm1, n)        
        dm2 = pd.rolling_mean(dm2, n)        
        tr  = pd.rolling_mean(tr , n)
        
        di1 = dm1/tr        
        di2 = dm2/tr
        
        dx = (di1-di2).abs()/(di1+di2)
        adx = pd.rolling_mean(dx , n)
        
        print 'dmi', len(adx)
    if 1:
        #boll指標
        n=10
        ma = pd.rolling_mean(m.close , n)
        md = np.sqrt( pd.rolling_mean((m.close-ma)**2 , n))
        up = ma + 2*md
        dn = ma - 2*md
        print 'boll', len(ma), len(up), len(dn)


相關推薦

股票漲跌預測方法股票技術指標計算

        前一陣子在同學的鼓動下,花了一個多月研究了股票行情的預測方法,熟悉了常見的炒股術語及技術指標,現總結如下,純屬興趣,如果想依照本文的方法來短線操作獲利,請繞道。          研究的第二步就是了解常用的股票技術指標,如macd、rsi、ar等,由於前面已

股票漲跌預測方法實際預測

         前一陣子在同學的鼓動下,花了一個多月研究了股票行情的預測方法,熟悉了常見的炒股術語及技術指標,現總結如下,純屬興趣,如果想依照本文的方法來短線操作獲利,請繞道。          前面模型都已經搭好了,最後一步就是更新當天的股票行情並預測第二天的漲跌,更新

spring4.1.8初始化原始碼學習三部曲setConfigLocations方法

本章是學習spring4.1.8初始化原始碼的第二篇,前一章《spring4.1.8初始化原始碼學習三部曲之一:AbstractApplicationContext構造方法》對AbstractApplicationContext的初始化做了分析,本章我們聚焦

設計模式工廠方法模式

定義 工廠方法模式又稱為工廠模式,也叫虛擬構造器(Virtual Constructor)模式或者多型工廠模式(Polymorphic Factory),在工廠方法模式中,父類負責定義建立物件的公共介面,而子類則負責生成具體的物件,這樣做的目的是將類的例項化操作延遲到子類中完

[LeetCode] Best Time to Buy and Sell Stock II 買股票的最佳時間

Say you have an array for which the ith element is the price of a given stock on day i. Design an algorithm to find the maximum profit. You may complete

MyBatis由淺入深學習總結MyBatis解決Java實體類和資料庫表字段不一致方法總結

在此,首先說明一點任何永續性框架都需要解決一個問題,那就是Java實體類的欄位一般來說基本上會與資料庫表中欄位不一致,那麼它們是如何解決的呢?咱們以Hibernate和SpringJDBC為例說明一下; 1、Hibernate中一般通過XML對映和註解的方式解決不一致問題,

.NET中那些所謂的新語法匿名類、匿名方法與擴充套件方法

開篇:在上一篇中,我們瞭解了自動屬性、隱式型別、自動初始化器等所謂的新語法,這一篇我們繼續征程,看看匿名類、匿名方法以及常用的擴充套件方法。雖然,都是很常見的東西,但是未必我們都明白其中蘊含的奧妙。所以,跟著本篇的步伐,繼續來圍觀。 /* 新語法索引 */ 一、匿名類:[ C# 3.0/.NET 3.

Java Web 學習筆記Java HttpURLConnection保持會話的方法

在Java Web開發中,會話保持是伺服器識別客戶端(一般指瀏覽器)的方式。對此,各大瀏覽器都是支援會話保持的。然而在開發者通過Java API HttpURLConnection 開發網路請求工具的

Java8新特性方法引用

輸出結果 知識 public ava urn strong class rules ros   上一節介紹了Java8新特性中的Lambda表達式,本小節繼續講解Java8的新特性之二:方法引用。方法引用其實也離不開Lambda表達式。 1、方法引用的使用場景   我們

4.AngularJS四大特征 雙向數據綁定

sco font int out grep 模型 多行文本 pan oot AngularJS四大特征之二: 雙向數據綁定 (1)方向一:把Model數據綁定到View上——此後不論何時只要Model發生了改變,則View中的呈現會立即隨之改變!實現方法: {{ }}、

linux學習日常的基礎命令收集

幫助文檔 gedit 查看 日期 取整 style 位置 某月 linux 1、 ls 2、pwd  顯示當前目錄所在位置 3、date  日期時間 4、cal  日歷   默認顯示當前該月   cal 2012 :查看2012年的日歷   cal 月 年 : 查看某年某月

【只怕沒有幾個人能說清楚】系列Unity中的特殊文件夾

物體 avi ebp time 編輯模式 tro hive 預覽 打包 參考:http://www.manew.com/thread-99292-1-1.html 1. 隱藏文件夾 以.開頭的文件夾會被忽略。在這種文件夾中的資源不會被導入,腳本不會被編譯。也不會出現

雙態運維分享 服務型CMDB的消費場景

新增 iso20000 那種 .cn 關聯 通知 變更 不同 維護 近年來,CMDB在IT運維管理中的價值逐步得到認可,使用CMDB的期望值也日益增長。然而,CMDB實施和維護的高成本卻一直是建設者們的痛點。那麽今天,我們來探討一下如何通過消費來持續驅動CMDB的逐步完善。

UVM序列篇sequence和item(上)

技術 一點 目標 idt 需要 開始 掛載 ron 前行 無論是自駕item,穿過sequencer交通站,通往終點driver,還是坐上sequence的大巴,一路沿途觀光,最終跟隨導遊停靠到風景點driver,在介紹如何駕駛item和sequence,遵守什麽交規,最終

Horizon7.1部署Horizon Composer服務器安裝

vmware horizon composerHorizon Composer是個可選服務,如果計劃部署鏈接克隆桌面池(可以節省90%磁盤利用率),則需要安裝。我在windows2016上部署的Sql Server2016,ip是X.X.X.2,並在建立一個名為Horizon Composer的數據庫,防火墻

【2017-07-01】Linux應用開發工程師面試問題記錄關於結構體的大小及內存對齊問題

偶數 而且 strong span net 但是 開發 f11 flag Tencent後臺服務器開發有一道題是計算一個結構體的sizeof的大小: struct strData { int m_Int; char m_Char; short m_Short; char

Linux時間子系統Alarm Timer

數據 類型 oid mtime orm 分別是 type mon 超時 一、前言 嚴格來講Alarm Timer也算POSIX Timer一部分,包含兩種類型CLOCK_REALTIME_ALARM和CLOCK_BOOTTIME_ALARM。分別是在CLOCK_REALTI

Modbus庫開發筆記Modbus消息幀的生成

不同的 command dwr 分別是 slave 識別碼 align 數據格式 .com 前面我們已經對Modbus的基本事務作了說明,也據此設計了我們將要實現的主從站的操作流程。這其中與Modbus直接相關的就是Modbus消息幀的生成。Modbus消息幀也是實現Mod

玩玩微信公眾號Java版接收、處理及返回微信消息

log med iou set arch weixin b- rom data- 前面已經配置了微信服務器,那麽先開始最簡單的接收微信消息吧~ 可以用我們的微信號來直接進行測試,下面先看測試效果圖: 這是最基本的文本消息的接收、處理及返回,來看看是怎麽實現的

Halcon學習攝像頭獲取圖像和相關參數

digg tail tours mage eight sta vision name pict 1、close_all_framegrabbers ( : : : ) 關閉所有圖像采集設備。 2、close_framegrabber ( : : AcqHand