Backtrader 提供了在 Broker 类中定义佣金成本的功能。要为不同的数据源设置不同的佣金成本,可以创建一个新的 Broker 类,然后单独为每个数据源设置佣金成本。下面是一个示例代码:
from __future__ import (absolute_import, division, print_function,
unicode_literals)
import backtrader as bt
class MyBroker(bt.brokers.BackBroker):
params = dict(
commissions={
'IB': 0.005,
'TRADESTATION': 0.01,
'ZHENGQUAN': 0.1 # Chinese stock exchange
}
)
data1 = bt.feeds.PandasData(dataname=dataframe1)
data2 = bt.feeds.PandasData(dataname=dataframe2)
cerebro = bt.Cerebro()
cerebro.addstrategy(MyStrategy)
cerebro.adddata(data1)
cerebro.addbroker(MyBroker, data=data1)
cerebro.adddata(data2)
cerebro.addbroker(MyBroker, data=data2)
cerebro.run()
cerebro.plot()
在上面的代码中,我们定义了一个 MyBroker 类,并在其中设置了不同的佣金成本。我们然后将该类与每个数据源一起添加到 cerebro 对象中,以确保每个数据源都使用正确的佣金成本。