Python程式交易應用與實 作 PDF

unread,

Dec 21, 2021, 6:10:11 PM12/21/21

to

Hi8SzM4CgS - Download and read 酆士昌、劉承彥's book Python:股票演算法交易實務147個關鍵技巧詳解(第二版) in PDF, EPub, Mobi, Kindle online. Free book Python:股票演算法交易實務147個關鍵技巧詳解(第二版) by 酆士昌、劉承彥.

Python程式交易應用與實 作 PDF

Click to Continue

Synopsis: 使用Python實作程式交易,掌握自動化投資理財趨勢交易演算法是將主觀交易的想法具體量化,未來交易者須善用資訊工具,才能創造更多的收益與機會。對於一般交易者而言,往往無法明確提供量化的規則,而程式撰寫者對於金融交易普遍陌生,無法進入交易的領域。此外,多數的交易者使用看盤軟體,採用制式的圖表與統計後的數據,對於交易所原始的報價,往往不知該如何處理,因此交易演算法是結合金融交易、程式撰寫與數據分析等三大領域的新興產業,具有較難進入的門檻。本書從數據分析的角度切入,以一個個的範例讓讀者了解概念,並能照著案例實作,由最基本的股票交易規則開始,逐步切入程式撰寫來計算技術指標,並能進行歷史回測,最後能透過下單函數進行程式交易。藉由案例的逐步演練,可降低學習的門檻,帶領讀者進入程式交易的殿堂。◎Python內建的計算函數功能。◎資料的輸入與輸出◎金融圖表的繪製◎金融工具的分析與取用◎金融演算法的建構◎回測系統的建構◎下單函數的撰寫◎實單交易系統◎想要學習Python來進行程式交易者◎想要客觀且嚴守紀律來投資者◎沒時間盯盤但想要自動化投資者◎想要了解交易規則並學習正確的程式交易者◎使用靈活彈性的Python,搭配循序漸進的範例教學◎了解交易的規則與數據內涵,逐步建立自己的交易策略◎以Python套件串接實單交易,連結即時的金融交易市場◎應用技術指標及策略組合,達成自動化投資理財目標【精采內容】【目標讀者】.

第一篇 HTML 5

Chapter 01 HTML 5簡介
1-1 HTML5, CSS3 與JavaScript 三角關係
1-2 安裝編輯器 sublime text
1-3 網頁編輯與檢視
1-4 HTML 5 的文件結構
1-5 HTML 5 常用標籤
1-6 HTML 5 網頁文字格式編排

Chapter 02 表單
2-1 input 標籤
2-2 其他標籤
2-3 補充說明

第二篇 JavaScript

Chapter 03 表單資料型別
3-1 JavaScript 在 Web 網頁的角色
3-2 撰寫第一支 JavaScript 程式
3-3 變數
3-4 資料型別
3-5 字串處理方法
3-6 資料運算
3-7 JavaScript 顯示方法
3-8 JSON 資料交換格式

Chapter 04 程式設計
4-1 邏輯判斷
4-2 重覆迴圈

Chapter 05 自訂函數與內建函數
5-1 自訂函數介紹
5-2 呼叫函數
5-3 參數
5-4 變數生命週期
5-5 內建物件

Chapter 06 CSS
6-1 選擇器(selector)
6-2 CSS 套用方法
6-3 CSS 的格式設定

Chapter 07 DOM
7-1 HTML DOM 物件樹狀圖
7-2 DOM 節點瀏覽

Chapter 08 事件處理
8-1 JavaScript Inline Event
8-2 JavaScript DOM EventListener

Chapter 09 股價走勢圖
9-1 線圖
9-2 自動產生序列
9-3 讀入外部檔案
9-4 plotly 畫出的圖形操作方式
9-5 多條線圖

第三篇 Python Web服務

Chapter 10 Django 架設與APP實作
10-1 MTV 框架
10-2 Django 框架
10-3 Django Web server 架設
10-4 建立 Web 專案
10-5 settings.py 做 Django 環境設定
10-6 Django App
10-7 urls.py 設定與網頁連結
10-8 Templates
10-9 Django 管理靜態檔案
10-10 重新啟動伺服器

第四篇 關聯式資料庫

Chapter 11 資料庫簡介
11-1 何謂資料庫?
11-2 資料庫系統
11-3 資料庫系統三層架構
11-4 資料庫系統之網路架構
11-5 資料庫管理系統的演進

Chapter 12 MySQL安裝與設定
12-1 Server 端
12-2 Server 端組態設定
12-3 資料庫管理

Chapter 13 Django 連線 MySQL資料庫
13-1 匯入資料庫
13-2 Python 連線 MySQL 資料庫
13-3 連結已有的資料庫與 Django app
13-4 設計一個網頁操作資料庫數據
13-5 設計一個網頁為新增資料
13-6 設計一個網頁為顯示詳細資料
13-7 設計一個網頁為修改資料
13-8 設計一個網頁為刪除資料

