python量化策略分享(基於python的量化投資策略)

本文目錄一覽:

怎麼學習python量化交易?

下面教你八步寫個量化交易策略——單股票均線策略

1 確定策略內容與框架

若昨日收盤價高出過去20日平均價今天開盤買入股票

若昨日收盤價低於過去20日平均價今天開盤賣出股票

只操作一隻股票,很簡單對吧,但怎麼用代碼說給計算機聽呢?

想想人是怎麼操作的,應該包括這樣兩個部分

既然是單股票策略,事先決定好交易哪一個股票。

每天看看昨日收盤價是否高出過去20日平均價,是的話開盤就買入,不是開盤就賣出。每天都這麼做,循環下去。

對應代碼也是這兩個部分

def initialize(context):

    用來寫最開始要做什麼的地方

def handle_data(context,data):

    用來寫每天循環要做什麼的地方

2 初始化

我們要寫設置要交易的股票的代碼,比如 兔寶寶(002043)

def initialize(context):

    g.security = ‘002043.XSHE’# 存入兔寶寶的股票代碼

3 獲取收盤價與均價

首先,獲取昨日股票的收盤價

# 用法:變數 = data[股票代碼].close

last_price = data[g.security].close# 取得最近日收盤價,命名為last_price

然後,獲取近二十日股票收盤價的平均價

# 用法:變數 = data[股票代碼].mavg(天數,『close』)

# 獲取近二十日股票收盤價的平均價,命名為average_price

average_price = data[g.security].mavg(20, ‘close’)

4 判斷是否買賣

數據都獲取完,該做買賣判斷了

# 如果昨日收盤價高出二十日平均價, 則買入,否則賣出

if last_price  average_price:

    買入

elif last_price  average_price:

    賣出

問題來了,現在該寫買賣下單了,但是拿多少錢去買我們還沒有告訴計算機,所以每天還要獲取賬戶里現金量。

# 用法:變數 = context.portfolio.cash

cash = context.portfolio.cash# 取得當前的現金量,命名為cash

5 買入賣出

# 用法:order_value(要買入股票股票的股票代碼,要多少錢去買)

order_value(g.security, cash)# 用當前所有資金買入股票

# 用法:order_target(要買賣股票的股票代碼,目標持倉金額)

order_target(g.security, 0)# 將股票倉位調整到0,即全賣出

6 策略代碼寫完,進行回測

把買入賣出的代碼寫好,策略就寫完了,如下

def initialize(context):#初始化

    g.security = ‘002043.XSHE’# 股票名:兔寶寶

def handle_data(context, data):#每日循環

    last_price = data[g.security].close# 取得最近日收盤價

# 取得過去二十天的平均價格

    average_price = data[g.security].mavg(20, ‘close’)

    cash = context.portfolio.cash# 取得當前的現金

# 如果昨日收盤價高出二十日平均價, 則買入,否則賣出。

if last_price  average_price:

        order_value(g.security, cash)# 用當前所有資金買入股票

elif last_price  average_price:

        order_target(g.security, 0)# 將股票倉位調整到0,即全賣出

現在,在策略回測界面右上部,設置回測時間從20140101到20160601,設置初始資金100000,設置回測頻率,然後點擊運行回測。

7 建立模擬交易,使策略和行情實時連接自動運行

策略寫好,回測完成,點擊回測結果界面(如上圖)右上部紅色模擬交易按鈕,新建模擬交易如下圖。 寫好交易名稱,設置初始資金,數據頻率,此處是每天,設置好後點提交。

8 開啟微信通知,接收交易信號

點擊聚寬導航欄我的交易,可以看到創建的模擬交易,如下圖。 點擊右邊的微信通知開關,將OFF調到ON,按照指示掃描二維碼,綁定微信,就能微信接收交易信號了。

《Python與量化投資從基礎到實戰》pdf下載在線閱讀,求百度網盤雲資源

《07 Python股票量化投資課程(完結)》百度網盤資源免費下載

鏈接:

?pwd=zxcv 提取碼:zxcv

07 Python股票量化投資課程(完結)|09課後大作業|08第八課資料|07第七課資料|06第六課資料|05第五課資料|04第四課資料|03第三課資料|02第二課資料|01第一課資料|25人工智慧與量化投資(下).mp4|24人工智慧與量化投資(上).mp4|23實盤交易(下).mp4|22實盤交易(中).mp4|21實盤交易(上).mp4  

用Python怎麼做量化投資

本文將會講解量化投資過程中的基本流程,量化投資無非這幾個流程,數據輸入——策略書寫——回測輸出

其中策略書寫部分還涉及到編程語言的選擇,如果不想苦惱數據輸入和回測輸出的話,還要選擇回測平台。

一、數據

首先,必須是數據,數據是量化投資的基礎

如何得到數據?

Wind:數據來源的最全的還是Wind,但是要付費,學生可以有免費試用的機會,之後還會和大家分享一下怎樣才Wind里摘取數據,Wind有很多軟體的借口,Excel,Matlab,Python,C++。

預測者網:不經意間發現,一個免費提供股票數據網站 預測者網,下載的是CSV格式

TB交易開拓者:Tradeblazer,感謝@孫存浩提供數據源

