国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

用 Python 實現量化交易策略回測

開發 數據分析
今天要給大家分享的例子,就展示了如何基于Python中常用的numpy、pandas等常用數據分析處理框架,針對目標個股簡單實現「均線策略回測」。

Python憑借其在數據科學領域積累的豐富生態,已然成為專業「量化分析」中必不可少的技術手段。今天要給大家分享的例子,就展示了如何基于Python中常用的numpy、pandas等常用數據分析處理框架,針對目標個股簡單實現「均線策略回測」。

1. 相關庫的導入

分析過程需要用到的庫如下,其中numpy、pandas等庫用于實現分析過程的「數據處理」及「運算」,xtquant用于快捷「獲取」股票歷史行情數據,matplotlib則用于對策略過程及效果進行「可視化」:

import numpy as np
import pandas as pd
from xtquant import xtdata # qmt行情數據模塊
from functools import reduce
import matplotlib.pyplot as plt
from datetime import datetime, timedelta
from matplotlib.ticker import MaxNLocator

2. 獲取目標個股歷史行情數據

在導入相關庫后,我們首先需要獲取目標個股的「歷史行情數據」,以601127.SH賽力斯為例,我們基于xtquant中的行情數據模塊,直接下載并提取目標個股「近5年」的日線行情數據(xtquant調用股票行情數據使用需配合本機QMT程序):

# 以601127.SH賽力斯為例
target_stock = '601127.SH'
# 獲取近5年歷史日線行情數據
start_time = (datetime.now() - timedelta(days=365 * 5)).strftime('%Y%m%d')
# 下載數據
xtdata.download_history_data(
    target_stock, 
    period='1d', 
    start_time=start_time
)
# 提取數據
raw_history = xtdata.get_market_data(
    stock_list=[target_stock], 
    period='1d', 
    start_time=start_time,
    field_list=['open', 'high', 'low', 'close', 'volume']
)

3. 歷史行情數據清洗轉換

為了進行下一步的策略回測模擬,我們需要對先前下載提取的日線歷史行情數據進行「清洗轉換」,通過下面的代碼,即可將上一步的原始數據轉換為標準的「數據框」格式:

# 轉換為回測所需標準數據框格式
history_df = (
    reduce(
        lambda left, right: left.join(right),
        [
            value
            .T
            .rename(
                columns={
                    target_stock: key
                }
            )
            for key, value in raw_history.items()
        ]
    )
    .reset_index(drop=False)
    .rename(columns={'index': 'datetime'})
)
history_df.head()

4. 回測模擬相關參數設置

接下來我們需要定義策略模擬相關的初始資金、交易傭金率、交易最低傭金等基本參數:

# 回測模擬相關參數設置

initial_cash = 100000  # 初始資金
commission_rate = 0.0001  # 交易傭金率
min_commission = 5  # 交易最低傭金
short_window = 15 # 短期均線窗口大小
long_window = 60 # 長期均線窗口大小

5. 交易信號計算

按照上一步給定的參數,首先計算出短期、長期均線值:

# 計算短期均線
history_df['short_mavg'] = history_df['close'].rolling(window=short_window, min_periods=1).mean()
# 計算長期均線
history_df['long_mavg'] = history_df['close'].rolling(window=long_window, min_periods=1).mean()

接著按照短期均線超過長期均線買入,反之賣出的簡單均線策略,計算出不同的「交易信號」點:

# 初始化交易信號字段
history_df['signal'] = 0
# 將所有短期均線突破長期均線的交易日,交易信號標記為1
history_df.loc[short_window:, 'signal'] = np.where(
    history_df.loc[short_window:, 'short_mavg'] > history_df.loc[short_window:, 'long_mavg'], 
    1, 
    0
)
# 通過差分運算,輔助計算交易時機
history_df['positions'] = history_df['signal'].diff()

6. 基于交易信號模擬交易過程

接著我們就可以在前面計算結果的基礎上,執行模擬交易過程,并妥善記錄中間過程「賬戶值變化」情況:

cash = initial_cash # 資金
total_shares = 0  # 持倉股數
portfolio_value = []  # 記錄每日賬戶總值
total_commission = 0 # 記錄累計傭金支出

# 執行交易模擬過程
for row in history_df.itertuples():
    # 當出現買入信號時
    if row.positions == 1:
        num_shares = cash // row.close  # 計算本次可買入的股數
        total_commission += max(min_commission, commission_rate * num_shares * row.close)  # 累加本次交易傭金
        cash -= num_shares * row.close  # 更新最新資金量
        total_shares += num_shares  # 更新最新持股數量

    # 當出現賣出信號,且存在有效持倉時,假設全部賣出
    elif row.positions == -1 and total_shares > 0:
        total_commission += max(min_commission, commission_rate * total_shares * row.close)  # 計算本次交易傭金
        cash += total_shares * row.close # 更新最新資金量
        total_shares = 0  # 更新最新持股數量

    # 計算每日的賬戶總值
    portfolio_value.append(cash + total_shares * row.close)

