日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

akshare双均线backtrader

發布時間:2023/12/19 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 akshare双均线backtrader 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
# -*- coding: utf-8 -*- """ Created on Tue Aug 4 16:52:23 2020@author: 四屏 """from datetime import datetime %matplotlib inline import backtrader as bt import matplotlib.pyplot as plt import akshare as akplt.rcParams["font.sans-serif"] = ["SimHei"] plt.rcParams["axes.unicode_minus"] = Falsestock_hfq_df = ak.stock_zh_a_daily(symbol="sh600000", adjust="hfq") # 利用 AkShare 獲取后復權數據class MyStrategy(bt.Strategy):"""主策略程序"""params = (("maperiod", 20),) # 全局設定交易策略的參數def __init__(self):"""初始化函數"""self.data_close = self.datas[0].close # 指定價格序列# 初始化交易指令、買賣價格和手續費self.order = Noneself.buy_price = Noneself.buy_comm = None# 添加移動均線指標self.sma = bt.indicators.SimpleMovingAverage(self.datas[0], period=self.params.maperiod)def next(self):""":return::rtype:"""if self.order: # 檢查是否有指令等待執行,return# 檢查是否持倉if not self.position: # 沒有持倉if self.data_close[0] > self.sma[0]: # 執行買入條件判斷:收盤價格上漲突破20日均線self.order = self.buy(size=100) # 執行買入else:if self.data_close[0] < self.sma[0]: # 執行賣出條件判斷:收盤價格跌破20日均線self.order = self.sell(size=100) # 執行賣出cerebro = bt.Cerebro() # 初始化回測系統 start_date = datetime(2000, 1, 1) # 回測開始時間 end_date = datetime(2020, 8, 4) # 回測結束時間 data = bt.feeds.PandasData(dataname=stock_hfq_df, fromdate=start_date, todate=end_date) # 加載數據 cerebro.adddata(data) # 將數據傳入回測系統 cerebro.addstrategy(MyStrategy) # 將交易策略加載到回測系統中 start_cash = 26000 cerebro.broker.setcash(start_cash) # 設置初始資本為 100000 cerebro.broker.setcommission(commission=0.002) # 設置交易手續費為 0.2% cerebro.run() # 運行回測系統port_value = cerebro.broker.getvalue() # 獲取回測結束后的總資金 pnl = port_value - start_cash # 盈虧統計print(f"初始資金: {start_cash}\n回測期間:{start_date.strftime('%Y%m%d')}:{end_date.strftime('%Y%m%d')}") print(f"總資金: {round(port_value, 2)}") print(f"凈收益: {round(pnl, 2)}")cerebro.plot(style='candlestick') # 畫圖

總結

以上是生活随笔為你收集整理的akshare双均线backtrader的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。