TuShare:TuShare -財經數據介麵包,基於Python的財經數據包,利用Python進行摘取

如何存儲數據?

Mysql

如何預處理數據?

空值處理:利用DataFrame的fill.na()函數,將空值(Nan)替換成列的平均數、中位數或者眾數

數據標準化

數據如何分類?

行情數據

財務數據

宏觀數據

二、計算語言軟體

已經有很多人在網上詢問過該選擇什麼語言?筆者一開始用的是matlab,但最終選擇了python

python:庫很多,只有你找不到的,沒有你想不到,和量化這塊結合比較緊密的有:

NumpyScipy:科學計算庫,矩陣計算

Pandas:金融數據分析神器,原AQR資本員工寫的一個庫,處理時間序列的標配

Matplotlib:畫圖庫

scikit-learn:機器學習庫

statsmodels:統計分析模塊

TuShare:免費、開源的python財經數據介麵包

Zipline:回測系統

TaLib:技術指標庫

matlab:主要是矩陣運算、科學運算這一塊很強大,主要有優點是WorkSpace變數可視化

python的Numpy+Scipy兩個庫完全可以替代Matlab的矩陣運算

Matplotlib完克Matlab的畫圖功能

python還有很多其他的功能

pycharm(python的一款IDE)有很棒的調試功能,能代替Matlab的WorkSpace變數可視化

推薦的python學習文檔和書籍

關於python的基礎,建議廖雪峰Python 2.7教程,適合於沒有程序基礎的人來先看,涉及到python的基本數據類型、循環語句、條件語句、函數、類與對象、文件讀寫等很重要的基礎知識。

涉及到數據運算的話,其實基礎教程沒什麼應用,python各類包都幫你寫好了,最好的學習資料還是它的官方文檔,文檔中的不僅有API,還會有寫實例教程

pandas文檔

statsmodels文檔

scipy和numpy文檔

matplotlib文檔

TuShare文檔

第二,推薦《利用Python進行數據分析》,pandas的開發初衷就是用來處理金融數據的

三、回測框架和網站

兩個開源的回測框架

PyAlgoTrade – Algorithmic Trading

Zipline, a Pythonic Algorithmic Trading Library

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/248176.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-12 13:26
下一篇 2024-12-12 13:26

相關推薦

  • Python列表中負數的個數

    Python列表是一個有序的集合,可以存儲多個不同類型的元素。而負數是指小於0的整數。在Python列表中,我們想要找到負數的個數,可以通過以下幾個方面進行實現。 一、使用循環遍歷…

    編程 2025-04-29
  • 如何查看Anaconda中Python路徑

    對Anaconda中Python路徑即conda環境的查看進行詳細的闡述。 一、使用命令行查看 1、在Windows系統中,可以使用命令提示符(cmd)或者Anaconda Pro…

    編程 2025-04-29
  • Python計算陽曆日期對應周幾

    本文介紹如何通過Python計算任意陽曆日期對應周幾。 一、獲取日期 獲取日期可以通過Python內置的模塊datetime實現,示例代碼如下: from datetime imp…

    編程 2025-04-29
  • Python周杰倫代碼用法介紹

    本文將從多個方面對Python周杰倫代碼進行詳細的闡述。 一、代碼介紹 from urllib.request import urlopen from bs4 import Bea…

    編程 2025-04-29
  • Python中引入上一級目錄中函數

    Python中經常需要調用其他文件夾中的模塊或函數,其中一個常見的操作是引入上一級目錄中的函數。在此,我們將從多個角度詳細解釋如何在Python中引入上一級目錄的函數。 一、加入環…

    編程 2025-04-29
  • Python程序需要編譯才能執行

    Python 被廣泛應用於數據分析、人工智慧、科學計算等領域,它的靈活性和簡單易學的性質使得越來越多的人喜歡使用 Python 進行編程。然而,在 Python 中程序執行的方式不…

    編程 2025-04-29
  • 蝴蝶優化演算法Python版

    蝴蝶優化演算法是一種基於仿生學的優化演算法,模仿自然界中的蝴蝶進行搜索。它可以應用於多個領域的優化問題,包括數學優化、工程問題、機器學習等。本文將從多個方面對蝴蝶優化演算法Python版…

    編程 2025-04-29
  • Python清華鏡像下載

    Python清華鏡像是一個高質量的Python開發資源鏡像站,提供了Python及其相關的開發工具、框架和文檔的下載服務。本文將從以下幾個方面對Python清華鏡像下載進行詳細的闡…

    編程 2025-04-29
  • Python字典去重複工具

    使用Python語言編寫字典去重複工具,可幫助用戶快速去重複。 一、字典去重複工具的需求 在使用Python編寫程序時,我們經常需要處理數據文件,其中包含了大量的重複數據。為了方便…

    編程 2025-04-29
  • python強行終止程序快捷鍵

    本文將從多個方面對python強行終止程序快捷鍵進行詳細闡述,並提供相應代碼示例。 一、Ctrl+C快捷鍵 Ctrl+C快捷鍵是在終端中經常用來強行終止運行的程序。當你在終端中運行…

    編程 2025-04-29

發表回復

登錄後才能評論