有些交易者希望能够使用 all-in 的模式,即每次使用全部的资金,官网上给出了一个方法:
一、使用 cheat_on_open
Cheat-On-Open 是什么
cheat_on_open 是为了满足每次下单使用全部资金(all-in)的投资者,如果不使用 cheat_on_open 这个方法的话,在一个 bar 收盘的时候计算需要的手数,但是需要在下个 bar 开盘的时候交易,如果下个 bar 开盘的时候出现很大的价差(向上跳空或者向下跳空),就有可能造成可用资金不足,导致 broker 拒绝这笔交易,提示 Margin.
尽管 backtrader 的使用者可以使用 data.open[1]来获取下个 bar 的开盘价来计算交易手数,但是这个需要预先价格数据(preload data)
使用 cheat_on_open 可以解决这个问题。
cheat_on_open 在下单之后,会在下个 bar 的开盘的时候发出订单,这个时候 open 价格就是交易的这个 bar 的 open 价,计算仓位的时候,直接使用 data.open[0]就可以了
二、使用 data.open[1]在收盘的时候取下个 bar 的开盘价
在使用 data.open[1]的时候,要明白,在最后一天的时候会出现 index error ,需要使用 try except 来避免这个问题。 ———————————————— 版权声明:本文为 CSDN 博主「云金杞」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/qq_26948675/article/details/113491778