使用python 來實現炒股

2022-04-29 01:33:08 字數 2779 閱讀 9887

以前有這種想法,自從平時下班後自學python 開始,這種想法就越演越烈。其實筆者**也只有一年時間,**經驗遠遠不足,但想著平時私下時間拿來做點啥事,因此也是這篇文章的由來。

1. **的策略

對於**的研究,一直想再專門寫個**論述《**論》。特別是這兩年量化投資盛行,基本都是在python語言基礎上進行的策略回歸。

總體來說,常規的**研究分兩種

1) 技術引數回歸

把**歷史資料,macd指標,這些進行參考,然後找出一條有效的策略,使得這個盈率50% -70%之間,這樣就可以持續的增大盈虧概率。

例如,技術量化回歸中最常用的策略之一:市值< 200億 ,換手率:3%2)量價關係與籌碼回歸

由於很多**接入點無法獲取level 2級別的資料,這使得再單位時間點上的交易數量有差異,這種導致統計也會出現偏差。基於這種方式,其實區別第一種看趨勢**,它更傾向於當下**。通過統計計算大致得出主力與**的比率,所有持倉人籌碼的盈虧比,這樣來指導下一步計畫。

例如,統計當日各個階段的**和賣出量,每一筆訂單累計到整體的成交量得出 主力大單與小單之比q,籌碼盈虧比k

-- 當然可以。只是喜憂參半,到頭所剩無幾,隨著參與的次數越多,各種成本平攤下來,最終可能還是個負數。

有些私募機構確實通過獲得了收益,在如今的中國一些機構裡,量化投資更加盛行。它最大的好處是避免了人為因素,行業週期因素,因此更適合長期。

就像做t 輪動一樣,無論**如何變動,只要每天有3%的波動,那麼就可以獲取這每天的波動點。

**本質是博弈。那麼我們就需要研究下漲跌概率。通過已經所選的策略 放在歷史**當中進行回歸測試,檢查是否滿足贏虧比。

1. 基礎。 簡單語法,定義函式、名詞引數。 推薦python 基礎教程、python 簡明教程

2. 執行緒。簡單的執行緒並不難,了解就夠。 屬於高階部分,部分網上也有介紹。這樣可以實現各個函式的分工

3. 模組。這個可能才是重點,如何呼叫別人的模組,如何獲取資料。基礎內容中必學之一

也就是說,乙個python 程式的本質,就是模組中至少有tushare、pandas等等搭配的過程

資料。這個比較容易獲取,甚至套用已有的網路資料,如文章末尾的例項

演算法。這部分是技術核心,一般機構公司都保密而不公開,而且策略隨市場變化,基本每個月都會變動以適用新的**。後期專門討論此系列。

重點:在於編寫一套何種策略,才能增大你的盈利概率,即使不用回歸歷史**。

模型例項 1:假設市場上交易只有兩人, 張三(a) 和李四(b) 同時手上各有10個蘋果,每個蘋果的成本是1元,若張三以單價2元賣出5個給李四時,請問李四若以3元的單價進行回賣給張三,至少要賣出幾個,才能不至於虧損?

當進行多次買賣後,雙方會到達一種新的平衡,若出現手上的蘋果出現2:8比率時,此時的蘋果**會是多少?

這種解釋的啟發,會獲得演算法上的靈感。

比如筆者平時摸索,自己建立了幾個小的經濟數學模型,通過自我**成交量和**波動關係,得到資金波動 公式k。然後通過當前的成交量,當前的**來計算未來某一**的最大可能性

當然這個模型不可能百分之百讓你盈利,做這樣的結果,目的是盡可能的增加你的**概率。對於是否存在有百分之百的概率,對此我表示謹慎的態度,也是我盡力研究的方向

比如用baostock 平台資料獲取下來的資料,然後加入自己計算的策略(簡略參考部分)

# -*- coding: utf-8 -*-

import pandas as pd

import numpy as np

import matplotlib.pyplot as plt

import baostock as bs

from matplotlib.dates import dateformatter

import datetime

#### 登陸系統

lg = bs.login()

stock = "sh.600996"

# 顯示登陸返回資訊

print('login respond error_code:'+lg.error_code)

print('login respond error_msg:'+lg.error_msg)

rs = bs.query_history_k_data_plus(stock,

"date,code,open,high,low,close,volume,amount,adjustflag,turn,tradestatus,pctchg,isst",

start_date='2019-06-20',frequency="d", adjustflag="3")

print('query_history_k_data_plus respond error_code:'+rs.error_code)

print('query_history_k_data_plus respond error_msg:'+rs.error_msg)

data_list =

while (rs.error_code == '0') & rs.next():

# 獲取一條記錄,將記錄合併在一起

result = pd.dataframe(data_list, columns=rs.fields)

result.to_csv("./stock.csv", index=false)

#### 結果集輸出到csv檔案 ####

bs.logout()

data = pd.read_csv('/users/few/stock.csv')

python炒股日記 python日記

python是乙個解釋型語言。與編譯型語言的區別就是不需要編譯過程。python作用 自動化運維 大資料分析 爬蟲web 科學計算 影象處理 python檔案處理過程 python注釋方式 單行 以 開頭 多行 或 三個單引號或三個雙引號 變數 用來儲存資料或字元的 箱子 name wupeiqi ...

使用python使用佇列來實現快速排序

一般來說我們實現快速排序是使用遞迴的方式來呼叫,但是這種 方式往往在呼叫過程中會造成棧溢位的問題,所以最好的取代方式 是通過佇列來模擬實現遞迴 encoding utf 8import queue def quick queue sort array work queue queue.queue q...

使用ClaimsIdentity來實現登入授權

背景 以前做登入時用的都是formsauthentication.setauthcookie model.uid,isremeber 但是有乙個不好,不能儲存多個值,有時候我們既想儲存登入使用者的uid又想儲存使用者名稱,以前都是將兩者拼接成字串,用的時候在split出來,比較麻煩,現在用claim...