# 添加賬戶總值字段
history_df['portfolio_value'] = portfolio_value

7. 回測結果可視化

最后,我們將整個回測過程,以及最終的賬戶結果值、傭金成本等信息整合到一張圖中展示:

# 設置中文字體
plt.rcParams['font.family'] = ['SimHei']
# 設置負號顯示
plt.rcParams['axes.unicode_minus'] = False

fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(10, 8), sharex=True)

# 繪制上圖 - 交易過程
ax1.plot(history_df['datetime'], history_df['close'], label='收盤價', linewidth=1)
ax1.plot(history_df['datetime'], history_df['short_mavg'], label='短期均線', linewidth=1)
ax1.plot(history_df['datetime'], history_df['long_mavg'], label='長期均線', linewidth=1)
ax1.plot(history_df[history_df['positions'] == 1]['datetime'], history_df['short_mavg'][history_df['positions'] == 1], '^', markersize=6, color='g', label='買入')
ax1.plot(history_df[history_df['positions'] == -1]['datetime'], history_df['short_mavg'][history_df['positions'] == -1], 'v', markersize=6, color='r', label='賣出')
ax1.legend()
ax1.set_title('模擬交易過程')

# 繪制下圖 - 賬戶值波動變化
ax2.plot(history_df['datetime'], history_df['portfolio_value'], label='賬戶總值變化')
ax2.legend()
ax2.set_title(f'賬戶初始資金:{initial_cash} 回測結束賬戶值:{round(portfolio_value[-1])} 傭金成本:{round(total_commission)}')
ax2.set_xlabel('日期')

# 設置共享的x軸刻度和標簽角度
ax2.xaxis.set_major_locator(MaxNLocator(nbins=20))  # 設置刻度數量
plt.setp(ax2.get_xticklabels(), rotation=45, ha='right')  # 設置標簽角度和對齊方式

plt.tight_layout()
# 導出圖片
plt.savefig('回測結果可視化.png', dpi=300)
plt.show()

責任編輯:趙寧寧 來源: Python大數據分析
相關推薦

2021-06-07 09:00:53

Python回測分析Python基礎

2021-08-26 10:20:32

Python均線交叉代碼

2021-09-14 10:20:48

Python股票布林帶

2023-06-29 13:43:30

2022-05-20 18:44:26

戴爾

2021-08-09 10:52:21

CCXT加密貨幣區塊鏈

2023-10-30 10:54:01

2017-08-31 11:09:48

機器學習比特幣

2022-03-08 15:32:49

Python數據集合代碼

2022-11-28 16:04:16

2021-08-06 09:35:37

Python盯盤機器人編程語言

2022-09-19 11:41:39

數據分析Python數學模型

2019-01-29 10:27:27

量子計算機芯片超算

2021-06-10 09:00:32

Java項目實戰Java編程

2021-02-10 15:58:09

比特幣加密貨幣區塊鏈

2024-09-26 10:05:57

2012-12-06 15:54:52

Intel14nm芯片

2021-03-05 05:55:39

量子中繼程量子通訊量子網絡

2021-05-07 09:34:20

量子芯片計算機

2020-10-29 08:31:15

Java同步回調編程語言
點贊
收藏

51CTO技術棧公眾號

