TSLA量化交易:backtrader与Bokeh可视化兼容问题全网最新解决方案

测试时间:2023年11月23日

可实现版本:matplotlib 3.6.0;backtrader 1.9.78.123;backtrader-plotting 2.0.0;numpy 1.23.5

        此前看到很多网上的帖子,主要都是讲最新版本的 matplotlib 和 backtrader 不兼容的问题,但是在下载 matplotlib 3.2.2 的时候遇到了些问题,一直显示错误,下载了 matplotlib 3.6.0 版本后可以正常出图。

        解决了这个问题后,发现最新版本的numpy也出现不兼容问题,因此我再试着回溯一下之前的版本,发现 numpy 1.23.5 可以兼容,能够正常出图。

        具体代码如下:

import backtrader as bt
from datetime import datetime
import matplotlib
from backtrader_plotting import Bokeh
from backtrader_plotting.schemes import Blackly


'''设定运行环境'''
asset = bt.Cerebro()

'''
设定持有资产,設定持有資產
1e5 就是 1 * 10 ^ 5
'''
asset.broker.setcash(1e5)

'''设定交易手续费(经理人佣金,平台手续费)'''
asset.broker.setcommission(
    # 如果有設定 margin ,則此傭金為固定數量,反之則為百分比 % 數
    # 此處則為買、賣固定 2.0 歐元
    commission=2.0,
    # 當需要模擬保證金交易(期貨、合約交易)等操作時需要使用
    # 如果這個參數是 0 ,則佣金為百分比 % 數
    margin=2000.0,
    # 在進行期貨等交易時可以設定的槓桿倍數
    mult=10.0,
    # 當需要同時開啟多筆交易時可以設定,會以名稱區隔交易績效
    name="Eurostoxxx50"
)

'''设定交易杠杆倍率'''
# 固定买卖 20 股
asset.addsizer(bt.sizers.SizerFix, stake=20)

'''加入分析指标,可自行設定 _name 呼叫參數,例如設定為 'SharpeRatio' 則可透過 analyzers.SharpeRatio.get_analysis() 取得更細節的分析'''
# 交易分析 (策略勝率)
asset.addanalyzer(bt.analyzers.TradeAnalyzer, _name='TradeAnalyzer')
# 交易基本統計分析
asset.addanalyzer(bt.analyzers.PeriodStats, _name='PeriodStats')
# 回落統計
asset.addanalyzer(bt.analyzers.DrawDown, _name='DrawDown')
# 期望獲利/標準差 System Quality Number
asset.addanalyzer(bt.analyzers.SQN, _name='SQN')
# 夏普指數
asset.addanalyzer(bt.analyzers.SharpeRatio, _name='SharpeRatio')

'''引入资料'''
data = bt.feeds.YahooFinanceData(
    # 股票资料位置
    dataname='TSLA.csv',
    # 资料起始日期
    fromdate=datetime(2010, 7, 1),
    # 资料结束日
    todate=datetime(2023, 11, 21)
)

'''将资料引入环境'''
asset.adddata(data)

'''运行环境'''
print('投资 > 起始资产 %.2f $' % asset.broker.getvalue())
asset.run()
print('投资 > 结束资产 %.2f $' % asset.broker.getvalue())

'''绘制图表'''
asset.plot()
 
'''绘制互动图表'''
b = Bokeh(style='bar', plot_mode='single', scheme=Blackly())
asset.plot(b)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值