使用backtesting.py回测交易策略

问题描述 投票:0回答:1

我想回测交易策略。其相对简单。只是 以起始价购买股票。立即在退出处设置卖单 上面的差异和下面的入场差异的买单。我想 继续进行,直到达到最大开仓次数。我已经设法 下面写下代码。命令已下达,但无人执行。我在用 backtesting.py 库 https://kernc.github.io/backtesting.py/doc/backtesting/index.html 示例:start = 125 订单应下达买入 124,卖出 126..买入 125,卖出 127..买入 126,卖出 128,依此类推。下一个函数运行时间为 每一个新行的数据以及我无法设置的数据 我当前的买入和卖出价格。请帮助任何人

from backtesting import Backtest, Strategy, Position
from backtesting.lib import crossover, SignalStrategy
from backtesting.test import SMA

class Scalp_buy(Strategy):

    start = 125
    lot_step = 5
    buy_criteria = 1
    sell_criteria = 1
    max_open = 10
    lot_size = 6000
    max_loss = 1000
    equity_list = []
    current_buy_order = []
    current_sell_order = []
    current_buy = start - buy_criteria
    current_sell = start + sell_criteria

    def init(self):
        super().init()
        self.current_buy = self.start - self.buy_criteria
        self.current_sell = self.start + self.sell_criteria
        self.buy(price = self.start, tp = self.current_sell)

    def next(self):
        super().next()
        for x in range(0,self.max_open): 
            self.orders.set_entry(price = self.current_buy)
            self.orders.set_tp(price = self.current_sell)
            self.current_buy  += self.buy_criteria
            self.current_sell  += self.sell_criteria

       # print(self.position.open_time,self.position.open_price,self.position.pl, self.position.pl_pct , self.position.size)


bt = Backtest(df, Scalp_buy, cash=10000, commission=.0014)

output = bt.run()
output```
python trading back-testing
1个回答
2
投票

根据文档

如果

trade_on_close
True
,市价订单将根据当前柱的收盘价而不是下一个柱的开盘价执行。

您应该将

Backtest
与参数
trade_on_close=True

一起使用
bt = Backtest(df, Scalp_buy, cash=10000, commission=.0014, trade_on_close=True)
© www.soinside.com 2019 - 2024. All rights reserved.