欧美高清自拍一区| 九九在线视频| 四虎精品成人免费网站| 国产乱码精品一区二区三| 国产精品久久久久久久久久免费看| 精品av久久707| 国产精品96久久久久久| 国产香蕉在线| 亚洲动漫在线观看| 久久久www成人免费无遮挡大片| 亚洲另类图片色| 午夜精品久久久久久久无码 | 免费在线视频你懂得| 在线播放你懂的| 亚洲一区av| 99精品小视频| 国产精品久久久久影院老司| 青青草99啪国产免费| 性爽视频在线| 亚洲美女激情视频| 俄罗斯一级**毛片在线播放| 在线观看的毛片| 久久久久久黄| 亚洲精品永久www嫩草| 国产精品一区二区在线观看不卡 | 黄色电影免费在线看| 欧美在线观看禁18| 免费在线看污片| 日韩中文字幕国产精品| 激情亚洲小说| 亚洲一区二区黄| 性欧美18~19sex高清播放| 一区二区三区免费在线观看| 日韩五码在线观看| 国产福利一区二区三区| 日产精品久久久一区二区| 亚洲一区日本| 欧美日韩一区二区视频在线观看| 欧美一区二区三区红桃小说| 亚洲一卡二卡三卡四卡五卡| 精品久久久久久久久久中文字幕| 欧美日韩一二三四| 亚洲欧美中文在线视频| 久久精品亚洲欧美日韩精品中文字幕| 国产亚洲精品va在线观看| 一区不卡视频| 女仆av观看一区| 中文字幕一区二区三区不卡在线 | 91网站在线观看视频| 五月天激情小说综合| 欧美一区二区三区免费观看| 欧美国产另类| 草草久视频在线观看电影资源| 日韩成人在线视频网站| 欧美一级本道电影免费专区| 久久久久久久久久网| 欧美高清性hdvideosex| 小说区图片区色综合区| 亚洲精品一区二区三区樱花| 99久久免费视频.com| 少妇性l交大片| 久久精品视频免费| 超级污的网站| 91黄色免费看| 国产一区二区三区网| 丝袜美腿精品国产二区| 免费毛片在线| 岛国精品视频在线播放| a在线视频v视频| 亚洲美女在线观看| a视频在线看| av男人天堂一区| 国产日产亚洲精品| 精品国产精品久久一区免费式| 欧美一级黄色片| 精品自拍一区| 日本在线观看一区二区| www.欧美日韩国产在线| 97国产精东麻豆人妻电影| 久久中文在线| 色视频精品视频在线观看| 97免费中文视频在线观看| 国产高清久久久| 日韩电影免费观看高清完整版| 欧洲视频一区二区三区| 91精品国产91久久久久久一区二区| 日本欧美一区二区三区| 成人免费在线一区二区三区| 热re99久久精品国99热蜜月| 老牛精品亚洲成av人片| 精品欧美一区二区久久| 国产天堂在线| 成人网男人的天堂| 91社在线播放| 午夜一区二区三区在线观看| 国产日本在线| 亚洲精品一区二区三区在线观看 | 天天操天天色综合| 欧美天堂社区| 日韩中文字幕在线播放| 亚洲1024| 欧美久久久久久久久久久久久久| 精品自拍视频在线观看| 色视频欧美一区二区三区| 青青草视频一区| 综合综合综合综合综合网| а√中文在线8| 国产日韩欧美精品在线观看| 欧美成人免费全部| 色呦呦国产精品| 欧洲福利电影| 欧美激情视频在线播放| 26uuu另类亚洲欧美日本一| 久久综合九色欧美综合狠狠| 国产精品毛片无码| 成人免费观看毛片| 欧美黑人性猛交| 国产伦精品一区二区三区千人斩| 欧美美最猛性xxxxxx| 一区二区三区韩国免费中文网站| 9191国产视频| 欧美成人精品xxx| 国产精品网站在线观看| 天天综合狠狠精品| 日韩一区二区电影在线| 精品盗摄女厕tp美女嘘嘘| 天堂资源在线亚洲视频| 欧美特级限制片免费在线观看| 国产精品国产精品国产专区不蜜 | av天在线观看| 日韩av资源在线播放| 国产欧美在线| 可以在线观看的av| 手机在线观看国产精品| 亚洲码国产岛国毛片在线| 美女日韩一区| 黄色一级二级三级| 天堂√在线观看一区二区| 欧美极品jizzhd欧美| 国产日韩在线免费| 亚洲一区二区三区在线播放| 久久久久久毛片免费看| 九九热视频在线观看| 久久久久久久久久网| 97在线日本国产| 国产精品视频一二三| wwwcom羞羞网站| 国产视频一区在线| 精品日产免费二区日产免费二区| 日韩.欧美.亚洲| 欧美伊人久久久久久午夜久久久久| 国产成人久久精品一区二区三区| 欧美国产日韩在线播放| 国产97在线视频| 色综合久久中文字幕| 亚洲澳门在线| 都市激情久久综合| 精品亚洲一区二区三区在线播放| 欧美在线亚洲| 男人的天堂在线| 高清在线视频日韩欧美| 国产成人在线视频免费播放| av一区在线观看| 欧美日韩一区二区三区免费| 精品国产成人系列| 99国产麻豆精品| 玖玖精品一区| 免费国产视频| 天堂а√在线中文在线| 欧美日韩免费高清| 伊人亚洲福利一区二区三区| 不卡一卡二卡三乱码免费网站| 亚洲3区在线| 中文在线天堂库| 91嫩草在线| 精品少妇一区二区| 欧美日韩中文字幕| 成人免费在线视频| 欧美日韩免费高清一区色橹橹| 日韩高清免费在线| 国产精品久久久对白| www.com毛片| 福利视频在线看| 亚洲欧美网站| 9i在线看片成人免费| 黄色成人av网| 欧美激情精品久久久久| 人妻互换免费中文字幕| 成黄免费在线| 国产麻豆精品久久| 成人va在线观看| 亚洲精品一线二线三线无人区| 国产精品久久久久久一区二区 | 妺妺窝人体色777777| 深田咏美在线x99av| 小说区视频区图片区| 97碰碰碰免费公开在线视频| 自拍av在线| 白嫩白嫩国产精品| 美腿丝袜亚洲综合|