第五篇 程式交易

Chapter 14 Yahoo finance 網路爬蟲股價資料
14-1 Yahoo finance 網路爬蟲股價資料
14-2 網路爬蟲股價資料匯入資料庫

Chapter 15 TA-Lib套件- 量化技術指標
15-1 TA-Lib 簡介
15-2 下載與安裝 TA-Lib 套件
15-3 量化技術分析 - 指術指標
15-4 均線糾結
15-5 布林通道

Chapter 16 K 線組合
16-1 如何畫 K 線圖
16-2 K 線組合分析買賣時點

安裝所需套件

使用 pip 安裝

# PDF 表格解析
pip install opencv-python camelot-py

下載 GhostScript 9.27 (Win32) 並安裝
https://www.ghostscript.com/download/gsdnld.html

以取得個股當日基本資訊為例。

分析資料結構

https://www.twse.com.tw/pdf/ch/1101_ch.pdf

Python程式交易應用與實 作 PDF

  1. 基本資訊內容位於第 1 表格。
  2. 但欄位標頭並非位於第 1 行,而是第 1 欄。

下載資料並解析出個股當日基本資訊

import ctypes
import datetime
import os

import camelot
import camelot.ext.ghostscript._gsprint
import loguru
import requests

# 因為 camelot 0.7.3 尚未修正 win32/win64 呼叫函式的格式問題(GitHub 上的
# master 分支已修正),故要覆寫 camelot 內呼叫 GhostScript API 的定義格式
camelot.ext.ghostscript._gsprint.c_stdstream_call_t = ctypes.WINFUNCTYPE(
    ctypes.c_int,
    camelot.ext.ghostscript._gsprint.gs_main_instance,
    ctypes.POINTER(ctypes.c_char),
    ctypes.c_int
)

def main(code):
    resp = requests.get(f'https://www.twse.com.tw/pdf/ch/{code}_ch.pdf')
    if resp.status_code != 200:
        loguru.logger.error('RESP: status code is not 200')
    loguru.logger.success('RESP: success')

    filename = f'{code}.pdf'
    filepath = f'{filename}'

    with open(filepath, 'wb') as f:
        f.write(resp.content)

    # 透過 camelot 辨識出 PDF 檔案內的表格
    tables = camelot.read_pdf(filepath)
    # 印出第 1 表格的 DataFrame
    print(tables[0].df)

if __name__ == '__main__':
    loguru.logger.add(
        f'{datetime.date.today():%Y%m%d}.log',
        rotation='1 day',
        retention='7 days',
        level='DEBUG'
    )
    # 傳入股票代碼
    main('1101')

Python程式交易應用與實 作 PDF

如果需要實收資本額,可以知道位於第 0 欄第 3 行

import ctypes
import datetime
import os

import camelot
import camelot.ext.ghostscript._gsprint
import loguru
import requests

camelot.ext.ghostscript._gsprint.c_stdstream_call_t = ctypes.WINFUNCTYPE(
    ctypes.c_int,
    camelot.ext.ghostscript._gsprint.gs_main_instance,
    ctypes.POINTER(ctypes.c_char),
    ctypes.c_int
)

def main(code):
    resp = requests.get(f'https://www.twse.com.tw/pdf/ch/{code}_ch.pdf')
    if resp.status_code != 200:
        loguru.logger.error('RESP: status code is not 200')
    loguru.logger.success('RESP: success')

    filename = f'{code}.pdf'
    filepath = f'{filename}'

    with open(filepath, 'wb') as f:
        f.write(resp.content)

    # 透過 camelot 辨識出 PDF 檔案內的表格
    tables = camelot.read_pdf(filepath)
    loguru.logger.info('DataFrame' + os.linesep + repr(tables[0].df))

    # 取出第 1 表格的 DataFrame 中的實收資本額
    paidin = tables[0].df[0][3]
    paidin.replace('新台幣', '').replace(',', '').strip()
    loguru.logger.info(f'實收資本額 {paidin}')

if __name__ == '__main__':
    loguru.logger.add(
        f'{datetime.date.today():%Y%m%d}.log',
        rotation='1 day',
        retention='7 days',
        level='DEBUG'
    )
    # 傳入股票代碼
    main('1101')

重新執行得到輸出結果。

Python程式交易應用與實 作 PDF

Would You Like To Know More?

https://camelot-py.readthedocs.io/


團隊系列文:

CSScoke - 金魚都能懂的這個網頁畫面怎麼切 - 金魚都能懂了你還怕學不會嗎
Clarence - LINE bot 好好玩 30 天玩轉 LINE API
Hina Hina - 陣列大亂鬥
King Tzeng - IoT沒那麼難!新手用JavaScript入門做自己的玩具
Vita Ora - 好 Js 不學嗎 !? JavaScript 入門中的入門。
TaTaMo - 用Python開發的網頁不能放到Github上?Lektor說可以!!